X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Fparsers%2FParser.java;h=5cdd25fee995dfe10aef8c6d4a5d00dcc18aa5ab;hb=1c03abafc3987d93fa682e7b8758e51bed8a4faf;hp=cec4c1ae9cd8ea404f931b597474fd7eea566701;hpb=ce822a7cd8ff95a031e477e37d23c114228cc5b6;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/parsers/Parser.java b/src/be/nikiroo/jvcard/parsers/Parser.java index cec4c1a..5cdd25f 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: @@ -37,7 +87,8 @@ public class Parser { } // -1 = no bkeys - public static String toString(Contact contact, Format format, int startingBKey) { + public static String toString(Contact contact, Format format, + int startingBKey) { switch (format) { case VCard21: return Vcard21Parser.toString(contact, startingBKey); @@ -54,8 +105,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");