edu.cornell.mannlib.vitro.webapp.controller.edit.VclassEditController.java Source code

Java tutorial

Introduction

Here is the source code for edu.cornell.mannlib.vitro.webapp.controller.edit.VclassEditController.java

Source

/* $This file is distributed under the terms of the license in /doc/license.txt$ */

package edu.cornell.mannlib.vitro.webapp.controller.edit;

import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess.ReasoningOption.ASSERTIONS_ONLY;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.hp.hpl.jena.vocabulary.OWL;

import edu.cornell.mannlib.vedit.beans.EditProcessObject;
import edu.cornell.mannlib.vedit.beans.FormObject;
import edu.cornell.mannlib.vedit.controller.BaseEditController;
import edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission;
import edu.cornell.mannlib.vitro.webapp.beans.Ontology;
import edu.cornell.mannlib.vitro.webapp.beans.VClass;
import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup;
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.dao.VClassDao;
import edu.cornell.mannlib.vitro.webapp.dao.VClassGroupDao;
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess;

public class VclassEditController extends BaseEditController {

    private static final Log log = LogFactory.getLog(VclassEditController.class.getName());
    private static final int NUM_COLS = 14;

    public void doPost(HttpServletRequest req, HttpServletResponse response) {
        if (!isAuthorizedToDisplayPage(req, response, SimplePermission.EDIT_ONTOLOGY.ACTION)) {
            return;
        }

        VitroRequest request = new VitroRequest(req);

        EditProcessObject epo = super.createEpo(request, FORCE_NEW);
        request.setAttribute("epoKey", epo.getKey());

        VClassDao vcwDao = ModelAccess.on(getServletContext()).getWebappDaoFactory(ASSERTIONS_ONLY).getVClassDao();
        VClass vcl = (VClass) vcwDao.getVClassByURI(request.getParameter("uri"));

        if (vcl == null) {
            vcl = request.getUnfilteredWebappDaoFactory().getVClassDao().getTopConcept();
        }

        request.setAttribute("VClass", vcl);

        ArrayList results = new ArrayList();
        results.add("class"); // 1
        results.add("class label"); // 2
        results.add("class group"); // 3
        results.add("ontology"); // 4
        results.add("RDF local name"); // 5
        results.add("short definition"); // 6
        results.add("example"); // 7
        results.add("editor description"); // 8
        //results.add("curator comments"); 
        results.add("display level"); // 9
        results.add("update level"); // 10
        results.add("display rank"); // 11
        results.add("custom entry form"); // 12
        results.add("URI"); // 13
        results.add("publish level"); // 14

        String ontologyName = null;
        if (vcl.getNamespace() != null) {
            Ontology ont = request.getUnfilteredWebappDaoFactory().getOntologyDao()
                    .getOntologyByURI(vcl.getNamespace());
            if ((ont != null) && (ont.getName() != null)) {
                ontologyName = ont.getName();
            }
        }

        WebappDaoFactory wadf = request.getUnfilteredWebappDaoFactory();
        String groupURI = vcl.getGroupURI();
        String groupName = "none";
        if (groupURI != null) {
            VClassGroupDao groupDao = wadf.getVClassGroupDao();
            VClassGroup classGroup = groupDao.getGroupByURI(groupURI);
            if (classGroup != null) {
                groupName = classGroup.getPublicName();
            }
        }

        String shortDef = (vcl.getShortDef() == null) ? "" : vcl.getShortDef();
        String example = (vcl.getExample() == null) ? "" : vcl.getExample();
        String description = (vcl.getDescription() == null) ? "" : vcl.getDescription();

        boolean foundComment = false;
        StringBuffer commSb = null;
        for (Iterator<String> commIt = request.getUnfilteredWebappDaoFactory().getCommentsForResource(vcl.getURI())
                .iterator(); commIt.hasNext();) {
            if (commSb == null) {
                commSb = new StringBuffer();
                foundComment = true;
            }
            commSb.append(commIt.next()).append(" ");
        }
        if (!foundComment) {
            commSb = new StringBuffer("no comments yet");
        }

        String hiddenFromDisplay = (vcl.getHiddenFromDisplayBelowRoleLevel() == null ? "(unspecified)"
                : vcl.getHiddenFromDisplayBelowRoleLevel().getDisplayLabel());
        String ProhibitedFromUpdate = (vcl.getProhibitedFromUpdateBelowRoleLevel() == null ? "(unspecified)"
                : vcl.getProhibitedFromUpdateBelowRoleLevel().getUpdateLabel());
        String hiddenFromPublish = (vcl.getHiddenFromPublishBelowRoleLevel() == null ? "(unspecified)"
                : vcl.getHiddenFromPublishBelowRoleLevel().getDisplayLabel());

        String customEntryForm = (vcl.getCustomEntryForm() == null ? "(unspecified)" : vcl.getCustomEntryForm());

        //String lastModified = "<i>not implemented yet</i>"; // TODO

        String uri = (vcl.getURI() == null) ? "" : vcl.getURI();

        results.add(vcl.getPickListName()); // 1
        results.add(vcl.getName() == null ? "(no public label)" : vcl.getName()); // 2
        results.add(groupName); // 3
        results.add(ontologyName == null ? "(not identified)" : ontologyName); // 4
        results.add(vcl.getLocalName()); // 5
        results.add(shortDef); // 6
        results.add(example); // 7
        results.add(description); // 8
        //results.add(commSb.toString());    // 
        results.add(hiddenFromDisplay); // 9
        results.add(ProhibitedFromUpdate); // 10
        results.add(String.valueOf(vcl.getDisplayRank())); // 11
        results.add(customEntryForm); // 12
        results.add(uri); // 13
        results.add(hiddenFromPublish); // 14
        request.setAttribute("results", results);
        request.setAttribute("columncount", NUM_COLS);
        request.setAttribute("suppressquery", "true");

        epo.setDataAccessObject(vcl);
        FormObject foo = new FormObject();
        HashMap OptionMap = new HashMap();

        HashMap formSelect = new HashMap(); // tells the JSP what select lists are populated, and thus should be displayed
        request.setAttribute("formSelect", formSelect);

        // if supported, we want to show only the asserted superclasses and subclasses.
        VClassDao vcDao = ModelAccess.on(getServletContext()).getWebappDaoFactory(ASSERTIONS_ONLY).getVClassDao();
        VClassDao displayVcDao = ModelAccess.on(getServletContext()).getWebappDaoFactory().getVClassDao();

        List<VClass> superVClasses = getVClassesForURIList(vcDao.getSuperClassURIs(vcl.getURI(), false),
                displayVcDao);
        sortForPickList(superVClasses, request);
        request.setAttribute("superclasses", superVClasses);

        List<VClass> subVClasses = getVClassesForURIList(vcDao.getSubClassURIs(vcl.getURI()), displayVcDao);
        sortForPickList(subVClasses, request);
        request.setAttribute("subclasses", subVClasses);

        List<VClass> djVClasses = getVClassesForURIList(vcDao.getDisjointWithClassURIs(vcl.getURI()), displayVcDao);
        sortForPickList(djVClasses, request);
        request.setAttribute("disjointClasses", djVClasses);

        List<VClass> eqVClasses = getVClassesForURIList(vcDao.getEquivalentClassURIs(vcl.getURI()), displayVcDao);
        sortForPickList(eqVClasses, request);
        request.setAttribute("equivalentClasses", eqVClasses);

        // add the options
        foo.setOptionLists(OptionMap);
        epo.setFormObject(foo);

        boolean instantiable = (vcl.getURI().equals(OWL.Nothing.getURI())) ? false : true;

        RequestDispatcher rd = request.getRequestDispatcher(Controllers.BASIC_JSP);
        request.setAttribute("epoKey", epo.getKey());
        request.setAttribute("vclassWebapp", vcl);
        request.setAttribute("instantiable", instantiable);
        request.setAttribute("bodyJsp", "/templates/edit/specific/classes_edit.jsp");
        request.setAttribute("title", "Class Control Panel");
        //request.setAttribute("css", "<link rel=\"stylesheet\" type=\"text/css\" href=\""+request.getAppBean().getThemeDir()+"css/edit.css\"/>");

        try {
            rd.forward(request, response);
        } catch (Exception e) {
            log.error("VclassEditController could not forward to view.");
            log.error(e.getMessage());
            log.error(e.getStackTrace());
        }

    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        doPost(request, response);
    }

    private List<VClass> getVClassesForURIList(List<String> vclassURIs, VClassDao vcDao) {
        List<VClass> vclasses = new ArrayList<VClass>();
        Iterator<String> urIt = vclassURIs.iterator();
        while (urIt.hasNext()) {
            String vclassURI = urIt.next();
            VClass vclass = vcDao.getVClassByURI(vclassURI);
            if (vclass != null) {
                vclasses.add(vclass);
            }
        }
        return vclasses;
    }

}