package com.ciandt.techgallery.service.transformer; import com.google.api.server.spi.config.Transformer; import com.googlecode.objectify.Key; import com.googlecode.objectify.Ref; import com.ciandt.techgallery.persistence.model.TechGalleryUser; import com.ciandt.techgallery.persistence.model.Technology; import com.ciandt.techgallery.persistence.model.TechnologyLink; import com.ciandt.techgallery.service.model.TechnologyLinkTO; import java.util.ArrayList; import java.util.List; /** * TechnologyLinkConverter methods. * * @author Felipe Ibrahim * */ public class TechnologyLinkTransformer implements Transformer<TechnologyLink, TechnologyLinkTO> { /** * Transform entity from datastore into response entity which is transient. * * @param entity from datastore * @return transient entity */ @Override public TechnologyLinkTO transformTo(TechnologyLink entity) { TechnologyLinkTO to = new TechnologyLinkTO(); to.setId(entity.getId()); to.setDescription(entity.getDescription()); to.setLink(entity.getLink()); to.setTechnologyId(entity.getTechnology().get().getId()); to.setCreation(entity.getTimestamp()); to.setAuthor(entity.getAuthor().get()); return to; } /** * Transform a list of entity from datastore into list of response entity which is transient. * * @param entities entity list * @return list of transient entities */ public List<TechnologyLinkTO> fromEntityToTransient(List<TechnologyLink> entities) { List<TechnologyLinkTO> to = new ArrayList<TechnologyLinkTO>(); for (TechnologyLink entity : entities) { to.add(transformTo(entity)); } return to; } /** * Transform entity from response which is transient into datastore entity which can be persisted. * * @param transient entity * @return entity from datastore */ @Override public TechnologyLink transformFrom(TechnologyLinkTO tranzient) { TechnologyLink entity = new TechnologyLink(); entity.setId(tranzient.getId()); entity.setDescription(tranzient.getDescription()); entity.setLink(tranzient.getLink()); if (tranzient.getTechnologyId() != null) { Key<Technology> techKey = Key.create(Technology.class, tranzient.getTechnologyId()); entity.setTechnology(Ref.create(techKey)); } else { entity.setTechnology(null); } if (tranzient.getTechnologyId() != null) { Key<TechGalleryUser> authorKey = Key.create(TechGalleryUser.class, tranzient.getTechnologyId()); entity.setAuthor(Ref.create(authorKey)); } else { entity.setAuthor(null); } return entity; } }