1 package be
.nikiroo
.jvcard
.parsers
;
3 import java
.io
.BufferedReader
;
5 import java
.io
.FileInputStream
;
6 import java
.io
.IOException
;
7 import java
.io
.InputStreamReader
;
8 import java
.security
.InvalidParameterException
;
9 import java
.util
.LinkedList
;
10 import java
.util
.List
;
12 import be
.nikiroo
.jvcard
.Card
;
13 import be
.nikiroo
.jvcard
.Contact
;
14 import be
.nikiroo
.jvcard
.Data
;
19 * Load the data from the given {@link File} under the given {@link Format}.
22 * the input to load from
24 * the {@link Format} to load as
26 * @return the list of elements
31 public static List
<Contact
> parse(File file
, Format format
)
33 List
<String
> lines
= null;
35 if (file
!= null && file
.exists()) {
36 BufferedReader buffer
= new BufferedReader(new InputStreamReader(
37 new FileInputStream(file
), "UTF-8"));
38 lines
= new LinkedList
<String
>();
39 for (String line
= buffer
.readLine(); line
!= null; line
= buffer
47 return new LinkedList
<Contact
>();
49 return parse(lines
, format
);
53 * Load the given data from under the given {@link Format}.
56 * the input to load from
58 * the {@link Format} to load as
60 * @return the list of elements
62 public static List
<Contact
> parse(List
<String
> lines
, Format format
) {
65 return Vcard21Parser
.parse(lines
);
67 return AbookParser
.parse(lines
);
70 throw new InvalidParameterException("Unknown format: "
76 * Return a {@link String} representation of the given {@link Card}, line by
83 * the starting BKey number (all the other will follow) or -1 for
87 * the output {@link Format} to use
89 * @return the {@link String} representation
91 public static List
<String
> toStrings(Card card
, Format format
) {
94 return Vcard21Parser
.toStrings(card
);
96 return AbookParser
.toStrings(card
);
99 throw new InvalidParameterException("Unknown format: "
100 + format
.toString());
105 * Return a {@link String} representation of the given {@link Card}, line by
109 * the card to convert
111 * @param startingBKey
112 * the starting BKey number (all the other will follow) or -1 for
116 * the output {@link Format} to use
118 * @return the {@link String} representation
120 public static List
<String
> toStrings(Contact contact
, Format format
,
124 return Vcard21Parser
.toStrings(contact
, startingBKey
);
126 return AbookParser
.toStrings(contact
, startingBKey
);
129 throw new InvalidParameterException("Unknown format: "
130 + format
.toString());
134 // return -1 if no bkey
135 public static int getBKey(Data data
) {
136 if (data
.isBinary() && data
.getValue().startsWith("<HIDDEN_")) {
138 int bkey
= Integer
.parseInt(data
.getValue()
139 .replace("<HIDDEN_", "").replace(">", ""));
141 throw new InvalidParameterException(
142 "All bkeys MUST be positive");
144 } catch (NumberFormatException nfe
) {
151 static String
generateBKeyString(int bkey
) {
153 throw new InvalidParameterException("All bkeys MUST be positive");
155 return "<HIDDEN_" + bkey
+ ">";