/*
* RDFServlet.java
*
* Version: $Revision: 0.1 $
*
* Date: $Date: 2007/11/23 11:18:15 $
*
*/
package nl.leidenuniv.dspace.app.webui.servlet;
import org.dspace.app.webui.servlet.DSpaceServlet;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import org.dspace.authorize.AuthorizeException;
import org.dspace.core.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//import java.util.Enumeration;
import org.dspace.app.webui.util.UIUtil;
import org.dspace.app.webui.util.JSPManager;
//import org.dspace.core.LogManager;
//import nl.leidenuniv.dspace.metis.DSpace2MetisManager;
//import org.dspace.content.Item;
//import java.io.BufferedInputStream;
//import java.io.File;
//import java.io.InputStream;
//import java.io.FileInputStream;
//import org.dspace.content.FormatIdentifier;
//import org.dspace.authorize.ResourcePolicy;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
//import java.util.Date;
//import java.util.Calendar;
//import java.util.StringTokenizer;
import org.dspace.content.Item;
import org.dspace.content.DCValue;
import org.dspace.content.Bitstream;
//import org.dspace.content.BitstreamFormat;
//import org.dspace.content.Bundle;
//import org.dspace.eperson.Group;
//import org.dspace.app.webui.util.FileUploadRequest;
//import org.dspace.core.Constants;
import nl.leidenuniv.dspace.rdf.BitstreamArranger;
import nl.leidenuniv.dspace.rdf.RDFtriple;
import nl.leidenuniv.dspace.rdf.RDFpredicate;
/**
* DSpace and RDF servlet. Displays the
* RDF edit page /rdf/edit.jsp
on a GET or POST
* Changes the RDF of the given DSpace object as editted by the user
*
* @author Lucas van Schaik (Leiden University)
* @version $Revision: 0.1 $
*/
public class RDFServlet extends DSpaceServlet
{
/** log4j logger */
private static Logger log = Logger.getLogger(RDFServlet.class);
private final static String predicateDAI = "hasDAI";
private final static String predicateDOI = "hasDOI";
protected void doDSGet(Context context,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException, SQLException
{
doDSPost(context,request,response);
}
protected void doDSPost(Context context, HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
response.addDateHeader("expires", 1);
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-control", "no-store");
Item item = null;
int item_id = UIUtil.getIntParameter(request, "item_id");
if (item_id > 0) {
item = Item.find(context, item_id);
}
if (item == null) {
request.setAttribute("invalid.id", new Boolean(true));
JSPManager.showJSP(request, response,
"/dspace-admin/item-select.jsp");
}
else {
try {
processUpdateRDF(context,request,response,item);
}
catch (AuthorizeException ae) {
throw new ServletException("Unexpected authorization failure: "+ae);
}
prepItemEditForm(context,request,item);
JSPManager.showJSP(request, response,
"/rdf/rdf-item-edit.jsp");
}
}
void prepItemEditForm(Context c, HttpServletRequest request, Item item)
throws SQLException
{
List rdfs = new ArrayList();
{ // herhalen voor andere DC's ????
DCValue[] dcvs = item.getDC("contributor", "author", Item.ANY);
for (int i=0; i 2) {
qualifier = parts[2];
}
DCValue[] dcs = item.getDC(element,qualifier,Item.ANY);
for (int i=0; i 0) {
Object obj = triple.getObject();
if ( ! ov.equals(obj)) {
triple.setObject(ov);
triple.update();
}
}
else {
triple.delete();
}
}
else {
if (ov != null && ov.length() > 0) {
triple = new RDFtriple(context,subject,predicate,ov);
}
}
}
context.commit();
}
}
}