/* * * * Copyright 1990-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */ package com.sun.j2me.pim.formats; import javax.microedition.pim.Contact; /** * Helper methods for vCard implementations. * */ public class VCardSupport { /** * Gets the field label. * @param field identifier for field * @return label of requested field */ public static String getFieldLabel(int field) { switch (field) { case Contact.FORMATTED_NAME: return "FN"; case Contact.ADDR: return "ADR"; case Contact.BIRTHDAY: return "BDAY"; case Contact.NAME: return "N"; case Contact.PHOTO: return "PHOTO"; case Contact.PHOTO_URL: return "PHOTO;VALUE=URL"; case Contact.TEL: return "TEL"; case Contact.TITLE: return "TITLE"; case Contact.REVISION: return "REV"; case Contact.URL: return "URL"; case Contact.UID: return "UID"; case Contact.PUBLIC_KEY: return "KEY"; case Contact.FORMATTED_ADDR: return "LABEL"; case Contact.NICKNAME: return "NICKNAME"; case Contact.NOTE: return "NOTE"; case Contact.PUBLIC_KEY_STRING: return "KEY"; case Contact.EMAIL: return "EMAIL"; case Contact.ORG: return "ORG"; default: return null; } } /** * Lookup the field identifier byte name. * @param fieldName label for field * @return identifier for requested field */ public static int getFieldCode(String fieldName) { if (fieldName.equals("FN")) return Contact.FORMATTED_NAME; else if (fieldName.equals("LABEL")) return Contact.FORMATTED_ADDR; else if (fieldName.equals("ADR")) return Contact.ADDR; else if (fieldName.equals("BDAY")) return Contact.BIRTHDAY; else if (fieldName.equals("N")) return Contact.NAME; else if (fieldName.equals("PHOTO")) return Contact.PHOTO; else if (fieldName.equals("TEL")) return Contact.TEL; else if (fieldName.equals("TITLE")) return Contact.TITLE; else if (fieldName.equals("REV")) return Contact.REVISION; else if (fieldName.equals("URL")) return Contact.URL; else if (fieldName.equals("UID")) return Contact.UID; else if (fieldName.equals("KEY")) return Contact.PUBLIC_KEY; else if (fieldName.equals("NICKNAME")) return Contact.NICKNAME; else if (fieldName.equals("NOTE")) return Contact.NOTE; else if (fieldName.equals("EMAIL")) return Contact.EMAIL; else if (fieldName.equals("ORG")) return Contact.ORG; else return -1; } /** * Lookup the attribute name from identifier. * @param attr the field identifier * @return the name of the attribute */ public static String getAttributeLabel(int attr) { switch (attr) { case Contact.ATTR_ASST: return "X-J2MEWTK-ASST"; case Contact.ATTR_AUTO: return "CAR"; case Contact.ATTR_FAX: return "FAX"; case Contact.ATTR_HOME: return "HOME"; case Contact.ATTR_MOBILE: return "CELL"; case Contact.ATTR_OTHER: return "X-J2MEWTK-OTHER"; case Contact.ATTR_PAGER: return "PAGER"; case Contact.ATTR_PREFERRED: return "PREF"; case Contact.ATTR_SMS: return "MSG"; case Contact.ATTR_WORK: return "WORK"; default: return Extensions.getContactAttributeLabel(attr); } } /** * Lookup the attribute identifier. * @param label the name of the attribute * @param defaultValue default value to return if * the attribute identifier is not found * @return identifier for requested attribute */ public static int getAttributeCode(String label, int defaultValue) { if (label.equals("CAR")) return Contact.ATTR_AUTO; else if (label.equals("FAX")) return Contact.ATTR_FAX; else if (label.equals("HOME")) return Contact.ATTR_HOME; else if (label.equals("CELL")) return Contact.ATTR_MOBILE; else if (label.equals("X-J2MEWTK-OTHER")) return Contact.ATTR_OTHER; else if (label.equals("PAGER")) return Contact.ATTR_PAGER; else if (label.equals("PREF")) return Contact.ATTR_PREFERRED; else if (label.equals("MSG")) return Contact.ATTR_SMS; else if (label.equals("WORK")) return Contact.ATTR_WORK; else if (label.equals("X-J2MEWTK-ASST")) return Contact.ATTR_ASST; else return Extensions.getContactAttributeCode(label, defaultValue); } /** * Gets the value of the vCard CLASS field for the given * value of the Contact.CLASS field. * This method encapsulates the following mapping: * Contact.CLASS_PUBLIC -> "PUBLIC" * Contact.CLASS_PRIVATE -> "PRIVATE" * Contact.CLASS_CONFIDENTIAL -> "CONFIDENTIAL" * * @param fieldValue the value of the Contact.CLASS field * @return a string describing the class for the field value, or null if * fieldValue is out of range */ public static String getClassType(int fieldValue) { switch (fieldValue) { case Contact.CLASS_CONFIDENTIAL: return "CONFIDENTIAL"; case Contact.CLASS_PRIVATE: return "PRIVATE"; case Contact.CLASS_PUBLIC: return "PUBLIC"; } return null; } /** * Gets the value of the Contact.CLASS field for the given * value of the vCard CLASS property. * This method encapsulates the following mapping: * Contact.CLASS_PUBLIC <- "PUBLIC" * Contact.CLASS_PRIVATE <- "PRIVATE" * Contact.CLASS_CONFIDENTIAL <- "CONFIDENTIAL" * * @param s the value of the CLASS property * @return the corresponding field of Contact, or -1 if s is not recognized */ public static int getClassCode(String s) { switch (s.length()) { case 6: if (s.equals("PUBLIC")) { return Contact.CLASS_PUBLIC; } break; case 7: if (s.equals("PRIVATE")) { return Contact.CLASS_PRIVATE; } break; case 12: if (s.equals("CONFIDENTIAL")) { return Contact.CLASS_CONFIDENTIAL; } break; } return -1; } }