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();
}
}