<%@ page import="java.io.*" %> <%@ page import="java.util.*" %> <%@ page import="org.w3c.dom.*" %> <%@ page import="org.w3c.dom.Node" %> <%@ page import="javax.mail.internet.MimeBodyPart" %> <%@ page import="javax.mail.MessagingException" %> <%@ 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.server.UploadHandler" %> <%@ page import="org.mdcog.server.FileFormItem" %> <%@ page import="org.jafer.query.QueryBuilder" %> <%@ page import="org.jafer.record.Field" %> <%@ page import="org.mdcog.config.MdcConfig" %> <%@ page import="org.mdcog.jafer.JaferClient" %> <%@ page import="org.mdcog.db.Persistor" %> <%@ page import="org.mdcog.databeans.ResultDisplayRow" %> <%@ 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 public String getField(Map map, String fieldName) { String field = (String)map.get(fieldName); if (field == null) field = ""; return field; } 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; } //For Debugging List jaferOutputList = null; %> <% // Instream code boolean clearAll = false; if(request.getParameter("clearAllBt") != null) clearAll = true; if(clearAll) { tabSet.clearSearchList(); //readingListBean.clearFieldsAndList(); } // get or init MdcConfig MdcConfig mdcConfig = (MdcConfig)session.getAttribute("mdcconfig"); if (mdcConfig == null || clearAll) { mdcConfig = new MdcConfig(); session.setAttribute("mdcconfig",mdcConfig); } // get or init Persistor Persistor persistor = (Persistor)session.getAttribute("persistor"); if (persistor == null || clearAll) { persistor = new Persistor(mdcConfig); session.setAttribute("persistor",persistor); } // get or init JaferClient JaferClient jafer = (JaferClient)session.getAttribute("jafer"); if (jafer == null || clearAll) { jafer = new JaferClient(mdcConfig,persistor); session.setAttribute("jafer",jafer); } //To Store data from Manual addition form String rlAction = request.getParameter("rlAction"); String fldstr; String errorMessage = ""; String xslttype = request.getParameter("xslttype"); String debugCatches = ""; //For debugging if (xslttype == null || clearAll) xslttype = "exporthtml.xq"; // Process resource input form fields from popup if (rlAction != null && rlAction.equals("addanno")) { String recno = request.getParameter("recno"); if (recno != null) { int irecno = Integer.parseInt(recno); fldstr = request.getParameter("inp_anno"); if (fldstr != null) { ResultDisplayRow rdl = (ResultDisplayRow)readingListBean.getDisplayList().get(irecno); rdl.setField("ANNOTATION",fldstr); //readingListBean.getDisplayList().set(irecno,rdl); } } } else if (rlAction != null && rlAction.equals("addinput")) { Map formfields = new HashMap(); fldstr = request.getParameter("itemtype"); if (fldstr == null) fldstr = ""; formfields.put("itemtype",fldstr); fldstr = request.getParameter("inp_author"); if (fldstr == null) fldstr = ""; formfields.put("AUTHOR",fldstr); fldstr = request.getParameter("inp_title"); if (fldstr == null) fldstr = ""; formfields.put("TITLE",fldstr); fldstr = request.getParameter("inp_abstract"); if (fldstr == null) fldstr = ""; formfields.put("ABSTRACT",fldstr); fldstr = request.getParameter("inp_publisher"); if (fldstr == null) fldstr = ""; formfields.put("PUBLISHER",fldstr); fldstr = request.getParameter("inp_dateIssued"); if (fldstr == null) fldstr = ""; formfields.put("DATE_ISSUED",fldstr); fldstr = request.getParameter("inp_isbn"); if (fldstr == null) fldstr = ""; formfields.put("ISBN",fldstr); fldstr = request.getParameter("inp_issn"); if (fldstr == null) fldstr = ""; formfields.put("ISSN",fldstr); fldstr = request.getParameter("inp_weburl"); if (fldstr == null) fldstr = ""; formfields.put("WEB_URL",fldstr); fldstr = request.getParameter("inp_journal"); if (fldstr == null) fldstr = ""; formfields.put("journal",fldstr); fldstr = request.getParameter("inp_jdate"); if (fldstr == null) fldstr = ""; formfields.put("jdate",fldstr); fldstr = request.getParameter("inp_volume"); if (fldstr == null) fldstr = ""; formfields.put("volume",fldstr); fldstr = request.getParameter("inp_startpage"); if (fldstr == null) fldstr = ""; formfields.put("startpage",fldstr); fldstr = request.getParameter("inp_endpage"); if (fldstr == null) fldstr = ""; formfields.put("endpage",fldstr); ResultDisplayRow newrow = new ResultDisplayRow(); newrow.setDocSource("manual"); newrow.setFields(formfields); readingListBean.addItem(newrow); } else if (rlAction != null && rlAction.equals("loadrl")) { // Process resource input form fields from popup String docid = request.getParameter("docid"); if (docid != null && docid.length() > 0) { readingListBean.loadResourceList(docid); readingListBean.setDocId(docid); } } boolean hasRLFields = false; if( request.getParameter("rl-author") != null || request.getParameter("rl-owner") != null || request.getParameter("rl-title") != null || request.getParameter("rl-annotation") != null ) { hasRLFields = true; } // Process save Resource List form if (hasRLFields) { fldstr = request.getParameter("rl-author"); if (fldstr == null) fldstr = ""; readingListBean.setField("rlauthor",fldstr); fldstr = request.getParameter("rl-owner"); if (fldstr == null) fldstr = ""; readingListBean.setField("institution",fldstr); fldstr = request.getParameter("rl-title"); if (fldstr == null) fldstr = ""; readingListBean.setField("rltitle",fldstr); fldstr = request.getParameter("rl-annotation"); if (fldstr == null) fldstr = ""; readingListBean.setField("annotation",fldstr); fldstr = request.getParameter("rl-dateCreated"); if (fldstr == null) fldstr = ""; readingListBean.setField("rlDate",fldstr); if (rlAction.equals("save")) { readingListBean.setDocId(""); readingListBean.saveResourceList(readingListBean.getFields()); } else if (rlAction.equals("update")) { readingListBean.saveResourceList(readingListBean.getFields()); } } //For Importing Reading list String upldmessage = ""; String ctype = (String)request.getContentType(); if (ctype != null && ctype.startsWith("multipart/form-data") && request.getParameter("btnUpload") != null) { 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); 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 // format 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(); ArrayList ImpresultList = 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); System.out.println("IMP, fieldsmap["+i+"]:"+fieldsMap); ResultDisplayRow row = new ResultDisplayRow(); // Persist record to db docId = persistor.storeSearchResultRecord(colCache,nd,fieldsMap); row.setDocId(docId); row.setDocSource("mdc-cache"); row.setFields(fieldsMap); ImpresultList.add(row); nimported++; } if (ImpresultList.size() > 0) { int tab = tabSet.getNextTabNumber(); tabSet.addResultList(impformat+"_"+tab, ImpresultList, null); //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) {} } } //String searchopt = null; String filter = null; String maintab = request.getParameter("maintab"); if (maintab != null && maintab.length() > 0 && !clearAll) { session.setAttribute("maintab",maintab); } else { maintab = (String)session.getAttribute("maintab"); if (maintab == null || clearAll) { maintab = "federated"; session.setAttribute("maintab",maintab); } } Map rlfields = (Map)session.getAttribute("rlfields"); //if (rlfields == null || clearAll) { if (rlfields == null) { rlfields = new HashMap(); session.setAttribute("rlfields",rlfields); } Map repfields = (Map)session.getAttribute("repfields"); if (repfields == null || clearAll) { repfields = new HashMap(); session.setAttribute("repfields",repfields); } filter = request.getParameter("filter"); if (filter == null) filter = (String)session.getAttribute("filter"); if (filter == null || clearAll) filter = ""; session.setAttribute("filter",filter); // original search.jsp fields int perPage = 50; // maximum results per page. String readingListMessage = ""; String searchMessage = ""; String searchTabs = ""; int tab = -1; boolean containsSearchInput = false; String tabWord = ""; String remChecked = (request.getParameter("remChecked") == null || clearAll) ? "false" : request.getParameter("remChecked"); String keyword = (request.getParameter("keyword") == null || clearAll) ? "" : request.getParameter("keyword").trim(); String sTitle = (request.getParameter("searchTitle") == null || clearAll) ? "" : request.getParameter("searchTitle").trim(); String sAuthor = (request.getParameter("searchAuthor") == null || clearAll) ? "" : request.getParameter("searchAuthor").trim(); String resourceType = (request.getParameter("resourceType") == null || clearAll) ? "Default" : request.getParameter("resourceType"); int maxResults = (request.getParameter("maxResults") == null || clearAll) ? 25 : Integer.parseInt(request.getParameter("maxResults")); if (sAuthor.length() > 0) tabWord = sAuthor; if (keyword.length() > 0){ if(tabWord.length() >0) { tabWord += "+" + keyword; }else { tabWord = keyword; } } if (sTitle.length() > 0) { if(tabWord.length() > 0) { tabWord += "+" + sTitle; }else{ tabWord = sTitle; } } if (tabWord.length() > 0) containsSearchInput = true; // Get the curent tab, either from the tab parameter or figure it out from the keyword try{ if (request.getParameter("tab") != null && !clearAll) { tab = Integer.parseInt(request.getParameter("tab"));// catch NumberFormatException tabSet.setCurrentTab(tab); } else if (containsSearchInput) { tab = tabSet.getTabIndex(tabWord,resourceType); if (tab >= 0) { tabSet.setCurrentTab(tab); } } }catch(Exception e){ //debugCatches = "catch1"+e.getMessage(); } /*String[] resTypes = null; if(search_types != null && search_types.size() > 0 && !clearAll) { resTypes = new String[search_types.size()]; for(int i=0; i 0) { searchTabs = "
    "; for (int i=0; i< tabSet.getSize(); i++) { String cssClass = "tab"; if (i == tabSet.getCurrentTab()) { cssClass = "selectedTab"; } String text = tabSet.getKeyword(i); int textLength = Math.round(65/tabSet.getSize()); if (text.length() > textLength) { text = text.substring(0, textLength) + ".."; } searchTabs += "
  • "+text+"
  • "; } searchTabs += "
"; } // Set lists for display tag // First apply filter List reslist; Vector removeDocIds; if (remChecked.equals("true")){ if (formBean.getRlChk().length > 0) { removeDocIds = readingListBean.removeItems(formBean.getRlChk()); tabSet.removeGreenChecks(removeDocIds); //readingListMessage += "

removed "+formBean.getRlChk().length+" items

"; } } if (filter != null && filter.length() > 0) { String filterchk = filter.toLowerCase(); reslist = new ArrayList(); reslist.addAll(tabSet.getCurrentTabResults(null)); Iterator itr = reslist.iterator(); while (itr.hasNext()) { ResultDisplayRow row = (ResultDisplayRow)itr.next(); Map chkfields = row.getFields(); Iterator itr2 = chkfields.values().iterator(); boolean found = false; while (itr2.hasNext()) { String str = ((String)itr2.next()).toLowerCase(); //if (str.matches(filter)) if (str.indexOf(filterchk) > -1) { found = true; break; } } if (!found) itr.remove(); } } else { if (formBean.getChkId().length > 0) { reslist = tabSet.getCurrentTabResults(formBean.getChkId()); }else { reslist = tabSet.getCurrentTabResults(null); } } if(!clearAll){ request.setAttribute("results", reslist); request.setAttribute("rlist",readingListBean.getItems()); } // reading list readingListBean.setPersistor(persistor); if (!remChecked.equals("true")){ // formBean.getChkId returns a String[] of document id's for searchlist records that // have been checked for adding to the resource list if (formBean.getChkId().length > 0) { boolean res = readingListBean.addItems(formBean.getChkId(), reslist); if (!res) { readingListMessage = "

Sorry, your items were not added.

"; }else{ readingListMessage = "Your selected items have been successfully"+ " added to the Reading List. Please select the 'Reading List' tab"+ " at the top of the page to view the Reading list and the selected"+ " items. "; } } } String up = (request.getParameter("up") == null) ? "" : request.getParameter("up").trim(); String down = (request.getParameter("down") == null) ? "" : request.getParameter("down").trim(); if (up != "") { readingListBean.moveItemUp(up); } if (down != "") { readingListBean.moveItemDown(down); } // get client locale java.util.Locale locale = request.getLocale(); // get Dateformat for client's locale java.text.DateFormat dateFormat = java.text.DateFormat.getDateTimeInstance( java.text.DateFormat.SHORT, java.text.DateFormat.SHORT, locale); %> Reading List Search
Test your repository |  Link to Reading list repository <% if (maintab == null || maintab.equals("federated")){ %>
Keyword:
Author:
Title:
Resource type:
Max. no. of results:

Import Reading List



<%= errorMessage %>

Search Results:


Filter these results: disabled="disabled" <%}%> />
<%=searchTabs%>
  Author Title Date Publisher/Journal ISBN/ISSN
<% if(((ResultDisplayRow)pageContext.getAttribute("results")).getIsSelected()){ %>
Added
<% } else {%> <% } %>
<%=((Map) ((ResultDisplayRow)pageContext.getAttribute("results")).getFields()).get("AUTHOR")%> <% String itemPath = ((Map) ((ResultDisplayRow)pageContext.getAttribute("results")).getFields()).get("WEB_URL").toString().trim(); String itemTitle = ((Map) ((ResultDisplayRow)pageContext.getAttribute("results")).getFields()).get("TITLE").toString().trim(); if (itemPath == null || itemPath.equals("")){%> <%=itemTitle%> <% }else{%> <%= itemTitle %> <% } if(((ResultDisplayRow)pageContext.getAttribute("results")).getDocSource().equals("manual")){ %> Added manually <% } %> <%=((Map) ((ResultDisplayRow)pageContext.getAttribute("results")).getFields()).get("DATE_ISSUED")%> <% String pubOrJournal = ((Map) ((ResultDisplayRow)pageContext.getAttribute("results")).getFields()).get("JOURNAL").toString().trim(); if (pubOrJournal == null || pubOrJournal.equals("")){ pubOrJournal = ((Map) ((ResultDisplayRow)pageContext.getAttribute("results")).getFields()).get("PUBLISHER").toString().trim(); } %> <%= pubOrJournal %> <% String itemISBNorISSN = ((Map) ((ResultDisplayRow)pageContext.getAttribute("results")).getFields()).get("ISBN").toString().trim(); if (itemISBNorISSN == null || itemISBNorISSN.equals("")){ itemISBNorISSN = ((Map) ((ResultDisplayRow)pageContext.getAttribute("results")).getFields()).get("ISSN").toString().trim(); } %> <%= itemISBNorISSN %>
<%=readingListMessage%>
<% } else if (maintab.equals("readinglist")) { %>

Reading List


Title" onChange="submitForm();" /> e.g. Material Technology Course
Author" onChange="submitForm();" /> e.g. Fred Bloggs
Institution" onChange="submitForm();" /> e.g. Oxford University
Notes e.g. This reading list provides most of the main ...
Date Created" onChange="submitForm();" /> e.g. 10/06/06 18:20

 

      Author Title Publisher/Journal Date ISBN/ISSN Annotate
<% if (readingListBean.getDisplayList().size() > 0 ) { %> <% for (int i=0 ; i < readingListBean.getDisplayList().size(); i++) { ResultDisplayRow rdl = (ResultDisplayRow)readingListBean.getDisplayList().get(i); %> "> <%}%>
up down <%=rdl.getField("AUTHOR") %> <% String itemPath = rdl.getField("WEB_URL"); String itemTitle = rdl.getField("TITLE"); if (itemPath == null || itemPath.equals("")){%> <%=itemTitle%> <% }else{%> <%= itemTitle %> <% } if(rdl.getDocSource().equals("manual")){ %> Added manually <% } %> <% if(rdl.getField("itemtype") == null || (rdl.getField("itemtype").equals("")) || (rdl.getField("itemtype").equals("book"))){%> <%=rdl.getField("PUBLISHER") %> <% } else if (rdl.getField("itemtype").equals("journal")) { %> <%= rdl.getField("journal") %> <% } %> <%=rdl.getField("DATE_ISSUED") %> <% if(rdl.getField("itemtype") == null || (rdl.getField("itemtype").equals("")) || (rdl.getField("itemtype").equals("book"))){%> <%=rdl.getField("ISBN") %> <% } else if (rdl.getField("itemtype").equals("journal")) { %> <%= rdl.getField("ISSN") %> <% } %> Annotate
<%}%>
<% if (readingListBean.getDocId().length() == 0) { %> <% } else { %> <% } %>


Export Reading list

Apply Style
checked="true" <% } %> > HTML checked="true" <% } %> > PDF checked="true" <% } %> > MODS XML checked="true" <% } %> > RTF checked="true" <% } %> > END NOTE
<% } %>
Powered by JAFER