X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Fparsers%2FParser.java;h=1fa7c5749805746d58e41f9fae52e575e2cb529d;hb=cf77cb3542f2aefbebdb9aa00b358dbeb4489a73;hp=cec4c1ae9cd8ea404f931b597474fd7eea566701;hpb=a3b510ab4bf89a7a2a05f3851ffe0f030b8a78f4;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/parsers/Parser.java b/src/be/nikiroo/jvcard/parsers/Parser.java index cec4c1a..1fa7c57 100644 --- a/src/be/nikiroo/jvcard/parsers/Parser.java +++ b/src/be/nikiroo/jvcard/parsers/Parser.java @@ -1,6 +1,12 @@ package be.nikiroo.jvcard.parsers; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; import java.security.InvalidParameterException; +import java.util.LinkedList; import java.util.List; import be.nikiroo.jvcard.Card; @@ -9,6 +15,50 @@ import be.nikiroo.jvcard.Data; public class Parser { + /** + * Load the data from the given {@link File} under the given {@link Format}. + * + * @param file + * the input to load from + * @param format + * the {@link Format} to load as + * + * @return the list of elements + * + * @throws IOException + * in case of IO error + */ + public static List parse(File file, Format format) + throws IOException { + List lines = null; + + if (file != null && file.exists()) { + BufferedReader buffer = new BufferedReader(new InputStreamReader( + new FileInputStream(file), "UTF-8")); + lines = new LinkedList(); + for (String line = buffer.readLine(); line != null; line = buffer + .readLine()) { + lines.add(line); + } + buffer.close(); + } + + if (lines == null) + return new LinkedList(); + + return parse(lines, format); + } + + /** + * 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 parse(List lines, Format format) { switch (format) { case VCard21: @@ -22,13 +72,28 @@ public class Parser { } } - // -1 = no bkeys - public static String toString(Card card, Format format) { + /** + * Return a {@link String} representation of the given {@link Card}, line by + * line. + * + * @param card + * the card to convert + * + * @param startingBKey + * the starting BKey number (all the other will follow) or -1 for + * no BKey + * + * @param format + * the output {@link Format} to use + * + * @return the {@link String} representation + */ + public static List toStrings(Card card, Format format) { switch (format) { case VCard21: - return Vcard21Parser.toString(card); + return Vcard21Parser.toStrings(card); case Abook: - return AbookParser.toString(card); + return AbookParser.toStrings(card); default: throw new InvalidParameterException("Unknown format: " @@ -36,13 +101,29 @@ public class Parser { } } - // -1 = no bkeys - public static String toString(Contact contact, Format format, int startingBKey) { + /** + * Return a {@link String} representation of the given {@link Card}, line by + * line. + * + * @param card + * the card to convert + * + * @param startingBKey + * the starting BKey number (all the other will follow) or -1 for + * no BKey + * + * @param format + * the output {@link Format} to use + * + * @return the {@link String} representation + */ + public static List toStrings(Contact contact, Format format, + int startingBKey) { switch (format) { case VCard21: - return Vcard21Parser.toString(contact, startingBKey); + return Vcard21Parser.toStrings(contact, startingBKey); case Abook: - return AbookParser.toString(contact, startingBKey); + return AbookParser.toStrings(contact, startingBKey); default: throw new InvalidParameterException("Unknown format: " @@ -54,8 +135,8 @@ public class Parser { public static int getBKey(Data data) { if (data.isBinary() && data.getValue().startsWith("", "")); + int bkey = Integer.parseInt(data.getValue() + .replace("", "")); if (bkey < 0) throw new InvalidParameterException( "All bkeys MUST be positive");