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 public static String
toString(Card card
, Format format
) {
79 return Vcard21Parser
.toString(card
);
81 return AbookParser
.toString(card
);
84 throw new InvalidParameterException("Unknown format: "
90 public static String
toString(Contact contact
, Format format
,
94 return Vcard21Parser
.toString(contact
, startingBKey
);
96 return AbookParser
.toString(contact
, startingBKey
);
99 throw new InvalidParameterException("Unknown format: "
100 + format
.toString());
104 // return -1 if no bkey
105 public static int getBKey(Data data
) {
106 if (data
.isBinary() && data
.getValue().startsWith("<HIDDEN_")) {
108 int bkey
= Integer
.parseInt(data
.getValue()
109 .replace("<HIDDEN_", "").replace(">", ""));
111 throw new InvalidParameterException(
112 "All bkeys MUST be positive");
114 } catch (NumberFormatException nfe
) {
121 static String
generateBKeyString(int bkey
) {
123 throw new InvalidParameterException("All bkeys MUST be positive");
125 return "<HIDDEN_" + bkey
+ ">";