X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2FExporter.java;fp=src%2Fbe%2Fnikiroo%2Futils%2Fserial%2FExporter.java;h=2470bde4dace9f6dd0ca73f61373991a4cbd4283;hp=0000000000000000000000000000000000000000;hb=d46b7b96f94e88a776bcd2dfd756549ffb300cc9;hpb=c9994f27667bc421bcd448d39e55774fddf5c431 diff --git a/src/be/nikiroo/utils/serial/Exporter.java b/src/be/nikiroo/utils/serial/Exporter.java new file mode 100644 index 0000000..2470bde --- /dev/null +++ b/src/be/nikiroo/utils/serial/Exporter.java @@ -0,0 +1,60 @@ +package be.nikiroo.utils.serial; + +import java.io.IOException; +import java.io.NotSerializableException; +import java.io.OutputStream; +import java.util.HashMap; +import java.util.Map; + +/** + * A simple class to serialise objects to {@link String}. + *

+ * This class does not support inner classes (it does support nested classes, + * though). + * + * @author niki + */ +public class Exporter { + private Map map; + private OutputStream out; + + /** + * Create a new {@link Exporter}. + * + * @param out + * export the data to this stream + */ + public Exporter(OutputStream out) { + if (out == null) { + throw new NullPointerException( + "Cannot create an be.nikiroo.utils.serials.Exporter that will export to NULL"); + } + + this.out = out; + map = new HashMap(); + } + + /** + * Serialise the given object and add it to the list. + *

+ * Important: If the operation fails (with a + * {@link NotSerializableException}), the {@link Exporter} will be corrupted + * (will contain bad, most probably not importable data). + * + * @param o + * the object to serialise + * @return this (for easier appending of multiple values) + * + * @throws NotSerializableException + * if the object cannot be serialised (in this case, the + * {@link Exporter} can contain bad, most probably not + * importable data) + * @throws IOException + * in case of I/O error + */ + public Exporter append(Object o) throws NotSerializableException, + IOException { + SerialUtils.append(out, o, map); + return this; + } +} \ No newline at end of file