623 lines
16 KiB
Java
623 lines
16 KiB
Java
package org.atriasoft.eStringSerialize;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
public class StringSerializer {
|
|
private static final Map<Class<?>, Converter> VALUES_OF = new HashMap<>();
|
|
static {
|
|
StringSerializer.VALUES_OF.put(byte.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Byte.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Byte.toString((Byte)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(Byte.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Byte.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Byte.toString((Byte)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(int.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Integer.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Integer.toString((Integer)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(Integer.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Integer.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Integer.toString((Integer)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(long.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Long.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Long.toString((Long)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(Long.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Long.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Long.toString((Long)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(short.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Short.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Short.toString((Short)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(Short.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Short.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Short.toString((Short)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(float.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Float.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Float.toString((Float)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(Float.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Float.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Float.toString((Float)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(double.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Double.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Double.toString((Double)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(Double.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Double.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Double.toString((Double)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(boolean.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Boolean.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Boolean.toString((Boolean)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
StringSerializer.VALUES_OF.put(Boolean.class, new Converter() {
|
|
@Override
|
|
public Object valueOf(final String value) {
|
|
return Boolean.valueOf(value.trim());
|
|
}
|
|
|
|
@Override
|
|
public String toString(final Object data) {
|
|
return Boolean.toString((Boolean)data);
|
|
}
|
|
|
|
@Override
|
|
public String[] toStringList(final Object data) {
|
|
return new String[] { toString(data) };
|
|
}
|
|
});
|
|
// StringSerializer.VALUES_OF.put(byte[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseByteStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((byte[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// byte[] dataCast = (byte[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Byte.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(Byte[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseByteClassStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((Byte[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// Byte[] dataCast = (Byte[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Byte.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(short[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseShortStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((short[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// short[] dataCast = (short[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Short.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(Short[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseShortClassStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((Short[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// Short[] dataCast = (Short[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Short.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(int[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseIntegerStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((int[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// int[] dataCast = (int[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Integer.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(Integer[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseIntegerClassStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((Integer[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// Integer[] dataCast = (Integer[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Integer.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(long[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseLongStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((long[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// long[] dataCast = (long[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Long.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(Long[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseLongClassStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((Long[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// Long[] dataCast = (Long[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Long.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(float[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseFloatStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((float[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// int[] dataCast = (int[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Float.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(Float[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseFloatClassStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((Float[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// Float[] dataCast = (Float[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Float.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(double[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseDoubleStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((double[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// int[] dataCast = (int[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Double.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(Double[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseDoubleClassStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((Double[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// Double[] dataCast = (Double[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Double.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(boolean[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseBooleanStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((boolean[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// boolean[] dataCast = (boolean[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Boolean.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(Boolean[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return Tools.parseBooleanClassStringList(value);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return Tools.toString((Boolean[])data);
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// Boolean[] dataCast = (Boolean[])data;
|
|
// String[] out = new String[dataCast.length];
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// out[iii] = Boolean.toString(dataCast[iii]);
|
|
// }
|
|
// return out;
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(String.class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return value;
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// return (String)data;
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// return new String[] { (String)data };
|
|
// }
|
|
// });
|
|
// StringSerializer.VALUES_OF.put(String[].class, new Converter() {
|
|
// @Override
|
|
// public Object valueOf(final String value) {
|
|
// return value.split(";");
|
|
// }
|
|
//
|
|
// @Override
|
|
// public String toString(final Object data) {
|
|
// StringBuilder out = new StringBuilder();
|
|
// String[] dataCast = (String[])data;
|
|
// for (int iii=0; iii<dataCast.length; iii++) {
|
|
// if (iii != 0) {
|
|
// out.append(";");
|
|
// }
|
|
// out.append(dataCast[iii]);
|
|
// }
|
|
// return out.toString();
|
|
// }
|
|
// @Override
|
|
// public String[] toStringList(final Object data) {
|
|
// return (String[])data;
|
|
//
|
|
// }
|
|
// });
|
|
}
|
|
|
|
public static boolean contains(final Class<?> clazz) {
|
|
return StringSerializer.VALUES_OF.containsKey(clazz);
|
|
}
|
|
/**
|
|
* Un-serialize a String in a specified Object
|
|
* @param value String to parse
|
|
* @return Data generated or Null
|
|
*/
|
|
public static Object valueOf(final Class<?> clazz, final String value) {
|
|
if (value == null) {
|
|
return null;
|
|
}
|
|
Converter conv = StringSerializer.VALUES_OF.get(clazz);
|
|
return conv.valueOf(value);
|
|
}
|
|
public static String toString(final byte data) {
|
|
return Byte.toString(data);
|
|
}
|
|
public static String toString(final boolean data) {
|
|
return Boolean.toString(data);
|
|
}
|
|
public static String toString(final int data) {
|
|
return Integer.toString(data);
|
|
}
|
|
public static String toString(final short data) {
|
|
return Short.toString(data);
|
|
}
|
|
public static String toString(final long data) {
|
|
return Long.toString(data);
|
|
}
|
|
/**
|
|
* Serialize in a string the require data
|
|
* @param data Object to serialize
|
|
* @return The new data...
|
|
*/
|
|
public static String toString(final Object data) {
|
|
if (data == null) {
|
|
return null;
|
|
}
|
|
Class<?> clazz = data.getClass();
|
|
Converter conv = StringSerializer.VALUES_OF.get(clazz);
|
|
return conv.toString(data);
|
|
}
|
|
@Deprecated
|
|
public static String[] toStringList(final Object data) {
|
|
if (data == null) {
|
|
return null;
|
|
}
|
|
Converter conv = StringSerializer.VALUES_OF.get(data.getClass());
|
|
return conv.toStringList(data);
|
|
}
|
|
|
|
private StringSerializer() {}
|
|
}
|