package com.ciandt.techgallery.persistence.dao.impl; import com.googlecode.objectify.Objectify; import com.googlecode.objectify.Ref; import com.ciandt.techgallery.ofy.OfyService; import com.ciandt.techgallery.persistence.dao.EndorsementDAO; import com.ciandt.techgallery.persistence.model.Endorsement; import com.ciandt.techgallery.persistence.model.TechGalleryUser; import com.ciandt.techgallery.persistence.model.Technology; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * EndorsementDAOImpl methods implementation. * * @author Felipe Goncalves de Castro * */ public class EndorsementDAOImpl extends GenericDAOImpl<Endorsement, Long> implements EndorsementDAO { private static EndorsementDAOImpl instance; /* * Constructor -------------------------------------------- */ private EndorsementDAOImpl() {} /** * Singleton method for the DAO. * * @author <a href="mailto:joaom@ciandt.com"> João Felipe de Medeiros Moreira </a> * @since 08/10/2015 * * @return EndorsementDAOImpl instance. */ public static EndorsementDAOImpl getInstance() { if (instance == null) { instance = new EndorsementDAOImpl(); } return instance; } /** * {@inheritDoc}. */ @Override public List<Endorsement> findAllByTechnology(String techId) { final Technology tech = new Technology(); tech.setId(techId); final Objectify objectify = OfyService.ofy(); final List<Endorsement> entities = objectify.load().type(Endorsement.class) .filter(Endorsement.TECHNOLOGY, Ref.create(tech)).list(); if (entities == null || entities.size() <= 0) { return new ArrayList<Endorsement>(); } return entities; } /** * {@inheritDoc}. */ @Override public List<Endorsement> findAllActivesByTechnology(String techId) { final Technology tech = new Technology(); tech.setId(techId); final Objectify objectify = OfyService.ofy(); final List<Endorsement> entities = objectify.load().type(Endorsement.class) .filter(Endorsement.TECHNOLOGY, Ref.create(tech)).filter("active", true).list(); if (entities == null || entities.size() <= 0) { return new ArrayList<Endorsement>(); } return entities; } /** * {@inheritDoc}. */ @Override public List<Endorsement> findByUsers(TechGalleryUser endorser, TechGalleryUser endorsed, Technology technology) { final Objectify objectify = OfyService.ofy(); final List<Endorsement> entities = objectify.load().type(Endorsement.class) .filter(Endorsement.TECHNOLOGY, Ref.create(technology)) .filter("endorser", Ref.create(endorser)).filter(Endorsement.ENDORSED, Ref.create(endorsed)) .list(); return entities; } /** * {@inheritDoc}. */ @Override public List<Endorsement> findActivesByUsers(TechGalleryUser endorser, TechGalleryUser endorsed, Technology technology) { final Objectify objectify = OfyService.ofy(); final List<Endorsement> entities = objectify.load().type(Endorsement.class) .filter(Endorsement.TECHNOLOGY, Ref.create(technology)) .filter("endorser", Ref.create(endorser)).filter(Endorsement.ENDORSED, Ref.create(endorsed)) .filter("active", true).list(); return entities; } @Override public List<Endorsement> findAllEndorsementsStartingFrom(TechGalleryUser userEndorsed, Date date) { final Objectify objectify = OfyService.ofy(); final List<Endorsement> endorsements = objectify.load().type(Endorsement.class) .filter(Endorsement.TIMESTAMP + " >", date) .filter(Endorsement.ENDORSED, Ref.create(userEndorsed)) .filter(Endorsement.ACTIVE, Boolean.TRUE).list(); if (endorsements == null || endorsements.size() <= 0) { return null; } return endorsements; } }