package org.dodgybits.shuffle.android.core.model.protocol; import org.dodgybits.shuffle.android.core.model.Context; import org.dodgybits.shuffle.android.core.model.Id; import org.dodgybits.shuffle.android.core.model.Project; import org.dodgybits.shuffle.dto.ShuffleProtos.Project.Builder; public class ProjectProtocolTranslator implements EntityProtocolTranslator<Project, org.dodgybits.shuffle.dto.ShuffleProtos.Project> { private EntityDirectory<Context> mContextDirectory; public ProjectProtocolTranslator(EntityDirectory<Context> contextDirectory) { mContextDirectory = contextDirectory; } public org.dodgybits.shuffle.dto.ShuffleProtos.Project toMessage(Project project) { Builder builder = org.dodgybits.shuffle.dto.ShuffleProtos.Project.newBuilder(); builder .setId(project.getLocalId().getId()) .setName((project.getName())) .setModified(ProtocolUtil.toDate(project.getModifiedDate())) .setParallel(project.isParallel()); final Id defaultContextId = project.getDefaultContextId(); if (defaultContextId.isInitialised()) { builder.setDefaultContextId(defaultContextId.getId()); } final Id tracksId = project.getTracksId(); if (tracksId.isInitialised()) { builder.setTracksId(tracksId.getId()); } return builder.build(); } public Project fromMessage( org.dodgybits.shuffle.dto.ShuffleProtos.Project dto) { Project.Builder builder = Project.newBuilder(); builder .setLocalId(Id.create(dto.getId())) .setName(dto.getName()) .setModifiedDate(ProtocolUtil.fromDate(dto.getModified())) .setParallel(dto.getParallel()); if (dto.hasDefaultContextId()) { Id defaultContextId = Id.create(dto.getDefaultContextId()); Context context = mContextDirectory.findById(defaultContextId); builder.setDefaultContextId(context.getLocalId()); } if (dto.hasTracksId()) { builder.setTracksId(Id.create(dto.getTracksId())); } return builder.build(); } }