/** * ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium. */ package org.esupportail.helpdesk.dao; import java.math.BigDecimal; import java.math.BigInteger; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import org.esupportail.commons.aop.cache.RequestCache; import org.esupportail.commons.aop.monitor.Monitor; import org.esupportail.commons.dao.AbstractJdbcJndiHibernateDaoService; import org.esupportail.commons.dao.HibernateSequenceUpdater; import org.esupportail.commons.dao.HqlUtils; import org.esupportail.commons.exceptions.ConfigException; import org.esupportail.commons.services.application.UninitializedDatabaseException; import org.esupportail.commons.services.application.VersionningUtils; import org.esupportail.commons.services.authentication.AuthUtils; import org.esupportail.commons.services.logging.Logger; import org.esupportail.commons.services.logging.LoggerImpl; import org.esupportail.commons.utils.Assert; import org.esupportail.helpdesk.domain.ActionType; import org.esupportail.helpdesk.domain.FaqScope; import org.esupportail.helpdesk.domain.TicketScope; import org.esupportail.helpdesk.domain.TicketStatus; import org.esupportail.helpdesk.domain.beans.Action; import org.esupportail.helpdesk.domain.beans.Alert; import org.esupportail.helpdesk.domain.beans.ArchivedAction; import org.esupportail.helpdesk.domain.beans.ArchivedFileInfo; import org.esupportail.helpdesk.domain.beans.ArchivedInvitation; import org.esupportail.helpdesk.domain.beans.ArchivedTicket; import org.esupportail.helpdesk.domain.beans.Bookmark; import org.esupportail.helpdesk.domain.beans.Category; import org.esupportail.helpdesk.domain.beans.CategoryMember; import org.esupportail.helpdesk.domain.beans.Config; import org.esupportail.helpdesk.domain.beans.DeletedItem; import org.esupportail.helpdesk.domain.beans.Department; import org.esupportail.helpdesk.domain.beans.DepartmentInvitation; import org.esupportail.helpdesk.domain.beans.DepartmentManager; import org.esupportail.helpdesk.domain.beans.DepartmentSelectionConfig; import org.esupportail.helpdesk.domain.beans.DeprecatedFaqContainer; import org.esupportail.helpdesk.domain.beans.DeprecatedFaqEntry; import org.esupportail.helpdesk.domain.beans.Faq; import org.esupportail.helpdesk.domain.beans.FaqEvent; import org.esupportail.helpdesk.domain.beans.FaqLink; import org.esupportail.helpdesk.domain.beans.FileInfo; import org.esupportail.helpdesk.domain.beans.HistoryItem; import org.esupportail.helpdesk.domain.beans.Icon; import org.esupportail.helpdesk.domain.beans.Invitation; import org.esupportail.helpdesk.domain.beans.OldFaqEntry; import org.esupportail.helpdesk.domain.beans.OldFaqPart; import org.esupportail.helpdesk.domain.beans.OldFileInfo; import org.esupportail.helpdesk.domain.beans.OldTicketTemplate; import org.esupportail.helpdesk.domain.beans.Response; import org.esupportail.helpdesk.domain.beans.State; import org.esupportail.helpdesk.domain.beans.Ticket; import org.esupportail.helpdesk.domain.beans.TicketMonitoring; import org.esupportail.helpdesk.domain.beans.TicketView; import org.esupportail.helpdesk.domain.beans.User; import org.esupportail.helpdesk.domain.beans.VersionManager; import org.esupportail.helpdesk.domain.beans.statistics.DayOfWeekTicketCreationStatistic; import org.esupportail.helpdesk.domain.beans.statistics.DayOfWeekTimeStatistic; import org.esupportail.helpdesk.domain.beans.statistics.DayTicketCreationStatistic; import org.esupportail.helpdesk.domain.beans.statistics.DayTimeStatistic; import org.esupportail.helpdesk.domain.beans.statistics.HourOfDayTicketCreationStatistic; import org.esupportail.helpdesk.domain.beans.statistics.HourOfDayTimeStatistic; import org.esupportail.helpdesk.domain.beans.statistics.HourOfWeekTicketCreationStatistic; import org.esupportail.helpdesk.domain.beans.statistics.HourOfWeekTimeStatistic; import org.esupportail.helpdesk.domain.beans.statistics.MonthTicketCreationStatistic; import org.esupportail.helpdesk.domain.beans.statistics.MonthTimeStatistic; import org.esupportail.helpdesk.domain.beans.statistics.SpentTimeStatistic; import org.esupportail.helpdesk.domain.beans.statistics.StatusStatistic; import org.esupportail.helpdesk.domain.beans.statistics.YearTicketCreationStatistic; import org.esupportail.helpdesk.domain.beans.statistics.YearTimeStatistic; import org.esupportail.helpdesk.domain.userManagement.ApplicationUserManager; import org.esupportail.helpdesk.domain.userManagement.CasUserManager; import org.esupportail.helpdesk.domain.userManagement.ShibbolethUserManager; import org.esupportail.helpdesk.exceptions.CategoryNotFoundException; import org.esupportail.helpdesk.exceptions.TicketNotFoundException; import org.esupportail.helpdesk.services.statistics.StatisticsExtractor; import org.esupportail.helpdesk.services.statistics.StatisticsUtils; import org.esupportail.helpdesk.web.beans.StatisticsTicketEntry; import org.esupportail.helpdesk.web.beans.UserTicketCreationStatisticEntry; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.springframework.jdbc.BadSqlGrammarException; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.util.StringUtils; /** * The Hiberate implementation of the DAO service. * * See /properties/dao/dao-example.xml */ @Monitor public class HibernateDaoServiceImpl extends AbstractJdbcJndiHibernateDaoService implements DaoService { /** * The serialization id. */ private static final long serialVersionUID = 6081277905929191788L; /** * The name of the 'id' attribute. */ private static final String ID_ATTRIBUTE = "id"; /** * The name of the 'order' attribute. */ private static final String ORDER_ATTRIBUTE = "order"; /** * The name of the 'user' attribute. */ private static final String USER_ATTRIBUTE = "user"; /** * The name of the 'department' attribute. */ private static final String DEPARTMENT_ATTRIBUTE = "department"; /** * The name of the 'label' attribute. */ private static final String LABEL_ATTRIBUTE = "label"; /** * The name of the 'parent' attribute. */ private static final String PARENT_ATTRIBUTE = "parent"; /** * The name of the 'oldFaqPart' attribute. */ private static final String OLD_FAQ_PART_ATTRIBUTE = "oldFaqPart"; /** * The name of the 'category' attribute. */ private static final String CATEGORY_ATTRIBUTE = "category"; /** * The name of the 'realCategory' attribute. */ private static final String REAL_CATEGORY_ATTRIBUTE = "realCategory"; /** * The name of the 'ticket' attribute. */ private static final String TICKET_ATTRIBUTE = "ticket"; /** * The name of the 'archivedTicket' attribute. */ private static final String ARCHIVED_TICKET_ATTRIBUTE = "archivedTicket"; /** * The name of the 'action' attribute. */ private static final String ACTION_ATTRIBUTE = "action"; /** * A database type. */ private static final String DATABASE_TYPE_MYSQL = "mysql"; /** * A database type. */ private static final String DATABASE_TYPE_POSTGRES = "postgres"; /** * A logger. */ private Logger logger = new LoggerImpl(getClass()); /** * The file manager. */ private FileManager fileManager; /** * The database type. */ private String databaseType; /** * Bean constructor. */ public HibernateDaoServiceImpl() { super(); } /** * @see org.esupportail.commons.dao.AbstractGenericHibernateDaoService#initDao() */ @Override public void initDao() { Assert.notNull(this.fileManager, "property fileManager of class " + this.getClass().getName() + " can not be null"); Assert.notNull(this.databaseType, "property databaseType of class " + this.getClass().getName() + " can not be null (set property jdbcUrl)"); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________USER() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getUser(java.lang.String) */ @Override public User getUser(final String id) { return (User) getHibernateTemplate().get(User.class, id); } /** * @see org.esupportail.helpdesk.dao.DaoService#getUsers() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<User> getUsers() { return getHibernateTemplate().loadAll(User.class); } /** * @see org.esupportail.helpdesk.dao.DaoService#getUsersNumber() */ @Override @RequestCache public int getUsersNumber() { String queryStr = HqlUtils.selectCountAllFrom( User.class.getSimpleName()); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCasUsersNumber() */ @Override @RequestCache public int getCasUsersNumber() { String queryStr = HqlUtils.selectCountAllFromWhere( User.class.getSimpleName(), HqlUtils.equals("authType", HqlUtils.quote(AuthUtils.CAS))); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getShibbolethUsersNumber() */ @Override @RequestCache public int getShibbolethUsersNumber() { String queryStr = HqlUtils.selectCountAllFromWhere( User.class.getSimpleName(), HqlUtils.equals("authType", HqlUtils.quote(AuthUtils.SHIBBOLETH))); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getApplicationUsersNumber() */ @Override @RequestCache public int getApplicationUsersNumber() { String queryStr = HqlUtils.selectCountAllFromWhere( User.class.getSimpleName(), HqlUtils.equals("authType", HqlUtils.quote(AuthUtils.APPLICATION))); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#addUser(org.esupportail.helpdesk.domain.beans.User) */ @Override public void addUser(final User user) { addObject(user); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteUser(org.esupportail.helpdesk.domain.beans.User) */ @Override public void deleteUser(final User user) { deleteObject(user); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateUser(org.esupportail.helpdesk.domain.beans.User) */ @Override public void updateUser(final User user) { updateObject(user); } /** * @see org.esupportail.helpdesk.dao.DaoService#getUserWithAuthSecret(java.lang.String) */ @Override @SuppressWarnings("unchecked") @RequestCache public User getUserWithAuthSecret(final String authSecret) { DetachedCriteria criteria = DetachedCriteria.forClass(User.class); criteria.add(Restrictions.eq("authSecret", authSecret)); List<User> users = getHibernateTemplate().findByCriteria(criteria); if (users.size() == 0) { return null; } return users.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#getAdmins() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<User> getAdmins() { DetachedCriteria criteria = DetachedCriteria.forClass(User.class); criteria.add(Restrictions.eq("admin", Boolean.TRUE)); return getHibernateTemplate().findByCriteria(criteria); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________DEPARTMENT() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartment(long) */ @Override @RequestCache public Department getDepartment(final long id) { return (Department) this.getHibernateTemplate().get(Department.class, id); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartments() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Department> getDepartments() { DetachedCriteria criteria = DetachedCriteria.forClass(Department.class); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getEnabledDepartments() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Department> getEnabledDepartments() { DetachedCriteria criteria = DetachedCriteria.forClass(Department.class); criteria.add(Restrictions.eq("enabled", Boolean.TRUE)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentsNumber() */ @Override @RequestCache public int getDepartmentsNumber() { String queryStr = HqlUtils.selectCountAllFrom(Department.class.getSimpleName()); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getRealDepartmentsNumber() */ @Override @RequestCache public int getRealDepartmentsNumber() { String queryStr = HqlUtils.selectCountAllFromWhere( Department.class.getSimpleName(), HqlUtils.isNull("realDepartment")); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getVirtualDepartmentsNumber() */ @Override @RequestCache public int getVirtualDepartmentsNumber() { String queryStr = HqlUtils.selectCountAllFromWhere( Department.class.getSimpleName(), HqlUtils.isNotNull("realDepartment")); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#addDepartment( * org.esupportail.helpdesk.domain.beans.Department) */ @Override public void addDepartment(final Department department) { addObject(department); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateDepartment( * org.esupportail.helpdesk.domain.beans.Department) */ @Override public void updateDepartment(final Department department) { updateObject(department); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteDepartment( * org.esupportail.helpdesk.domain.beans.Department) */ @Override public void deleteDepartment(final Department department) { executeUpdate(HqlUtils.deleteWhere( DepartmentManager.class.getSimpleName() + " dm", HqlUtils.equals("dm.department.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( Ticket.class.getSimpleName() + " t", "t.creationDepartment = NULL", HqlUtils.equals("t.creationDepartment.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( Action.class.getSimpleName() + " a", "a.departmentBefore = NULL", HqlUtils.equals("a.departmentBefore.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( Action.class.getSimpleName() + " a", "a.departmentAfter = NULL", HqlUtils.equals("a.departmentAfter.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedTicket.class.getSimpleName() + " t", "t.creationDepartment = NULL", HqlUtils.equals("t.creationDepartment.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedAction.class.getSimpleName() + " a", "a.departmentBefore = NULL", HqlUtils.equals("a.departmentBefore.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedAction.class.getSimpleName() + " a", "a.departmentAfter = NULL", HqlUtils.equals("a.departmentAfter.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( User.class.getSimpleName() + " u", "u.controlPanelManagerDepartmentFilter = NULL, u.controlPanelCategoryFilter = NULL", HqlUtils.equals("u.controlPanelManagerDepartmentFilter.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( User.class.getSimpleName() + " u", "u.controlPanelUserDepartmentFilter = NULL", HqlUtils.equals("u.controlPanelUserDepartmentFilter.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( User.class.getSimpleName() + " u", "u.searchDepartmentFilter = NULL", HqlUtils.equals("u.searchDepartmentFilter.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( User.class.getSimpleName() + " u", "u.journalDepartmentFilter = NULL", HqlUtils.equals("u.journalDepartmentFilter.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedTicket.class.getSimpleName() + " at", "at.creationDepartment = NULL", HqlUtils.equals("at.creationDepartment.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedAction.class.getSimpleName() + " aa", "aa.departmentBefore = NULL", HqlUtils.equals("aa.departmentBefore.id", department.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedAction.class.getSimpleName() + " aa", "aa.departmentAfter = NULL", HqlUtils.equals("aa.departmentAfter.id", department.getId()))); executeUpdate(HqlUtils.deleteWhere( DepartmentInvitation.class.getSimpleName() + " di", HqlUtils.equals("di.department.id", department.getId()))); executeUpdate(HqlUtils.deleteWhere( FaqLink.class.getSimpleName() + " fl", HqlUtils.equals("fl.department.id", department.getId()))); deleteObject(department); } /** * @see org.esupportail.helpdesk.dao.DaoService#isDepartmentLabelUsed(java.lang.String) */ @Override @SuppressWarnings("unchecked") @RequestCache public boolean isDepartmentLabelUsed(final String label) { DetachedCriteria criteria = DetachedCriteria.forClass(Department.class); criteria.add(Restrictions.eq(LABEL_ATTRIBUTE, label)); List<Department> result = getHibernateTemplate().findByCriteria(criteria); return result.size() > 0; } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentByOrder(int) */ @Override @SuppressWarnings("unchecked") public Department getDepartmentByOrder(final int i) { DetachedCriteria criteria = DetachedCriteria.forClass(Department.class); criteria.add(Restrictions.eq(ORDER_ATTRIBUTE, new Integer(i))); List<Department> departments = getHibernateTemplate().findByCriteria(criteria); if (departments.isEmpty()) { return null; } return departments.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#getVirtualDepartments( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Department> getVirtualDepartments(final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(Department.class); criteria.add(Restrictions.eq("realDepartment", department)); criteria.addOrder(Order.asc("label")); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getVirtualDepartmentsNumber( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @RequestCache public int getVirtualDepartmentsNumber(final Department department) { String queryStr = HqlUtils.selectCountAllFromWhere( Department.class.getSimpleName(), HqlUtils.equals("realDepartment.id", department.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentsByFilter(java.lang.String) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Department> getDepartmentsByFilter( final String filter) { DetachedCriteria criteria = DetachedCriteria.forClass(Department.class); if (StringUtils.hasText(filter)) { criteria.add(Restrictions.eq("filter", filter)); } else { criteria.add(Restrictions.isNull("filter")); } criteria.add(Restrictions.eq("enabled", Boolean.TRUE)); criteria.addOrder(Order.asc("order")); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentByLabel(java.lang.String) */ @Override @SuppressWarnings("unchecked") @RequestCache public Department getDepartmentByLabel( final String label) { DetachedCriteria criteria = DetachedCriteria.forClass(Department.class); criteria.add(Restrictions.eq("label", label)); criteria.add(Restrictions.eq("enabled", Boolean.TRUE)); List<Department> departments = getHibernateTemplate().findByCriteria(criteria); if (departments.size() == 0) { return null; } return departments.get(0); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________DEPARTMENT_MANAGER() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentManager( * org.esupportail.helpdesk.domain.beans.Department, org.esupportail.helpdesk.domain.beans.User) */ @Override @RequestCache public DepartmentManager getDepartmentManager( final Department department, final User user) { DetachedCriteria criteria = DetachedCriteria.forClass(DepartmentManager.class); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); @SuppressWarnings("unchecked") List<DepartmentManager> managers = getHibernateTemplate().findByCriteria(criteria); if (managers.isEmpty()) { return null; } return managers.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#isFaqDepartmentManager( * org.esupportail.helpdesk.domain.beans.User) */ @Override @RequestCache public boolean isFaqDepartmentManager( final User user) { DetachedCriteria criteria = DetachedCriteria.forClass(DepartmentManager.class); criteria.add(Restrictions.eq("manageFaq", Boolean.TRUE)); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); @SuppressWarnings("unchecked") List<DepartmentManager> managers = getHibernateTemplate().findByCriteria(criteria); return !managers.isEmpty(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentManagers() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<DepartmentManager> getDepartmentManagers() { DetachedCriteria criteria = DetachedCriteria.forClass(DepartmentManager.class); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentManagers( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<DepartmentManager> getDepartmentManagers( final Department department) { if (department == null) { return new ArrayList<DepartmentManager>(); } DetachedCriteria criteria = DetachedCriteria.forClass(DepartmentManager.class); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getAvailableDepartmentManagers( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<DepartmentManager> getAvailableDepartmentManagers( final Department department) { if (department == null) { return new ArrayList<DepartmentManager>(); } DetachedCriteria criteria = DetachedCriteria.forClass(DepartmentManager.class); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); criteria.add(Restrictions.eq("available", Boolean.TRUE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentManagersNumber( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @RequestCache public int getDepartmentManagersNumber(final Department department) { String queryStr = HqlUtils.selectCountAllFromWhere( DepartmentManager.class.getSimpleName() + HqlUtils.AS_KEYWORD + "dm", HqlUtils.equals("department.id", department.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentManagerByOrder( * org.esupportail.helpdesk.domain.beans.Department, int) */ @Override @SuppressWarnings("unchecked") @RequestCache public DepartmentManager getDepartmentManagerByOrder( final Department department, final int i) { DetachedCriteria criteria = DetachedCriteria.forClass(DepartmentManager.class); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); criteria.add(Restrictions.eq(ORDER_ATTRIBUTE, new Integer(i))); List<DepartmentManager> departmentManagers = getHibernateTemplate().findByCriteria(criteria); if (departmentManagers.isEmpty()) { return null; } return departmentManagers.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#addDepartmentManager( * org.esupportail.helpdesk.domain.beans.DepartmentManager) */ @Override public void addDepartmentManager( final DepartmentManager departmentManager) { addObject(departmentManager); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateDepartmentManager( * org.esupportail.helpdesk.domain.beans.DepartmentManager) */ @Override public void updateDepartmentManager( final DepartmentManager departmentManager) { updateObject(departmentManager); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteDepartmentManager( * org.esupportail.helpdesk.domain.beans.DepartmentManager) */ @Override public void deleteDepartmentManager( final DepartmentManager departmentManager) { deleteObject(departmentManager); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentManagers( * org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<DepartmentManager> getDepartmentManagers(final User user) { DetachedCriteria criteria = DetachedCriteria.forClass(DepartmentManager.class, "dm"); criteria.createAlias("dm.department", "dep"); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); criteria.addOrder(Order.asc("dep.order")); return getHibernateTemplate().findByCriteria(criteria); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________CATEGORY() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategory(long) */ @Override @RequestCache public Category getCategory(final long id) throws CategoryNotFoundException { return (Category) this.getHibernateTemplate().get(Category.class, id); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategories(org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Category> getCategories(final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(Category.class); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoriesWithEffectiveDefaultTicketScope( * org.esupportail.helpdesk.domain.beans.Department, java.lang.String) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Category> getCategoriesWithEffectiveDefaultTicketScope( final Department department, final String scope) { DetachedCriteria criteria = DetachedCriteria.forClass(Category.class); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); criteria.add(Restrictions.eq("effectiveDefaultTicketScope", scope)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategories() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Category> getCategories() { DetachedCriteria criteria = DetachedCriteria.forClass(Category.class); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#addCategory(org.esupportail.helpdesk.domain.beans.Category) */ @Override public void addCategory(final Category category) { addObject(category); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateCategory(org.esupportail.helpdesk.domain.beans.Category) */ @Override public void updateCategory(final Category category) { updateObject(category); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteCategory(org.esupportail.helpdesk.domain.beans.Category) */ @Override public void deleteCategory(final Category category) { executeUpdate(HqlUtils.updateWhere( Action.class.getSimpleName() + " a", "a.categoryBefore = NULL", HqlUtils.equals("a.categoryBefore.id", category.getId()))); executeUpdate(HqlUtils.updateWhere( Action.class.getSimpleName() + " a", "a.categoryAfter = NULL", HqlUtils.equals("a.categoryAfter.id", category.getId()))); executeUpdate(HqlUtils.deleteWhere( CategoryMember.class.getSimpleName() + " cm", HqlUtils.equals("cm.category.id", category.getId()))); executeUpdate(HqlUtils.updateWhere( User.class.getSimpleName() + " u", "u.controlPanelCategoryFilter = NULL", HqlUtils.equals("u.controlPanelCategoryFilter.id", category.getId()))); executeUpdate(HqlUtils.deleteWhere( FaqLink.class.getSimpleName() + " fl", HqlUtils.equals("fl.category.id", category.getId()))); deleteObject(category); } /** * @see org.esupportail.helpdesk.dao.DaoService#getRootCategories( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Category> getRootCategories(final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(Category.class); criteria.add(Restrictions.isNull(PARENT_ATTRIBUTE)); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getSubCategories(org.esupportail.helpdesk.domain.beans.Category) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Category> getSubCategories(final Category category) { DetachedCriteria criteria = DetachedCriteria.forClass(Category.class); criteria.add(Restrictions.eq(PARENT_ATTRIBUTE, category)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getRootCategoriesNumber( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @RequestCache public int getRootCategoriesNumber(final Department department) { String queryStr = HqlUtils.selectCountAllFromWhere( Category.class.getSimpleName() + HqlUtils.AS_KEYWORD + "category", HqlUtils.and( HqlUtils.equals("department.id", department.getId()), HqlUtils.isNull("parent"))); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getSubCategoriesNumber( * org.esupportail.helpdesk.domain.beans.Category) */ @Override @RequestCache public int getSubCategoriesNumber(final Category category) { String queryStr = HqlUtils.selectCountAllFromWhere( Category.class.getSimpleName() + HqlUtils.AS_KEYWORD + "category", HqlUtils.equals("parent.id", category.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoryByOrder( * org.esupportail.helpdesk.domain.beans.Department, org.esupportail.helpdesk.domain.beans.Category, int) */ @Override @SuppressWarnings("unchecked") @RequestCache public Category getCategoryByOrder( final Department department, final Category parent, final int i) { DetachedCriteria criteria = DetachedCriteria.forClass(Category.class); if (parent == null) { criteria.add(Restrictions.isNull(PARENT_ATTRIBUTE)); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); } else { criteria.add(Restrictions.eq(PARENT_ATTRIBUTE, parent)); } criteria.add(Restrictions.eq(ORDER_ATTRIBUTE, new Integer(i))); List<Category> categories = getHibernateTemplate().findByCriteria(criteria); if (categories.isEmpty()) { return null; } return categories.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#getVirtualCategories( * org.esupportail.helpdesk.domain.beans.Category) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Category> getVirtualCategories(final Category category) { DetachedCriteria criteria = DetachedCriteria.forClass(Category.class); criteria.add(Restrictions.eq(REAL_CATEGORY_ATTRIBUTE, category)); criteria.addOrder(Order.asc("department")); criteria.addOrder(Order.asc("label")); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getVirtualCategoriesNumber( * org.esupportail.helpdesk.domain.beans.Category) */ @Override @RequestCache public int getVirtualCategoriesNumber(final Category category) { String queryStr = HqlUtils.selectCountAllFromWhere( Category.class.getSimpleName(), HqlUtils.equals("realCategory.id", category.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoriesNumber() */ @Override @RequestCache public int getCategoriesNumber() { String queryStr = HqlUtils.selectCountAllFrom( Category.class.getSimpleName()); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getRealCategoriesNumber() */ @Override @RequestCache public int getRealCategoriesNumber() { String queryStr = HqlUtils.selectCountAllFromWhere( Category.class.getSimpleName(), HqlUtils.isNull("realCategory")); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getVirtualCategoriesNumber() */ @Override @RequestCache public int getVirtualCategoriesNumber() { String queryStr = HqlUtils.selectCountAllFromWhere( Category.class.getSimpleName(), HqlUtils.isNotNull("realCategory")); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTargetCategories( * org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") public List<Category> getTargetCategories(final User author) { Query query = getQuery(HqlUtils.selectFromWhereOrderByDesc( "a.categoryAfter", Action.class.getSimpleName() + HqlUtils.AS_KEYWORD + "a", HqlUtils.and( HqlUtils.equals("a.user.id", HqlUtils.quote(author.getId())), HqlUtils.or( HqlUtils.equals("a.actionType", HqlUtils.quote(ActionType.CHANGE_CATEGORY)), HqlUtils.equals("a.actionType", HqlUtils.quote(ActionType.CHANGE_DEPARTMENT)))), "a.id")); return query.list(); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________CATEGORY_MEMBER() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoryMember( * org.esupportail.helpdesk.domain.beans.Category, org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public CategoryMember getCategoryMember( final Category category, final User user) { DetachedCriteria criteria = DetachedCriteria.forClass(CategoryMember.class); criteria.add(Restrictions.eq(CATEGORY_ATTRIBUTE, category)); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); List<CategoryMember> members = getHibernateTemplate().findByCriteria(criteria); if (members.isEmpty()) { return null; } return members.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoryMembers( * org.esupportail.helpdesk.domain.beans.Category) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<CategoryMember> getCategoryMembers(final Category category) { DetachedCriteria criteria = DetachedCriteria.forClass(CategoryMember.class); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); criteria.add(Restrictions.eq(CATEGORY_ATTRIBUTE, category)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoryMembersNumber( * org.esupportail.helpdesk.domain.beans.Category) */ @Override @RequestCache public int getCategoryMembersNumber(final Category category) { String queryStr = HqlUtils.selectCountAllFromWhere( CategoryMember.class.getSimpleName() + HqlUtils.AS_KEYWORD + "categoryMember", HqlUtils.equals("category.id", category.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoryMembers() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<CategoryMember> getCategoryMembers() { DetachedCriteria criteria = DetachedCriteria.forClass(CategoryMember.class); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#addCategoryMember( * org.esupportail.helpdesk.domain.beans.CategoryMember) */ @Override public void addCategoryMember(final CategoryMember categoryMember) { addObject(categoryMember); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateCategoryMember( * org.esupportail.helpdesk.domain.beans.CategoryMember) */ @Override public void updateCategoryMember(final CategoryMember categoryMember) { updateObject(categoryMember); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteCategoryMember( * org.esupportail.helpdesk.domain.beans.CategoryMember) */ @Override public void deleteCategoryMember(final CategoryMember categoryMember) { deleteObject(categoryMember); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoryMembers( * org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<CategoryMember> getCategoryMembers(final User user) { DetachedCriteria criteria = DetachedCriteria.forClass(CategoryMember.class); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoryMembers( * org.esupportail.helpdesk.domain.beans.User, org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<CategoryMember> getCategoryMembers( final User user, final Department department) { Query query = getQuery(HqlUtils.fromWhere( CategoryMember.class.getSimpleName() + HqlUtils.AS_KEYWORD + "cm", HqlUtils.and( HqlUtils.equals( "user.id", HqlUtils.quote(user.getId())), HqlUtils.equals( "category.department.id", department.getId())))); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoryMemberByOrder( * org.esupportail.helpdesk.domain.beans.Category, int) */ @Override @SuppressWarnings("unchecked") @RequestCache public CategoryMember getCategoryMemberByOrder( final Category category, final int i) { DetachedCriteria criteria = DetachedCriteria.forClass(CategoryMember.class); criteria.add(Restrictions.eq(CATEGORY_ATTRIBUTE, category)); criteria.add(Restrictions.eq(ORDER_ATTRIBUTE, new Integer(i))); List<CategoryMember> categoryMembers = getHibernateTemplate().findByCriteria(criteria); if (categoryMembers.isEmpty()) { return null; } return categoryMembers.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#getCategoryMembers( * org.esupportail.helpdesk.domain.beans.DepartmentManager) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<CategoryMember> getCategoryMembers(final DepartmentManager departmentManager) { Query query = getQuery(HqlUtils.fromWhere( CategoryMember.class.getSimpleName() + HqlUtils.AS_KEYWORD + "cm", HqlUtils.and( HqlUtils.equals( "user.id", HqlUtils.quote(departmentManager.getUser().getId())), HqlUtils.equals( "category.department.id", departmentManager.getDepartment().getId())))); return query.list(); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________FAQ() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaq(long) */ @Override @RequestCache public Faq getFaq(final long id) { return (Faq) this.getHibernateTemplate().get(Faq.class, id); } /** * @see org.esupportail.helpdesk.dao.DaoService#addFaq( * org.esupportail.helpdesk.domain.beans.Faq) */ @Override public void addFaq(final Faq faq) { addObject(faq); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateFaq( * org.esupportail.helpdesk.domain.beans.Faq) */ @Override public void updateFaq(final Faq faq) { updateObject(faq); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteFaq( * org.esupportail.helpdesk.domain.beans.Faq) */ @Override public void deleteFaq(final Faq faq) { executeUpdate(HqlUtils.updateWhere( Ticket.class.getSimpleName(), "connectionFaq = NULL", HqlUtils.equals("connectionFaq.id", faq.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedTicket.class.getSimpleName(), "connectionFaq = NULL", HqlUtils.equals("connectionFaq.id", faq.getId()))); executeUpdate(HqlUtils.deleteWhere( FaqLink.class.getSimpleName(), HqlUtils.equals("faq.id", faq.getId()))); deleteObject(faq); } /** * @see org.esupportail.helpdesk.dao.DaoService#getRootFaqs( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Faq> getRootFaqs(final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(Faq.class); criteria.add(Restrictions.isNull(PARENT_ATTRIBUTE)); if (department == null) { criteria.add(Restrictions.isNull(DEPARTMENT_ATTRIBUTE)); } else { criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); } criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getSubFaqs( * org.esupportail.helpdesk.domain.beans.Faq) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Faq> getSubFaqs(final Faq faq) { DetachedCriteria criteria = DetachedCriteria.forClass(Faq.class); criteria.add(Restrictions.eq(PARENT_ATTRIBUTE, faq)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getRootFaqsNumber( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @RequestCache public int getRootFaqsNumber(final Department department) { String nullParentCondition = HqlUtils.isNull("parent"); String departmentCondition; if (department == null) { departmentCondition = HqlUtils.isNull("department"); } else { departmentCondition = HqlUtils.equals("department", department.getId()); } String queryStr = HqlUtils.selectCountAllFromWhere( Faq.class.getSimpleName(), HqlUtils.and(nullParentCondition, departmentCondition)); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getSubFaqsNumber( * org.esupportail.helpdesk.domain.beans.Faq) */ @Override @RequestCache public int getSubFaqsNumber(final Faq faq) { String queryStr = HqlUtils.selectCountAllFromWhere( Faq.class.getSimpleName(), HqlUtils.equals("parent.id", faq.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqByOrder( * org.esupportail.helpdesk.domain.beans.Department, org.esupportail.helpdesk.domain.beans.Faq, int) */ @Override @SuppressWarnings("unchecked") @RequestCache public Faq getFaqByOrder( final Department department, final Faq parent, final int i) { DetachedCriteria criteria = DetachedCriteria.forClass(Faq.class); if (parent == null) { criteria.add(Restrictions.isNull(PARENT_ATTRIBUTE)); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); } else { criteria.add(Restrictions.eq(PARENT_ATTRIBUTE, parent)); } criteria.add(Restrictions.eq(ORDER_ATTRIBUTE, new Integer(i))); List<Faq> faqs = getHibernateTemplate().findByCriteria(criteria); if (faqs.isEmpty()) { return null; } return faqs.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqsChangedAfter( * java.sql.Timestamp, int) */ @Override @SuppressWarnings("unchecked") public List<Faq> getFaqsChangedAfter( final Timestamp lastUpdate, final int maxResults) { Query query = getQuery(HqlUtils.fromWhereOrderByAsc( Faq.class.getSimpleName(), HqlUtils.ge("lastUpdate", HqlUtils.quote(lastUpdate.toString())), "lastUpdate")); query.setMaxResults(maxResults); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#hasVisibleFaq( * org.esupportail.helpdesk.domain.beans.User, java.util.List) */ @Override @RequestCache public boolean hasVisibleFaq( final User user, final List<Department> faqVisibleDepartments) { List<String> rootScopes = new ArrayList<String>(); rootScopes.add(FaqScope.ALL); if (user != null) { rootScopes.add(FaqScope.AUTHENTICATED); if (user.getAdmin()) { rootScopes.add(FaqScope.MANAGER); } } String rootCondition = HqlUtils.and( HqlUtils.stringIn("effectiveScope", rootScopes), HqlUtils.isNull("department")); // build managed and visible departments ids List<Department> managedDepartments = new ArrayList<Department>(); for (DepartmentManager manager : getDepartmentManagers(user)) { managedDepartments.add(manager.getDepartment()); } List<Long> managedDepartmentIds = new ArrayList<Long>(); List<Long> visibleDepartmentIds = new ArrayList<Long>(); for (Department department : getEnabledDepartments()) { if (managedDepartments.contains(department)) { managedDepartmentIds.add(department.getId()); } else if (faqVisibleDepartments.contains(department)) { visibleDepartmentIds.add(department.getId()); } } // look for FAQs in managed departments String managedCondition = HqlUtils.longIn("department", managedDepartmentIds); // look for FAQs in visible departments List<String> visibleScopes = new ArrayList<String>(); visibleScopes.add(FaqScope.ALL); if (user != null) { visibleScopes.add(FaqScope.AUTHENTICATED); } visibleScopes.add(FaqScope.DEPARTMENT); String visibleCondition = HqlUtils.and( HqlUtils.stringIn("effectiveScope", visibleScopes), HqlUtils.longIn("department", visibleDepartmentIds)); // mix conditions String condition = HqlUtils.and( HqlUtils.isNull("parent"), HqlUtils.or(rootCondition, managedCondition, visibleCondition)); return getQueryIntResult( HqlUtils.selectCountAllFromWhere( Faq.class.getSimpleName(), condition)) > 0; } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________FAQ_EVENT() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#addFaqEvent( * org.esupportail.helpdesk.domain.beans.FaqEvent) */ @Override public void addFaqEvent(final FaqEvent faqEvent) { addObject(faqEvent); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqEvents() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<FaqEvent> getFaqEvents() { DetachedCriteria criteria = DetachedCriteria.forClass(FaqEvent.class); criteria.addOrder(Order.desc("date")); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteFaqEvent( * org.esupportail.helpdesk.domain.beans.FaqEvent) */ @Override public void deleteFaqEvent(final FaqEvent faqEvent) { deleteObject(faqEvent); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________TICKET() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicket(long) */ @Override @RequestCache public Ticket getTicket(final long id) { return (Ticket) this.getHibernateTemplate().get(Ticket.class, id); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketsNumber( * org.esupportail.helpdesk.domain.beans.Category) */ @Override @RequestCache public int getTicketsNumber(final Category category) { String queryStr = HqlUtils.selectCountAllFromWhere( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", HqlUtils.equals("category.id", category.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTickets(org.esupportail.helpdesk.domain.beans.Category) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Ticket> getTickets(final Category category) { DetachedCriteria criteria = DetachedCriteria.forClass(Ticket.class); criteria.add(Restrictions.eq(CATEGORY_ATTRIBUTE, category)); criteria.addOrder(Order.asc(ID_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTickets( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Ticket> getTickets(final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(Ticket.class); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); criteria.addOrder(Order.asc(ID_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOpenedTicketsByLastActionDate( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Ticket> getOpenedTicketsByLastActionDate(final Department department) { Query query = getQuery(HqlUtils.fromWhereOrderByAsc( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "t", HqlUtils.and( HqlUtils.stringIn("status", new String [] { TicketStatus.INPROGRESS, TicketStatus.FREE, TicketStatus.INCOMPLETE, TicketStatus.POSTPONED, }), HqlUtils.equals("department.id", department.getId())), "lastActionDate")); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketsNumber( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @RequestCache public int getTicketsNumber(final Department department) { String queryStr = HqlUtils.selectCountAllFromWhere( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "t", HqlUtils.equals("department.id", department.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#addTicket( * org.esupportail.helpdesk.domain.beans.Ticket) */ @Override public void addTicket(final Ticket ticket) { addObject(ticket); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateTicket( * org.esupportail.helpdesk.domain.beans.Ticket) */ @Override public void updateTicket(final Ticket ticket) { updateObject(ticket); } /** * @see org.esupportail.helpdesk.dao.DaoService#reloadTicket( * org.esupportail.helpdesk.domain.beans.Ticket) */ @Override public Ticket reloadTicket(final Ticket ticket) { if (ticket == null) { return null; } return (Ticket) this.getHibernateTemplate().get(Ticket.class, ticket.getId()); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteTicket( * org.esupportail.helpdesk.domain.beans.Ticket, boolean) */ @Override public void deleteTicket( final Ticket ticket, final boolean deleteFiles) { for (Action action : getActions(ticket, true)) { deleteAction(action); } for (FileInfo fileInfo : getFileInfos(ticket, true)) { deleteFileInfo(fileInfo, deleteFiles); } for (Invitation invitation : getInvitations(ticket)) { deleteInvitation(invitation); } executeUpdate(HqlUtils.updateWhere( Action.class.getSimpleName() + " a", "a.oldConnectionAfter = NULL", HqlUtils.equals("a.oldConnectionAfter.id", ticket.getId()))); executeUpdate(HqlUtils.updateWhere( Ticket.class.getSimpleName() + " t", "t.connectionTicket = NULL", HqlUtils.equals("t.connectionTicket.id", ticket.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedTicket.class.getSimpleName() + " t", "t.connectionTicket = NULL", HqlUtils.equals("t.connectionTicket.id", ticket.getId()))); executeUpdate(HqlUtils.deleteWhere( TicketMonitoring.class.getSimpleName() + " tm", HqlUtils.equals("tm.ticket.id", ticket.getId()))); executeUpdate(HqlUtils.deleteWhere( TicketView.class.getSimpleName() + " tv", HqlUtils.equals("tv.ticket.id", ticket.getId()))); executeUpdate(HqlUtils.deleteWhere( Bookmark.class.getSimpleName() + " b", HqlUtils.equals("b.ticket.id", ticket.getId()))); executeUpdate(HqlUtils.deleteWhere( HistoryItem.class.getSimpleName() + " hi", HqlUtils.equals("hi.ticket.id", ticket.getId()))); deleteObject(ticket); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketsNumber() */ @Override @RequestCache public int getTicketsNumber() { String queryStr = HqlUtils.selectCountAllFrom( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket"); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTickets(long, int) */ @Override @SuppressWarnings("unchecked") public List<Ticket> getTickets( final long startIndex, final int num) { Query query = getQuery(HqlUtils.fromWhereOrderBy( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", HqlUtils.ge("id", startIndex), "id")); query.setMaxResults(num); return query.list(); } /** * @param user * @return the condition for opened managed tickets. */ private String getOpenManagedTicketsCondition( final User user) { return HqlUtils.and( HqlUtils.equals("ticket.manager.id", HqlUtils.quote(user.getId())), HqlUtils.stringIn("ticket.status", new String [] { TicketStatus.FREE, TicketStatus.INCOMPLETE, TicketStatus.INPROGRESS, TicketStatus.POSTPONED, })); } /** * @param department * @param user * @return the condition for opened managed tickets. */ private String getOpenManagedTicketsCondition( final Department department, final User user) { return HqlUtils.and( HqlUtils.equals("ticket.department.id", department.getId()), getOpenManagedTicketsCondition(user)); } /** * @param category * @param user * @return the condition for opened managed tickets. */ private String getOpenManagedTicketsCondition( final Category category, final User user) { return HqlUtils.and( HqlUtils.equals("ticket.category.id", category.getId()), getOpenManagedTicketsCondition(user)); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOpenManagedTickets( * org.esupportail.helpdesk.domain.beans.Department, org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Ticket> getOpenManagedTickets( final Department department, final User user) { String hqlQuery = HqlUtils.selectFromWhere( "ticket", Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", getOpenManagedTicketsCondition(department, user)); return getQuery(hqlQuery).list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOpenManagedTickets( * org.esupportail.helpdesk.domain.beans.Category, org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Ticket> getOpenManagedTickets( final Category category, final User user) { String hqlQuery = HqlUtils.selectFromWhere( "ticket", Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", getOpenManagedTicketsCondition(category, user)); return getQuery(hqlQuery).list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOpenManagedTicketsNumber( * org.esupportail.helpdesk.domain.beans.Category, org.esupportail.helpdesk.domain.beans.User) */ @Override @RequestCache public int getOpenManagedTicketsNumber( final Category category, final User user) { String queryStr = HqlUtils.selectCountAllFromWhere( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", getOpenManagedTicketsCondition(category, user)); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOpenManagedTicketsNumber( * org.esupportail.helpdesk.domain.beans.Department, org.esupportail.helpdesk.domain.beans.User) */ @Override @RequestCache public int getOpenManagedTicketsNumber( final Department department, final User user) { String queryStr = HqlUtils.selectCountAllFromWhere( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", getOpenManagedTicketsCondition(department, user)); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOwnedTickets(org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Ticket> getOwnedTickets(final User user) { DetachedCriteria criteria = DetachedCriteria.forClass(Ticket.class); criteria.add(Restrictions.eq("owner.id", user.getId())); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateTicketsEffectiveScope( * org.esupportail.helpdesk.domain.beans.Category) */ @Override public void updateTicketsEffectiveScope(final Category category) { executeUpdate(HqlUtils.updateWhere( Ticket.class.getSimpleName(), "effectiveScope = " + HqlUtils.quote(category.getEffectiveDefaultTicketScope()), HqlUtils.and( HqlUtils.equals( "scope", HqlUtils.quote(TicketScope.DEFAULT)), HqlUtils.equals("category.id", category.getId())))); executeUpdate(HqlUtils.updateWhere( Ticket.class.getSimpleName(), "effectiveScope = scope", HqlUtils.and( HqlUtils.not(HqlUtils.equals( "scope", HqlUtils.quote(TicketScope.DEFAULT))), HqlUtils.equals("category.id", category.getId())))); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketsChangedAfter( * java.sql.Timestamp, int) */ @Override @SuppressWarnings("unchecked") public List<Ticket> getTicketsChangedAfter( final Timestamp lastUpdate, final int maxResults) { Query query = getQuery(HqlUtils.fromWhereOrderByAsc( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", HqlUtils.ge("lastActionDate", HqlUtils.quote(lastUpdate.toString())), "lastActionDate")); query.setMaxResults(maxResults); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getClosedTicketsBefore(java.sql.Timestamp, int) */ @Override @SuppressWarnings("unchecked") public List<Ticket> getClosedTicketsBefore(final Timestamp timestamp, final int maxResults) { Query query = getQuery(HqlUtils.fromWhereOrderByAsc( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", HqlUtils.and( HqlUtils.not( HqlUtils.stringIn("ticket.status", new String[] { TicketStatus.FREE, TicketStatus.INCOMPLETE, TicketStatus.INPROGRESS, TicketStatus.POSTPONED, })), HqlUtils.lt( "ticket.lastActionDate", HqlUtils.quote(timestamp.toString()))), "lastActionDate")); query.setMaxResults(maxResults); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getNonApprovedTicketsClosedBefore( * java.sql.Timestamp, int) */ @Override @SuppressWarnings("unchecked") public List<Ticket> getNonApprovedTicketsClosedBefore( final Timestamp timestamp, final int maxResults) { Query query = getQuery(HqlUtils.fromWhereOrderByAsc( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", HqlUtils.and( HqlUtils.stringIn("ticket.status", new String[] { TicketStatus.CLOSED, TicketStatus.CONNECTED_TO_FAQ, TicketStatus.CONNECTED_TO_TICKET, }), HqlUtils.lt( "ticket.lastActionDate", HqlUtils.quote(timestamp.toString()))), "lastActionDate")); query.setMaxResults(maxResults); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketsToRecall() */ @Override @SuppressWarnings("unchecked") public List<Ticket> getTicketsToRecall() { Timestamp now = new Timestamp(System.currentTimeMillis()); Query query = getQuery(HqlUtils.fromWhereOrderByAsc( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", HqlUtils.and( HqlUtils.equals( "ticket.status", HqlUtils.quote(TicketStatus.POSTPONED)), HqlUtils.lt( "ticket.recallDate", HqlUtils.quote(now.toString()))), "recallDate")); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOldestTicketDate() */ @Override @SuppressWarnings("unchecked") @RequestCache public Timestamp getOldestTicketDate() { Query query = getQuery(HqlUtils.fromOrderBy(Ticket.class.getSimpleName(), "id")); query.setMaxResults(1); List<Ticket> tickets = query.list(); Timestamp oldestTicketDate = null; if (!tickets.isEmpty()) { oldestTicketDate = tickets.get(0).getCreationDate(); } query = getQuery(HqlUtils.fromOrderBy(ArchivedTicket.class.getSimpleName(), "ticketId")); query.setMaxResults(1); List<ArchivedTicket> archivedTickets = query.list(); Timestamp oldestArchivedTicketDate = null; if (!archivedTickets.isEmpty()) { oldestArchivedTicketDate = archivedTickets.get(0).getCreationDate(); } if (oldestTicketDate == null) { return oldestArchivedTicketDate; } if (oldestArchivedTicketDate == null) { return oldestTicketDate; } if (oldestTicketDate.after(oldestArchivedTicketDate)) { return oldestArchivedTicketDate; } return oldestTicketDate; } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteAllTickets() */ @Override public void deleteAllTickets() { logger.info("deleting alerts..."); executeUpdate(HqlUtils.delete(Alert.class.getSimpleName())); logger.info("deleting ticket actions..."); executeUpdate(HqlUtils.delete(DeletedItem.class.getSimpleName())); executeUpdate(HqlUtils.delete(Action.class.getSimpleName())); executeUpdate(HqlUtils.delete(ArchivedAction.class.getSimpleName())); logger.info("deleting bookmarks..."); executeUpdate(HqlUtils.delete(Bookmark.class.getSimpleName())); logger.info("deleting history items..."); executeUpdate(HqlUtils.delete(HistoryItem.class.getSimpleName())); executeUpdate(HqlUtils.delete(TicketView.class.getSimpleName())); logger.info("deleting uploaded files..."); executeUpdate(HqlUtils.delete(FileInfo.class.getSimpleName())); executeUpdate(HqlUtils.delete(ArchivedFileInfo.class.getSimpleName())); logger.info("deleting invitations..."); executeUpdate(HqlUtils.delete(Invitation.class.getSimpleName())); executeUpdate(HqlUtils.delete(ArchivedInvitation.class.getSimpleName())); logger.info("deleting monitoring information..."); executeUpdate(HqlUtils.delete(TicketMonitoring.class.getSimpleName())); logger.info("deleting tickets..."); executeUpdate(HqlUtils.update(Ticket.class.getSimpleName() + " t", "t.connectionTicket = NULL")); executeUpdate(HqlUtils.update(Ticket.class.getSimpleName() + " t", "t.connectionArchivedTicket = NULL")); executeUpdate(HqlUtils.update(ArchivedTicket.class.getSimpleName() + " t", "t.connectionTicket = NULL")); executeUpdate(HqlUtils.update(ArchivedTicket.class.getSimpleName() + " t", "t.connectionArchivedTicket = NULL")); executeUpdate(HqlUtils.delete(Ticket.class.getSimpleName())); executeUpdate(HqlUtils.delete(ArchivedTicket.class.getSimpleName())); logger.info("deleting uploaded data..."); this.fileManager.deleteAllContents(); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________ACTION() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getActions( * org.esupportail.helpdesk.domain.beans.Ticket, boolean) */ @Override @SuppressWarnings("unchecked") public List<Action> getActions(final Ticket ticket, final boolean dateAsc) { DetachedCriteria criteria = DetachedCriteria.forClass(Action.class); criteria.add(Restrictions.eq(TICKET_ATTRIBUTE, ticket)); if (dateAsc) { criteria.addOrder(Order.asc(ID_ATTRIBUTE)); } else { criteria.addOrder(Order.desc(ID_ATTRIBUTE)); } return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getActionsNumber( * org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @RequestCache public int getActionsNumber(final Ticket ticket) { String queryStr = HqlUtils.selectCountAllFromWhere( Action.class.getSimpleName() + HqlUtils.AS_KEYWORD + "action", HqlUtils.equals("ticket.id", ticket.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getLastAction( * org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @RequestCache public Action getLastAction(final Ticket ticket) { List<Action> actions = getActions(ticket, false); if (actions.isEmpty()) { return null; } return actions.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#addAction( * org.esupportail.helpdesk.domain.beans.Action) */ @Override public void addAction(final Action action) { addObject(action); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateAction( * org.esupportail.helpdesk.domain.beans.Action) */ @Override public void updateAction(final Action action) { updateObject(action); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteAction( * org.esupportail.helpdesk.domain.beans.Action) */ @Override public void deleteAction(final Action action) { executeUpdate(HqlUtils.deleteWhere( Alert.class.getSimpleName() + " a", HqlUtils.equals("a.action.id", action.getId()))); deleteObject(action); } /** * @see org.esupportail.helpdesk.dao.DaoService#getActionsNumber() */ @Override @RequestCache public int getActionsNumber() { String queryStr = HqlUtils.selectCountAllFrom( Action.class.getSimpleName() + HqlUtils.AS_KEYWORD + "action"); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getActions(long, int) */ @Override @SuppressWarnings("unchecked") public List<Action> getActions( final long startIndex, final int num) { Query query = getQuery(HqlUtils.fromWhereOrderBy( Action.class.getSimpleName() + HqlUtils.AS_KEYWORD + "action", HqlUtils.ge("id", startIndex), "id")); query.setMaxResults(num); return query.list(); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________FILEINFO() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getFileInfos( * org.esupportail.helpdesk.domain.beans.Ticket, boolean) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<FileInfo> getFileInfos(final Ticket ticket, final boolean dateAsc) { DetachedCriteria criteria = DetachedCriteria.forClass(FileInfo.class); criteria.add(Restrictions.eq(TICKET_ATTRIBUTE, ticket)); if (dateAsc) { criteria.addOrder(Order.asc(ID_ATTRIBUTE)); } else { criteria.addOrder(Order.desc(ID_ATTRIBUTE)); } return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFileInfosNumber( * org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @RequestCache public int getFileInfosNumber(final Ticket ticket) { String queryStr = HqlUtils.selectCountAllFromWhere( FileInfo.class.getSimpleName() + HqlUtils.AS_KEYWORD + "fileInfo", HqlUtils.equals("ticket.id", ticket.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#addFileInfo( * org.esupportail.helpdesk.domain.beans.FileInfo) */ @Override public void addFileInfo(final FileInfo fileInfo) { addObject(fileInfo); fileManager.writeFileInfoContent(fileInfo); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateFileInfo( * org.esupportail.helpdesk.domain.beans.FileInfo) */ @Override public void updateFileInfo(final FileInfo fileInfo) { updateObject(fileInfo); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFileInfoContent( * org.esupportail.helpdesk.domain.beans.FileInfo) */ @Override @RequestCache public byte[] getFileInfoContent(final FileInfo fileInfo) { return fileManager.readFileInfoContent(fileInfo); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteFileInfo( * org.esupportail.helpdesk.domain.beans.FileInfo, boolean) */ @Override public void deleteFileInfo( final FileInfo fileInfo, final boolean deleteContent) { deleteObject(fileInfo); if (deleteContent) { fileManager.deleteFileInfoContent(fileInfo); } } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________ARCHIVED_TICKET() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedTicket(long) */ @Override @RequestCache public ArchivedTicket getArchivedTicket(final long id) { return (ArchivedTicket) this.getHibernateTemplate().get(ArchivedTicket.class, id); } /** * @see org.esupportail.helpdesk.dao.DaoService#addArchivedTicket( * org.esupportail.helpdesk.domain.beans.ArchivedTicket) */ @Override @SuppressWarnings("unchecked") public void addArchivedTicket(final ArchivedTicket archivedTicket) { DetachedCriteria criteria; addObject(archivedTicket); criteria = DetachedCriteria.forClass(Ticket.class); criteria.add(Restrictions.eq("connectionTicket.id", archivedTicket.getTicketId())); List<Ticket> tickets = getHibernateTemplate().findByCriteria(criteria); for (Ticket ticket : tickets) { ticket.setConnectionTicket(null); ticket.setConnectionArchivedTicket(archivedTicket); updateTicket(ticket); } criteria = DetachedCriteria.forClass(ArchivedTicket.class); criteria.add(Restrictions.eq("connectionTicket.id", archivedTicket.getTicketId())); List<ArchivedTicket> archivedTickets = getHibernateTemplate().findByCriteria(criteria); for (ArchivedTicket archivedTicket2 : archivedTickets) { archivedTicket2.setConnectionTicket(null); archivedTicket2.setConnectionArchivedTicket(archivedTicket); updateArchivedTicket(archivedTicket2); } } /** * @see org.esupportail.helpdesk.dao.DaoService#updateArchivedTicket( * org.esupportail.helpdesk.domain.beans.ArchivedTicket) */ @Override public void updateArchivedTicket(final ArchivedTicket archivedTicket) { updateObject(archivedTicket); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteArchivedTicket( * org.esupportail.helpdesk.domain.beans.ArchivedTicket) */ @Override public void deleteArchivedTicket(final ArchivedTicket archivedTicket) { for (ArchivedAction archivedAction : getArchivedActions(archivedTicket, false)) { deleteArchivedAction(archivedAction); } for (ArchivedFileInfo archivedFileInfo : getArchivedFileInfos(archivedTicket)) { deleteArchivedFileInfo(archivedFileInfo); } for (ArchivedInvitation archivedInvitation : getArchivedInvitations(archivedTicket)) { deleteArchivedInvitation(archivedInvitation); } executeUpdate(HqlUtils.updateWhere( Ticket.class.getSimpleName() + " t", "t.archivedConnectionTicket = NULL", HqlUtils.equals("t.archivedConnectionTicket.id", archivedTicket.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedTicket.class.getSimpleName() + " t", "t.archivedConnectionTicket = NULL", HqlUtils.equals("t.archivedConnectionTicket.id", archivedTicket.getId()))); executeUpdate(HqlUtils.deleteWhere( Bookmark.class.getSimpleName() + " b", HqlUtils.equals("b.archivedTicket.id", archivedTicket.getId()))); executeUpdate(HqlUtils.deleteWhere( HistoryItem.class.getSimpleName() + " hi", HqlUtils.equals("hi.archivedTicket.id", archivedTicket.getId()))); deleteObject(archivedTicket); } /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedTickets(long, int) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<ArchivedTicket> getArchivedTickets( final long startIndex, final int num) { Query query = getQuery(HqlUtils.fromWhereOrderBy( ArchivedTicket.class.getSimpleName(), HqlUtils.ge("id", startIndex), "id")); query.setMaxResults(num); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketsArchivedAfter(java.sql.Timestamp, int) */ @Override @SuppressWarnings("unchecked") public List<ArchivedTicket> getTicketsArchivedAfter( final Timestamp lastUpdate, final int maxResults) { Query query = getQuery(HqlUtils.fromWhereOrderByAsc( ArchivedTicket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "archivedTicket", HqlUtils.ge("archivingDate", HqlUtils.quote(lastUpdate.toString())), "archivingDate")); query.setMaxResults(maxResults); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedTicketByOriginalId(long) */ @Override @SuppressWarnings("unchecked") @RequestCache public ArchivedTicket getArchivedTicketByOriginalId(final long id) { DetachedCriteria criteria = DetachedCriteria.forClass(ArchivedTicket.class); criteria.add(Restrictions.eq("ticketId", new Long(id))); List<ArchivedTicket> archivedTickets = getHibernateTemplate().findByCriteria(criteria); if (archivedTickets.isEmpty()) { return null; } return archivedTickets.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedTickets( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<ArchivedTicket> getArchivedTickets(final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(ArchivedTicket.class); criteria.add(Restrictions.eq("department", department)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedTicketsNumber( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @RequestCache public int getArchivedTicketsNumber(final Department department) { String queryStr = HqlUtils.selectCountAllFromWhere( ArchivedTicket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "at", HqlUtils.equals("department.id", department.getId())); return getQueryIntResult(queryStr); } ////////////////////////////////////////////////////////////// // ArchivedAction ////////////////////////////////////////////////////////////// /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedActions( * org.esupportail.helpdesk.domain.beans.ArchivedTicket, boolean) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<ArchivedAction> getArchivedActions( final ArchivedTicket archivedTicket, final boolean dateAsc) { DetachedCriteria criteria = DetachedCriteria.forClass(ArchivedAction.class); criteria.add(Restrictions.eq("archivedTicket", archivedTicket)); if (dateAsc) { criteria.addOrder(Order.asc(ID_ATTRIBUTE)); } else { criteria.addOrder(Order.desc(ID_ATTRIBUTE)); } return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#addArchivedAction( * org.esupportail.helpdesk.domain.beans.ArchivedAction) */ @Override public void addArchivedAction(final ArchivedAction archivedAction) { addObject(archivedAction); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateArchivedAction( * org.esupportail.helpdesk.domain.beans.ArchivedAction) */ @Override public void updateArchivedAction(final ArchivedAction archivedAction) { updateObject(archivedAction); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteArchivedAction( * org.esupportail.helpdesk.domain.beans.ArchivedAction) */ @Override public void deleteArchivedAction(final ArchivedAction archivedAction) { deleteObject(archivedAction); } /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedActions(long, int) */ @Override @SuppressWarnings("unchecked") public List<ArchivedAction> getArchivedActions( final long startIndex, final int num) { Query query = getQuery(HqlUtils.fromWhereOrderBy( ArchivedAction.class.getSimpleName() + HqlUtils.AS_KEYWORD + "archivedAction", HqlUtils.ge("id", startIndex), "id")); query.setMaxResults(num); return query.list(); } ////////////////////////////////////////////////////////////// // ArchivedFileInfo ////////////////////////////////////////////////////////////// /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedFileInfos( * org.esupportail.helpdesk.domain.beans.ArchivedTicket) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<ArchivedFileInfo> getArchivedFileInfos(final ArchivedTicket archivedTicket) { DetachedCriteria criteria = DetachedCriteria.forClass(ArchivedFileInfo.class); criteria.add(Restrictions.eq("archivedTicket", archivedTicket)); criteria.addOrder(Order.desc(ID_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#addArchivedFileInfo( * org.esupportail.helpdesk.domain.beans.ArchivedFileInfo) */ @Override public void addArchivedFileInfo(final ArchivedFileInfo archivedFileInfo) { addObject(archivedFileInfo); } /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedFileInfoContent( * org.esupportail.helpdesk.domain.beans.ArchivedFileInfo) */ @Override @RequestCache public byte[] getArchivedFileInfoContent(final ArchivedFileInfo archivedFileInfo) { return fileManager.readArchivedFileInfoContent(archivedFileInfo); } /** * Delete an ArchivedFileInfo. * @param archivedFileInfo */ protected void deleteArchivedFileInfo(final ArchivedFileInfo archivedFileInfo) { deleteObject(archivedFileInfo); } /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedTicketsNumber() */ @Override @RequestCache public int getArchivedTicketsNumber() { String queryStr = HqlUtils.selectCountAllFrom( ArchivedTicket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket"); return getQueryIntResult(queryStr); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________TICKET_VIEW() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketView( * org.esupportail.helpdesk.domain.beans.User, org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @SuppressWarnings("unchecked") @RequestCache public TicketView getTicketView( final User user, final Ticket ticket) { DetachedCriteria criteria = DetachedCriteria.forClass(TicketView.class); criteria.add(Restrictions.eq(TICKET_ATTRIBUTE, ticket)); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); List<TicketView> ticketViews = getHibernateTemplate().findByCriteria(criteria); if (ticketViews.isEmpty()) { return null; } return ticketViews.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#addTicketView( * org.esupportail.helpdesk.domain.beans.TicketView) */ @Override public void addTicketView( final TicketView ticketView) { addObject(ticketView); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateTicketView( * org.esupportail.helpdesk.domain.beans.TicketView) */ @Override public void updateTicketView( final TicketView ticketView) { updateObject(ticketView); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteTicketView( * org.esupportail.helpdesk.domain.beans.TicketView) */ @Override public void deleteTicketView( final TicketView ticketView) { deleteObject(ticketView); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________TICKET_MONITORING() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketMonitoring( * org.esupportail.helpdesk.domain.beans.User, org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @SuppressWarnings("unchecked") @RequestCache public TicketMonitoring getTicketMonitoring( final User user, final Ticket ticket) { DetachedCriteria criteria = DetachedCriteria.forClass(TicketMonitoring.class); criteria.add(Restrictions.eq(TICKET_ATTRIBUTE, ticket)); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); List<TicketMonitoring> ticketMonitorings = getHibernateTemplate().findByCriteria(criteria); if (ticketMonitorings.isEmpty()) { return null; } return ticketMonitorings.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketMonitorings( * org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<TicketMonitoring> getTicketMonitorings(final Ticket ticket) { DetachedCriteria criteria = DetachedCriteria.forClass(TicketMonitoring.class); criteria.add(Restrictions.eq(TICKET_ATTRIBUTE, ticket)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#addTicketMonitoring( * org.esupportail.helpdesk.domain.beans.TicketMonitoring) */ @Override public void addTicketMonitoring( final TicketMonitoring ticketMonitoring) { addObject(ticketMonitoring); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteTicketMonitoring( * org.esupportail.helpdesk.domain.beans.TicketMonitoring) */ @Override public void deleteTicketMonitoring( final TicketMonitoring ticketMonitoring) { deleteObject(ticketMonitoring); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________ALERT() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#addAlert(org.esupportail.helpdesk.domain.beans.Alert) */ @Override public void addAlert(final Alert alert) { addObject(alert); } /** * @see org.esupportail.helpdesk.dao.DaoService#getAlerts(org.esupportail.helpdesk.domain.beans.Action) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Alert> getAlerts(final Action action) { DetachedCriteria criteria = DetachedCriteria.forClass(Alert.class); criteria.add(Restrictions.eq(ACTION_ATTRIBUTE, action)); criteria.addOrder(Order.desc("user.id")); return getHibernateTemplate().findByCriteria(criteria); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________INVITATION() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getInvitation( * org.esupportail.helpdesk.domain.beans.User, org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @SuppressWarnings("unchecked") public Invitation getInvitation( final User user, final Ticket ticket) { DetachedCriteria criteria = DetachedCriteria.forClass(Invitation.class); criteria.add(Restrictions.eq(TICKET_ATTRIBUTE, ticket)); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); List<Invitation> invitations = getHibernateTemplate().findByCriteria(criteria); if (invitations.isEmpty()) { return null; } return invitations.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#addInvitation( * org.esupportail.helpdesk.domain.beans.Invitation) */ @Override public void addInvitation( final Invitation invitation) { addObject(invitation); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteInvitation( * org.esupportail.helpdesk.domain.beans.Invitation) */ @Override public void deleteInvitation( final Invitation invitation) { deleteObject(invitation); } /** * @see org.esupportail.helpdesk.dao.DaoService#getInvitations( * org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Invitation> getInvitations( final Ticket ticket) { DetachedCriteria criteria = DetachedCriteria.forClass(Invitation.class); criteria.add(Restrictions.eq(TICKET_ATTRIBUTE, ticket)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getInvitations( * org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Invitation> getInvitations( final User user) { DetachedCriteria criteria = DetachedCriteria.forClass(Invitation.class); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedInvitation( * org.esupportail.helpdesk.domain.beans.User, org.esupportail.helpdesk.domain.beans.ArchivedTicket) */ @Override @SuppressWarnings("unchecked") @RequestCache public ArchivedInvitation getArchivedInvitation( final User user, final ArchivedTicket archivedTicket) { DetachedCriteria criteria = DetachedCriteria.forClass(ArchivedInvitation.class); criteria.add(Restrictions.eq("archivedTicket", archivedTicket)); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); List<ArchivedInvitation> archivedInvitations = getHibernateTemplate().findByCriteria(criteria); if (archivedInvitations.isEmpty()) { return null; } return archivedInvitations.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#addArchivedInvitation( * org.esupportail.helpdesk.domain.beans.ArchivedInvitation) */ @Override public void addArchivedInvitation( final ArchivedInvitation archivedInvitation) { addObject(archivedInvitation); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteArchivedInvitation( * org.esupportail.helpdesk.domain.beans.ArchivedInvitation) */ @Override public void deleteArchivedInvitation( final ArchivedInvitation archivedInvitation) { deleteObject(archivedInvitation); } /** * @see org.esupportail.helpdesk.dao.DaoService#getArchivedInvitations( * org.esupportail.helpdesk.domain.beans.ArchivedTicket) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<ArchivedInvitation> getArchivedInvitations( final ArchivedTicket archivedTicket) { DetachedCriteria criteria = DetachedCriteria.forClass(ArchivedInvitation.class); criteria.add(Restrictions.eq("archivedTicket", archivedTicket)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentInvitation( * org.esupportail.helpdesk.domain.beans.User, org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public DepartmentInvitation getDepartmentInvitation( final User user, final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(DepartmentInvitation.class); criteria.add(Restrictions.eq("department", department)); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); List<DepartmentInvitation> departmentInvitations = getHibernateTemplate().findByCriteria(criteria); if (departmentInvitations.isEmpty()) { return null; } return departmentInvitations.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#addDepartmentInvitation( * org.esupportail.helpdesk.domain.beans.DepartmentInvitation) */ @Override public void addDepartmentInvitation( final DepartmentInvitation departmentInvitation) { addObject(departmentInvitation); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteDepartmentInvitation( * org.esupportail.helpdesk.domain.beans.DepartmentInvitation) */ @Override public void deleteDepartmentInvitation( final DepartmentInvitation departmentInvitation) { deleteObject(departmentInvitation); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentInvitations( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<DepartmentInvitation> getDepartmentInvitations( final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(DepartmentInvitation.class); criteria.add(Restrictions.eq("department", department)); criteria.addOrder(Order.asc("id")); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getInvitedUsers( * org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<User> getInvitedUsers(final User author) { Query query = getQuery(HqlUtils.selectFromWhereOrderByDesc( "a.invitedUser", Action.class.getSimpleName() + HqlUtils.AS_KEYWORD + "a", HqlUtils.equals("a.user.id", HqlUtils.quote(author.getId())), "a.id")); return query.list(); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________DELETED_ITEM() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getDeletedItems() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<DeletedItem> getDeletedItems() { return getHibernateTemplate().loadAll(DeletedItem.class); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteDeletedItem( * org.esupportail.helpdesk.domain.beans.DeletedItem) */ @Override public void deleteDeletedItem(final DeletedItem deletedItem) { deleteObject(deletedItem); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteAllDeletedItems() */ @Override public void deleteAllDeletedItems() { executeUpdate(HqlUtils.delete( DeletedItem.class.getSimpleName())); } /** * @see org.esupportail.helpdesk.dao.DaoService#addDeletedItem( * org.esupportail.helpdesk.domain.beans.DeletedItem) */ @Override public void addDeletedItem(final DeletedItem deletedItem) { addObject(deletedItem); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________BOOKMARK() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getBookmarks( * org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Bookmark> getBookmarks(final User user) { DetachedCriteria criteria = DetachedCriteria.forClass(Bookmark.class); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); criteria.addOrder(Order.desc(ID_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getBookmarks( * org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Bookmark> getBookmarks(final Ticket ticket) { DetachedCriteria criteria = DetachedCriteria.forClass(Bookmark.class); criteria.add(Restrictions.eq(TICKET_ATTRIBUTE, ticket)); criteria.addOrder(Order.desc(ID_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getBookmark( * org.esupportail.helpdesk.domain.beans.User, org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @SuppressWarnings("unchecked") @RequestCache public Bookmark getBookmark( final User user, final Ticket ticket) { DetachedCriteria criteria = DetachedCriteria.forClass(Bookmark.class); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); criteria.add(Restrictions.eq(TICKET_ATTRIBUTE, ticket)); List<Bookmark> bookmarks = getHibernateTemplate().findByCriteria(criteria); if (bookmarks.isEmpty()) { return null; } return bookmarks.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#getBookmark( * org.esupportail.helpdesk.domain.beans.User, org.esupportail.helpdesk.domain.beans.ArchivedTicket) */ @Override @SuppressWarnings("unchecked") @RequestCache public Bookmark getBookmark( final User user, final ArchivedTicket archivedTicket) { DetachedCriteria criteria = DetachedCriteria.forClass(Bookmark.class); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); criteria.add(Restrictions.eq(ARCHIVED_TICKET_ATTRIBUTE, archivedTicket)); List<Bookmark> bookmarks = getHibernateTemplate().findByCriteria(criteria); if (bookmarks.isEmpty()) { return null; } return bookmarks.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteBookmark( * org.esupportail.helpdesk.domain.beans.Bookmark) */ @Override public void deleteBookmark(final Bookmark bookmark) { deleteObject(bookmark); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateBookmark( * org.esupportail.helpdesk.domain.beans.Bookmark) */ @Override public void updateBookmark(final Bookmark bookmark) { updateObject(bookmark); } /** * @see org.esupportail.helpdesk.dao.DaoService#addBookmark( * org.esupportail.helpdesk.domain.beans.Bookmark) */ @Override public void addBookmark(final Bookmark bookmark) { addObject(bookmark); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________HISTORY_ITEM() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getHistoryItems( * org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<HistoryItem> getHistoryItems( final User user) { DetachedCriteria criteria = DetachedCriteria.forClass(HistoryItem.class); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); criteria.addOrder(Order.desc(ID_ATTRIBUTE)); List<HistoryItem> historyItems = getHibernateTemplate().findByCriteria(criteria); return historyItems; } /** * @see org.esupportail.helpdesk.dao.DaoService#getHistoryItems( * org.esupportail.helpdesk.domain.beans.Ticket) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<HistoryItem> getHistoryItems( final Ticket ticket) { DetachedCriteria criteria = DetachedCriteria.forClass(HistoryItem.class); criteria.add(Restrictions.eq(TICKET_ATTRIBUTE, ticket)); List<HistoryItem> historyItems = getHibernateTemplate().findByCriteria(criteria); return historyItems; } /** * @see org.esupportail.helpdesk.dao.DaoService#addHistoryItem( * org.esupportail.helpdesk.domain.beans.HistoryItem) */ @Override public void addHistoryItem( final HistoryItem historyItem) { addObject(historyItem); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateHistoryItem( * org.esupportail.helpdesk.domain.beans.HistoryItem) */ @Override public void updateHistoryItem( final HistoryItem historyItem) { updateObject(historyItem); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteHistoryItem( * org.esupportail.helpdesk.domain.beans.HistoryItem) */ @Override public void deleteHistoryItem( final HistoryItem historyItem) { deleteObject(historyItem); } /** * @see org.esupportail.helpdesk.dao.DaoService#clearHistoryItems( * org.esupportail.helpdesk.domain.beans.User) */ @Override public void clearHistoryItems(final User user) { executeUpdate(HqlUtils.deleteWhere( HistoryItem.class.getSimpleName() + " hi", HqlUtils.equals("hi.user.id", HqlUtils.quote(user.getId())))); } /** * @see org.esupportail.helpdesk.dao.DaoService#clearHistoryItems() */ @Override public void clearHistoryItems() { executeUpdate(HqlUtils.delete( HistoryItem.class.getSimpleName() + " hi")); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________RESPONSE() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#addResponse(org.esupportail.helpdesk.domain.beans.Response) */ @Override public void addResponse( final Response response) { addObject(response); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateResponse(org.esupportail.helpdesk.domain.beans.Response) */ @Override public void updateResponse( final Response response) { updateObject(response); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteResponse(org.esupportail.helpdesk.domain.beans.Response) */ @Override public void deleteResponse( final Response response) { deleteObject(response); } /** * @see org.esupportail.helpdesk.dao.DaoService#getUserResponses(org.esupportail.helpdesk.domain.beans.User) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Response> getUserResponses( final User user) { DetachedCriteria criteria = DetachedCriteria.forClass(Response.class); criteria.add(Restrictions.eq(USER_ATTRIBUTE, user)); criteria.addOrder(Order.asc("label")); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getDepartmentResponses( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Response> getDepartmentResponses( final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(Response.class); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); criteria.addOrder(Order.asc("label")); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getGlobalResponses() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Response> getGlobalResponses() { DetachedCriteria criteria = DetachedCriteria.forClass(Response.class); criteria.add(Restrictions.isNull(DEPARTMENT_ATTRIBUTE)); criteria.add(Restrictions.isNull(USER_ATTRIBUTE)); criteria.addOrder(Order.asc("label")); return getHibernateTemplate().findByCriteria(criteria); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________ICON() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getIcon(long) */ @Override @RequestCache public Icon getIcon(final long id) { return (Icon) this.getHibernateTemplate().get(Icon.class, id); } /** * @see org.esupportail.helpdesk.dao.DaoService#getIcons() */ @Override @SuppressWarnings("unchecked") @RequestCache public List<Icon> getIcons() { DetachedCriteria criteria = DetachedCriteria.forClass(Icon.class); criteria.addOrder(Order.asc("name")); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#addIcon( * org.esupportail.helpdesk.domain.beans.Icon) */ @Override public void addIcon(final Icon icon) { addObject(icon); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateIcon( * org.esupportail.helpdesk.domain.beans.Icon) */ @Override public void updateIcon(final Icon icon) { updateObject(icon); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteIcon( * org.esupportail.helpdesk.domain.beans.Icon) */ @Override public void deleteIcon(final Icon icon) { executeUpdate(HqlUtils.updateWhere( Department.class.getSimpleName() + " d", "d.icon = NULL", HqlUtils.equals("d.icon.id", icon.getId()))); executeUpdate(HqlUtils.updateWhere( Category.class.getSimpleName() + " c", "c.icon = NULL", HqlUtils.equals("c.icon.id", icon.getId()))); deleteObject(icon); } /** * @see org.esupportail.helpdesk.dao.DaoService#getIconByName(java.lang.String) */ @Override @SuppressWarnings("unchecked") @RequestCache public Icon getIconByName(final String name) { DetachedCriteria criteria = DetachedCriteria.forClass(Icon.class); criteria.add(Restrictions.eq("name", name)); List<Icon> result = getHibernateTemplate().findByCriteria(criteria); if (result.isEmpty()) { return null; } return result.get(0); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________VERSION_MANAGER() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getVersionManager() */ @Override @SuppressWarnings("unchecked") public VersionManager getVersionManager() { DetachedCriteria criteria = DetachedCriteria.forClass(VersionManager.class); criteria.addOrder(Order.asc(ID_ATTRIBUTE)); List<VersionManager> versionManagers; try { versionManagers = getHibernateTemplate().findByCriteria(criteria); } catch (BadSqlGrammarException e) { throw new UninitializedDatabaseException( "your database is not initialized, please run 'ant init-data'", e); } if (versionManagers.isEmpty()) { VersionManager versionManager = new VersionManager(); versionManager.setVersion(VersionningUtils.VERSION_0); addObject(versionManager); return versionManager; } return versionManagers.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateVersionManager( * org.esupportail.helpdesk.domain.beans.VersionManager) */ @Override public void updateVersionManager(final VersionManager versionManager) { updateObject(versionManager); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________CONFIG() { // } /** * @return the configs of the application. */ @SuppressWarnings("unchecked") protected List<Config> getConfigs() { DetachedCriteria criteria = DetachedCriteria.forClass(Config.class); criteria.addOrder(Order.asc(ID_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getConfig() */ @Override public Config getConfig() { Config config; List<Config> configs = getConfigs(); if (configs.isEmpty()) { config = new Config(); addObject(config); } else { config = configs.get(0); } if (config.getInstallDate() == null) { config.setInstallDate(getOldestTicketDate()); if (config.getInstallDate() == null) { config.setInstallDate(new Timestamp(System.currentTimeMillis())); } updateConfig(config); } return config; } /** * @see org.esupportail.helpdesk.dao.DaoService#updateConfig( * org.esupportail.helpdesk.domain.beans.Config) */ @Override public void updateConfig(final Config config) { updateObject(config); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________STATE() { // } /** * @return the states of the application. */ @SuppressWarnings("unchecked") protected List<State> getStates() { DetachedCriteria criteria = DetachedCriteria.forClass(State.class); criteria.addOrder(Order.asc(ID_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getState() */ @Override public State getState() { List<State> states = getStates(); if (states.isEmpty()) { State state = new State(); addObject(state); return state; } return states.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateState( * org.esupportail.helpdesk.domain.beans.State) */ @Override public void updateState(final State state) { updateObject(state); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________STATISTICS() { // } /** * Extract an int value from a native SQL query result. * @param o * @return an Integer. */ protected static Integer getNativeSqlIntegerResult(final Object o) { if (o == null) { return null; } if (o instanceof Integer) { return (Integer) o; } if (o instanceof Long) { return ((Long) o).intValue(); } if (o instanceof BigInteger) { return ((BigInteger) o).intValue(); } if (o instanceof BigDecimal) { return ((BigDecimal) o).intValue(); } if (o instanceof Double) { return ((Double) o).intValue(); } throw new UnsupportedOperationException( "can not convert SQL return type [" + o.getClass().getName() + "] to Integer"); } /** * Extract an int value from a native SQL query result. * @param o * @param defaultValue * @return an Integer. */ protected static Integer getNativeSqlIntegerResult( final Object o, final Integer defaultValue) { if (o == null) { return defaultValue; } return getNativeSqlIntegerResult(o); } /** * Extract a long value from a native SQL query result. * @param o * @return a Long. */ protected static Long getNativeSqlLongResult(final Object o) { if (o == null) { return null; } if (o instanceof Long) { return (Long) o; } if (o instanceof Integer) { return ((Integer) o).longValue(); } if (o instanceof BigInteger) { return ((BigInteger) o).longValue(); } if (o instanceof BigDecimal) { return ((BigDecimal) o).longValue(); } if (o instanceof Double) { return ((Double) o).longValue(); } throw new UnsupportedOperationException( "can not convert SQL return type [" + o.getClass().getName() + "] to Long"); } /** * Extract a long value from a native SQL query result. * @param o * @param defaultValue * @return a Long. */ protected static Long getNativeSqlLongResult( final Object o, final Long defaultValue) { if (o == null) { return defaultValue; } return getNativeSqlLongResult(o); } /** * Extract a string value from a native SQL query result. * @param o * @return a String. */ protected static String getNativeSqlStringResult(final Object o) { if (o == null) { return null; } if (o instanceof String) { return (String) o; } if (o instanceof Character) { return o.toString(); } throw new UnsupportedOperationException( "can not convert SQL return type [" + o.getClass().getName() + "] to String"); } /** * Extract a string value from a native SQL query result. * @param o * @param defaultValue * @return a String. */ protected static String getNativeSqlStringResult( final Object o, final String defaultValue) { if (o == null) { return defaultValue; } return getNativeSqlStringResult(o); } /** * @param start * @param end * @param departments * @param origins * @return the condition for ticket creation statistics */ protected static String getTicketCreationsCondition( final Timestamp start, final Timestamp end, final List<Department> departments, final List<String> origins) { String departmentCondition = HqlUtils.alwaysTrue(); if (departments != null && !departments.isEmpty()) { List<Long> departmentIds = new ArrayList<Long>(); for (Department department : departments) { departmentIds.add(department.getId()); } departmentCondition = HqlUtils.longIn("crea_depa_id", departmentIds); } String originCondition = HqlUtils.alwaysTrue(); if (origins != null && !origins.isEmpty()) { originCondition = HqlUtils.stringIn("orig_id", origins); } String dateCondition = HqlUtils.and( HqlUtils.ge("crea_date", HqlUtils.quote(start.toString())), HqlUtils.lt("crea_date", HqlUtils.quote(end.toString()))); String condition = HqlUtils.and(dateCondition, departmentCondition, originCondition); return condition; } /** * @param statType * @return the select suffix for ticket creation statistics */ protected static String getTicketCreationsSelectSuffix( final int statType) { if (statType == StatisticsExtractor.GLOBAL) { return ""; } if (statType == StatisticsExtractor.PER_DEPARTMENT) { return ",crea_depa_id"; } if (statType == StatisticsExtractor.PER_ORIGIN) { return ",orig_id"; } throw new UnsupportedOperationException(); } /** * @param columns * @param statType * @return the select clause for ticket creation statistics */ protected static String getTicketCreationsSelect( final String columns, final int statType) { return columns + getTicketCreationsSelectSuffix(statType); } /** * @param statType * @return the group by suffix for ticket creation statistics */ protected static String getTicketCreationsGroupBySuffix( final int statType) { return getTicketCreationsSelectSuffix(statType); } /** * @param columns * @param statType * @return the group by clause for ticket creation statistics */ protected static String getTicketCreationsGroupBy( final String columns, final int statType) { return columns + getTicketCreationsGroupBySuffix(statType); } /** * @param columns * @param start * @param end * @param statType * @param departments * @param origins * @return the SQL query for ticket creation statistics. */ protected static String getTicketCreationsSqlQuery( final String columns, final Timestamp start, final Timestamp end, final int statType, final List<Department> departments, final List<String> origins) { String select = getTicketCreationsSelect(columns, statType); String condition = getTicketCreationsCondition(start, end, departments, origins); String groupBy = getTicketCreationsGroupBy(columns, statType); String sqlQuery = "SELECT COUNT(*)," + select + " FROM (" + " SELECT id as tick_id," + select + " FROM h_tick WHERE " + condition + " UNION " + " SELECT tick_id," + select + " FROM h_arch_tick WHERE " + condition + ") AS x" + " GROUP BY " + groupBy; return sqlQuery; } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketCreationsByYear( * java.sql.Timestamp, java.sql.Timestamp, int, java.util.List, java.util.List) */ @Override public List<YearTicketCreationStatistic> getTicketCreationsByYear( final Timestamp start, final Timestamp end, final int statType, final List<Department> departments, final List<String> origins) { String hqlQuery = getTicketCreationsSqlQuery( "crea_year", start, end, statType, departments, origins); SQLQuery query = getSqlQuery(hqlQuery); List<YearTicketCreationStatistic> result = new ArrayList<YearTicketCreationStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer year = getNativeSqlIntegerResult(dataValues[fieldNum++]); Department department = null; if (statType == StatisticsExtractor.PER_DEPARTMENT) { Long departmentId = ((BigInteger) dataValues[fieldNum++]).longValue(); department = getDepartment(departmentId); } String origin = null; if (statType == StatisticsExtractor.PER_ORIGIN) { origin = (String) dataValues[fieldNum++]; } result.add(new YearTicketCreationStatistic( StatisticsUtils.getYearDate(year), department, origin, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketCreationsByMonth( * java.sql.Timestamp, java.sql.Timestamp, int, java.util.List, java.util.List) */ @Override public List<MonthTicketCreationStatistic> getTicketCreationsByMonth( final Timestamp start, final Timestamp end, final int statType, final List<Department> departments, final List<String> origins) { String hqlQuery = getTicketCreationsSqlQuery( "crea_year,crea_month", start, end, statType, departments, origins); SQLQuery query = getSqlQuery(hqlQuery); List<MonthTicketCreationStatistic> result = new ArrayList<MonthTicketCreationStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer year = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer month = getNativeSqlIntegerResult(dataValues[fieldNum++]); Department department = null; if (statType == StatisticsExtractor.PER_DEPARTMENT) { Long departmentId = getNativeSqlLongResult(dataValues[fieldNum++]); department = getDepartment(departmentId); } String origin = null; if (statType == StatisticsExtractor.PER_ORIGIN) { origin = getNativeSqlStringResult(dataValues[fieldNum++]); } result.add(new MonthTicketCreationStatistic( StatisticsUtils.getMonthDate(year, month), department, origin, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketCreationsByDay( * java.sql.Timestamp, java.sql.Timestamp, int, java.util.List, java.util.List) */ @Override public List<DayTicketCreationStatistic> getTicketCreationsByDay( final Timestamp start, final Timestamp end, final int statType, final List<Department> departments, final List<String> origins) { String hqlQuery = getTicketCreationsSqlQuery( "crea_year,crea_month,crea_day", start, end, statType, departments, origins); SQLQuery query = getSqlQuery(hqlQuery); List<DayTicketCreationStatistic> result = new ArrayList<DayTicketCreationStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer year = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer month = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer dayOfMonth = getNativeSqlIntegerResult(dataValues[fieldNum++]); Department department = null; if (statType == StatisticsExtractor.PER_DEPARTMENT) { Long departmentId = getNativeSqlLongResult(dataValues[fieldNum++]); department = getDepartment(departmentId); } String origin = null; if (statType == StatisticsExtractor.PER_ORIGIN) { origin = getNativeSqlStringResult(dataValues[fieldNum++]); } result.add(new DayTicketCreationStatistic( StatisticsUtils.getDayDate(year, month, dayOfMonth), department, origin, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketCreationsByDayOfWeek( * java.sql.Timestamp, java.sql.Timestamp, int, java.util.List, java.util.List) */ @Override public List<DayOfWeekTicketCreationStatistic> getTicketCreationsByDayOfWeek( final Timestamp start, final Timestamp end, final int statType, final List<Department> departments, final List<String> origins) { String hqlQuery = getTicketCreationsSqlQuery( "crea_dow", start, end, statType, departments, origins); SQLQuery query = getSqlQuery(hqlQuery); List<DayOfWeekTicketCreationStatistic> result = new ArrayList<DayOfWeekTicketCreationStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer dayOfWeek = getNativeSqlIntegerResult(dataValues[fieldNum++]); Department department = null; if (statType == StatisticsExtractor.PER_DEPARTMENT) { Long departmentId = getNativeSqlLongResult(dataValues[fieldNum++]); department = getDepartment(departmentId); } String origin = null; if (statType == StatisticsExtractor.PER_ORIGIN) { origin = getNativeSqlStringResult(dataValues[fieldNum++]); } result.add(new DayOfWeekTicketCreationStatistic(dayOfWeek, department, origin, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketCreationsByHourOfDay( * java.sql.Timestamp, java.sql.Timestamp, int, java.util.List, java.util.List) */ @Override public List<HourOfDayTicketCreationStatistic> getTicketCreationsByHourOfDay( final Timestamp start, final Timestamp end, final int statType, final List<Department> departments, final List<String> origins) { String hqlQuery = getTicketCreationsSqlQuery( "crea_hour", start, end, statType, departments, origins); SQLQuery query = getSqlQuery(hqlQuery); List<HourOfDayTicketCreationStatistic> result = new ArrayList<HourOfDayTicketCreationStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer hourOfDay = getNativeSqlIntegerResult(dataValues[fieldNum++]); Department department = null; if (statType == StatisticsExtractor.PER_DEPARTMENT) { Long departmentId = getNativeSqlLongResult(dataValues[fieldNum++]); department = getDepartment(departmentId); } String origin = null; if (statType == StatisticsExtractor.PER_ORIGIN) { origin = getNativeSqlStringResult(dataValues[fieldNum++]); } result.add(new HourOfDayTicketCreationStatistic(hourOfDay, department, origin, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketCreationsByHourOfWeek( * java.sql.Timestamp, java.sql.Timestamp, int, java.util.List, java.util.List) */ @Override public List<HourOfWeekTicketCreationStatistic> getTicketCreationsByHourOfWeek( final Timestamp start, final Timestamp end, final int statType, final List<Department> departments, final List<String> origins) { String hqlQuery = getTicketCreationsSqlQuery( "crea_dow,crea_hour", start, end, statType, departments, origins); SQLQuery query = getSqlQuery(hqlQuery); List<HourOfWeekTicketCreationStatistic> result = new ArrayList<HourOfWeekTicketCreationStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer dayOfWeek = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer hourOfDay = getNativeSqlIntegerResult(dataValues[fieldNum++]); Department department = null; if (statType == StatisticsExtractor.PER_DEPARTMENT) { Long departmentId = getNativeSqlLongResult(dataValues[fieldNum++]); department = getDepartment(departmentId); } String origin = null; if (statType == StatisticsExtractor.PER_ORIGIN) { origin = (String) dataValues[fieldNum++]; } result.add(new HourOfWeekTicketCreationStatistic(dayOfWeek, hourOfDay, department, origin, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketCreationDepartments( * java.sql.Timestamp, java.sql.Timestamp, java.util.List) */ @Override public List<Department> getTicketCreationDepartments( final Timestamp start, final Timestamp end, final List<String> origins) { String condition = getTicketCreationsCondition(start, end, null, origins); String sqlQuery = "SELECT crea_depa_id" + " FROM (" + " SELECT crea_depa_id FROM h_tick WHERE " + condition + " UNION " + " SELECT crea_depa_id FROM h_arch_tick WHERE " + condition + ")"; SQLQuery query = getSqlQuery(sqlQuery); List<Department> result = new ArrayList<Department>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Long number = getNativeSqlLongResult(dataValues[fieldNum++]); result.add(getDepartment(number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketCreationOrigins( * java.sql.Timestamp, java.sql.Timestamp, java.util.List) */ @Override public List<String> getTicketCreationOrigins( final Timestamp start, final Timestamp end, final List<Department> departments) { String condition = getTicketCreationsCondition(start, end, departments, null); String sqlQuery = "SELECT orig_id" + " FROM (" + " SELECT orig_id FROM h_tick WHERE " + condition + " UNION " + " SELECT orig_id FROM h_arch_tick WHERE " + condition + ")"; SQLQuery query = getSqlQuery(sqlQuery); List<String> result = new ArrayList<String>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; String origin = getNativeSqlStringResult(dataValues[fieldNum++]); result.add(origin); } return result; } /** * @param start * @param end * @param departments * @return the condition for user ticket creation statistics */ protected static String getUserTicketCreationsCondition( final Timestamp start, final Timestamp end, final List<Department> departments) { String departmentCondition = HqlUtils.alwaysTrue(); if (departments != null && !departments.isEmpty()) { List<Long> departmentIds = new ArrayList<Long>(); for (Department department : departments) { departmentIds.add(department.getId()); } departmentCondition = HqlUtils.longIn("depa_id", departmentIds); } String dateCondition = HqlUtils.and( HqlUtils.ge("crea_date", HqlUtils.quote(start.toString())), HqlUtils.lt("crea_date", HqlUtils.quote(end.toString()))); String condition = HqlUtils.and(dateCondition, departmentCondition); return condition; } /** * @param start * @param end * @param departments * @return the SQL query for ticket creation statistics. */ protected static String getUserTicketCreationsSqlQuery( final Timestamp start, final Timestamp end, final List<Department> departments) { String condition = getUserTicketCreationsCondition(start, end, departments); String sqlQuery = "SELECT COUNT(*) AS number,u.id,u.disp_name" + " FROM (" + " SELECT id AS tick_id,creator_id FROM h_tick WHERE " + condition + " UNION " + " SELECT tick_id,creator_id FROM h_arch_tick WHERE " + condition + ") AS t, h_user u WHERE t.creator_id = u.id" + " GROUP BY u.id,u.disp_name" + " ORDER BY number DESC, u.disp_name"; return sqlQuery; } /** * @see org.esupportail.helpdesk.dao.DaoService#getUserTicketCreations( * java.sql.Timestamp, java.sql.Timestamp, java.util.List, int) */ @Override public List<UserTicketCreationStatisticEntry> getUserTicketCreations( final Timestamp start, final Timestamp end, final List<Department> departments, final int maxEntries) { String sqlQuery = getUserTicketCreationsSqlQuery( start, end, departments); SQLQuery query = getSqlQuery(sqlQuery); List<UserTicketCreationStatisticEntry> result = new ArrayList<UserTicketCreationStatisticEntry>(); int previousNumber = 0; int index = 0; for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); if (index > maxEntries && number != previousNumber) { break; } int rank; if (previousNumber == number) { rank = -1; } else { rank = index; } String userId = getNativeSqlStringResult(dataValues[fieldNum++]); result.add(new UserTicketCreationStatisticEntry(rank, getUser(userId), number)); previousNumber = number; index++; } return result; } /** * @param start * @param end * @param departments * @return the condition for charge time statistics */ protected static String getChargeOrClosureTimeCondition( final Timestamp start, final Timestamp end, final List<Department> departments) { return getUserTicketCreationsCondition(start, end, departments); } /** * @param columns * @param start * @param end * @param departments * @return the SQL query for charge time statistics. */ protected static String getChargeTimeSqlQuery( final String columns, final Timestamp start, final Timestamp end, final List<Department> departments) { String condition = getChargeOrClosureTimeCondition(start, end, departments); String sqlQuery = "SELECT MIN(char_time),ROUND(AVG(char_time)),MAX(char_time),count(*)," + columns + " FROM (" + " SELECT id as tick_id,char_time," + columns + " FROM h_tick WHERE " + HqlUtils.and(condition, "char_time IS NOT NULL") + " UNION " + " SELECT id as tick_id,TIME_TO_SEC(TIMEDIFF(NOW(),crea_date)) AS char_time," + columns + " FROM h_tick WHERE " + HqlUtils.and(condition, "char_time IS NULL", "clos_time IS NULL") + " UNION " + " SELECT id as tick_id,clos_time AS char_time," + columns + " FROM h_tick WHERE " + HqlUtils.and(condition, "char_time IS NULL", "clos_time IS NULL") + " UNION " + " SELECT tick_id,char_time," + columns + " FROM h_arch_tick WHERE " + HqlUtils.and(condition, "char_time IS NOT NULL") + " UNION " + " SELECT tick_id, clos_time AS char_time," + columns + " FROM h_arch_tick WHERE " + HqlUtils.and(condition, "char_time IS NULL") + ") AS t" + " GROUP BY " + columns; return sqlQuery; } /** * @param columns * @param start * @param end * @param departments * @return the SQL query for closure timestatistics. */ protected static String getClosureTimeSqlQuery( final String columns, final Timestamp start, final Timestamp end, final List<Department> departments) { String condition = getChargeOrClosureTimeCondition(start, end, departments); String sqlQuery = "SELECT MIN(clos_time),ROUND(AVG(clos_time)),MAX(clos_time),count(*)," + columns + " FROM (" + " SELECT id as tick_id,clos_time," + columns + " FROM h_tick WHERE " + HqlUtils.and(condition, "clos_time IS NOT NULL") + " UNION " + " SELECT id as tick_id,TIME_TO_SEC(TIMEDIFF(NOW(),crea_date)) AS clos_time," + columns + " FROM h_tick WHERE " + HqlUtils.and(condition, "clos_time IS NULL") + " UNION " + " SELECT tick_id,clos_time," + columns + " FROM h_arch_tick WHERE " + condition + ") AS t" + " GROUP BY " + columns; return sqlQuery; } /** * @see org.esupportail.helpdesk.dao.DaoService#getChargeOrClosureTimeByYear( * boolean, java.sql.Timestamp, java.sql.Timestamp, java.util.List) */ @Override public List<YearTimeStatistic> getChargeOrClosureTimeByYear( final boolean charge, final Timestamp start, final Timestamp end, final List<Department> departments) { String sqlQuery; if (charge) { sqlQuery = getChargeTimeSqlQuery( "crea_year", start, end, departments); } else { sqlQuery = getClosureTimeSqlQuery( "crea_year", start, end, departments); } SQLQuery query = getSqlQuery(sqlQuery); List<YearTimeStatistic> result = new ArrayList<YearTimeStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer min = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer avg = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer max = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer year = getNativeSqlIntegerResult(dataValues[fieldNum++]); result.add(new YearTimeStatistic( StatisticsUtils.getYearDate(year), min, avg, max, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getChargeOrClosureTimeByMonth( * boolean, java.sql.Timestamp, java.sql.Timestamp, java.util.List) */ @Override public List<MonthTimeStatistic> getChargeOrClosureTimeByMonth( final boolean charge, final Timestamp start, final Timestamp end, final List<Department> departments) { String sqlQuery; if (charge) { sqlQuery = getChargeTimeSqlQuery( "crea_year,crea_month", start, end, departments); } else { sqlQuery = getClosureTimeSqlQuery( "crea_year,crea_month", start, end, departments); } SQLQuery query = getSqlQuery(sqlQuery); List<MonthTimeStatistic> result = new ArrayList<MonthTimeStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer min = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer avg = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer max = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer year = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer month = getNativeSqlIntegerResult(dataValues[fieldNum++]); result.add(new MonthTimeStatistic( StatisticsUtils.getMonthDate(year, month), min, avg, max, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getChargeOrClosureTimeByDay( * boolean, java.sql.Timestamp, java.sql.Timestamp, java.util.List) */ @Override public List<DayTimeStatistic> getChargeOrClosureTimeByDay( final boolean charge, final Timestamp start, final Timestamp end, final List<Department> departments) { String sqlQuery; if (charge) { sqlQuery = getChargeTimeSqlQuery( "crea_year,crea_month,crea_day", start, end, departments); } else { sqlQuery = getClosureTimeSqlQuery( "crea_year,crea_month,crea_day", start, end, departments); } SQLQuery query = getSqlQuery(sqlQuery); List<DayTimeStatistic> result = new ArrayList<DayTimeStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer min = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer avg = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer max = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer year = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer month = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer day = getNativeSqlIntegerResult(dataValues[fieldNum++]); result.add(new DayTimeStatistic(StatisticsUtils.getDayDate(year, month, day), min, avg, max, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getChargeOrClosureTimeByDayOfWeek( * boolean, java.sql.Timestamp, java.sql.Timestamp, java.util.List) */ @Override public List<DayOfWeekTimeStatistic> getChargeOrClosureTimeByDayOfWeek( final boolean charge, final Timestamp start, final Timestamp end, final List<Department> departments) { String sqlQuery; if (charge) { sqlQuery = getChargeTimeSqlQuery( "crea_dow", start, end, departments); } else { sqlQuery = getClosureTimeSqlQuery( "crea_dow", start, end, departments); } SQLQuery query = getSqlQuery(sqlQuery); List<DayOfWeekTimeStatistic> result = new ArrayList<DayOfWeekTimeStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer min = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer avg = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer max = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer dayOfWeek = getNativeSqlIntegerResult(dataValues[fieldNum++]); result.add(new DayOfWeekTimeStatistic(dayOfWeek, min, avg, max, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getChargeOrClosureTimeByHourOfDay( * boolean, java.sql.Timestamp, java.sql.Timestamp, java.util.List) */ @Override public List<HourOfDayTimeStatistic> getChargeOrClosureTimeByHourOfDay( final boolean charge, final Timestamp start, final Timestamp end, final List<Department> departments) { String sqlQuery; if (charge) { sqlQuery = getChargeTimeSqlQuery( "crea_hour", start, end, departments); } else { sqlQuery = getClosureTimeSqlQuery( "crea_hour", start, end, departments); } SQLQuery query = getSqlQuery(sqlQuery); List<HourOfDayTimeStatistic> result = new ArrayList<HourOfDayTimeStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer min = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer avg = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer max = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer hourOfDay = getNativeSqlIntegerResult(dataValues[fieldNum++]); result.add(new HourOfDayTimeStatistic(hourOfDay, min, avg, max, number)); } return result; } /** * @see org.esupportail.helpdesk.dao.DaoService#getChargeOrClosureTimeByHourOfWeek( * boolean, java.sql.Timestamp, java.sql.Timestamp, java.util.List) */ @Override public List<HourOfWeekTimeStatistic> getChargeOrClosureTimeByHourOfWeek( final boolean charge, final Timestamp start, final Timestamp end, final List<Department> departments) { String sqlQuery; if (charge) { sqlQuery = getChargeTimeSqlQuery( "crea_dow,crea_hour", start, end, departments); } else { sqlQuery = getClosureTimeSqlQuery( "crea_dow,crea_hour", start, end, departments); } SQLQuery query = getSqlQuery(sqlQuery); List<HourOfWeekTimeStatistic> result = new ArrayList<HourOfWeekTimeStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer min = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer avg = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer max = getNativeSqlIntegerResult(dataValues[fieldNum++], 0); Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer dayOfWeek = getNativeSqlIntegerResult(dataValues[fieldNum++]); Integer hourOfDay = getNativeSqlIntegerResult(dataValues[fieldNum++]); result.add(new HourOfWeekTimeStatistic(dayOfWeek, hourOfDay, min, avg, max, number)); } return result; } /** * @param start * @param end * @param departments * @param maxEntries * @param hideCharged * @return the SQL query for longest charge times. */ protected static String getLongestChargeTimeSqlQuery( final Timestamp start, final Timestamp end, final List<Department> departments, final int maxEntries, final boolean hideCharged) { String condition = getChargeOrClosureTimeCondition(start, end, departments); String sqlQuery = "SELECT tick_id, char_time FROM (" + " SELECT id as tick_id,TIME_TO_SEC(TIMEDIFF(NOW(),crea_date)) AS char_time" + " FROM h_tick WHERE " + HqlUtils.and(condition, "char_time IS NULL", "clos_time IS NULL"); if (!hideCharged) { sqlQuery += " UNION " + " SELECT id as tick_id,clos_time AS char_time FROM h_tick WHERE " + HqlUtils.and(condition, "char_time IS NULL", "clos_time IS NOT NULL") + " UNION " + " SELECT id as tick_id,char_time FROM h_tick WHERE " + HqlUtils.and(condition, "char_time IS NOT NULL") + " UNION " + " SELECT tick_id,char_time FROM h_arch_tick WHERE " + HqlUtils.and(condition, "char_time IS NOT NULL") + " UNION " + " SELECT tick_id, clos_time AS char_time FROM h_arch_tick WHERE " + HqlUtils.and(condition, "char_time IS NULL"); } sqlQuery += ") AS t" + " ORDER BY char_time DESC LIMIT " + maxEntries; return sqlQuery; } /** * @param start * @param end * @param departments * @param maxEntries * @param hideClosed * @return the SQL query for longest closure times. */ protected static String getLongestClosureTimeSqlQuery( final Timestamp start, final Timestamp end, final List<Department> departments, final int maxEntries, final boolean hideClosed) { String condition = getChargeOrClosureTimeCondition(start, end, departments); String sqlQuery = "SELECT tick_id, clos_time FROM (" + " SELECT id as tick_id,TIME_TO_SEC(TIMEDIFF(NOW(),crea_date)) AS clos_time FROM h_tick WHERE " + HqlUtils.and(condition, "clos_time IS NULL"); if (!hideClosed) { sqlQuery += " UNION " + " SELECT id as tick_id,clos_time FROM h_tick WHERE " + HqlUtils.and(condition, "clos_time IS NOT NULL") + " UNION " + " SELECT tick_id,clos_time FROM h_arch_tick WHERE " + condition; } sqlQuery += ") AS t" + " ORDER BY clos_time DESC LIMIT " + maxEntries; return sqlQuery; } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketsWithLongChargeOrClosureTime( * boolean, java.sql.Timestamp, java.sql.Timestamp, java.util.List, int, boolean) */ @Override public List<StatisticsTicketEntry> getTicketsWithLongChargeOrClosureTime( final boolean charge, final Timestamp start, final Timestamp end, final List<Department> departments, final int maxEntries, final boolean hideChargedOrClosed) { String sqlQuery; if (charge) { sqlQuery = getLongestChargeTimeSqlQuery(start, end, departments, maxEntries, hideChargedOrClosed); } else { sqlQuery = getLongestClosureTimeSqlQuery(start, end, departments, maxEntries, hideChargedOrClosed); } SQLQuery query = getSqlQuery(sqlQuery); List<StatisticsTicketEntry> result = new ArrayList<StatisticsTicketEntry>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Long id = getNativeSqlLongResult(dataValues[fieldNum++]); StatisticsTicketEntry ticketEntry; Ticket ticket = getTicket(id); if (ticket != null) { ticketEntry = new StatisticsTicketEntry(ticket); } else { ArchivedTicket archivedTicket = getArchivedTicketByOriginalId(id); if (archivedTicket == null) { throw new TicketNotFoundException("no ticket found with id [" + id + "]"); } ticketEntry = new StatisticsTicketEntry(archivedTicket); } Integer time = getNativeSqlIntegerResult(dataValues[fieldNum++]); if (charge) { ticketEntry.setChargeTime(time); } else { ticketEntry.setClosureTime(time); } result.add(ticketEntry); } return result; } /** * @param start * @param end * @param departments * @return the condition for status statistics */ protected static String getStatusCondition( final Timestamp start, final Timestamp end, final List<Department> departments) { String departmentCondition = HqlUtils.alwaysTrue(); if (departments != null && !departments.isEmpty()) { List<Long> departmentIds = new ArrayList<Long>(); for (Department department : departments) { departmentIds.add(department.getId()); } departmentCondition = HqlUtils.longIn("depa_id", departmentIds); } String dateCondition = HqlUtils.and( HqlUtils.ge("crea_date", HqlUtils.quote(start.toString())), HqlUtils.lt("crea_date", HqlUtils.quote(end.toString()))); String condition = HqlUtils.and(dateCondition, departmentCondition); return condition; } /** * @param start * @param end * @param statType * @param departments * @param ignoreArchivedTickets * @return the SQL query for status statistics. */ protected static String getStatusStatisticsSqlQuery( final Timestamp start, final Timestamp end, final int statType, final List<Department> departments, final boolean ignoreArchivedTickets) { String columns = ""; if (statType == StatisticsExtractor.PER_DEPARTMENT) { columns += ",depa_id"; } String condition = getStatusCondition(start, end, departments); String sqlQuery; if (ignoreArchivedTickets) { sqlQuery = "SELECT COUNT(*),stat" + columns + " FROM h_tick WHERE " + condition + " GROUP BY stat" + columns; } else { sqlQuery = "SELECT COUNT(*),stat" + columns + " FROM (" + " SELECT id as tick_id,stat" + columns + " FROM h_tick WHERE " + condition + " UNION " + " SELECT tick_id,'ARCHIVED' AS stat" + columns + " FROM h_arch_tick WHERE " + condition + ") AS x" + " GROUP BY stat" + columns; } return sqlQuery; } /** * @see org.esupportail.helpdesk.dao.DaoService#getStatusStatistics( * java.sql.Timestamp, java.sql.Timestamp, int, java.util.List, boolean) */ @Override public List<StatusStatistic> getStatusStatistics( final Timestamp start, final Timestamp end, final int statType, final List<Department> departments, final boolean ignoreArchivedTickets) { String sqlQuery = getStatusStatisticsSqlQuery( start, end, statType, departments, ignoreArchivedTickets); SQLQuery query = getSqlQuery(sqlQuery); List<StatusStatistic> result = new ArrayList<StatusStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); String status = getNativeSqlStringResult(dataValues[fieldNum++]); Long departmentId = null; if (statType == StatisticsExtractor.PER_DEPARTMENT) { departmentId = getNativeSqlLongResult(dataValues[fieldNum++]); } result.add(new StatusStatistic(departmentId, status, number)); } return result; } /** * @param start * @param end * @param departments * @param zero * @return the condition for spent time statistics */ protected static String getSpentTimeCondition( final Timestamp start, final Timestamp end, final List<Department> departments, final boolean zero) { List<Long> neededDepartmentIds = new ArrayList<Long>(); List<Long> notNeededDepartmentIds = new ArrayList<Long>(); if (departments != null && !departments.isEmpty()) { for (Department department : departments) { if (department.isSpentTimeNeeded()) { neededDepartmentIds.add(department.getId()); } else { notNeededDepartmentIds.add(department.getId()); } } } String dateCondition = HqlUtils.and( HqlUtils.ge("crea_date", HqlUtils.quote(start.toString())), HqlUtils.lt("crea_date", HqlUtils.quote(end.toString()))); String condition; if (zero) { condition = HqlUtils.or( HqlUtils.longIn("depa_id", notNeededDepartmentIds), "spen_time <= 0"); } else { condition = HqlUtils.and( HqlUtils.longIn("depa_id", neededDepartmentIds), "spen_time > 0"); } return HqlUtils.and(dateCondition, condition); } /** * @param start * @param end * @param departments * @return the SQL query for status statistics. */ protected static String getSpentTimeStatisticsSqlQuery( final Timestamp start, final Timestamp end, final List<Department> departments) { String sqlQuery = "SELECT" + " crea_depa_id,depa_id,COUNT(*) AS number,SUM(spen_time) AS tota_spen_time" + " FROM (" + HqlUtils.selectFromWhere( "id AS tick_id,crea_depa_id,depa_id,spen_time", "h_tick", getSpentTimeCondition(start, end, departments, false)) + " UNION " + HqlUtils.selectFromWhere( "id AS tick_id,crea_depa_id,depa_id,0 AS spen_time", "h_tick", getSpentTimeCondition(start, end, departments, true)) + " UNION " + HqlUtils.selectFromWhere( "tick_id,crea_depa_id,depa_id,spen_time", "h_arch_tick", getSpentTimeCondition(start, end, departments, false)) + " UNION " + HqlUtils.selectFromWhere( "tick_id,crea_depa_id,depa_id,0 AS spen_time", "h_arch_tick", getSpentTimeCondition(start, end, departments, true)) + ") AS x" + " GROUP BY depa_id,crea_depa_id" + " ORDER BY depa_id,tota_spen_time,number"; return sqlQuery; } /** * @see org.esupportail.helpdesk.dao.DaoService#getSpentTimeStatistics( * java.sql.Timestamp, java.sql.Timestamp, java.util.List) */ @Override public List<SpentTimeStatistic> getSpentTimeStatistics( final Timestamp start, final Timestamp end, final List<Department> departments) { String sqlQuery = getSpentTimeStatisticsSqlQuery(start, end, departments); SQLQuery query = getSqlQuery(sqlQuery); List<SpentTimeStatistic> result = new ArrayList<SpentTimeStatistic>(); for (Object data : query.list()) { Object[] dataValues = (Object[]) data; int fieldNum = 0; Long creationDepartmentId = getNativeSqlLongResult(dataValues[fieldNum++]); Long finalDepartmentId = getNativeSqlLongResult(dataValues[fieldNum++]); Integer number = getNativeSqlIntegerResult(dataValues[fieldNum++]); Long spentTime = getNativeSqlLongResult(dataValues[fieldNum++]); result.add(new SpentTimeStatistic(creationDepartmentId, finalDepartmentId, number, spentTime)); } return result; } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________DEPARTMENT_SELECTION_CONFIG() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getLatestDepartmentSelectionConfig() */ @Override @SuppressWarnings("unchecked") @RequestCache public DepartmentSelectionConfig getLatestDepartmentSelectionConfig() { DetachedCriteria criteria = DetachedCriteria.forClass(DepartmentSelectionConfig.class); criteria.addOrder(Order.desc("id")); List<DepartmentSelectionConfig> configs = getHibernateTemplate().findByCriteria(criteria); if (configs.isEmpty()) { return null; } return configs.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#addDepartmentSelectionConfig( * org.esupportail.helpdesk.domain.beans.DepartmentSelectionConfig) */ @Override public void addDepartmentSelectionConfig(final DepartmentSelectionConfig config) { addObject(config); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________FAQ_LINK() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqLinks(org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<FaqLink> getFaqLinks(final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(FaqLink.class); criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqLinks(org.esupportail.helpdesk.domain.beans.Category) */ @Override @SuppressWarnings("unchecked") @RequestCache public List<FaqLink> getFaqLinks(final Category category) { DetachedCriteria criteria = DetachedCriteria.forClass(FaqLink.class); criteria.add(Restrictions.eq(CATEGORY_ATTRIBUTE, category)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqLinksNumber( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @RequestCache public int getFaqLinksNumber(final Department department) { String queryStr = HqlUtils.selectCountAllFromWhere( FaqLink.class.getSimpleName(), HqlUtils.equals("department.id", department.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqLinksNumber( * org.esupportail.helpdesk.domain.beans.Category) */ @Override @RequestCache public int getFaqLinksNumber(final Category category) { String queryStr = HqlUtils.selectCountAllFromWhere( FaqLink.class.getSimpleName(), HqlUtils.equals("category.id", category.getId())); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqLinkByOrder( * org.esupportail.helpdesk.domain.beans.Department, org.esupportail.helpdesk.domain.beans.Category, int) */ @Override @SuppressWarnings("unchecked") public FaqLink getFaqLinkByOrder( final Department department, final Category category, final int order) { DetachedCriteria criteria = DetachedCriteria.forClass(FaqLink.class); if (department != null) { criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); } if (category != null) { criteria.add(Restrictions.eq(CATEGORY_ATTRIBUTE, category)); } criteria.add(Restrictions.eq(ORDER_ATTRIBUTE, new Integer(order))); List<FaqLink> faqLinks = getHibernateTemplate().findByCriteria(criteria); if (faqLinks.isEmpty()) { return null; } return faqLinks.get(0); } /** * @see org.esupportail.helpdesk.dao.DaoService#addFaqLink(org.esupportail.helpdesk.domain.beans.FaqLink) */ @Override public void addFaqLink(final FaqLink faqLink) { addObject(faqLink); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateFaqLink(org.esupportail.helpdesk.domain.beans.FaqLink) */ @Override public void updateFaqLink(final FaqLink faqLink) { updateObject(faqLink); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteFaqLink(org.esupportail.helpdesk.domain.beans.FaqLink) */ @Override public void deleteFaqLink(final FaqLink faqLink) { deleteObject(faqLink); } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________MISC() { // } /** * @return the fileManager */ protected FileManager getFileManager() { return fileManager; } /** * @param fileManager the fileManager to set */ public void setFileManager(final FileManager fileManager) { this.fileManager = fileManager; } /** * @param jdbcUrl the jdbcUrl to set */ public void setJdbcUrl(final String jdbcUrl) { if (jdbcUrl.startsWith("jdbc:mysql")) { databaseType = DATABASE_TYPE_MYSQL; } else if (jdbcUrl.startsWith("jdbc:postgresql")) { databaseType = DATABASE_TYPE_POSTGRES; } else { throw new ConfigException("unknown database type for JDBC URL [" + jdbcUrl + "]"); } } /** Eclipse outline delimiter. */ @SuppressWarnings("unused") private void _______________DEPRECATED() { // } /** * @see org.esupportail.helpdesk.dao.DaoService#getOldTicketTemplates( * org.esupportail.helpdesk.domain.beans.Category) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<OldTicketTemplate> getOldTicketTemplates(final Category category) { DetachedCriteria criteria = DetachedCriteria.forClass(OldTicketTemplate.class); criteria.add(Restrictions.eq(CATEGORY_ATTRIBUTE, category)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteOldTicketTemplate( * org.esupportail.helpdesk.domain.beans.OldTicketTemplate) */ @Override @SuppressWarnings("deprecation") @Deprecated public void deleteOldTicketTemplate(final OldTicketTemplate oldTicketTemplate) { deleteObject(oldTicketTemplate); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOldFaqParts( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqContainer) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<OldFaqPart> getOldFaqParts(final DeprecatedFaqContainer faqContainer) { DetachedCriteria criteria = DetachedCriteria.forClass(OldFaqPart.class); criteria.add(Restrictions.eq(PARENT_ATTRIBUTE, faqContainer)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteOldFaqPart( * org.esupportail.helpdesk.domain.beans.OldFaqPart) */ @Override @SuppressWarnings("deprecation") @Deprecated public void deleteOldFaqPart(final OldFaqPart oldFaqPart) { deleteObject(oldFaqPart); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOldFaqEntries( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqContainer) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<OldFaqEntry> getOldFaqEntries(final DeprecatedFaqContainer faqContainer) { DetachedCriteria criteria = DetachedCriteria.forClass(OldFaqEntry.class); criteria.add(Restrictions.eq(PARENT_ATTRIBUTE, faqContainer)); criteria.add(Restrictions.isNull(OLD_FAQ_PART_ATTRIBUTE)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOldFaqEntries( * org.esupportail.helpdesk.domain.beans.OldFaqPart) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<OldFaqEntry> getOldFaqEntries(final OldFaqPart oldFaqPart) { DetachedCriteria criteria = DetachedCriteria.forClass(OldFaqEntry.class); criteria.add(Restrictions.eq(OLD_FAQ_PART_ATTRIBUTE, oldFaqPart)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteOldFaqEntry( * org.esupportail.helpdesk.domain.beans.OldFaqEntry) */ @Override @SuppressWarnings("deprecation") @Deprecated public void deleteOldFaqEntry(final OldFaqEntry oldFaqEntry) { deleteObject(oldFaqEntry); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketsConnectedToOldFaqEntry( * org.esupportail.helpdesk.domain.beans.OldFaqEntry) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<Ticket> getTicketsConnectedToOldFaqEntry(final OldFaqEntry oldFaqEntry) { DetachedCriteria criteria = DetachedCriteria.forClass(Ticket.class); criteria.add(Restrictions.eq("connectionOldFaqEntry.id", oldFaqEntry.getId())); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getTicketsConnectedToOldFaqPart( * org.esupportail.helpdesk.domain.beans.OldFaqPart) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<Ticket> getTicketsConnectedToOldFaqPart(final OldFaqPart oldFaqPart) { DetachedCriteria criteria = DetachedCriteria.forClass(Ticket.class); criteria.add(Restrictions.eq("connectionOldFaqPart.id", oldFaqPart.getId())); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOrphenTickets( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<Ticket> getOrphenTickets(final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(Ticket.class); criteria.add(Restrictions.eq("department.id", department.getId())); criteria.add(Restrictions.isNull("category")); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOrphenTicketsNumber( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings("deprecation") @Deprecated public int getOrphenTicketsNumber(final Department department) { String queryStr = HqlUtils.selectCountAllFromWhere( Ticket.class.getSimpleName() + HqlUtils.AS_KEYWORD + "ticket", HqlUtils.and( HqlUtils.equals("department.id", department.getId()), HqlUtils.isNull("category"))); return getQueryIntResult(queryStr); } /** * @see org.esupportail.helpdesk.dao.DaoService#getActionsConnectedToOldFaqEntry( * org.esupportail.helpdesk.domain.beans.OldFaqEntry) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<Action> getActionsConnectedToOldFaqEntry(final OldFaqEntry oldFaqEntry) { DetachedCriteria criteria = DetachedCriteria.forClass(Action.class); criteria.add(Restrictions.eq("oldFaqEntryConnectionAfter.id", oldFaqEntry.getId())); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getActionsConnectedToOldFaqPart( * org.esupportail.helpdesk.domain.beans.OldFaqPart) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<Action> getActionsConnectedToOldFaqPart(final OldFaqPart oldFaqPart) { DetachedCriteria criteria = DetachedCriteria.forClass(Action.class); criteria.add(Restrictions.eq("oldFaqPartConnectionAfter.id", oldFaqPart.getId())); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getV2ActionsToUpgradeToV3(long, int) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<Action> getV2ActionsToUpgradeToV3( final long startIndex, final int num) { String actionCondition1 = HqlUtils.or( HqlUtils.like("action.message", HqlUtils.quote("%&%")), HqlUtils.like("action.labelBefore", HqlUtils.quote("%&%")), HqlUtils.like("action.labelAfter", HqlUtils.quote("%&%"))); String actionCondition2 = HqlUtils.or( HqlUtils.equals( "action.actionType", HqlUtils.quote(ActionType.CONNECT_TO_TICKET_V2)), HqlUtils.equals( "action.actionType", HqlUtils.quote(ActionType.CONNECT_TO_TICKET_APPROVE_V2)), HqlUtils.equals( "action.actionType", HqlUtils.quote(ActionType.CONNECT_TO_FAQ_V2)), HqlUtils.equals( "action.actionType", HqlUtils.quote(ActionType.CONNECT_TO_FAQ_APPROVE_V2))); String actionCondition3 = HqlUtils.or( HqlUtils.isNotNull("action.oldConnectionAfter"), HqlUtils.isNotNull("action.oldFaqPartConnectionAfter"), HqlUtils.isNotNull("action.oldFaqEntryConnectionAfter")); String actionCondition = HqlUtils.or( actionCondition1, actionCondition2, actionCondition3); Query query = getQuery(HqlUtils.fromWhereOrderBy( Action.class.getSimpleName() + HqlUtils.AS_KEYWORD + "action", HqlUtils.and( HqlUtils.ge("action.id", startIndex), actionCondition ), "action.id")); query.setMaxResults(num); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getV2Invitations() */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<Action> getV2Invitations() { DetachedCriteria criteria = DetachedCriteria.forClass(Action.class); criteria.add(Restrictions.eq("actionType", ActionType.MONITORING_INVITE_V2)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getOldFileInfoContent( * org.esupportail.helpdesk.domain.beans.OldFileInfo) */ @Override @SuppressWarnings("deprecation") @Deprecated public byte[] getOldFileInfoContent(final OldFileInfo oldFileInfo) { return fileManager.readOldFileInfoContent(oldFileInfo); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteOldFileInfo( * org.esupportail.helpdesk.domain.beans.OldFileInfo) */ @Override @SuppressWarnings("deprecation") @Deprecated public void deleteOldFileInfo(final OldFileInfo oldFileInfo) { fileManager.deleteOldFileInfoContent(oldFileInfo); deleteObject(oldFileInfo); } /** * @see org.esupportail.helpdesk.dao.DaoService#getV2ActionsWithAttachedFile(int) */ @Override @SuppressWarnings({ "unchecked", "cast", "deprecation" }) @Deprecated public List<Action> getV2ActionsWithAttachedFile(final int maxResults) { Query query = getQuery(HqlUtils.fromWhereOrderBy( Action.class.getSimpleName() + HqlUtils.AS_KEYWORD + "action", HqlUtils.isNotNull("oldFileInfo"), "id")); query.setMaxResults(maxResults); return (List<Action>) query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#getV2ArchivedInvitations() */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<ArchivedAction> getV2ArchivedInvitations() { DetachedCriteria criteria = DetachedCriteria.forClass(ArchivedAction.class); criteria.add(Restrictions.eq("actionType", ActionType.MONITORING_INVITE_V2)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getInheritingMembersCategories() */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<Category> getInheritingMembersCategories() { DetachedCriteria criteria = DetachedCriteria.forClass(Category.class); criteria.add(Restrictions.eq("inheritMembers", Boolean.TRUE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getLastArchivedTicketId() */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public long getLastArchivedTicketId() { Query query = getQuery(HqlUtils.fromOrderByDesc(ArchivedTicket.class.getSimpleName(), "id")); query.setMaxResults(1); List<ArchivedTicket> archivedTickets = query.list(); long lastArchivedTicketId = -1; if (!archivedTickets.isEmpty()) { lastArchivedTicketId = archivedTickets.get(0).getId(); } return lastArchivedTicketId; } /** * @see org.esupportail.helpdesk.dao.DaoService#getLastTicketId() */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public long getLastTicketId() { Query query = getQuery(HqlUtils.fromOrderByDesc(Ticket.class.getSimpleName(), "id")); query.setMaxResults(1); List<Ticket> tickets = query.list(); long lastTicketId = -1; if (!tickets.isEmpty()) { lastTicketId = tickets.get(0).getId(); } return lastTicketId; } /** * @see org.esupportail.helpdesk.dao.DaoService#setDefaultOldPriorityLevelToCategories() */ @Override @SuppressWarnings("deprecation") @Deprecated public void setDefaultOldPriorityLevelToCategories() { executeUpdate(HqlUtils.update( Category.class.getSimpleName() + " c", "c.oldDefaultPriorityLevel = 0")); } /** * @see org.esupportail.helpdesk.dao.DaoService#getLastActionId() */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public long getLastActionId() { Query query = getQuery(HqlUtils.fromOrderByDesc(Action.class.getSimpleName(), "id")); query.setMaxResults(1); List<Action> actions = query.list(); long lastActionId = -1; if (!actions.isEmpty()) { lastActionId = actions.get(0).getId(); } return lastActionId; } /** * @see org.esupportail.helpdesk.dao.DaoService#getLastArchivedActionId() */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public long getLastArchivedActionId() { Query query = getQuery(HqlUtils.fromOrderByDesc(ArchivedAction.class.getSimpleName(), "id")); query.setMaxResults(1); List<ArchivedAction> archivedActions = query.list(); long lastArchivedActionId = -1; if (!archivedActions.isEmpty()) { lastArchivedActionId = archivedActions.get(0).getId(); } return lastArchivedActionId; } /** * @see org.esupportail.helpdesk.dao.DaoService#setToNullEmpyActionMessages() */ @Override @SuppressWarnings("deprecation") @Deprecated public void setToNullEmpyActionMessages() { executeUpdate(HqlUtils.updateWhere( Action.class.getSimpleName() + " a", "a.message = NULL", HqlUtils.equals("a.message", HqlUtils.quote("<p> </p>")))); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateBeanSequence(String, String) * @deprecated */ @Override @Deprecated @SuppressWarnings({ "unchecked", "deprecation" }) public void updateBeanSequence( final String beanName, final String sequenceName) { if (DATABASE_TYPE_POSTGRES.equals(databaseType)) { try { List<Long> ids = getQuery("SELECT MAX(id) FROM " + beanName).list(); HibernateCallback callback = new HibernateSequenceUpdater(sequenceName, ids.get(0)); getHibernateTemplate().execute(callback); } catch (Exception e) { logger.warn("Could not set sequence for bean " + beanName + ". " + "Probably update on non-existing table."); } } } /** * @see org.esupportail.helpdesk.dao.DaoService#getUsersWithNullAuthType(int) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated public List<User> getUsersWithNullAuthType( final int maxResults) { Query query = getQuery(HqlUtils.fromWhere( User.class.getSimpleName(), HqlUtils.isNull("authType"))); query.setMaxResults(maxResults); return query.list(); } /** * @see org.esupportail.helpdesk.dao.DaoService#upgradeUserKeys(String, java.lang.String) */ @Override @SuppressWarnings("deprecation") @Deprecated public void upgradeUserKeys( final String classname, final String field) { String commonCondition = HqlUtils.and( HqlUtils.not(HqlUtils.like( field + ".id", HqlUtils.quote(CasUserManager.USER_ID_PREFIX + "%"))), HqlUtils.not(HqlUtils.like( field + ".id", HqlUtils.quote(ShibbolethUserManager.USER_ID_PREFIX + "%"))), HqlUtils.not(HqlUtils.like( field + ".id", HqlUtils.quote(ApplicationUserManager.USER_ID_PREFIX + "%")))); String emailCondition = HqlUtils.like(field + ".id", HqlUtils.quote("%@%")); executeUpdate(HqlUtils.updateWhere( classname, field + ".id = concat(" + HqlUtils.quote(ApplicationUserManager.USER_ID_PREFIX) + ", " + field + ".id)", HqlUtils.and(commonCondition, emailCondition))); executeUpdate(HqlUtils.updateWhere( classname, field + ".id = concat(" + HqlUtils.quote(CasUserManager.USER_ID_PREFIX) + ", " + field + ".id)", HqlUtils.and(commonCondition, HqlUtils.not(emailCondition)))); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteUsersWithNoneAuthType() */ @Override @SuppressWarnings("deprecation") @Deprecated public void deleteUsersWithNoneAuthType() { executeUpdate(HqlUtils.deleteWhere( User.class.getSimpleName(), HqlUtils.equals("authType", HqlUtils.quote(AuthUtils.NONE)))); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqContainers() */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated @RequestCache public List<DeprecatedFaqContainer> getFaqContainers() { return getHibernateTemplate().loadAll(DeprecatedFaqContainer.class); } /** * @see org.esupportail.helpdesk.dao.DaoService#addFaqContainer( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqContainer) */ @Override @SuppressWarnings("deprecation") @Deprecated public void addFaqContainer(final DeprecatedFaqContainer faqContainer) { addObject(faqContainer); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateFaqContainer( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqContainer) */ @Override @SuppressWarnings("deprecation") @Deprecated public void updateFaqContainer(final DeprecatedFaqContainer faqContainer) { updateObject(faqContainer); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteFaqContainer( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqContainer) */ @Override @SuppressWarnings("deprecation") @Deprecated public void deleteFaqContainer(final DeprecatedFaqContainer faqContainer) { executeUpdate(HqlUtils.updateWhere( Ticket.class.getSimpleName(), "deprecatedConnectionFaqContainer = NULL", HqlUtils.equals("deprecatedConnectionFaqContainer.id", faqContainer.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedTicket.class.getSimpleName(), "deprecatedConnectionFaqContainer = NULL", HqlUtils.equals("deprecatedConnectionFaqContainer.id", faqContainer.getId()))); executeUpdate(HqlUtils.deleteWhere( FaqLink.class.getSimpleName(), HqlUtils.equals("deprecatedFaqContainer.id", faqContainer.getId()))); deleteObject(faqContainer); } /** * @see org.esupportail.helpdesk.dao.DaoService#getRootFaqContainers( * org.esupportail.helpdesk.domain.beans.Department) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated @RequestCache public List<DeprecatedFaqContainer> getRootFaqContainers(final Department department) { DetachedCriteria criteria = DetachedCriteria.forClass(DeprecatedFaqContainer.class); criteria.add(Restrictions.isNull(PARENT_ATTRIBUTE)); if (department == null) { criteria.add(Restrictions.isNull(DEPARTMENT_ATTRIBUTE)); } else { criteria.add(Restrictions.eq(DEPARTMENT_ATTRIBUTE, department)); } criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getSubFaqContainers( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqContainer) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated @RequestCache public List<DeprecatedFaqContainer> getSubFaqContainers(final DeprecatedFaqContainer faqContainer) { DetachedCriteria criteria = DetachedCriteria.forClass(DeprecatedFaqContainer.class); criteria.add(Restrictions.eq(PARENT_ATTRIBUTE, faqContainer)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqEntries() */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated @RequestCache public List<DeprecatedFaqEntry> getFaqEntries() { return getHibernateTemplate().loadAll(DeprecatedFaqEntry.class); } /** * @see org.esupportail.helpdesk.dao.DaoService#addFaqEntry( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqEntry) */ @Override @SuppressWarnings("deprecation") @Deprecated public void addFaqEntry(final DeprecatedFaqEntry faqEntry) { addObject(faqEntry); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateFaqEntry( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqEntry) */ @Override @SuppressWarnings("deprecation") @Deprecated public void updateFaqEntry(final DeprecatedFaqEntry faqEntry) { updateObject(faqEntry); } /** * @see org.esupportail.helpdesk.dao.DaoService#deleteFaqEntry( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqEntry) */ @Override @SuppressWarnings("deprecation") @Deprecated public void deleteFaqEntry(final DeprecatedFaqEntry faqEntry) { executeUpdate(HqlUtils.updateWhere( Ticket.class.getSimpleName(), "deprecatedConnectionFaqEntry = NULL", HqlUtils.equals("deprecatedConnectionFaqEntry", faqEntry.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedTicket.class.getSimpleName(), "deprecatedConnectionFaqEntry = NULL", HqlUtils.equals("deprecatedConnectionFaqEntry.id", faqEntry.getId()))); executeUpdate(HqlUtils.deleteWhere( FaqLink.class.getSimpleName(), HqlUtils.equals("deprecatedFaqEntry.id", faqEntry.getId()))); deleteObject(faqEntry); } /** * @see org.esupportail.helpdesk.dao.DaoService#getFaqEntries( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqContainer) */ @Override @SuppressWarnings({ "unchecked", "deprecation" }) @Deprecated @RequestCache public List<DeprecatedFaqEntry> getFaqEntries(final DeprecatedFaqContainer faqContainer) { DetachedCriteria criteria = DetachedCriteria.forClass(DeprecatedFaqEntry.class); criteria.add(Restrictions.eq(PARENT_ATTRIBUTE, faqContainer)); criteria.addOrder(Order.asc(ORDER_ATTRIBUTE)); return getHibernateTemplate().findByCriteria(criteria); } /** * @see org.esupportail.helpdesk.dao.DaoService#updateFaqEntriesEffectiveScope( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqContainer) */ @Override @SuppressWarnings("deprecation") @Deprecated public void updateFaqEntriesEffectiveScope(final DeprecatedFaqContainer faqContainer) { executeUpdate(HqlUtils.updateWhere( DeprecatedFaqEntry.class.getSimpleName(), "effectiveScope = " + HqlUtils.quote(faqContainer.getEffectiveScope()), HqlUtils.and( HqlUtils.equals( "scope", HqlUtils.quote(FaqScope.DEFAULT)), HqlUtils.equals("parent.id", faqContainer.getId())))); executeUpdate(HqlUtils.updateWhere( DeprecatedFaqEntry.class.getSimpleName(), "effectiveScope = scope", HqlUtils.and( HqlUtils.not(HqlUtils.equals( "scope", HqlUtils.quote(FaqScope.DEFAULT))), HqlUtils.equals("parent.id", faqContainer.getId())))); } /** * @see org.esupportail.helpdesk.dao.DaoService#migrateFaqContainerRefs( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqContainer, * org.esupportail.helpdesk.domain.beans.Faq) */ @Override @SuppressWarnings("deprecation") @Deprecated public void migrateFaqContainerRefs( final DeprecatedFaqContainer faqContainer, final Faq faq) { executeUpdate(HqlUtils.updateWhere( Ticket.class.getSimpleName(), "deprecatedConnectionFaqEntry = NULL, deprecatedConnectionFaqContainer = NULL, connectionFaq.id = " + faq.getId(), HqlUtils.equals("deprecatedConnectionFaqContainer.id", faqContainer.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedTicket.class.getSimpleName(), "deprecatedConnectionFaqEntry = NULL, deprecatedConnectionFaqContainer = NULL, connectionFaq.id = " + faq.getId(), HqlUtils.equals("deprecatedConnectionFaqContainer.id", faqContainer.getId()))); executeUpdate(HqlUtils.updateWhere( FaqLink.class.getSimpleName(), "deprecatedFaqEntry = NULL, deprecatedFaqContainer = NULL, faq.id = " + faq.getId(), HqlUtils.equals("deprecatedFaqContainer.id", faqContainer.getId()))); } /** * @see org.esupportail.helpdesk.dao.DaoService#migrateFaqEntryRefs( * org.esupportail.helpdesk.domain.beans.DeprecatedFaqEntry, * org.esupportail.helpdesk.domain.beans.Faq) */ @Override @SuppressWarnings("deprecation") @Deprecated public void migrateFaqEntryRefs( final DeprecatedFaqEntry faqEntry, final Faq faq) { executeUpdate(HqlUtils.updateWhere( Ticket.class.getSimpleName(), "deprecatedConnectionFaqEntry = NULL, deprecatedConnectionFaqContainer = NULL, connectionFaq.id = " + faq.getId(), HqlUtils.equals("deprecatedConnectionFaqEntry.id", faqEntry.getId()))); executeUpdate(HqlUtils.updateWhere( ArchivedTicket.class.getSimpleName(), "deprecatedConnectionFaqEntry = NULL, deprecatedConnectionFaqContainer = NULL, connectionFaq.id = " + faq.getId(), HqlUtils.equals("deprecatedConnectionFaqEntry.id", faqEntry.getId()))); executeUpdate(HqlUtils.updateWhere( FaqLink.class.getSimpleName(), "deprecatedFaqEntry = NULL, deprecatedFaqContainer = NULL, faq.id = " + faq.getId(), HqlUtils.equals("deprecatedFaqEntry.id", faqEntry.getId()))); } }