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

📄 vcardparser.java

📁 goolge phone 目前没有开放的android 平台的源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// 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.java

package android.syncml.pim.vcard;

import android.syncml.pim.VBuilder;
import android.syncml.pim.VParser;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class VCardParser extends VParser
{

    public VCardParser()
    {
    }

    protected int parseVFile(int offset)
    {
        return parseVCardFile(offset);
    }

    int parseVCardFile(int offset)
    {
        int ret = 0;
        int sum;
        for(sum = 0; (ret = parseWsls(offset)) != -1; sum += ret)
            offset += ret;

        ret = parseVCard(offset);
        if(ret != -1)
        {
            offset += ret;
            sum += ret;
        } else
        {
            return -1;
        }
        while((ret = parseWsls(offset)) != -1) 
        {
            offset += ret;
            sum += ret;
        }
        return sum;
    }

    private int parseVCard(int offset)
    {
        int ret = 0;
        int sum = 0;
        ret = parseString(offset, "BEGIN", false);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        ret = removeWs(offset);
        offset += ret;
        sum += ret;
        ret = parseString(offset, ":", false);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        ret = removeWs(offset);
        offset += ret;
        sum += ret;
        ret = parseString(offset, "VCARD", false);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        if(mBuilder != null)
            mBuilder.startRecord("VCARD");
        ret = removeWs(offset);
        offset += ret;
        sum += ret;
        ret = parseCrlf(offset);
        if(ret == -1)
            return -1;
        offset += ret;
        for(sum += ret; (ret = parseCrlf(offset)) != -1; sum += ret)
            offset += ret;

        ret = parseItems(offset);
        if(ret == -1)
            return -1;
        offset += ret;
        for(sum += ret; (ret = parseCrlf(offset)) != -1; sum += ret)
            offset += ret;

        ret = parseString(offset, "END", false);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        ret = removeWs(offset);
        offset += ret;
        sum += ret;
        ret = parseString(offset, ":", false);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        ret = removeWs(offset);
        offset += ret;
        sum += ret;
        ret = parseString(offset, "VCARD", false);
        if(ret == -1)
            return -1;
        sum += ret;
        if(mBuilder != null)
            mBuilder.endRecord();
        return sum;
    }

    private int parseItems(int offset)
    {
        int ret = 0;
        int sum = 0;
        if(mBuilder != null)
            mBuilder.startProperty();
        ret = parseItem(offset);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        if(mBuilder != null)
            mBuilder.endProperty();
        do
        {
            while((ret = parseCrlf(offset)) != -1) 
            {
                offset += ret;
                sum += ret;
            }
            if(mBuilder != null)
                mBuilder.startProperty();
            ret = parseItem(offset);
            if(ret == -1)
                break;
            offset += ret;
            sum += ret;
            if(mBuilder != null)
                mBuilder.endProperty();
        } while(true);
        return sum;
    }

    private int parseItem(int offset)
    {
        int ret = 0;
        int sum = 0;
        mEncoding = "8BIT";
        ret = parseItem0(offset);
        if(ret != -1)
        {
            sum += ret;
            return sum;
        }
        ret = parseItem1(offset);
        if(ret != -1)
        {
            sum += ret;
            return sum;
        }
        ret = parseItem2(offset);
        if(ret != -1)
        {
            sum += ret;
            return sum;
        } else
        {
            return -1;
        }
    }

    private int parseItem0(int offset)
    {
        int ret = 0;
        int sum = 0;
        int start = offset;
        String proName = "";
        String proValue = "";
        ret = parseGroupsWithDot(offset);
        if(ret != -1)
        {
            offset += ret;
            sum += ret;
        }
        ret = parseName(offset);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        if(mBuilder != null)
        {
            proName = mBuffer.substring(start, offset).trim();
            mBuilder.propertyName(proName);
        }
        ret = parseParams(offset);
        if(ret != -1)
        {
            offset += ret;
            sum += ret;
        }
        ret = parseString(offset, ":", false);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        start = offset;
        ret = parseValue(offset);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        proValue = mBuffer.substring(start, offset);
        if(proName.equals("VERSION") && !proValue.equals("2.1"))
            return -1;
        if(mBuilder != null)
        {
            ArrayList v = new ArrayList();
            v.add(proValue);
            mBuilder.propertyValues(v);
        }
        ret = parseCrlf(offset);
        if(ret == -1)
        {
            return -1;
        } else
        {
            sum += ret;
            return sum;
        }
    }

    private int parseItem1(int offset)
    {
        int ret = 0;
        int sum = 0;
        int start = offset;
        ret = parseGroupsWithDot(offset);
        if(ret != -1)
        {
            offset += ret;
            sum += ret;
        }
        if((ret = parseString(offset, "ADR", true)) == -1 && (ret = parseString(offset, "ORG", true)) == -1 && (ret = parseString(offset, "N", true)) == -1)
            return -1;
        offset += ret;
        sum += ret;
        if(mBuilder != null)
            mBuilder.propertyName(mBuffer.substring(start, offset).trim());
        ret = parseParams(offset);
        if(ret != -1)
        {
            offset += ret;
            sum += ret;
        }
        ret = parseString(offset, ":", false);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        start = offset;
        ret = parseValue(offset);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        if(mBuilder != null)
        {
            int end = 0;
            ArrayList v = new ArrayList();
            Pattern p = Pattern.compile("([^;\\\\]*(\\\\[\\\\;:,])*[^;\\\\]*)(;?)");
            Matcher m = p.matcher(mBuffer.substring(start, offset));
            do
            {
                if(!m.find())
                    break;
                String s = escapeTranslator(m.group(1));
                v.add(s);
                end = m.end();
                if(offset != start + end)
                    continue;
                String endValue = m.group(3);
                if(";".equals(endValue))
                    v.add("");
                break;
            } while(true);
            mBuilder.propertyValues(v);
        }
        ret = parseCrlf(offset);
        if(ret == -1)
        {
            return -1;
        } else
        {
            sum += ret;
            return sum;
        }
    }

    private int parseItem2(int offset)
    {
        int ret = 0;
        int sum = 0;
        int start = offset;
        ret = parseGroupsWithDot(offset);
        if(ret != -1)
        {
            offset += ret;
            sum += ret;
        }
        ret = parseString(offset, "AGENT", true);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        if(mBuilder != null)
            mBuilder.propertyName(mBuffer.substring(start, offset));
        ret = parseParams(offset);
        if(ret != -1)
        {
            offset += ret;
            sum += ret;
        }
        ret = parseString(offset, ":", false);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        ret = parseCrlf(offset);
        if(ret != -1)
        {
            offset += ret;
            sum += ret;
        }
        ret = parseVCard(offset);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        if(mBuilder != null)
            mBuilder.propertyValues(new ArrayList());
        ret = parseCrlf(offset);
        if(ret == -1)
        {
            return -1;
        } else
        {
            sum += ret;
            return sum;
        }
    }

    private int parseGroupsWithDot(int offset)
    {
        int ret = 0;
        int sum = 0;
        ret = parseGroups(offset);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        ret = parseString(offset, ".", false);
        if(ret == -1)
        {
            return -1;
        } else
        {
            sum += ret;
            return sum;
        }
    }

    private int parseParams(int offset)
    {
        int ret = 0;
        int sum = 0;
        ret = parseString(offset, ";", false);
        if(ret == -1)
            return -1;
        offset += ret;
        sum += ret;
        ret = removeWs(offset);
        offset += ret;
        sum += ret;
        ret = parseParamList(offset);
        if(ret == -1)
        {
            return -1;
        } else
        {

⌨️ 快捷键说明

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