⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vcardparser_v30.java

📁 goolge phone 目前没有开放的android 平台的源码
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   VCardParser_V30.java

package android.syncml.pim.vcard;

import android.syncml.pim.VBuilder;
import java.io.*;
import java.util.*;

// Referenced classes of package android.syncml.pim.vcard:
//            VCardParser

public class VCardParser_V30 extends VCardParser
{

    public VCardParser_V30()
    {
    }

    public boolean parse(InputStream is, String encoding, VBuilder builder)
        throws IOException
    {
        byte bytes[] = new byte[is.available()];
        is.read(bytes);
        String scStr = new String(bytes);
        StringBuilder v21str = new StringBuilder("");
        String strlist[] = splitProperty(scStr);
        if("BEGIN:vCard".equals(strlist[0]) || "BEGIN:VCARD".equals(strlist[0]))
            v21str.append("BEGIN:VCARD\r\n");
        else
            return false;
        for(int i = 1; i < strlist.length - 1; i++)
        {
            String line = strlist[i];
            if("".equals(line))
            {
                v21str.append("\r\n");
                continue;
            }
            String contentline[] = line.split(":", 2);
            String propNameAndParam = contentline[0];
            String value = contentline.length <= 1 ? "" : contentline[1];
            if(propNameAndParam.length() <= 0)
                continue;
            String nameAndParams[] = propNameAndParam.split(";", 2);
            String propName = nameAndParams[0];
            String params = nameAndParams.length <= 1 ? "" : nameAndParams[1];
            if(acceptablePropsWithParam.contains(propName) || acceptablePropsWithoutParam.contains(propName))
                v21str.append(mapContentlineV30ToV21(propName, params, value));
        }

        if("END:vCard".equals(strlist[strlist.length - 1]) || "END:VCARD".equals(strlist[strlist.length - 1]))
            v21str.append("END:VCARD\r\n");
        else
            return false;
        return super.parse(new ByteArrayInputStream(v21str.toString().getBytes()), encoding, builder);
    }

    private String mapContentlineV30ToV21(String propName, String params, String value)
    {
        String result;
        if(propV30ToV21Map.containsKey(propName))
            result = (String)propV30ToV21Map.get(propName);
        else
            result = propName;
        if(acceptablePropsWithParam.contains(propName) && params.length() > 0)
            result = (new StringBuilder()).append(result).append(";").append(params.replaceAll(",", ";").replaceAll("ENCODING=B", "ENCODING=BASE64").replaceAll("ENCODING=b", "ENCODING=BASE64")).toString();
        return (new StringBuilder()).append(result).append(":").append(value).append("\r\n").toString();
    }

    private String[] splitProperty(String scStr)
    {
        scStr = scStr.replaceAll("\r\n", "\n").replaceAll("\n ", "").replaceAll("\n\t", "");
        String strs[] = scStr.split("\n");
        return strs;
    }

    private static final String V21LINEBREAKER = "\r\n";
    private static final HashSet acceptablePropsWithParam = new HashSet(Arrays.asList(new String[] {
        "PHOTO", "LOGO", "TEL", "EMAIL", "ADR"
    }));
    private static final HashSet acceptablePropsWithoutParam = new HashSet(Arrays.asList(new String[] {
        "ORG", "NOTE", "TITLE", "FN", "N"
    }));
    private static final HashMap propV30ToV21Map;

    static 
    {
        propV30ToV21Map = new HashMap();
        propV30ToV21Map.put("PHOTO", "PHOTO");
        propV30ToV21Map.put("LOGO", "PHOTO");
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -