com.sam.moca.task.dao.hibernate.TaskDefinitionHibernateDAO.java Source code

Java tutorial

Introduction

Here is the source code for com.sam.moca.task.dao.hibernate.TaskDefinitionHibernateDAO.java

Source

/*
 *  $URL$
 *  $Revision$
 *  $Author$
 *  $Date$
 *  
 *  $Copyright-Start$
 *
 *  Copyright (c) 2016
 *  Sam Corporation
 *  All Rights Reserved
 *
 *  This software is furnished under a corporate license for use on a
 *  single computer system and can be copied (with inclusion of the
 *  above copyright) only for use on such a system.
 *
 *  The information in this document is subject to change without notice
 *  and should not be construed as a commitment by Sam Corporation.
 *
 *  Sam Corporation assumes no responsibility for the use of the
 *  software described in this document on equipment which has not been
 *  supplied or approved by Sam Corporation.
 *
 *  $Copyright-End$
 */

package com.sam.moca.task.dao.hibernate;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.LogicalExpression;
import org.hibernate.criterion.Restrictions;
import org.hibernate.type.StandardBasicTypes;
import org.hibernate.type.Type;

import com.sam.moca.cluster.RoleDefinition;
import com.sam.moca.dao.hibernate.AbstractHibernateDAO;
import com.sam.moca.db.hibernate.HibernateTools;
import com.sam.moca.task.TaskDefinition;
import com.sam.moca.task.dao.TaskDefinitionDAO;

/**
 * Data Access Object class used to retrieve Task Detail objects implemented by
 * using Hibernate as the medium.
 * 
 * <b><pre>
 * Copyright (c) 2016 Sam Corporation
 * All Rights Reserved
 * </pre></b>
 * 
 * @author wburns
 * @version $Revision$
 */
public class TaskDefinitionHibernateDAO extends AbstractHibernateDAO<TaskDefinition, String>
        implements TaskDefinitionDAO {

    /**
     * @param session
     * @param instanceType
     */
    public TaskDefinitionHibernateDAO() {
        super(TaskDefinition.class);
    }

    // @see com.sam.moca.task.dao.TaskDefinitionDAO#readAllTasksForAllAndRoles(com.sam.moca.cluster.RoleDefinition[])
    @SuppressWarnings("unchecked")
    @Override
    public List<TaskDefinition> readAllTasksForAllAndRoles(RoleDefinition... roles) {
        Criteria criteria = HibernateTools.getSession().createCriteria(TaskDefinition.class);

        Criterion criterion = Restrictions.sqlRestriction("{alias}.role_id = '*'");

        if (roles.length > 0) {
            Object[] values = new Object[roles.length];
            Type[] types = new Type[roles.length];
            StringBuilder builder = new StringBuilder("{alias}.task_id in (");

            for (int i = 0; i < roles.length; ++i) {
                if (i != 0) {
                    builder.append(", ");
                }
                builder.append('?');
                values[i] = roles[i].getRoleId();
                types[i] = StandardBasicTypes.STRING;
            }

            builder.append(')');

            LogicalExpression expr = Restrictions.or(Restrictions.sqlRestriction(builder.toString(), values, types),
                    Restrictions.in("role", roles));
            criterion = Restrictions.or(criterion, expr);
        }

        criteria.add(criterion);
        return (List<TaskDefinition>) criteria.list();
    }
}