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.TechnologyLinkDAO; import com.ciandt.techgallery.persistence.model.Technology; import com.ciandt.techgallery.persistence.model.TechnologyLink; import java.util.Date; import java.util.List; /** * Class that implements DAO of TechnologyLink * * @author Sidharta Noleto * @since 22/09/2015 * */ public class TechnologyLinkDAOImpl extends GenericDAOImpl<TechnologyLink, Long> implements TechnologyLinkDAO { private static TechnologyLinkDAOImpl instance; /* * Constructor -------------------------------------------- */ private TechnologyLinkDAOImpl() {} /** * Singleton method for the DAO. * @return TechnologyLinkDAOImpl instance. */ public static TechnologyLinkDAOImpl getInstance() { if (instance == null) { instance = new TechnologyLinkDAOImpl(); } return instance; } @Override public List<TechnologyLink> findAllByTechnology(Technology technology) { final Objectify objectify = OfyService.ofy(); final List<TechnologyLink> entities = objectify.load().type(TechnologyLink.class).order("-" + TechnologyLink.TIMESTAMP) .filter(TechnologyLink.TECHNOLOGY, Ref.create(technology)).list(); return entities; } @Override public List<TechnologyLink> findAllLinksStartingFrom(Technology technology, Date date) { final Objectify objectify = OfyService.ofy(); final List<TechnologyLink> links = objectify.load().type(TechnologyLink.class) .filter(TechnologyLink.TIMESTAMP + " >", date) .filter(TechnologyLink.TECHNOLOGY, technology).list(); if (links == null || links.size() <= 0) { return null; } return links; } }