📄 vcalendarprovider_v10v20.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: vCalendarProvider_V10V20.java
package android.syncml.pim.vcalendar;
import android.content.*;
import android.database.Cursor;
import android.net.ContentURI;
import android.provider.SyncMLTestCalendar;
import android.syncml.pim.*;
import android.util.Time;
import java.io.ByteArrayInputStream;
import java.io.PrintStream;
import java.util.*;
// Referenced classes of package android.syncml.pim.vcalendar:
// VCalParser, VCalParser_V20
public class vCalendarProvider_V10V20
{
public vCalendarProvider_V10V20()
{
provider = null;
mParser = null;
mBuilder = null;
version = null;
curEventid = -1;
mIContentProvider = null;
}
public void setParam(ContentProvider provider, Context context, String version)
{
this.provider = provider;
this.context = context;
this.version = version;
mBuilder = new VDataBuilder();
reminderList = new ArrayList();
}
public void setParam(IContentProvider provider, Context context, String version)
{
this.context = context;
this.version = version;
mBuilder = new VDataBuilder();
reminderList = new ArrayList();
mIContentProvider = provider;
}
public String addCalendar(String vcalendarStr)
throws Exception
{
vcalendarStr = verifyVCal(vcalendarStr);
boolean isSuccess = mParser.parse(new ByteArrayInputStream(vcalendarStr.getBytes()), "US-ASCII", mBuilder);
if(!isSuccess)
if(version.equals("vcalendar1.0"))
{
System.out.println("===Parse failed for vCal 1.0 parser. Try to use 2.0 parser.");
setParam(provider, context, "vcalendar2.0");
return addCalendar(vcalendarStr);
} else
{
throw new Exception("parse failed.(even use 2.0 parser)");
}
String returi = "";
String curCalendarId = "";
Iterator i$ = mBuilder.vNodeList.iterator();
do
{
if(!i$.hasNext())
break;
VNode vnode = (VNode)i$.next();
if(vnode.VName.equalsIgnoreCase("VCALENDAR"))
{
int firstid = getFirstID_CAL();
if(firstid == -1)
throw new Exception("No calendar exist now.");
ContentValues map = getCalendarMap(vnode);
map.put("_sync_id", (new StringBuilder()).append("content://syncmltestcalendar/calendars/").append(firstid).toString());
insert(android.provider.SyncMLTestCalendar.Calendars.CONTENT_URI, map);
curCalendarId = String.valueOf(firstid);
}
if(vnode.VName.equalsIgnoreCase("VEVENT") || vnode.VName.equalsIgnoreCase("VTODO"))
{
ContentValues map = getEventMap(vnode, curCalendarId);
returi = (new StringBuilder()).append("content://syncmltestcalendar/events/").append(getNextMaxID_EVENT()).toString();
map.put("_sync_id", returi);
String tmpid = insert(android.provider.SyncMLTestCalendar.Events.CONTENT_URI, map).getPathLeaf();
Iterator i$ = reminderList.iterator();
while(i$.hasNext())
{
ContentValues m = (ContentValues)i$.next();
m.put("event_id", tmpid);
insert(android.provider.SyncMLTestCalendar.Reminders.CONTENT_URI, m);
}
}
} while(true);
return returi;
}
public void deleteCalendar(String uri)
throws Exception
{
try
{
int id = Integer.parseInt(uri.substring(uri.lastIndexOf("/") + 1));
ContentValues calmap = new ContentValues();
calmap.put("name", "ss-vCalendar1");
calmap.put("displayName", "ss-vCalendar1");
calmap.put("selected", Integer.valueOf(Integer.parseInt("0")));
calmap.put("_sync_id", (new StringBuilder()).append("content://syncmltestcalendar/calendars/").append(getFirstID_CAL()).toString());
ContentValues map = new ContentValues();
map.put("_sync_id", uri);
map.put("_sync_version", "1");
map.put("_sync_mark", "1");
insert(android.provider.SyncMLTestCalendar.Calendars.CONTENT_URI, calmap);
insert(ContentURI.create("content://syncmltestcalendar/deleted_events"), map);
}
catch(Exception e)
{
e.printStackTrace();
throw new Exception((new StringBuilder()).append("Delete failed:").append(uri).toString());
}
}
public void updateCalendar(String uri, String vcalendarStr)
throws Exception
{
int localid;
try
{
localid = Integer.parseInt(uri.substring(uri.length() - 1));
}
catch(Exception e)
{
e.printStackTrace();
throw new Exception((new StringBuilder()).append("Update failed:").append(uri).toString());
}
vcalendarStr = verifyVCal(vcalendarStr);
boolean isSuccess = mParser.parse(new ByteArrayInputStream(vcalendarStr.getBytes()), "US-ASCII", mBuilder);
if(!isSuccess)
if(version.equals("vcalendar1.0"))
{
System.out.println("===Parse failed for vCal 1.0 parser. Try to use 2.0 parser.");
setParam(provider, context, "vcalendar2.0");
updateCalendar(uri, vcalendarStr);
return;
} else
{
throw new Exception("parse failed.(even use 2.0 parser)");
}
String curCalendarId = "";
Iterator i$ = mBuilder.vNodeList.iterator();
do
{
if(!i$.hasNext())
break;
VNode vnode = (VNode)i$.next();
if(vnode.VName.equalsIgnoreCase("VCALENDAR"))
{
int firstid = getFirstID_CAL();
if(firstid == -1)
throw new Exception("No calendar exist now.");
ContentValues map = getCalendarMap(vnode);
map.put("_sync_id", (new StringBuilder()).append("content://syncmltestcalendar/calendars/").append(firstid).toString());
insert(android.provider.SyncMLTestCalendar.Calendars.CONTENT_URI, map);
curCalendarId = String.valueOf(firstid);
}
if(vnode.VName.equalsIgnoreCase("VEVENT") || vnode.VName.equalsIgnoreCase("VTODO"))
{
ContentValues map = getEventMap(vnode, curCalendarId);
map.put("_sync_id", uri);
map.put("_sync_local_id", Integer.valueOf(localid));
String tmpid = insert(android.provider.SyncMLTestCalendar.Events.CONTENT_URI, map).getPathLeaf();
Iterator i$ = reminderList.iterator();
while(i$.hasNext())
{
ContentValues m = (ContentValues)i$.next();
m.put("event_id", tmpid);
insert(android.provider.SyncMLTestCalendar.Reminders.CONTENT_URI, m);
}
}
} while(true);
}
ContentURI insert(ContentURI uri, ContentValues map)
throws Exception
{
if(uri.equals(android.provider.SyncMLTestCalendar.Events.CONTENT_URI))
{
long dtstart;
if(map.containsKey("dtstart"))
dtstart = map.getAsLong("dtstart").longValue();
else
dtstart = 0L;
long dtend;
if(map.containsKey("dtend"))
dtend = map.getAsLong("dtend").longValue();
else
dtend = 0L;
String dtdue;
if(map.containsKey("duration"))
dtdue = map.getAsString("duration");
else
dtdue = null;
if(dtstart == 0L)
throw new Exception("DTSTART is invalid.");
if(dtend == 0L && isNull(dtdue))
throw new Exception("DTEND or DTDUE is invalid.");
}
if(provider != null)
return provider.insert(uri, map);
else
return mIContentProvider.insert(uri, map);
}
/**
* @deprecated Method insertFistCal is deprecated
*/
int insertFistCal(VNode vnode)
{
ContentValues mapu;
ContentValues map;
ContentURI uri;
System.out.println("==No calendar instance in system.\r\nAuto create calendar and user.");
mapu = new ContentValues();
mapu.put("username", "user");
mapu.put("passwd", "user");
map = getCalendarMap(vnode);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -