<%@ page contentType="text/xml; charset=UTF-8"%><%@ page language="java" %> <% String base_dir = request.getContextPath(); // String oai_url = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+base_dir+"/OAI"; String oai_url = "http://repository.k-int.com/mla/OAI"; org.springframework.web.context.WebApplicationContext ctx = org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(application); java.sql.Timestamp earliest_oai_timestamp = null; String system_name = null; String admin_email = null; java.sql.Timestamp response_time = new java.sql.Timestamp(System.currentTimeMillis()); java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'"); String oai_repository_identifier = "mla.repository.k-int.com"; String identifier = request.getParameter("identifier"); String metadata_prefix = (String) request.getParameter("metadataPrefix"); int valid_oai_req = 0; if ( metadata_prefix == null ) { valid_oai_req = 4; } Long rec_id = null; int hpp = 50; org.hibernate.Session sess = null; try { org.hibernate.SessionFactory factory = (org.hibernate.SessionFactory) ctx.getBean("RepoSessionFactory"); sess = factory.openSession(); // Lookup the requested metadata prefix com.k_int.repository.core.datamodel.ItemTypeHDO item_type = com.k_int.repository.core.datamodel.ItemTypeHDO.lookupByCode(sess,metadata_prefix); if ( identifier != null ) { String[] identifier_components = identifier.split(":"); try { rec_id = new Long(Long.parseLong(identifier_components[3])); } catch ( Exception e ) { valid_oai_req=1; } } org.hibernate.Criteria crit = sess.createCriteria(com.k_int.repository.core.datamodel.RepoTransactionHDO.class); crit.createCriteria("repoObj").add( org.hibernate.criterion.Restrictions.eq( "id", rec_id)); crit.addOrder( org.hibernate.criterion.Order.desc("id") ); java.util.List repo_items = crit.list(); String query_string = request.getQueryString(); if ( query_string != null ) { query_string = query_string.replace("&","&").replace("<","<").replace(">",">"); } else query_string = ""; String req_str = oai_url + "?" + java.net.URLEncoder.encode(query_string,"UTF8"); %> <%=formatter.format(response_time)%> <%=req_str%> <% if ( valid_oai_req != 0 ) { switch ( valid_oai_req ) { case 4: %><% break; case 2: %><% break; default: case 1: %><% break; } } else if ( repo_items.size() == 0 ) { %><% } else { java.util.Iterator i = repo_items.iterator(); if ( i.hasNext() ) { com.k_int.repository.core.datamodel.RepoTransactionHDO trans = (com.k_int.repository.core.datamodel.RepoTransactionHDO) i.next(); com.k_int.repository.core.datamodel.ArtifactHDO art = trans.getRepoObj().getArtifacts().get(item_type); if ( ( art != null ) && ( art instanceof com.k_int.repository.core.datamodel.ManagedArtifactHDO ) ) { com.k_int.repository.core.datamodel.ManagedArtifactHDO ma = (com.k_int.repository.core.datamodel.ManagedArtifactHDO) art; %>
oai:<%=oai_repository_identifier%>:<%=trans.getRepoObj().getCollection().getName()%>:<%=trans.getRepoObj().getId()%> <%=formatter.format(trans.getTransactionTimestamp())%>
<%=new String(ma.getDataStream())%>
<% } else { %><% } } } %> <% } finally { try { sess.close(); } catch ( Exception e ) { e.printStackTrace(); } } %>