package dao; import com.google.code.morphia.dao.BasicDAO; import com.google.code.morphia.query.Query; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import model.Producto; import util.MongoConnectionManager; import org.bson.types.ObjectId; public class ProductoDAO extends BasicDAO<Producto, ObjectId> { public ProductoDAO() { super(Producto.class, MongoConnectionManager.instance().getDb()); } public List<Producto> findAll() { return ds.find(Producto.class).asList(); } public List<Producto> findAllVisibles() { Query q = ds.createQuery(Producto.class).field("visible").equal(true); return q.asList(); } public Producto find(ObjectId entidadId) { return get(entidadId); } public List<Producto> findDestacados() { ArrayList<Producto> listado = (ArrayList<Producto>) this.findAllVisibles(); ArrayList<Producto> aleatorio = new ArrayList(); while (aleatorio.size() < 3) { if (aleatorio.size() == listado.size()) { break; } int numeroAleatorio = (int) (Math.random() * listado.size()); if (!aleatorio.contains(listado.get(numeroAleatorio))) { aleatorio.add(listado.get(numeroAleatorio)); } } return aleatorio; } public List<Producto> findOfertas() { Query q = ds.createQuery(Producto.class) .field("visible").equal(true) .field("oferta").equal(true); return q.asList(); } public List<Producto> findByName(String cad) { Pattern patron = Pattern.compile(cad, Pattern.CASE_INSENSITIVE); Query query = createQuery().field("nombre").equal(patron).field("visible").equal(true); return query.asList(); } public List<Producto> findByTradeMark(String cad) { Pattern patron = Pattern.compile(cad, Pattern.CASE_INSENSITIVE); Query query = createQuery().field("marca").equal(patron).field("visible").equal(true); return query.asList(); } public List<Producto> findByCountry(String cad) { Pattern patron = Pattern.compile(cad, Pattern.CASE_INSENSITIVE); Query query = createQuery().field("paisOrigen").equal(patron).field("visible").equal(true); return query.asList(); } public List<Producto> findByType(String cad) { Pattern patron = Pattern.compile(cad, Pattern.CASE_INSENSITIVE); Query query = createQuery().field("tipoTostado").equal(patron).field("visible").equal(true); return query.asList(); } }