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.SkillDAO; import com.ciandt.techgallery.persistence.model.Skill; import com.ciandt.techgallery.persistence.model.TechGalleryUser; import com.ciandt.techgallery.persistence.model.Technology; import java.util.List; /** * SkillDAOImpl methods implementation. * * @author Felipe Goncalves de Castro * */ public class SkillDAOImpl extends GenericDAOImpl<Skill, Long>implements SkillDAO { /* * Attributes -------------------------------------------- */ private static SkillDAOImpl instance; /* * Constructors -------------------------------------------- */ private SkillDAOImpl() {} /** * Singleton method for the DAO. * * @author <a href="mailto:joaom@ciandt.com"> João Felipe de Medeiros Moreira </a> * @since 08/10/2015 * * @return SkillDAOImpl instance. */ public static SkillDAOImpl getInstance() { if (instance == null) { instance = new SkillDAOImpl(); } return instance; } /* * Methods -------------------------------------------- */ @Override public Skill findByUserAndTechnology(TechGalleryUser user, Technology technology) { final Objectify objectify = OfyService.ofy(); final Skill entity = objectify.load().type(Skill.class).filter(Skill.TECH_GALLERY_USER, Ref.create(user)) .filter("technology", Ref.create(technology)).filter(Skill.ACTIVE, Boolean.TRUE).first() .now(); return entity; } @Override public List<Skill> findByTechnology(Technology technology) { final Objectify objectify = OfyService.ofy(); return objectify.load().type(Skill.class).filter(Skill.TECHNOLOGY, Ref.create(technology)) .filter(Skill.ACTIVE, Boolean.TRUE).list(); } }