ToDoDB.java
package sk.iway.iwcm.components.todo;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.persistence.Query;
import org.eclipse.persistence.expressions.Expression;
import org.eclipse.persistence.expressions.ExpressionBuilder;
import org.eclipse.persistence.jpa.JpaEntityManager;
import org.eclipse.persistence.queries.ReadAllQuery;
import sk.iway.iwcm.Logger;
import sk.iway.iwcm.database.JpaDB;
import sk.iway.iwcm.system.jpa.JpaTools;
/**
* ToDoDB.java
*
* DAO class for manipulating with ToDoBean
*
*
* @Title webjet7
* @Company Interway s.r.o. (www.interway.sk)
* @Copyright Interway s.r.o. (c) 2001-2010
* @author $Author: mkolejak $
* @version $Revision: 1.3 $
* @created Date: 01.07.2014 14:54:26
* @modified $Date: 2004/08/16 06:26:11 $
*/
public class ToDoDB extends JpaDB<ToDoBean>
{
public ToDoDB()
{
super(ToDoBean.class);
}
public static boolean saveToDo(ToDoBean toDo)
{
return new JpaDB<>(ToDoBean.class).save(toDo);
}
public ToDoBean findFirstByToDoId(int todoId)
{
return JpaTools.findFirstByMatchingProperty(ToDoBean.class, "todoId", todoId);
}
public boolean resolveToDo(int todoId)
{
Logger.debug(this, "method resolveToDo() todoId: " + todoId);
ToDoBean toDo = findFirstByToDoId(todoId);
toDo.setIsResolved(true);
toDo.setModifDate(new Date());
boolean wasSaved = saveToDo(toDo);
Logger.debug(this, "method resolveToDo() wasSaved: " + wasSaved);
return wasSaved;
}
public boolean remove(ToDoBean toDoBean) {
return new JpaDB<>(ToDoBean.class).delete(toDoBean);
}
public List<ToDoBean> getToDo(int userId)
{
//Logger.debug(this, "method getToDo()");
JpaEntityManager em = JpaTools.getEclipseLinkEntityManager();
List<ToDoBean> results = new ArrayList<>();
try
{
ExpressionBuilder builder = new ExpressionBuilder();
ReadAllQuery dbQuery = new ReadAllQuery(ToDoBean.class, builder);
Expression isGlobal = builder.get("isGlobal").equal(true);
Expression isResolved = builder.get("isResolved").equal(false);
Expression isUserId = builder.get("userId").equal(userId);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR,-24);
Expression isBetween = builder.get("modifDate").between(cal.getTime(), new Date());
// why name to do why?!?
// "SELECT * FROM to do WHERE is_global=1 OR user_id=? AND (is_resolved=0 OR modif_date BETWEEN ? AND ?) ORDER BY priority, is_resolved";
dbQuery.setSelectionCriteria(isGlobal.or(isUserId.and(isResolved.or(isBetween))));
//Logger.debug(this, "method getToDo() q: " + dbQuery.toString());
Query query = em.createQuery(dbQuery);
results = JpaDB.getResultList(query);
//Logger.debug(this, "method getToDo() results: " + results.toString());
}
catch (Exception e)
{
sk.iway.iwcm.Logger.error(e);
}
finally
{
em.close();
}
return results;
}
}