package org.dodgybits.shuffle.android.core.model.encoding;
import static android.provider.BaseColumns._ID;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.ALL_DAY;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.CAL_EVENT_ID;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.COMPLETE;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.CONTEXT_ID;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.CREATED_DATE;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.DESCRIPTION;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.DETAILS;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.DISPLAY_ORDER;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.DUE_DATE;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.HAS_ALARM;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.MODIFIED_DATE;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.PROJECT_ID;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.START_DATE;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.TIMEZONE;
import static org.dodgybits.shuffle.android.persistence.provider.TaskProvider.Tasks.TRACKS_ID;
import org.dodgybits.shuffle.android.core.model.Task;
import org.dodgybits.shuffle.android.core.model.Task.Builder;
import android.os.Bundle;
import com.google.inject.Singleton;
@Singleton
public class TaskEncoder extends AbstractEntityEncoder implements
EntityEncoder<Task> {
@Override
public void save(Bundle icicle, Task task) {
putId(icicle, _ID, task.getLocalId());
putId(icicle, TRACKS_ID, task.getTracksId());
icicle.putLong(MODIFIED_DATE, task.getModifiedDate());
putString(icicle, DESCRIPTION, task.getDescription());
putString(icicle, DETAILS, task.getDetails());
putId(icicle, CONTEXT_ID, task.getContextId());
putId(icicle, PROJECT_ID, task.getProjectId());
icicle.putLong(CREATED_DATE, task.getCreatedDate());
icicle.putLong(START_DATE, task.getStartDate());
icicle.putLong(DUE_DATE, task.getDueDate());
putString(icicle, TIMEZONE, task.getTimezone());
putId(icicle, CAL_EVENT_ID, task.getCalendarEventId());
icicle.putBoolean(ALL_DAY, task.isAllDay());
icicle.putBoolean(HAS_ALARM, task.hasAlarms());
icicle.putInt(DISPLAY_ORDER, task.getOrder());
icicle.putBoolean(COMPLETE, task.isComplete());
}
@Override
public Task restore(Bundle icicle) {
if (icicle == null) return null;
Builder builder = Task.newBuilder();
builder.setLocalId(getId(icicle, _ID));
builder.setModifiedDate(icicle.getLong(MODIFIED_DATE, 0L));
builder.setTracksId(getId(icicle, TRACKS_ID));
builder.setDescription(getString(icicle, DESCRIPTION));
builder.setDetails(getString(icicle, DETAILS));
builder.setContextId(getId(icicle, CONTEXT_ID));
builder.setProjectId(getId(icicle, PROJECT_ID));
builder.setCreatedDate(icicle.getLong(CREATED_DATE, 0L));
builder.setStartDate(icicle.getLong(START_DATE, 0L));
builder.setDueDate(icicle.getLong(DUE_DATE, 0L));
builder.setTimezone(getString(icicle, TIMEZONE));
builder.setCalendarEventId(getId(icicle, CAL_EVENT_ID));
builder.setAllDay(icicle.getBoolean(ALL_DAY));
builder.setHasAlarm(icicle.getBoolean(HAS_ALARM));
builder.setOrder(icicle.getInt(DISPLAY_ORDER));
builder.setComplete(icicle.getBoolean(COMPLETE));
return builder.build();
}
}