160 likes | 390 Views
Extending Primo with Custom Services. Mark Dehmlow University of Notre Dame Ex Libris Developer Meets Developer Meeting 2010 Jerusalem, Israel ~ November 4, 2010. Overview. Our Customization Strategy and Tools Back Office, CSS, and jQuery
E N D
Extending Primo with Custom Services Mark Dehmlow University of Notre Dame Ex Libris Developer Meets Developer Meeting 2010 Jerusalem, Israel ~ November 4, 2010
Overview • Our Customization Strategy and Tools • Back Office, CSS, and jQuery • Thinking “Inside” the Box– Using J2EE to Extend Primo • Putting it all Together – back office / css / jquery / jsp
Version 3 Customization Limited by: activates Access Online tab activates Locations tab
J2EE • Java 2 Platform Enterprise Edition “is a platform-independent, Java-centric environment from Sun for developing, building and deploying Web-based enterprise applications online. The J2EE platform consists of a set of services, APIs, and protocols that provide the functionality for developing multitiered, Web-based applications.” (Webopedia) (http://www.webopedia.com/TERM/J/J2EE.html) • Java API, JSP, JavaBeans, Servlets, Applets, JDBC, and much, much more
Tiles tabs search user area summary results facets Tiles are jsps or a layout made of multiple jsps
JSP Embedded Servlet <%@ page import="java.util.*" import="java.util.regex.*" import="java.io.*" import="java.net.*" import="javax.servlet.http.HttpServletRequest" %> <% String pnxId = request.getParameter("pnxId"); String pgurl = "http://www.library.nd.edu/eresources/test/primo_gateway/primo_location.cgi?pnxId=" + pnxId; String dat = ""; try{ URL url = new URL(pgurl); BufferedReader bin = new BufferedReader( new InputStreamReader (url.openStream() )); String line = ""; while( (line = bin.readLine()) != null) dat = dat + line + "\n"; }catch(Exception e){ dat = "there was a problem retrieving the desired page"; } %> <% out.print(dat); %>
Pulling it all Together • JSP – custom tile, web service • CSS hides html returned from web service • jQuery and jQuery UI create notification box and place div inside for version 2 • AJAX for version 3
ELCommons – Primo Tabs API http://www.exlibrisgroup.org/display/Primo/EXL+Tab+API pnxId and other variables hidden in HTML
Locations Web Service pnxId primo primo_gateway.cgi holdings + title location.jsp js <html> map img url floor building call number pnxId collection sublibrary call number alephSysNo(s) xserver title collection sublibrary call number holdings alephSysNo(s) aleph maps xserver api
DocDel (Deliver) Grabs pnxId for each, AJAX sends request for each item to determine eligibility Link delivered and placed as a tab for each eligible record
DocDel Web Service pnxId primo primo_gateway.cgi docdel.jsp js <html> pnxId alephSysNo(s) xserver reviews holdings metadata to determine docdel eligibility alephSysNo(s) aleph xserver
Thank You Mark Dehmlow Digital Initiatives Librarian 574-631-3092 mdehmlow@nd.edu Aaron Bales Systems Librarian 574-631-4035 abales@nd.edu