📄 vcalendarmerge.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: VCalendarMerge.java
package android.syncml.pim.vcreator;
import android.content.*;
import android.database.Cursor;
import android.net.ContentURI;
import android.provider.SyncMLTestCalendar;
import android.util.Log;
import android.util.Time;
import java.util.ArrayList;
// Referenced classes of package android.syncml.pim.vcreator:
// CalendarStruct, VCalendarCreator
public class VCalendarMerge
{
public static class MergeResult
{
public static final int ACTION_INSERT = 1;
public static final int ACTION_UPDATE = 2;
public static final int ACTION_DELETE = 3;
public int action;
public String uri;
public String vCalendar;
public MergeResult()
{
}
}
public VCalendarMerge()
{
resultList = new ArrayList();
}
public void setParameter(ContentProvider provider, Context context, int vcalversion)
{
this.provider = provider;
vcalVersion = vcalversion;
this.context = context;
}
public ArrayList getMergeResult()
throws Exception
{
insertVirtualCal();
Cursor delcur = provider.query(ContentURI.create("content://syncmltestcalendar/deleted_events/"), null, null, null, null, null, null);
do
{
if(!delcur.next())
break;
String localid = delcur.getString(delcur.getColumnIndex("_sync_id"));
if(!isNull(localid))
{
MergeResult res = new MergeResult();
res.action = 3;
res.uri = localid;
res.vCalendar = null;
resultList.add(res);
}
} while(true);
delcur.close();
Cursor cur;
for(cur = provider.query(android.provider.SyncMLTestCalendar.Events.CONTENT_URI, null, null, null, null, null, null); cur.next();)
{
String calid = cur.getString(cur.getColumnIndex("calendar_id"));
if("999".equals(calid))
{
Log.v("VCalendarMerge", "calendar 999 ignored.");
} else
{
String localid = cur.getString(cur.getColumnIndex("_sync_local_id"));
String syncid = cur.getString(cur.getColumnIndex("_sync_id"));
String vcalendar = createVCalendar(cur, (new StringBuilder()).append("content://syncmltestcalendar/events/").append(localid).toString());
MergeResult res = new MergeResult();
if(syncid == null)
res.action = 1;
else
res.action = 2;
res.uri = (new StringBuilder()).append("content://syncmltestcalendar/events/").append(localid).toString();
res.vCalendar = vcalendar;
resultList.add(res);
}
}
cur.close();
return resultList;
}
public ArrayList getMergeResultForSlowSync(IContentProvider provider)
throws Exception
{
if(provider == null)
{
Log.v("VCalendarMerge", "----------------------");
Log.v("VCalendarMerge", "clientDiff is null!\n");
Log.v("VCalendarMerge", "----------------------");
return null;
}
for(Cursor cur = provider.query(android.provider.SyncMLTestCalendar.Events.CONTENT_URI, null, null, null, null, null, null); cur.next();)
{
String calid = cur.getString(cur.getColumnIndex("calendar_id"));
if("999".equals(calid))
{
Log.v("VCalendarMerge", "calendar 999 ignored.");
} else
{
String localid = cur.getString(cur.getColumnIndex("_id"));
String vcal = createVCalendar(cur, (new StringBuilder()).append("content://syncmltestcalendar/events/").append(localid).toString());
MergeResult res = new MergeResult();
res.action = 1;
res.uri = (new StringBuilder()).append("content://syncmltestcalendar/events/").append(localid).toString();
res.vCalendar = vcal;
resultList.add(res);
}
}
return resultList;
}
public String createVCalendar(Cursor c, String uid)
{
CalendarStruct stru;
stru = new CalendarStruct();
stru.timezone = c.getString(c.getColumnIndex("eventTimezone"));
CalendarStruct.EventStruct evstru = new CalendarStruct.EventStruct();
evstru.uid = uid;
evstru.description = c.getString(c.getColumnIndex("description"));
evstru.dtend = convertLongTo2445(c.getLong(c.getColumnIndex("dtend")));
evstru.dtstart = convertLongTo2445(c.getLong(c.getColumnIndex("dtstart")));
evstru.duration = c.getString(c.getColumnIndex("duration"));
evstru.event_location = c.getString(c.getColumnIndex("eventLocation"));
evstru.has_alarm = c.getString(c.getColumnIndex("hasAlarm"));
evstru.last_date = convertLongTo2445(c.getLong(c.getColumnIndex("lastDate")));
evstru.rrule = c.getString(c.getColumnIndex("rrule"));
evstru.status = c.getString(c.getColumnIndex("eventStatus"));
evstru.title = c.getString(c.getColumnIndex("title"));
if(!isNull(evstru.has_alarm))
getReminders(evstru, ContentURI.create(uid).getPathLeaf());
stru.addEventList(evstru);
return VCalendarCreator.createVCal(stru, vcalVersion);
Exception e;
e;
return null;
}
private String convertLongTo2445(long mills)
{
Time time = new Time();
time.set(mills);
return time.format2445();
}
void getReminders(CalendarStruct.EventStruct stru, String localid)
{
Cursor c = context.getContentResolver().query(android.provider.SyncMLTestCalendar.Reminders.CONTENT_URI, null, (new StringBuilder()).append("event_id=").append(localid).toString(), null, null, null, null);
String data = "";
for(; c != null && c.next(); stru.addReminderList(data))
data = c.getString(c.getColumnIndex("method"));
if(c != null)
c.close();
}
private static boolean isNull(String str)
{
return str == null || str.trim().equals("");
}
private void insertVirtualCal()
{
ContentValues calmap;
calmap = new ContentValues();
calmap.put("name", "virtual-vCalendar");
calmap.put("displayName", "virtual-vCalendar");
calmap.put("selected", Integer.valueOf(Integer.parseInt("0")));
calmap.put("_sync_id", "content://syncmltestcalendar/calendars/1");
Cursor c;
c = provider.query(android.provider.SyncMLTestCalendar.Calendars.CONTENT_URI, null, null, null, null, null, null);
if(c.count() > 0)
{
c.close();
return;
}
try
{
c.close();
provider.insert(android.provider.SyncMLTestCalendar.Calendars.CONTENT_URI, calmap);
}
catch(Exception e)
{
e.printStackTrace();
}
return;
}
public static final int VERSION_VCAL10 = 1;
public static final int VERSION_VCAL20 = 2;
private static final String TAG = "VCalendarMerge";
private static final String rooturi = "content://syncmltestcalendar";
ContentProvider provider;
int vcalVersion;
ArrayList resultList;
Context context;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -