org.glite.security.voms.admin.persistence.dao.hibernate.TaskDAOHibernate.java Source code

Java tutorial

Introduction

Here is the source code for org.glite.security.voms.admin.persistence.dao.hibernate.TaskDAOHibernate.java

Source

/**
 * Copyright (c) Istituto Nazionale di Fisica Nucleare (INFN). 2006-2016
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.glite.security.voms.admin.persistence.dao.hibernate;

import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.glite.security.voms.admin.configuration.VOMSConfiguration;
import org.glite.security.voms.admin.configuration.VOMSConfigurationConstants;
import org.glite.security.voms.admin.error.NullArgumentException;
import org.glite.security.voms.admin.persistence.dao.generic.DAOFactory;
import org.glite.security.voms.admin.persistence.dao.generic.TaskDAO;
import org.glite.security.voms.admin.persistence.dao.generic.TaskTypeDAO;
import org.glite.security.voms.admin.persistence.error.VOMSDatabaseException;
import org.glite.security.voms.admin.persistence.model.AUP;
import org.glite.security.voms.admin.persistence.model.request.Request;
import org.glite.security.voms.admin.persistence.model.task.ApproveUserRequestTask;
import org.glite.security.voms.admin.persistence.model.task.SignAUPTask;
import org.glite.security.voms.admin.persistence.model.task.Task;
import org.glite.security.voms.admin.persistence.model.task.Task.TaskStatus;
import org.glite.security.voms.admin.persistence.model.task.TaskType;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TaskDAOHibernate extends GenericHibernateDAO<Task, Long> implements TaskDAO {

    private static final Logger log = LoggerFactory.getLogger(TaskDAOHibernate.class);

    public ApproveUserRequestTask createApproveUserRequestTask(Request req) {

        return null;
    }

    public SignAUPTask createSignAUPTask(AUP aup, Date expiryDate) {

        TaskTypeDAO ttDAO = DAOFactory.instance(DAOFactory.HIBERNATE).getTaskTypeDAO();

        if (aup == null)
            throw new NullArgumentException("aup cannot be null!");

        if (expiryDate == null)
            throw new NullArgumentException("expiryDate cannot be null!");

        TaskType tt = ttDAO.findByName("SignAUPTask");

        if (tt == null)
            throw new VOMSDatabaseException(
                    "Inconsistent database! Task type for SignAUPTask not found in database!");

        SignAUPTask t = new SignAUPTask(tt, aup, expiryDate);

        makePersistent(t);

        return t;

    }

    public List<Task> findApproveUserRequestTasks() {

        return findConcrete(ApproveUserRequestTask.class);

    }

    protected List<Task> findConcrete(Class clazz) {

        return getSession().createCriteria(clazz).list();
    }

    public List<Task> findSignAUPTasks() {

        return findConcrete(SignAUPTask.class);
    }

    public void removeAllTasks() {

        List<Task> tasks = findAll();

        for (Task t : tasks)
            makeTransient(t);

    }

    public SignAUPTask createSignAUPTask(AUP aup) {

        int lifetime = VOMSConfiguration.instance().getInt(VOMSConfigurationConstants.SIGN_AUP_TASK_LIFETIME, 15);

        Calendar cal = Calendar.getInstance();

        // Negative lifetime values are useful for debugging purposes!
        if (lifetime > 0) {
            cal.add(Calendar.DAY_OF_YEAR, lifetime);
        }

        log.debug("Scheduling SignAUP task with expiration date: {}", cal.getTime().toString());

        return createSignAUPTask(aup, cal.getTime());

    }

    public List<Task> getActiveTasks() {

        return findByCriteria(Restrictions.ne("status", TaskStatus.COMPLETED),
                Restrictions.ne("status", TaskStatus.EXPIRED));

    }

    @Override
    public List<SignAUPTask> findActiveSignAUPTasks() {

        Criteria crit = getSession().createCriteria(SignAUPTask.class);

        crit.add(Restrictions.eq("status", TaskStatus.CREATED));

        return crit.list();
    }

}