Package org.dspace.rest.entities

Source Code of org.dspace.rest.entities.WorkflowEntity

/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.rest.entities;

import org.dspace.authorize.AuthorizeException;
import org.dspace.core.Context;
import org.dspace.eperson.EPerson;
import org.dspace.rest.content.ContentHelper;
import org.dspace.rest.util.UserRequestParams;
import org.dspace.workflow.WorkflowItem;
import org.dspace.workflow.WorkflowManager;
import org.sakaiproject.entitybus.EntityReference;
import org.sakaiproject.entitybus.exception.EntityException;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class WorkflowEntity extends WorkflowEntityId {

    private int state;
    private Object item;
    private Object reviewer;
    private Object collection;

    public WorkflowEntity() {
    }

    public WorkflowEntity(String uid, Context context) {
        super(uid, context);
        try {
            this.state = res.getState();
            this.item = new ItemEntityTrim(res.getItem(), context);
            if (res.getOwner() != null) {
                this.reviewer = new UserEntityTrim(res.getOwner());
            }
            this.collection = new CollectionEntityTrimC(res.getCollection());
        } catch (SQLException ex) {
            throw new EntityException("Internal server error", "SQL error", 500);
        }
    }

    public WorkflowEntity(WorkflowItem res, Context context) {
        super(res);
        try {
            this.state = res.getState();
            this.item = new ItemEntityTrim(res.getItem(), context);
            if (res.getOwner() != null) {
                this.reviewer = new UserEntityTrim(res.getOwner());
            }
            this.collection = new CollectionEntityTrimC(res.getCollection());
        } catch (SQLException ex) {
            throw new EntityException("Internal server error", "SQL error", 500);
        }
    }

    public Object getCount(EntityReference ref, UserRequestParams uparams, Context context) {
        try {
            return ContentHelper.countItemsWorkflow(context, uparams.getReviewer(), uparams.getSubmitter(), uparams.getFields(), uparams.getStatus());
        } catch (SQLException ex) {
            throw new EntityException("Internal server error", "SQL error", 500);
        }
    }

    public Object getSubmittersCount(EntityReference ref, UserRequestParams uparams, Context context) {
        try {
            return ContentHelper.countItemsSubmitters(context, uparams.getQuery());
        } catch (SQLException ex) {
            throw new EntityException("Internal server error", "SQL error", 500);
        }
    }

    public Object getSubmitters(EntityReference ref, UserRequestParams uparams, Context context) {
        try {
            List<Object> entities = new ArrayList<Object>();
            EPerson[] ePersons = ContentHelper.findAllSubmitters(context, uparams.getQuery(), uparams.getStart(),
                    uparams.getLimit(), uparams.getSort().replaceAll("_", " "));
            for (EPerson e : ePersons) {
                entities.add(new UserEntityTrim(e));
            }
            return entities;
        } catch (SQLException ex) {
            throw new EntityException("Internal server error", "SQL error", 500);
        }
    }

    public void accept(EntityReference ref, Map<String, Object> inputVar, Context context) {
        try {
            Integer id = Integer.parseInt(ref.getId());
            WorkflowItem workflowItem = WorkflowItem.find(context, id);
            WorkflowManager.claim(context, workflowItem, context.getCurrentUser());
        } catch (SQLException ex) {
            throw new EntityException("Internal server error", "SQL error", 500);
        } catch (AuthorizeException ae) {
            throw new EntityException("Forbidden", "Forbidden", 403);
        } catch (NumberFormatException ex) {
            throw new EntityException("Bad request", "Could not parse input", 400);
        } catch (IOException e) {
            throw new EntityException("Internal server error", "IO error", 500);
        }
    }

    public void returnToPool(EntityReference ref, Map<String, Object> inputVar, Context context) {
        try {
            Integer id = Integer.parseInt(ref.getId());
            WorkflowItem workflowItem = WorkflowItem.find(context, id);
            WorkflowManager.unclaim(context, workflowItem, context.getCurrentUser());
        } catch (SQLException ex) {
            throw new EntityException("Internal server error", "SQL error", 500);
        } catch (AuthorizeException ae) {
            throw new EntityException("Forbidden", "Forbidden", 403);
        } catch (NumberFormatException ex) {
            throw new EntityException("Bad request", "Could not parse input", 400);
        } catch (IOException e) {
            throw new EntityException("Internal server error", "IO error", 500);
        }
    }

    public void approve(EntityReference ref, Map<String, Object> inputVar, Context context) {
        try {
            Integer id = Integer.parseInt(ref.getId());
            WorkflowItem workflowItem = WorkflowItem.find(context, id);
            WorkflowManager.advance(context, workflowItem, context.getCurrentUser());
        } catch (SQLException ex) {
            throw new EntityException("Internal server error", "SQL error", 500);
        } catch (AuthorizeException ae) {
            throw new EntityException("Forbidden", "Forbidden", 403);
        } catch (NumberFormatException ex) {
            throw new EntityException("Bad request", "Could not parse input", 400);
        } catch (IOException e) {
            throw new EntityException("Internal server error", "IO error", 500);
        }
    }

    public void reject(EntityReference ref, Map<String, Object> inputVar, Context context) {
        try {
            Integer id = Integer.parseInt(ref.getId());
            String reason = (String) inputVar.get("reason");
            WorkflowItem workflowItem = WorkflowItem.find(context, id);
            WorkflowManager.reject(context, workflowItem, context.getCurrentUser(), reason);
        } catch (SQLException ex) {
            throw new EntityException("Internal server error", "SQL error", 500);
        } catch (AuthorizeException ae) {
            throw new EntityException("Forbidden", "Forbidden", 403);
        } catch (NumberFormatException ex) {
            throw new EntityException("Bad request", "Could not parse input", 400);
        } catch (IOException e) {
            throw new EntityException("Internal server error", "IO error", 500);
        }
    }

    public int getState() {
        return state;
    }

    public Object getItem() {
        return item;
    }

    public Object getReviewer() {
        return reviewer;
    }

    public Object getCollection() {
        return collection;
    }
}
TOP

Related Classes of org.dspace.rest.entities.WorkflowEntity

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.