📄 vcardparser.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.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 + -