Initial commit
[jvcard.git] / src / be / nikiroo / jvcard / parsers / Parser.java
1 package be.nikiroo.jvcard.parsers;
2
3 import java.security.InvalidParameterException;
4 import java.util.List;
5
6 import be.nikiroo.jvcard.Card;
7 import be.nikiroo.jvcard.Contact;
8 import be.nikiroo.jvcard.Data;
9
10 public class Parser {
11
12 public static List<Contact> parse(List<String> lines, Format format) {
13 switch (format) {
14 case VCard21:
15 return Vcard21Parser.parse(lines);
16 case Abook:
17 return AbookParser.parse(lines);
18
19 default:
20 throw new InvalidParameterException("Unknown format: "
21 + format.toString());
22 }
23 }
24
25 // -1 = no bkeys
26 public static String toString(Card card, Format format) {
27 switch (format) {
28 case VCard21:
29 return Vcard21Parser.toString(card);
30 case Abook:
31 return AbookParser.toString(card);
32
33 default:
34 throw new InvalidParameterException("Unknown format: "
35 + format.toString());
36 }
37 }
38
39 // -1 = no bkeys
40 public static String toString(Contact contact, Format format, int startingBKey) {
41 switch (format) {
42 case VCard21:
43 return Vcard21Parser.toString(contact, startingBKey);
44 case Abook:
45 return AbookParser.toString(contact, startingBKey);
46
47 default:
48 throw new InvalidParameterException("Unknown format: "
49 + format.toString());
50 }
51 }
52
53 // return -1 if no bkey
54 public static int getBKey(Data data) {
55 if (data.isBinary() && data.getValue().startsWith("<HIDDEN_")) {
56 try {
57 int bkey = Integer.parseInt(data.getValue().replace("<HIDDEN_",
58 "").replace(">", ""));
59 if (bkey < 0)
60 throw new InvalidParameterException(
61 "All bkeys MUST be positive");
62 return bkey;
63 } catch (NumberFormatException nfe) {
64 }
65 }
66
67 return -1;
68 }
69
70 static String generateBKeyString(int bkey) {
71 if (bkey < 0)
72 throw new InvalidParameterException("All bkeys MUST be positive");
73
74 return "<HIDDEN_" + bkey + ">";
75 }
76 }