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

📄 vcalendarmerge.java

📁 goolge phone 目前没有开放的android 平台的源码
💻 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 + -