package org.weloveastrid.rmilk.sync; import java.util.ArrayList; import java.util.Iterator; import org.weloveastrid.rmilk.api.data.RtmTaskSeries; import org.weloveastrid.rmilk.data.MilkTaskFields; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.sync.SyncContainer; /** * RTM Task Container * * @author Tim Su * */ public class MilkTaskContainer extends SyncContainer { public long listId, taskSeriesId, taskId; public boolean repeating; public RtmTaskSeries remote; public MilkTaskContainer(Task task, ArrayList metadata, long listId, long taskSeriesId, long taskId, boolean repeating, RtmTaskSeries remote) { this.task = task; this.metadata = metadata; this.listId = listId; this.taskSeriesId = taskSeriesId; this.taskId = taskId; this.repeating = repeating; this.remote = remote; } public MilkTaskContainer(Task task, ArrayList metadata, RtmTaskSeries rtmTaskSeries) { this(task, metadata, Long.parseLong(rtmTaskSeries.getList().getId()), Long.parseLong(rtmTaskSeries.getId()), Long.parseLong(rtmTaskSeries.getTask().getId()), rtmTaskSeries.hasRecurrence(), rtmTaskSeries); } public MilkTaskContainer(Task task, ArrayList metadata) { this(task, metadata, 0, 0, 0, false, null); for(Iterator iterator = metadata.iterator(); iterator.hasNext(); ) { Metadata item = iterator.next(); if(MilkTaskFields.METADATA_KEY.equals(item.getValue(Metadata.KEY))) { if(item.containsNonNullValue(MilkTaskFields.LIST_ID)) listId = item.getValue(MilkTaskFields.LIST_ID); if(item.containsNonNullValue(MilkTaskFields.TASK_SERIES_ID)) taskSeriesId = item.getValue(MilkTaskFields.TASK_SERIES_ID); if(item.containsNonNullValue(MilkTaskFields.TASK_ID)) taskId = item.getValue(MilkTaskFields.TASK_ID); if(item.containsNonNullValue(MilkTaskFields.REPEATING)) repeating = item.getValue(MilkTaskFields.REPEATING) == 1; iterator.remove(); break; } } } @Override public void prepareForSaving() { super.prepareForSaving(); metadata.add(MilkTaskFields.create(this)); } }