Update lanterna, fix bugs, implement save...
[jvcard.git] / src / be / nikiroo / jvcard / parsers / AbookParser.java
CommitLineData
a3b510ab
NR
1package be.nikiroo.jvcard.parsers;
2
3import java.util.LinkedList;
4import java.util.List;
5
6import be.nikiroo.jvcard.Card;
7import be.nikiroo.jvcard.Contact;
8import be.nikiroo.jvcard.Data;
9
10public class AbookParser {
11 public static List<Contact> parse(List<String> lines) {
12 List<Contact> contacts = new LinkedList<Contact>();
13
14 for (String line : lines) {
15 List<Data> content = new LinkedList<Data>();
16
17 String tab[] = line.split("\t");
18
19 if (tab.length >= 1)
20 content.add(new Data(null, "NICKNAME", tab[0].trim(), null));
21 if (tab.length >= 2)
22 content.add(new Data(null, "FN", tab[1].trim(), null));
23 if (tab.length >= 3)
24 content.add(new Data(null, "EMAIL", tab[2].trim(), null));
25 if (tab.length >= 4)
26 content.add(new Data(null, "X-FCC", tab[3].trim(), null));
27 if (tab.length >= 5)
28 content.add(new Data(null, "NOTE", tab[4].trim(), null));
29
30 contacts.add(new Contact(content));
31 }
32
33 return contacts;
34 }
35
36 // -1 = no bkeys
37 public static String toString(Contact contact, int startingBKey) {
38 // BKey is not used in pine mode
39
40 StringBuilder builder = new StringBuilder();
41
42 String nick = contact.getPreferredDataValue("NICKNAME");
43 if (nick != null) {
44 nick = nick.replaceAll(" ", "_");
45 nick = nick.replaceAll(",", "-");
46 nick = nick.replaceAll("@", "(a)");
47 nick = nick.replaceAll("\"", "'");
48 nick = nick.replaceAll(";", ".");
49 nick = nick.replaceAll(":", "=");
50 nick = nick.replaceAll("[()\\[\\]<>\\\\]", "/");
51
52 builder.append(nick);
53 }
54
55 builder.append('\t');
56
57 String fn = contact.getPreferredDataValue("FN");
58 if (fn != null)
59 builder.append(fn);
60
61 builder.append('\t');
62
63 String email = contact.getPreferredDataValue("EMAIL");
64 if (email != null)
65 builder.append(email);
66
67 // optional fields follow:
68
69 String xfcc = contact.getPreferredDataValue("X-FCC");
70 if (xfcc != null) {
71 builder.append('\t');
72 builder.append(xfcc);
73 }
74
75 String notes = contact.getPreferredDataValue("NOTE");
76 if (notes != null) {
77 if (xfcc == null)
78 builder.append('\t');
79
80 builder.append('\t');
81 builder.append(notes);
82 }
83
84 // note: save as pine means normal LN, nor CRLN
85 builder.append('\n');
86
87 return builder.toString();
88 }
89
90 public static String toString(Card card) {
91 StringBuilder builder = new StringBuilder();
92
bcb54330 93 for (Contact contact : card.getContactsList()) {
a3b510ab
NR
94 builder.append(toString(contact, -1));
95 }
96
97 return builder.toString();
98 }
99}