X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbe%2Fnikiroo%2Fjvcard%2FContact.java;h=4b46eab8afa3dcc6aa840d8c89952d0c4ef8b3b5;hb=30a4aa17f2141ad80a23447ee2e6303f6c9ef995;hp=1b888961466737bace2f6f647ee5d9d21b2b739b;hpb=3634193b7a8927e68a3ae3d38fff4f6bd36c4ee5;p=jvcard.git
diff --git a/src/be/nikiroo/jvcard/Contact.java b/src/be/nikiroo/jvcard/Contact.java
index 1b88896..4b46eab 100644
--- a/src/be/nikiroo/jvcard/Contact.java
+++ b/src/be/nikiroo/jvcard/Contact.java
@@ -113,38 +113,75 @@ public class Contact extends BaseClass {
* Return a {@link String} representation of this contact formated
* accordingly to the given format.
*
+ *
* The format is basically a list of field names separated by a pipe and
- * optionally parametrised. The parameters allows you to:
+ * optionally parametrised with the 'at' (@) symbol. The parameters allows
+ * you to:
*
*
+ *
+ * In case of lists or multiple-fields values, you can select a specific + * list or field with: + *
+ * You can also add a fixed text if it starts with a simple-quote ('). + *
+ * + *+ * Example: "'Contact: |N@10|FN@20|NICK@+|PHOTO@x" + *
* * @param format * the format to use + * @param separator + * the separator {@link String} to use between fields * * @return the {@link String} representation */ - public String toString(String format) { - return toString(format, "|", null, -1, true, false); + public String toString(String format, String separator) { + return toString(format, separator, null, -1, true, false); } /** * Return a {@link String} representation of this contact formated * accordingly to the given format. * + ** The format is basically a list of field names separated by a pipe and * optionally parametrised. The parameters allows you to: *
+ * In case of lists or multiple-fields values, you can select a specific + * list or field with: + *
+ * You can also add a fixed text if it starts with a simple-quote ('). + *
+ * + *+ * Example: "'Contact: |N@10|FN@20|NICK@+|PHOTO@x" + *
* * @param format * the format to use @@ -176,6 +213,7 @@ public class Contact extends BaseClass { * Return a {@link String} representation of this contact formated * accordingly to the given format, part by part. * + ** The format is basically a list of field names separated by a pipe and * optionally parametrised. The parameters allows you to: *
+ * In case of lists or multiple-fields values, you can select a specific + * list or field with: + *
+ * You can also add a fixed text if it starts with a simple-quote ('). + *
* - * Example: "N@10|FN@20|NICK@+|PHOTO@x" + *+ * Example: "'Contact: |N@10|FN@20|NICK@+|PHOTO@x" + *
* * @param format * the format to use @@ -236,6 +290,7 @@ public class Contact extends BaseClass { * Return a {@link String} representation of this contact formated * accordingly to the given format, part by part. * + ** The format is basically a list of field names separated by a pipe and * optionally parametrised. The parameters allows you to: *
+ * In case of lists or multiple-fields values, you can select a specific + * list or field with: + *
+ * You can also add a fixed text if it starts with a simple-quote ('). + *
+ * + *+ * Example: "'Contact: |N@10|FN@20|NICK@+|PHOTO@x" + *
* * @param format * the format to use @@ -279,8 +350,11 @@ public class Contact extends BaseClass { int size = -1; boolean binary = false; boolean expand = false; + int fieldNum = -1; + int valueNum = -1; - if (field.contains("@")) { + if (field.length() > 0 && field.charAt(0) != '\'' + && field.contains("@")) { String[] opts = field.split("@"); if (opts.length > 0) field = opts[0]; @@ -291,16 +365,44 @@ public class Contact extends BaseClass { } else if (opt.equals("+")) { expand = true; numOfFieldsToExpand++; + } else if (opt.length() > 0 && opt.charAt(0) == '(') { + try { + opt = opt.substring(1, opt.length() - 1); + valueNum = Integer.parseInt(opt); + } catch (Exception e) { + } + } else if (opt.length() > 0 && opt.charAt(0) == '[') { + try { + opt = opt.substring(1, opt.length() - 1); + fieldNum = Integer.parseInt(opt); + } catch (Exception e) { + } } else { try { size = Integer.parseInt(opt); - } catch (Exception e) { + } catch (NumberFormatException e) { } } } } - String value = getPreferredDataValue(field); + String value = null; + if (field.length() > 0 && field.charAt(0) == '\'') { + value = field.substring(1); + } else if (valueNum >= 0) { + List