6cb4635b27fe1aba3394618d1b493170dfd637b0
1 package be
.nikiroo
.jvcard
.parsers
;
3 import java
.util
.LinkedList
;
6 import be
.nikiroo
.jvcard
.Card
;
7 import be
.nikiroo
.jvcard
.Contact
;
8 import be
.nikiroo
.jvcard
.Data
;
9 import be
.nikiroo
.jvcard
.TypeInfo
;
11 public class Vcard21Parser
{
12 public static List
<Contact
> parse(List
<String
> lines
) {
13 List
<Contact
> contacts
= new LinkedList
<Contact
>();
14 List
<Data
> datas
= null;
16 for (String l
: lines
) {
17 String line
= l
.trim();
18 if (line
.equals("BEGIN:VCARD")) {
19 datas
= new LinkedList
<Data
>();
20 } else if (line
.equals("END:VCARD")) {
22 // BAD INPUT FILE. IGNORE.
24 .println("VCARD Parser warning: END:VCARD seen before any VCARD:BEGIN");
26 contacts
.add(new Contact(datas
));
30 // BAD INPUT FILE. IGNORE.
32 .println("VCARD Parser warning: data seen before any VCARD:BEGIN");
34 List
<TypeInfo
> types
= new LinkedList
<TypeInfo
>();
39 if (line
.contains(":")) {
40 String rest
= line
.split(":")[0];
41 value
= line
.substring(rest
.length() + 1);
43 if (rest
.contains(";")) {
44 String tab
[] = rest
.split(";");
47 for (int i
= 1; i
< tab
.length
; i
++) {
48 if (tab
[i
].contains("=")) {
49 String tname
= tab
[i
].split("=")[0];
50 String tvalue
= tab
[i
].substring(tname
52 types
.add(new TypeInfo(tname
, tvalue
));
54 types
.add(new TypeInfo(tab
[i
], ""));
64 if (name
.contains(".")) {
65 group
= name
.split("\\.")[0];
66 name
= name
.substring(group
.length() + 1);
69 datas
.add(new Data(types
, name
, value
, group
));
78 public static String
toString(Contact contact
, int startingBKey
) {
79 StringBuilder builder
= new StringBuilder();
81 builder
.append("BEGIN:VCARD");
82 builder
.append("\r\n");
83 builder
.append("VERSION:2.1");
84 builder
.append("\r\n");
85 for (Data data
: contact
.getContent()) {
86 if (data
.getGroup() != null && !data
.getGroup().trim().equals("")) {
87 builder
.append(data
.getGroup().trim());
90 builder
.append(data
.getName());
91 for (TypeInfo type
: data
.getTypes()) {
93 builder
.append(type
.getName());
94 if (type
.getValue() != null
95 && !type
.getValue().trim().equals("")) {
97 builder
.append(type
.getValue());
103 builder
.append(data
.getValue());
104 builder
.append("\r\n");
106 builder
.append("END:VCARD");
107 builder
.append("\r\n");
109 return builder
.toString();
112 public static String
toString(Card card
) {
113 StringBuilder builder
= new StringBuilder();
115 for (Contact contact
: card
.getContacts()) {
116 builder
.append(toString(contact
, -1));
119 return builder
.toString();