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