%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.mail.internet.MimeBodyPart" %>
<%@ page import="javax.mail.MessagingException" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="org.jafer.query.QueryBuilder" %>
<%@ page import="org.jafer.record.Field" %>
<%@ page import="javax.xml.transform.Templates" %>
<%@ page import="org.jafer.util.xml.DOMFactory" %>
<%@ page import="org.jafer.util.xml.XMLTransformer" %>
<%@ page import="org.jafer.util.xml.XMLSerializer" %>
<%@ page import="org.mdcog.config.MdcConfig" %>
<%@ page import="org.mdcog.db.Persistor" %>
<%@ page import="org.mdcog.databeans.ResultDisplayRow" %>
<%@ page import="org.mdcog.server.UploadHandler" %>
<%@ page import="org.mdcog.server.FileFormItem" %>
<%@ page import="org.mdcog.util.*" %>
<%@ page errorPage="error.jsp" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/WEB-INF/displaytag-12.tld" prefix="display" %>
<%!
// Declarations - functions supporting inline code
public Map getRequestAttributes(HttpServletRequest request) {
HashMap map = new HashMap();
Enumeration names = request.getAttributeNames();
while (names.hasMoreElements()) {
String name = (String)names.nextElement();
Object obj = request.getAttribute(name);
if (obj instanceof String) {
map.put(name, obj);
}
}
return map;
}
%><% // Instream code
// get or init MdcConfig
MdcConfig mdcConfig = (MdcConfig)session.getAttribute("mdcconfig");
if (mdcConfig == null) {
mdcConfig = new MdcConfig();
session.setAttribute("mdcconfig",mdcConfig);
}
Persistor persistor = (Persistor)session.getAttribute("persistor");
if (persistor == null) {
persistor = new Persistor(mdcConfig);
session.setAttribute("persistor",persistor);
}
String upldmessage = "";
//String debugString = "";
String ctype = (String)request.getContentType();
if (ctype != null && ctype.startsWith("multipart/form-data")) {
//System.out.println("Starting upload...");
BufferedInputStream bis = null;
ByteArrayOutputStream baos = null;
org.xmldb.api.base.Collection colCache = null;
try {
// process the multipart and get the uploaded file as a string - xmlstr
String fileName = UploadHandler.processMultiPart(request);
FileFormItem fileFormItem= (FileFormItem)request.getAttribute("file");
MimeBodyPart part = fileFormItem.getBodyPart();
String useruploadname = fileFormItem.getFileName();
//String fileName = fileFormItem.truncateFilename();
bis = new BufferedInputStream(part.getInputStream());
baos = new ByteArrayOutputStream();
int ch = bis.read();
while (ch != -1) {
baos.write(ch);
ch = bis.read();
}
String xmlstr = baos.toString();
// check import format
Map reqMap = getRequestAttributes(request);
//System.out.println("reqMap:"+reqMap);
String impformat = (String)reqMap.get("impformat");
String docId = "";
// now process the import file into a set of one or more MODS records depending on the
// ormat chosen by the user
Node outNode = null;
if (impformat != null && impformat.equals("MODS")) {
//System.out.println("Importing MODS");
Document doc = DOMFactory.parse(xmlstr);
outNode = doc.getDocumentElement();
} else
if (impformat != null && impformat.equals("ENDNOTEV7")) {
//System.out.println("Importing ENDNOTE");
Document doc = DOMFactory.parse(xmlstr);
File xslfile = new File(pageContext.getServletContext().getRealPath("/en7tomods.xsl"));
Templates template = XMLTransformer.createTemplate(xslfile);
Element rootNode = doc.getDocumentElement();
rootNode.normalize();
outNode = XMLTransformer.transform(rootNode, template);
} else
if (impformat != null && impformat.equals("ENDNOTEV8")) {
//System.out.println("Importing ENDNOTE");
Document doc = DOMFactory.parse(xmlstr);
File xslfile = new File(pageContext.getServletContext().getRealPath("/en8tomods.xsl"));
Templates template = XMLTransformer.createTemplate(xslfile);
Element rootNode = doc.getDocumentElement();
rootNode.normalize();
outNode = XMLTransformer.transform(rootNode, template);
} else {
throw new IOException("Import format not selected.");
}
int nimported = 0;
if (outNode != null) {
// StringWriter writer = new StringWriter();
// XMLSerializer.out(outNode, "xml", writer);
// writer.flush();
// String resp = writer.toString();
// System.out.println("resp:"+resp);
ArrayList resultList = new ArrayList();
NodeList l = ((Element)outNode).getElementsByTagName("mods");
colCache = persistor.getCacheCollection();
for (int i = 0; i < l.getLength(); i++) {
Node nd = l.item(i);
Map fieldsMap = ModsUtils.getFields((Element)nd);
//For debugging ===========================
//for (int k=0; k 0) {
int tab = tabSet.getNextTabNumber();
tabSet.addResultList(impformat+"_"+tab, resultList, "");
//tabSet.addResultList(fileName+"("+impformat+")", resultList, null);
//tabSet.addResultList(fileName, resultList, null);
}
}
upldmessage = "File uploaded, records:"+nimported+" - Close this window to refresh Search window.";
} catch (Exception e) {
upldmessage = "Upload failed, error:"+e.toString();
} finally {
if (bis != null) try { bis.close(); } catch (Exception e) {}
if (baos != null) try { baos.close(); } catch (Exception e) {}
if (colCache != null) try { colCache.close(); } catch (Exception ex) {}
}
}
%>
Import