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
> parseContact(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 parseContact(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
> parseContact(List
<String
> lines
, Format format
) {
65 return Vcard21Parser
.parseContact(lines
);
67 return AbookParser
.parseContact(lines
);
70 throw new InvalidParameterException("Unknown format: "
76 * Return a {@link String} representation of the given {@link Card}, line by
83 * the output {@link Format} to use
85 * @return the {@link String} representation
87 public static List
<String
> toStrings(Card card
, Format format
) {
90 return Vcard21Parser
.toStrings(card
);
92 return AbookParser
.toStrings(card
);
95 throw new InvalidParameterException("Unknown format: "
101 * Return a {@link String} representation of the given {@link Card}, line by
105 * the card to convert
107 * @param startingBKey
108 * the starting BKey number (all the other will follow) or -1 for
112 * the output {@link Format} to use
114 * @return the {@link String} representation
116 public static List
<String
> toStrings(Contact contact
, Format format
,
120 return Vcard21Parser
.toStrings(contact
, startingBKey
);
122 return AbookParser
.toStrings(contact
, startingBKey
);
125 throw new InvalidParameterException("Unknown format: "
126 + format
.toString());
130 // return -1 if no bkey
131 public static int getBKey(Data data
) {
132 if (data
.isBinary() && data
.getValue().startsWith("<HIDDEN_")) {
134 int bkey
= Integer
.parseInt(data
.getValue()
135 .replace("<HIDDEN_", "").replace(">", ""));
137 throw new InvalidParameterException(
138 "All bkeys MUST be positive");
140 } catch (NumberFormatException nfe
) {
147 static String
generateBKeyString(int bkey
) {
149 throw new InvalidParameterException("All bkeys MUST be positive");
151 return "<HIDDEN_" + bkey
+ ">";