%--
- edit-metadata.jsp
-
- Version: $Revision$
-
- Date: $Date$
-
- 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.
--%>
<%--
- Edit metadata form
-
- Attributes to pass in to this page:
- submission.info - the SubmissionInfo object
- submission.inputs - the DCInputSet
- submission.page - the step in submission
--%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="javax.servlet.ServletException" %>
<%@ page import="org.dspace.app.webui.jsptag.PopupTag" %>
<%@ page import="org.dspace.app.webui.util.DCInput" %>
<%@ page import="org.dspace.app.webui.util.DCInputSet" %>
<%@ page import="org.dspace.app.webui.servlet.SubmitServlet" %>
<%@ page import="org.dspace.app.webui.util.JSPManager" %>
<%@ page import="org.dspace.app.webui.util.SubmissionInfo" %>
<%@ page import="org.dspace.app.webui.util.UIUtil" %>
<%@ page import="org.dspace.content.DCDate" %>
<%@ page import="org.dspace.content.DCLanguage" %>
<%@ page import="org.dspace.content.DCPersonName" %>
<%@ page import="org.dspace.content.DCSeriesNumber" %>
<%@ page import="org.dspace.content.DCValue" %>
<%@ page import="org.dspace.content.Item" %>
<%@ page import="javax.servlet.jsp.jstl.fmt.LocaleSupport" %>
<%@ page import="javax.servlet.jsp.tagext.TagSupport" %>
<%@ page import="javax.servlet.jsp.PageContext" %>
<%@ taglib uri="http://www.dspace.org/dspace-tags.tld" prefix="dspace" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%!
void doPersonalName(javax.servlet.jsp.JspWriter out, Item item,
String fieldName, String element, String qualifier, boolean repeatable,
int fieldCountIncr, String label, PageContext pageContext)
throws java.io.IOException
{
DCValue[] defaults = item.getDC(element, qualifier, Item.ANY);
int fieldCount = defaults.length + fieldCountIncr;
StringBuffer headers = new StringBuffer();
StringBuffer sb = new StringBuffer();
org.dspace.content.DCPersonName dpn;
StringBuffer name = new StringBuffer();
StringBuffer first = new StringBuffer();
StringBuffer last = new StringBuffer();
if (fieldCount == 0)
fieldCount = 1;
//Width hints used here to affect whole table
headers.append("
");
out.write(headers.toString());
for (int i = 0; i < fieldCount; i++)
{
first.setLength(0);
first.append(fieldName).append("_first");
if (repeatable)
first.append('_').append(i);
last.setLength(0);
last.append(fieldName).append("_last");
if (repeatable)
last.append('_').append(i);
if (i == 0)
sb.append("
")
.append(label)
.append("
");
else
sb.append("
");
if (i < defaults.length)
dpn = new org.dspace.content.DCPersonName(defaults[i].value);
else
dpn = new org.dspace.content.DCPersonName();
sb.append("
\n
\n");
if (repeatable && i < defaults.length)
{
name.setLength(0);
name.append(dpn.getLastName())
.append(' ')
.append(dpn.getFirstNames());
// put a remove button next to filled in values
sb.append("
")
.append("\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.remove"))
.append("\"/> ");
}
else if (repeatable && i == fieldCount - 1)
{
// put a 'more' button next to the last space
sb.append("
");
.append("_more\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.add"))
.append("\"/> ");
}
else
{
// put a blank if nothing else
sb.append("
");
}
}
out.write(sb.toString());
}
void doDate(javax.servlet.jsp.JspWriter out, Item item,
String fieldName, String element, String qualifier, boolean repeatable,
int fieldCountIncr, String label, PageContext pageContext)
throws java.io.IOException
{
DCValue[] defaults = item.getDC(element, qualifier, Item.ANY);
int fieldCount = defaults.length + fieldCountIncr;
StringBuffer sb = new StringBuffer();
org.dspace.content.DCDate dateIssued;
if (fieldCount == 0)
fieldCount = 1;
for (int i = 0; i < fieldCount; i++)
{
if (i == 0)
sb.append("
")
.append(label)
.append("
");
else
sb.append("
");
if (i < defaults.length)
dateIssued = new org.dspace.content.DCDate(defaults[i].value);
else
dateIssued = new org.dspace.content.DCDate("");
sb.append("
\n");
if (repeatable && i < defaults.length)
{
// put a remove button next to filled in values
sb.append("
");
.append("\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.remove"))
.append("\"> ");
}
else if (repeatable && i == fieldCount - 1)
{
// put a 'more' button next to the last space
sb.append("
");
.append("_more\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.add"))
.append("\"/> ");
}
else
{
// put a blank if nothing else
sb.append("
");
}
}
out.write(sb.toString());
}
void doSeriesNumber(javax.servlet.jsp.JspWriter out, Item item,
String fieldName, String element, String qualifier, boolean repeatable,
int fieldCountIncr, String label, PageContext pageContext)
throws java.io.IOException
{
DCValue[] defaults = item.getDC(element, qualifier, Item.ANY);
int fieldCount = defaults.length + fieldCountIncr;
StringBuffer sb = new StringBuffer();
org.dspace.content.DCSeriesNumber sn;
if (fieldCount == 0)
fieldCount = 1;
for (int i = 0; i < fieldCount; i++)
{
if (i == 0)
sb.append("
")
.append(label)
.append("
");
else
sb.append("
");
if (i < defaults.length)
sn = new org.dspace.content.DCSeriesNumber(defaults[i].value);
else
sn = new org.dspace.content.DCSeriesNumber();
sb.append("
\n
\n");
if (repeatable && i < defaults.length)
{
// put a remove button next to filled in values
sb.append("
");
.append("\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.remove"))
.append("\"/> ");
}
else if (repeatable && i == fieldCount - 1)
{
// put a 'more' button next to the last space
sb.append("
");
.append("_more\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.add"))
.append("\"/> ");
}
else
{
// put a blank if nothing else
sb.append("
");
}
}
out.write(sb.toString());
}
void doTextArea(javax.servlet.jsp.JspWriter out, Item item,
String fieldName, String element, String qualifier, boolean repeatable,
int fieldCountIncr, String label, PageContext pageContext)
throws java.io.IOException
{
DCValue[] defaults = item.getDC(element, qualifier, Item.ANY);
int fieldCount = defaults.length + fieldCountIncr;
StringBuffer sb = new StringBuffer();
String val;
if (fieldCount == 0)
fieldCount = 1;
for (int i = 0; i < fieldCount; i++)
{
if (i == 0)
sb.append("
")
.append(label)
.append("
");
else
sb.append("
");
if (i < defaults.length)
val = defaults[i].value;
else
val = "";
sb.append("
\n");
if (repeatable && i < defaults.length)
{
// put a remove button next to filled in values
sb.append("
");
.append("\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.remove"))
.append("\"/> ");
}
else if (repeatable && i == fieldCount - 1)
{
// put a 'more' button next to the last space
sb.append("
");
.append("_more\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.add"))
.append("\"/> ");
}
else
{
// put a blank if nothing else
sb.append("
");
}
}
out.write(sb.toString());
}
void doOneBox(javax.servlet.jsp.JspWriter out, Item item,
String fieldName, String element, String qualifier, boolean repeatable,
int fieldCountIncr, String label, PageContext pageContext)
throws java.io.IOException
{
DCValue[] defaults = item.getDC(element, qualifier, Item.ANY);
int fieldCount = defaults.length + fieldCountIncr;
StringBuffer sb = new StringBuffer();
String val;
if (fieldCount == 0)
fieldCount = 1;
for (int i = 0; i < fieldCount; i++)
{
if (i == 0)
sb.append("
")
.append(label)
.append("
");
else
sb.append("
");
if (i < defaults.length)
val = defaults[i].value.replaceAll("\"", """);
else
val = "";
sb.append("
\n");
if (repeatable && i < defaults.length)
{
// put a remove button next to filled in values
sb.append("
");
.append("\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.remove"))
.append("\"/> ");
}
else if (repeatable && i == fieldCount - 1)
{
// put a 'more' button next to the last space
sb.append("
");
.append("_more\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.add"))
.append("\"/> ");
}
else
{
// put a blank if nothing else
sb.append("
");
}
}
out.write(sb.toString());
}
void doTwoBox(javax.servlet.jsp.JspWriter out, Item item,
String fieldName, String element, String qualifier, boolean repeatable,
int fieldCountIncr, String label, PageContext pageContext)
throws java.io.IOException
{
DCValue[] defaults = item.getDC(element, qualifier, Item.ANY);
int fieldCount = defaults.length + fieldCountIncr;
StringBuffer sb = new StringBuffer();
StringBuffer headers = new StringBuffer();
if (element.equals("relation") && qualifier.equals("ispartofseries"))
{
//Width hints used here to affect whole table
headers.append("
");
}
}
out.write(sb.toString());
}
void doQualdropValue(javax.servlet.jsp.JspWriter out, Item item,
String fieldName, String element, DCInputSet inputs, boolean repeatable,
int fieldCountIncr, List qualMap, String label, PageContext pageContext)
throws java.io.IOException
{
DCValue[] unfiltered = item.getDC(element, Item.ANY, Item.ANY);
// filter out both unqualified and qualified values occuring elsewhere in inputs
ArrayList filtered = new ArrayList();
for (int i = 0; i < unfiltered.length; i++)
{
String unfilteredFieldName = unfiltered[i].element + "." + unfiltered[i].qualifier;
if ( ! inputs.isFieldPresent(unfilteredFieldName) )
{
filtered.add( unfiltered[i] );
}
}
DCValue[] defaults = (DCValue[])filtered.toArray(new DCValue[0]);
//DCValue[] defaults = item.getDC(element, Item.ANY, Item.ANY);
int fieldCount = defaults.length + fieldCountIncr;
StringBuffer sb = new StringBuffer();
String q, v, currentQual, currentVal;
if (fieldCount == 0)
fieldCount = 1;
for (int j = 0; j < fieldCount; j++)
{
if (j < defaults.length)
{
currentQual = defaults[j].qualifier;
currentVal = defaults[j].value;
}
else
{
currentQual = "";
currentVal = "";
}
if (j == 0)
sb.append("
")
.append(label)
.append("
");
else
sb.append("
");
// do the dropdown box
sb.append("
\n");
if (repeatable && j < defaults.length)
{
// put a remove button next to filled in values
sb.append("
");
.append("\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.remove"))
.append("\"/> ");
}
else if (repeatable && j == fieldCount - 1)
{
// put a 'more' button next to the last space
sb.append("
");
.append("_more\" value=\"")
.append(LocaleSupport.getLocalizedMessage(pageContext, "jsp.submit.edit-metadata.button.add"))
.append("\"/> ");
}
else
{
// put a blank if nothing else
sb.append("