X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Fparsers%2FAbookParser.java;h=fc4df3613f2af8e34947712cdcb0860217b9d168;hb=d5260eeb873fcf2ef9855dedcd9e2a3a3a990582;hp=2fd0ca2f15a61e1e92833d4a373364b6c4ccde05;hpb=ce822a7cd8ff95a031e477e37d23c114228cc5b6;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/parsers/AbookParser.java b/src/be/nikiroo/jvcard/parsers/AbookParser.java index 2fd0ca2..fc4df36 100644 --- a/src/be/nikiroo/jvcard/parsers/AbookParser.java +++ b/src/be/nikiroo/jvcard/parsers/AbookParser.java @@ -1,5 +1,7 @@ package be.nikiroo.jvcard.parsers; +import java.io.IOException; +import java.util.Arrays; import java.util.LinkedList; import java.util.List; @@ -8,9 +10,19 @@ import be.nikiroo.jvcard.Contact; import be.nikiroo.jvcard.Data; public class AbookParser { - public static List parse(List lines) { + /** + * Load the given data from under the given {@link Format}. + * + * @param lines + * the input to load from + * @param format + * the {@link Format} to load as + * + * @return the list of elements + */ + public static List parseContact(List lines) { List contacts = new LinkedList(); - + for (String line : lines) { List content = new LinkedList(); @@ -33,8 +45,25 @@ public class AbookParser { return contacts; } - // -1 = no bkeys - public static String toString(Contact contact, int startingBKey) { + /** + * Return a {@link String} representation of the given {@link Card}, line by + * line. + * + *

+ * Note that the BKey is actually not used in Pine mode. + *

+ * + * @param card + * the card to convert + * + * @param startingBKey + * the starting BKey number (all the other will follow) or -1 for + * no BKey (it is actually not used in this mode) + * + * @return the {@link String} representation + */ + public static List toStrings(Contact contact, + @SuppressWarnings("unused") int startingBKey) { // BKey is not used in pine mode StringBuilder builder = new StringBuilder(); @@ -83,17 +112,66 @@ public class AbookParser { // note: save as pine means normal LN, nor CRLN builder.append('\n'); - - return builder.toString(); + + return Arrays.asList(new String[] { builder.toString() }); } - public static String toString(Card card) { - StringBuilder builder = new StringBuilder(); + /** + * Return a {@link String} representation of the given {@link Card}, line by + * line. + * + * @param card + * the card to convert + * + * @return the {@link String} representation + */ + public static List toStrings(Card card) { + List lines = new LinkedList(); + + for (int index = 0; index < card.size(); index++) { + lines.addAll(toStrings(card.get(index), -1)); + } - for (Contact contact : card.getContactsList()) { - builder.append(toString(contact, -1)); + return lines; + } + + /** + * Write the given {@link Contact} in the {@link Appendable}. + * + * @param writer + * the {@link Appendable} + * @param contact + * the {@link Contact} to write + * @param startingBKey + * the starting BKey number (all the other will follow) or -1 for + * no BKey + * + * @throws IOException + * in case of IO error + */ + public static void write(Appendable writer, Contact contact, + int startingBKey) throws IOException { + for (String s : toStrings(contact, startingBKey)) { + writer.append(s); + writer.append('\n'); } + } - return builder.toString(); + /** + * Write the given {@link Card} in the {@link Appendable}. + * + * @param writer + * the {@link Appendable} + * @param card + * the {@link Card} to write + * + * @throws IOException + * in case of IO error + */ + public static void write(Appendable writer, Card card) throws IOException { + for (String s : toStrings(card)) { + writer.append(s); + writer.append('\n'); + } } }