/* * AuthorizationMain.java * * Version: $Revision: 3705 $ * * Date: $Date: 2009-04-11 17:02:24 +0000 (Sat, 11 Apr 2009) $ * * Copyright (c) 2002, Hewlett-Packard Company and Massachusetts * Institute of Technology. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of the Hewlett-Packard Company nor the name of the * Massachusetts Institute of Technology nor the names of their * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. */ package org.dspace.app.xmlui.aspect.administrative.authorization; import java.sql.SQLException; import java.util.ArrayList; import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer; import org.dspace.app.xmlui.wing.Message; import org.dspace.app.xmlui.wing.WingException; import org.dspace.app.xmlui.wing.element.Body; import org.dspace.app.xmlui.wing.element.Division; import org.dspace.app.xmlui.wing.element.Item; import org.dspace.app.xmlui.wing.element.List; import org.dspace.app.xmlui.wing.element.PageMeta; import org.dspace.app.xmlui.wing.element.Text; import org.dspace.content.Collection; import org.dspace.content.Community; /** * @author Alexey Maslov */ public class AuthorizationMain extends AbstractDSpaceTransformer { private static final Message T_title = message("xmlui.administrative.authorization.AuthorizationMain.title"); private static final Message T_authorize_trail = message("xmlui.administrative.authorization.general.authorize_trail"); private static final Message T_main_head = message("xmlui.administrative.authorization.AuthorizationMain.main_head"); private static final Message T_actions_head = message("xmlui.administrative.authorization.AuthorizationMain.actions_head"); private static final Message T_actions_item_lookup = message("xmlui.administrative.authorization.AuthorizationMain.actions_item_lookup"); private static final Message T_bad_name = message("xmlui.administrative.authorization.AuthorizationMain.bad_name"); private static final Message T_search_help = message("xmlui.administrative.authorization.AuthorizationMain.search_help"); private static final Message T_submit_find = message("xmlui.administrative.authorization.AuthorizationMain.submit_find"); private static final Message T_actions_advanced = message("xmlui.administrative.authorization.AuthorizationMain.actions_advanced"); private static final Message T_actions_advanced_link = message("xmlui.administrative.authorization.AuthorizationMain.actions_advanced_link"); private static final Message T_containerList_head = message("xmlui.administrative.authorization.AuthorizationMain.containerList_head"); private static final Message T_containerList_para = message("xmlui.administrative.authorization.AuthorizationMain.containerList_para"); private static final Message T_dspace_home = message("xmlui.general.dspace_home"); private static final Message T_untitled = message("xmlui.general.untitled"); public void addPageMeta(PageMeta pageMeta) throws WingException { pageMeta.addMetadata("title").addContent(T_title); pageMeta.addTrailLink(contextPath + "/", T_dspace_home); pageMeta.addTrailLink(contextPath + "/admin/authorize", T_authorize_trail); } public void addBody(Body body) throws WingException, SQLException { /* Get and setup our parameters */ String query = URLDecode(parameters.getParameter("query",null)); String baseURL = contextPath+"/admin/epeople?administrative-continue="+knot.getId(); String errorString = parameters.getParameter("errors",null); ArrayList<String> errors = new ArrayList<String>(); if (errorString != null) { for (String error : errorString.split(",")) errors.add(error); } Division main = body.addInteractiveDivision("authorization-main",contextPath+"/admin/authorize",Division.METHOD_POST,"primary administrative authorization"); main.setHead(T_main_head); //main.addPara(T_main_para); // DIVISION: authorization-actions Division actions = main.addDivision("authorization-actions"); actions.setHead(T_actions_head); List actionsList = actions.addList("actions"); actionsList.addLabel(T_actions_item_lookup); Item actionItem = actionsList.addItem(); Text queryField = actionItem.addText("identifier"); if (query != null) queryField.setValue(query); if (errors.contains("identifier")) queryField.addError(T_bad_name); queryField.setHelp(T_search_help); actionItem.addButton("submit_edit").setValue(T_submit_find); actionsList.addLabel(T_actions_advanced); actionsList.addItemXref(baseURL+"&submit_wildcard", T_actions_advanced_link); // DIVISION: authorization-containerList Division containers = main.addDivision("authorization-containerList"); containers.setHead(T_containerList_head); containers.addPara(T_containerList_para); List containerList = containers.addList("containerList"); this.containerListBuilder(baseURL,containerList,null); main.addHidden("administrative-continue").setValue(knot.getId()); } /* A recursive helper method to build the community/collection hierarchy list */ private void containerListBuilder (String baseURL, List parentList, Community currentCommunity) throws SQLException, WingException { if (currentCommunity == null) { for (Community topLevel : Community.findAllTop(context)) { containerListBuilder(baseURL,parentList,topLevel); } } else { parentList.addItem().addHighlight("bold").addXref(baseURL+"&submit_edit&community_id="+currentCommunity.getID(), currentCommunity.getMetadata("name")); List containerSubList = null; for (Collection subCols : currentCommunity.getCollections()) { if (containerSubList == null) containerSubList = parentList.addList("subList" + currentCommunity.getID()); String name = subCols.getMetadata("name"); if (name == null || name.length() == 0) containerSubList.addItemXref(baseURL+"&submit_edit&collection_id="+subCols.getID(), T_untitled); else containerSubList.addItemXref(baseURL+"&submit_edit&collection_id="+subCols.getID(), name); } for (Community subComs : currentCommunity.getSubcommunities()) { if (containerSubList == null) containerSubList = parentList.addList("subList" + currentCommunity.getID()); containerListBuilder(baseURL,containerSubList,subComs); } } } }