package com.example.calendarview; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import java.util.concurrent.TimeUnit; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.AsyncTask; import android.provider.CalendarContract.Events; import android.provider.CalendarContract.Instances; import android.text.format.DateUtils; import android.text.format.Time; public class ImportEntries extends AsyncTask<Context, Void, Void> { Context context; @Override protected Void doInBackground(Context... arg0) { context = arg0[0]; importEntries(); return null; } // private Long[] checkTimes(long id){ // Cursor cur = null; // Long[] times = new Long[2]; // java.util.Calendar c = java.util.Calendar.getInstance(); // long now = c.getTimeInMillis(); // String[] projection = {Instances.BEGIN,Instances.END}; // Uri.Builder builder = Instances.CONTENT_URI.buildUpon(); // ContentUris.appendId(builder,now - DateUtils.YEAR_IN_MILLIS); // ContentUris.appendId(builder,now + DateUtils.YEAR_IN_MILLIS); // cur = context.getContentResolver().query(builder.build(),projection,Instances.EVENT_ID + "=" + id // ,null,null); // if(cur != null && cur.moveToFirst()){ //// do{ // long start = Long.parseLong(cur.getString(0)); // long end = cur.getLong(1); //// long newStart = start - (Long.parseLong(reminders) * (60*1000)); // long current = System.currentTimeMillis(); //// if(start > current){ // times[0] = start; // times[1] = end; //// break; //// } //// }while(cur.moveToNext()); // } // // cur.close(); // return times; // } private void importEntries(){ // Long[] times = new Long[2]; // if(add){ // long time = System.currentTimeMillis(); String[] eventHolder = {Events._ID,Events.CALENDAR_ID,Events.TITLE,Events.EVENT_LOCATION,Events.DESCRIPTION,Events.DTSTART,Events.DTEND}; Cursor c = context.getContentResolver().query(Events.CONTENT_URI,eventHolder,null,null,null); if(c != null && c.moveToFirst()){ do{ long eventID = c.getLong(0); String calID = c.getString(1); String dbEvent = c.getString(2); String dblocation = c.getString(3); String dbdesc = c.getString(4); // times = checkTimes(eventID); Cursor e = context.getContentResolver().query(CalendarProvider.CONTENT_URI,new String[] {CalendarProvider.CALENDAR_ID}, CalendarProvider.EVENT_ID+"=?", new String[] {String.valueOf(eventID)}, null); if(e == null || !e.moveToFirst()){ ContentValues values = new ContentValues(); Calendar cal = Calendar.getInstance(); TimeZone tz = TimeZone.getDefault(); cal.setTimeZone(tz); long offset2 = tz.getRawOffset(); long offset3 = (tz.getOffset(c.getLong(5))/1000) % 60; long offset = 3600000*4; cal.setTimeInMillis(c.getLong(5)); long offset4 = TimeUnit.MILLISECONDS.toSeconds(tz.getOffset(c.getLong(5))); int hours = cal.get(Calendar.HOUR_OF_DAY); int min = cal.get(Calendar.MINUTE); int startDay = Time.getJulianDay(c.getLong(5),offset4); int endDay = Time.getJulianDay(c.getLong(6), TimeUnit.MILLISECONDS.toSeconds(tz.getOffset(c.getLong(6)))); int startMin = (cal.get(Calendar.HOUR_OF_DAY)*60)+cal.get(Calendar.MINUTE); cal = Calendar.getInstance(); cal.setTimeInMillis(c.getLong(6)); int endMin = (cal.get(Calendar.HOUR_OF_DAY)*60)+cal.get(Calendar.MINUTE); values.put(CalendarProvider.DESCRIPTION, dbdesc); values.put(CalendarProvider.END, c.getLong(6)); values.put(CalendarProvider.START, c.getLong(5)); values.put(CalendarProvider.EVENT, dbEvent); values.put(CalendarProvider.EVENT_ID, eventID); values.put(CalendarProvider.LOCATION, dblocation); values.put(CalendarProvider.CALENDAR_ID, calID); values.put(CalendarProvider.START_DAY, startDay); values.put(CalendarProvider.END_DAY, endDay); values.put(CalendarProvider.START_TIME, startMin); values.put(CalendarProvider.END_TIME, endMin); context.getContentResolver().insert(CalendarProvider.CONTENT_URI, values); } e.close(); }while(c.moveToNext()); } c.close(); // }else{ // String[] eventHolder = {Events._ID,Events.CALENDAR_ID,Events.TITLE,Events.EVENT_LOCATION,Events.DESCRIPTION,Events.DTSTART,Events.DTEND}; // Cursor c = getContentResolver().query(Events.CONTENT_URI,eventHolder,null,null,null); // int value = c.getCount(); // int count = 0; // if(c != null && c.moveToFirst()){ // do{ // count++; // long eventID = c.getLong(0); // String calID = c.getString(1); // String dbEvent = c.getString(2); // String dblocation = c.getString(3); // String dbdesc = c.getString(4); // String reminders = getReminders(eventID); // if(reminders == null){ // reminders = "0"; // } // times = checkTimes(eventID,reminders); // // if(times[0] != null && times[1] != null){ // long alert = Long.parseLong(reminders) * (60*1000); // long trueStart = times[0] - alert; // Cursor e = getContentResolver().query(CalendarProvider.CONTENT_URI, new String[] {CalendarProvider.ID}, // CalendarProvider.EVENT_ID+"=?",new String[] {String.valueOf(eventID)},null); // if(e != null && e.moveToFirst()){ // ContentValues values = new ContentValues(); // values.put(CalendarProvider.DESCRIPTION, dbdesc); // values.put(CalendarProvider.END, times[1]); // values.put(CalendarProvider.START, times[0]); // values.put(CalendarProvider.EVENT, dbEvent); // values.put(CalendarProvider.EVENT_ID, eventID); // values.put(CalendarProvider.LOCATION, dblocation); // values.put(CalendarProvider.CALENDAR_ID, calID); // values.put(CalendarProvider.REMINDERS, reminders); // values.put(CalendarProvider.START_WITH_REMINDER, trueStart); // getContentResolver().update(CalendarProvider.CONTENT_URI, values, // CalendarProvider.EVENT_ID+"=?", new String[] {String.valueOf(eventID)}); // }else{ // ContentValues values = new ContentValues(); // values.put(CalendarProvider.BLINK, "Default"); // values.put(CalendarProvider.COLOR, "Default"); // values.put(CalendarProvider.DESCRIPTION, dbdesc); // values.put(CalendarProvider.END, times[1]); // values.put(CalendarProvider.START, times[0]); // values.put(CalendarProvider.EVENT, dbEvent); // values.put(CalendarProvider.EVENT_ID, eventID); // values.put(CalendarProvider.ICON, "Default"); // values.put(CalendarProvider.VIBRATE, "Normal"); // values.put(CalendarProvider.LOCATION, dblocation); // values.put(CalendarProvider.CALENDAR_ID, calID); // values.put(CalendarProvider.REMINDERS, reminders); // values.put(CalendarProvider.START_WITH_REMINDER, trueStart); // getContentResolver().insert(CalendarProvider.CONTENT_URI, values); // } // e.close(); // } // }while(c.moveToNext()); // } // c.close(); // } } }