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

📄 vcalendarprovider_v10v20.java

📁 goolge phone 目前没有开放的android 平台的源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// 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 + -