/* * EditBitstreamFormat.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.registries; import java.sql.SQLException; import java.util.ArrayList; import org.apache.cocoon.environment.ObjectModelHelper; import org.apache.cocoon.environment.Request; import org.dspace.app.xmlui.cocoon.AbstractDSpaceTransformer; import org.dspace.app.xmlui.utils.RequestUtils; 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.CheckBox; 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.Select; import org.dspace.app.xmlui.wing.element.Text; import org.dspace.app.xmlui.wing.element.TextArea; import org.dspace.content.BitstreamFormat; /** * Enable the user to edit a bitstream format's metadata. * * @author Scott Phillips */ public class EditBitstreamFormat extends AbstractDSpaceTransformer { /** Language Strings */ private static final Message T_dspace_home = message("xmlui.general.dspace_home"); private static final Message T_title = message("xmlui.administrative.registries.EditBitstreamFormat.title"); private static final Message T_format_registry_trail = message("xmlui.administrative.registries.general.format_registry_trail"); private static final Message T_trail = message("xmlui.administrative.registries.EditBitstreamFormat.trail"); private static final Message T_head1 = message("xmlui.administrative.registries.EditBitstreamFormat.head1"); private static final Message T_head2 = message("xmlui.administrative.registries.EditBitstreamFormat.head2"); private static final Message T_para1 = message("xmlui.administrative.registries.EditBitstreamFormat.para1"); private static final Message T_name = message("xmlui.administrative.registries.EditBitstreamFormat.name"); private static final Message T_name_help = message("xmlui.administrative.registries.EditBitstreamFormat.name_help"); private static final Message T_name_error = message("xmlui.administrative.registries.EditBitstreamFormat.name_error"); private static final Message T_mimetype = message("xmlui.administrative.registries.EditBitstreamFormat.mimetype"); private static final Message T_mimetype_help = message("xmlui.administrative.registries.EditBitstreamFormat.mimetype_help"); private static final Message T_description = message("xmlui.administrative.registries.EditBitstreamFormat.description"); private static final Message T_support = message("xmlui.administrative.registries.EditBitstreamFormat.support"); private static final Message T_support_help = message("xmlui.administrative.registries.EditBitstreamFormat.support_help"); private static final Message T_support_0 = message("xmlui.administrative.registries.EditBitstreamFormat.support_0"); private static final Message T_support_1 = message("xmlui.administrative.registries.EditBitstreamFormat.support_1"); private static final Message T_support_2 = message("xmlui.administrative.registries.EditBitstreamFormat.support_2"); private static final Message T_internal = message("xmlui.administrative.registries.EditBitstreamFormat.internal"); private static final Message T_internal_help = message("xmlui.administrative.registries.EditBitstreamFormat.internal_help"); private static final Message T_extensions = message("xmlui.administrative.registries.EditBitstreamFormat.extensions"); private static final Message T_extensions_help = message("xmlui.administrative.registries.EditBitstreamFormat.extensions_help"); private static final Message T_submit_save = message("xmlui.general.save"); private static final Message T_submit_cancel = message("xmlui.general.cancel"); public void addPageMeta(PageMeta pageMeta) throws WingException { pageMeta.addMetadata("title").addContent(T_title); pageMeta.addTrailLink(contextPath + "/", T_dspace_home); pageMeta.addTrailLink(contextPath + "/admin/format-registry",T_format_registry_trail); pageMeta.addTrail().addContent(T_trail); } public void addBody(Body body) throws WingException, SQLException { // Get our parameters & state int formatID = parameters.getParameterAsInteger("formatID",-1); BitstreamFormat format = null; if (formatID >= 0) format = BitstreamFormat.find(context,formatID); String errorString = parameters.getParameter("errors",null); ArrayList<String> errors = new ArrayList<String>(); if (errorString != null) for (String error : errorString.split(",")) errors.add(error); Request request = ObjectModelHelper.getRequest(objectModel); String mimetypeValue = request.getParameter("mimetype"); String nameValue = request.getParameter("short_description"); String descriptionValue = request.getParameter("description"); String supportLevelValue = request.getParameter("support_level"); String internalValue = request.getParameter("internal"); java.util.List<String> extensionsList = RequestUtils.getFieldValues(request, "extensions"); String[] extensionValues = extensionsList.toArray(new String[extensionsList.size()]); // Remove leading periods from file extensions. for (int i = 0; i < extensionValues.length; i++) if (extensionValues[i].startsWith(".")) extensionValues[i] = extensionValues[i].substring(1); if (format != null) { if (mimetypeValue == null) mimetypeValue = format.getMIMEType(); if (nameValue == null) nameValue = format.getShortDescription(); if (descriptionValue == null) descriptionValue = format.getDescription(); if (supportLevelValue == null) supportLevelValue = String.valueOf(format.getSupportLevel()); if (request.getParameter("mimetype") == null) internalValue = format.isInternal() ? "true" : null; if (request.getParameter("extensions") == null) extensionValues = format.getExtensions(); } // DIVISION: edit-bitstream-format Division main = body.addInteractiveDivision("edit-bitstream-format",contextPath+"/admin/format-registry",Division.METHOD_POST,"primary administrative format-registry"); if (formatID == -1) main.setHead(T_head1); else main.setHead(T_head2.parameterize(nameValue)); main.addPara(T_para1); List form = main.addList("edit-bitstream-format",List.TYPE_FORM); Text name = form.addItem().addText("short_description"); name.setRequired(); name.setLabel(T_name); name.setHelp(T_name_help); name.setValue(nameValue); name.setSize(35); if (errors.contains("short_description")) name.addError(T_name_error); Text mimeType = form.addItem().addText("mimetype"); mimeType.setLabel(T_mimetype); mimeType.setHelp(T_mimetype_help); mimeType.setValue(mimetypeValue); mimeType.setSize(35); // Do not allow anyone to change the name of the unknown format. if (format != null && format.getID() == 1) name.setDisabled(); TextArea description = form.addItem().addTextArea("description"); description.setLabel(T_description); description.setValue(descriptionValue); description.setSize(3, 35); Select supportLevel = form.addItem().addSelect("support_level"); supportLevel.setLabel(T_support); supportLevel.setHelp(T_support_help); supportLevel.addOption(0,T_support_0); supportLevel.addOption(1,T_support_1); supportLevel.addOption(2,T_support_2); supportLevel.setOptionSelected(supportLevelValue); CheckBox internal = form.addItem().addCheckBox("internal"); internal.setLabel(T_internal); internal.setHelp(T_internal_help); internal.addOption((internalValue != null),"true"); Text extensions = form.addItem().addText("extensions"); extensions.setLabel(T_extensions); extensions.setHelp(T_extensions_help); extensions.enableAddOperation(); extensions.enableDeleteOperation(); for (String extensionValue : extensionValues) { extensions.addInstance().setValue(extensionValue); } Item actions = form.addItem(); actions.addButton("submit_save").setValue(T_submit_save); actions.addButton("submit_cancel").setValue(T_submit_cancel); main.addHidden("administrative-continue").setValue(knot.getId()); } }