org.apache.hise.engine.jaxws.TaskOperationsImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.hise.engine.jaxws.TaskOperationsImpl.java

Source

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.apache.hise.engine.jaxws;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import javax.inject.Inject;

import javax.jws.WebService;
import javax.xml.datatype.Duration;
import javax.xml.namespace.QName;
import javax.xml.ws.Holder;
import javax.xml.ws.WebServiceContext;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hise.dao.GenericHumanRole;
import org.apache.hise.dao.TaskQuery;
import org.apache.hise.dao.Transactional;
import org.apache.hise.engine.HISEEngineImpl;

import org.apache.hise.engine.wsdl.IllegalAccessFault;
import org.apache.hise.engine.wsdl.IllegalArgumentFault;
import org.apache.hise.engine.wsdl.IllegalOperationFault;
import org.apache.hise.engine.wsdl.IllegalStateFault;

import org.apache.hise.engine.wsdl.RecipientNotAllowed;

import org.apache.hise.engine.wsdl.TaskOperations;

import org.apache.hise.lang.xsd.htd.TOrganizationalEntity;

import org.apache.hise.lang.xsd.htda.TAttachment;
import org.apache.hise.lang.xsd.htda.TAttachmentInfo;
import org.apache.hise.lang.xsd.htda.TComment;
import org.apache.hise.lang.xsd.htda.TStatus;
import org.apache.hise.lang.xsd.htda.TTask;
import org.apache.hise.lang.xsd.htda.TTaskAbstract;
import org.apache.hise.lang.xsd.htda.TTaskQueryResultSet;

import org.apache.hise.lang.xsd.htdt.TTime;
import org.apache.hise.runtime.HiseIllegalAccessException;
import org.apache.hise.runtime.HiseIllegalStateException;
import org.apache.hise.runtime.Task;
import org.w3c.dom.Node;

/**
 * Implementation of WS-HT API. Operations are executed by end users, i.e.
 * actual or potential owners. The identity of the user is implicitly passed
 * when invoking any of the operations listed in the table below. The
 * participant operations listed below only apply to tasks unless explicitly
 * noted otherwise. The authorization column indicates people of which roles are
 * authorized to perform the operation. Stakeholders of the task are not
 * mentioned explicitly. They have the same authorization rights as business
 * administrators.
 * 
 * @author Witek Woejszo
 * @author Warren Crossing
 */
@Transactional
@WebService
public class TaskOperationsImpl implements TaskOperations {

    private static final Log log = LogFactory.getLog(TaskOperationsImpl.class);

    @Inject
    HISEEngineImpl hiseEngine;

    @Resource
    WebServiceContext context;

    public void setWebServiceContext(WebServiceContext context) {
        this.context = context;
    }

    protected String getUserString() {
        return context.getUserPrincipal().getName();
    }

    // implementation in progress

    /**
     * {@inheritDoc}
     */
    public List<TTask> getMyTasks(String taskType, String genericHumanRole, String workQueue, List<TStatus> status,
            String whereClause, String createdOnClause, Integer maxTasks)
            throws IllegalArgumentFault, IllegalStateFault {

        List<TTask> result = new ArrayList<TTask>();

        String user = getUserString();

        TaskQuery query = new TaskQuery();
        query.setUser(user);
        query.setUserGroups(hiseEngine.getHiseUserDetails().getUserGroups(user));
        query.setTaskType(taskType);
        query.setGenericHumanRole(GenericHumanRole.valueOf(genericHumanRole));
        query.setWorkQueue(workQueue);
        query.setStatuses(status);
        query.setWhereClause(whereClause);
        query.setCreatedOnClause(createdOnClause);

        if (maxTasks != null) {
            query.setMaxTasks(maxTasks);
        }

        List<org.apache.hise.dao.Task> tasks = hiseEngine.getHiseDao().getUserTasks(query);
        for (org.apache.hise.dao.Task u : tasks) {
            TTask t = convertTask(u.getId());
            result.add(t);
        }

        return result;
    }

    /**
     * {@inheritDoc}
     */
    public Object getInput(String identifier, String part)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());
        return t.getInput(part);
    }

    /**
     * {@inheritDoc}
     */
    public Object getOutput(String identifier, String part)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());
        return t.getOutput(part);
    }

    /**
     * {@inheritDoc}
     */
    public void stop(String identifier) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());

        try {
            t.stop();
        } catch (HiseIllegalStateException e) {
            throw new IllegalStateFault(e.getMessage());
        }
    }

    public void suspend(String identifier) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());

        try {
            t.suspend();
        } catch (HiseIllegalStateException e) {
            throw new IllegalStateFault(e.getMessage());
        }
    }

    public void suspendUntil(String identifier, TTime time)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());
        Date when = time.getPointOfTime();
        if (when == null) {
            Duration when2 = time.getTimePeriod();
            when = Calendar.getInstance().getTime();
            when2.addTo(when);
        }

        try {
            t.suspendUntil(when);
        } catch (HiseIllegalStateException e) {
            throw new IllegalStateFault(e.getMessage());
        }
    }

    public void remove(String identifier) throws IllegalAccessFault, IllegalArgumentFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());
        t.remove();
    }

    public void resume(String identifier) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // OrgEntity user = loadUser();
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());

        try {
            t.resume();
        } catch (HiseIllegalStateException e) {
            throw new IllegalStateFault(e.getMessage());
        }
    }

    public org.apache.hise.lang.xsd.htda.TTask getTaskInfo(String identifier) throws IllegalArgumentFault {
        return convertTask(
                hiseEngine.getHiseDao().find(org.apache.hise.dao.Task.class, Long.parseLong(identifier)).getId());
    }

    public void claim(String identifier) throws IllegalArgumentFault, IllegalStateFault, IllegalAccessFault {
        Task task = Task.load(hiseEngine, Long.valueOf(identifier));
        task.setCurrentUser(getUserString());

        try {
            task.claim();
        } catch (HiseIllegalStateException e) {
            throw new IllegalStateFault(e.getMessage());
        } catch (HiseIllegalAccessException e) {
            throw new IllegalAccessFault(e.getMessage());
        }
    }

    public void fail(String identifier, String faultName, Object faultData)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault, IllegalOperationFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());

        try {
            t.fail();
        } catch (HiseIllegalStateException e) {
            throw new IllegalStateFault(e.getMessage());
        }
    }

    public void forward(String identifier, TOrganizationalEntity organizationalEntity)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {

        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());

        try {
            t.forward(organizationalEntity);
        } catch (HiseIllegalStateException e) {
            throw new IllegalStateFault(e.getMessage());
        }
    }

    public String getTaskDescription(String identifier, String contentType) throws IllegalArgumentFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());
        return t.getTaskEvaluator().evalPresentationDescription();
    }

    public void release(String identifier) throws IllegalArgumentFault, IllegalStateFault, IllegalAccessFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());

        try {
            t.release();
        } catch (HiseIllegalStateException e) {
            throw new IllegalStateFault(e.getMessage());
        }
    }

    public void start(String identifier) throws IllegalArgumentFault, IllegalStateFault, IllegalAccessFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());

        try {
            t.start();
        } catch (HiseIllegalStateException e) {
            throw new IllegalStateFault(e.getMessage());
        }
    }

    public void complete(String identifier, Object taskData)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        Task t = Task.load(hiseEngine, Long.parseLong(identifier));
        t.setCurrentUser(getUserString());
        //TODO set output
        //t.setOutput(((Node) taskData).getFirstChild());

        try {
            t.complete();
        } catch (HiseIllegalStateException e) {
            throw new IllegalStateFault(e.getMessage());
        }
    }

    public void setOutput(String identifier, String part, Object taskData)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        Task t = Task.load(hiseEngine, Long.valueOf(identifier));
        t.setCurrentUser(getUserString());
        t.setOutput(((Node) taskData).getFirstChild());
    }

    // not started

    public TTaskQueryResultSet query(String selectClause, String whereClause, String orderByClause,
            Integer maxTasks, Integer taskIndexOffset) throws IllegalArgumentFault, IllegalStateFault {
        // TODO Auto-generated method stub
        return null;
    }

    public void activate(String identifier) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub

    }

    public void addAttachment(String identifier, String name, String accessType, Object attachment)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub

    }

    public void addComment(String identifier, String text)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub

    }

    public void delegate(String identifier, TOrganizationalEntity organizationalEntity)
            throws IllegalAccessFault, IllegalStateFault, RecipientNotAllowed, IllegalArgumentFault {
        // TODO Auto-generated method stub

    }

    public void deleteAttachments(String identifier, String attachmentName)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub

    }

    public void deleteFault(String identifier) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub

    }

    public void deleteOutput(String identifier) throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub

    }

    public List<TAttachmentInfo> getAttachmentInfos(String identifier)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub
        return null;
    }

    public List<TAttachment> getAttachments(String identifier, String attachmentName)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub
        return null;
    }

    public List<TComment> getComments(String identifier)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub
        return null;
    }

    public Object getRendering(Object identifier, QName renderingType) throws IllegalArgumentFault {
        // TODO Auto-generated method stub
        return null;
    }

    public List<QName> getRenderingTypes(Object identifier) throws IllegalArgumentFault {
        // TODO Auto-generated method stub
        return null;
    }

    public void nominate(String identifier, TOrganizationalEntity organizationalEntity)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub

    }

    public void setFault(String identifier, String faultName, Object faultData)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault, IllegalOperationFault {
        // TODO Auto-generated method stub

    }

    public void setGenericHumanRole(String identifier, String genericHumanRole,
            TOrganizationalEntity organizationalEntity)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub

    }

    public void setPriority(String identifier, BigInteger priority)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault {
        // TODO Auto-generated method stub

    }

    public void skip(String identifier)
            throws IllegalAccessFault, IllegalStateFault, IllegalArgumentFault, IllegalOperationFault {
        // TODO Auto-generated method stub
    }

    public void getFault(String identifier, Holder<String> faultName, Holder<Object> faultData)
            throws IllegalArgumentFault, IllegalStateFault, IllegalOperationFault, IllegalAccessFault {
        // TODO Auto-generated method stub

    }

    public List<TTaskAbstract> getMyTaskAbstracts(String taskType, String genericHumanRole, String workQueue,
            List<TStatus> status, String whereClause, String createdOnClause, Integer maxTasks)
            throws IllegalArgumentFault, IllegalStateFault {
        // TODO Auto-generated method stub
        return null;
    }

    // Util

    private TTask convertTask(Long id) {
        Task task = Task.load(hiseEngine, id);
        org.apache.hise.dao.Task taskDto = task.getTaskDto();

        TTask result = new TTask();
        result.withId(taskDto.getId().toString()).withTaskType(taskDto.isNotification() ? "NOTIFICATION" : "TASK")
                .withCreatedOn(taskDto.getCreatedOn()).withActivationTime(taskDto.getActivationTime())
                .withCreatedBy(taskDto.getCreatedBy())
                .withPresentationName(task.getTaskEvaluator().getPresentationName())
                .withPresentationSubject(task.getTaskEvaluator().evalPresentationSubject())
                .withName(taskDto.getTaskDefinitionName())
                .withStatus(TStatus.fromValue(taskDto.getStatus().toString()));

        if (taskDto.getActualOwner() != null) {
            result.setActualOwner(taskDto.getActualOwner());
        }

        return result;
    }

    /**
     * IoC setter.
     * 
     * @param hiseEngine
     */
    public void setHiseEngine(HISEEngineImpl hiseEngine) {
        this.hiseEngine = hiseEngine;
    }
}