Java tutorial
/* jBilling - The Enterprise Open Source Billing System Copyright (C) 2003-2011 Enterprise jBilling Software Ltd. and Emiliano Conde This file is part of jbilling. jbilling is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. jbilling is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with jbilling. If not, see <http://www.gnu.org/licenses/>. */ package com.sapienter.jbilling.server.user.db; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Restrictions; import com.sapienter.jbilling.common.CommonConstants; import com.sapienter.jbilling.server.user.UserDTOEx; import com.sapienter.jbilling.server.util.db.AbstractDAS; public class UserDAS extends AbstractDAS<UserDTO> { private static final Logger LOG = Logger.getLogger(UserDAS.class); private static final String findByCustomField = "SELECT a " + " FROM UserDTO a, ContactMap cm " + " WHERE a.company.id = :entity " + " AND a.id = cm.foreignId " + " AND cm.jbillingTable.id = 10 " + " AND cm.contactType.isPrimary = 1 " + " AND cm.contact.contactFields.contactFieldType.id = :type " + " AND cm.contact.contactFields.contactFieldType.content = :content " + " AND a.deleted = 0"; private static final String findInStatusSQL = "SELECT a " + " FROM UserDTO a " + " WHERE a.userStatus.id = :status " + " AND a.company.id = :entity " + " AND a.deleted = 0"; private static final String findNotInStatusSQL = "SELECT a " + " FROM UserDTO a " + " WHERE a.userStatus.id <> :status " + " AND a.company.id = :entity " + " AND a.deleted = 0"; private static final String findAgeingSQL = "SELECT a " + " FROM UserDTO a " + " WHERE a.userStatus.id > " + UserDTOEx.STATUS_ACTIVE + " AND a.userStatus.id <> " + UserDTOEx.STATUS_DELETED + " AND a.customer.excludeAging = 0 " + " AND a.company.id = :entity " + " AND a.deleted = 0"; public UserDTO findRoot(String username) { if (username == null || username.length() == 0) { LOG.error("can not find an empty root: " + username); return null; } // I need to access an association, so I can't use the parent helper class Criteria criteria = getSession().createCriteria(UserDTO.class).add(Restrictions.eq("userName", username)) .add(Restrictions.eq("deleted", 0)).createAlias("roles", "r") .add(Restrictions.eq("r.id", CommonConstants.TYPE_ROOT)); criteria.setCacheable(true); // it will be called over an over again return (UserDTO) criteria.uniqueResult(); } public UserDTO findWebServicesRoot(String username) { if (username == null || username.length() == 0) { LOG.error("can not find an empty root: " + username); return null; } // I need to access an association, so I can't use the parent helper class Criteria criteria = getSession().createCriteria(UserDTO.class).add(Restrictions.eq("userName", username)) .add(Restrictions.eq("deleted", 0)).createAlias("roles", "r") .add(Restrictions.eq("r.id", CommonConstants.TYPE_ROOT)).createAlias("permissions", "p") .add(Restrictions.eq("p.permission.id", 120)); criteria.setCacheable(true); // it will be called over an over again return (UserDTO) criteria.uniqueResult(); } public UserDTO findByUserName(String username, Integer entityId) { // I need to access an association, so I can't use the parent helper class Criteria criteria = getSession().createCriteria(UserDTO.class).add(Restrictions.eq("userName", username)) .add(Restrictions.eq("deleted", 0)).createAlias("company", "e") .add(Restrictions.eq("e.id", entityId)); return (UserDTO) criteria.uniqueResult(); } public List<UserDTO> findInStatus(Integer entityId, Integer statusId) { Query query = getSession().createQuery(findInStatusSQL); query.setParameter("entity", entityId); query.setParameter("status", statusId); return query.list(); } public List<UserDTO> findNotInStatus(Integer entityId, Integer statusId) { Query query = getSession().createQuery(findNotInStatusSQL); query.setParameter("entity", entityId); query.setParameter("status", statusId); return query.list(); } public List<UserDTO> findByCustomField(Integer entityId, Integer typeId, String value) { Query query = getSession().createQuery(findByCustomField); query.setParameter("entity", entityId); query.setParameter("type", typeId); query.setParameter("content", value); return query.list(); } public List<UserDTO> findAgeing(Integer entityId) { Query query = getSession().createQuery(findAgeingSQL); query.setParameter("entity", entityId); return query.list(); } }