From: <bra...@us...> - 2010-10-01 15:43:16
|
Revision: 3264 http://archive-access.svn.sourceforge.net/archive-access/?rev=3264&view=rev Author: bradtofel Date: 2010-10-01 15:43:09 +0000 (Fri, 01 Oct 2010) Log Message: ----------- BUGFIXES, undescribed.. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/Memento.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/ORE.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/replay/MementoValidity.jsp Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/Memento.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/Memento.jsp 2010-09-30 22:36:57 UTC (rev 3263) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/Memento.jsp 2010-10-01 15:43:09 UTC (rev 3264) @@ -1,25 +1,25 @@ -<%@ page import="java.util.Date" %> -<%@ page import="org.archive.wayback.core.UIResults" %> -<%@ page import="org.archive.wayback.util.StringFormatter" %> -<%@ page import="org.archive.wayback.core.WaybackRequest" %> -<%@ page import="org.archive.wayback.core.CaptureSearchResults" %> -<%@ page import="org.archive.wayback.core.CaptureSearchResult"%> -<%@ page import="org.archive.wayback.ResultURIConverter" %> -<%@ page import="java.text.SimpleDateFormat" %> -<%@ page import="org.archive.wayback.util.Timestamp" %> -<%@ page import="java.util.Iterator" %> -<%@ page import="java.util.List" %> -<%@ page import="java.util.ArrayList" %> -<%@ page import="org.archive.wayback.ResultURIConverter" %> -<%@ page import="java.util.TimeZone" %> -<%@ page import="java.io.PrintWriter"%> -<%@ page import="org.archive.wayback.archivalurl.ArchivalUrlResultURIConverter" %> -<% - //timegate implementation - String method = request.getMethod(); - // may be there is better place to put this piece of code? - if( !(method.equals("GET")||method.equals("HEAD")) ) { - response.setStatus(405); +<%@ page import="java.util.Date" +%><%@ page import="org.archive.wayback.core.UIResults" +%><%@ page import="org.archive.wayback.util.StringFormatter" +%><%@ page import="org.archive.wayback.core.WaybackRequest" +%><%@ page import="org.archive.wayback.core.CaptureSearchResults" +%><%@ page import="org.archive.wayback.core.CaptureSearchResult" +%><%@ page import="org.archive.wayback.ResultURIConverter" +%><%@ page import="java.text.SimpleDateFormat" +%><%@ page import="org.archive.wayback.util.Timestamp" +%><%@ page import="java.util.Iterator" +%><%@ page import="java.util.List" +%><%@ page import="java.util.ArrayList" +%><%@ page import="org.archive.wayback.ResultURIConverter" +%><%@ page import="java.util.TimeZone" +%><%@ page import="java.io.PrintWriter" +%><%@ page import="org.archive.wayback.archivalurl.ArchivalUrlResultURIConverter" +%><% + //timegate implementation + String method = request.getMethod(); + // may be there is better place to put this peace of code + if (!(method.equals("GET") || method.equals("HEAD"))) { + response.setStatus(405); response.setHeader("Allow", "GET, HEAD"); return; } @@ -27,10 +27,10 @@ response.setHeader("Vary", "negotiate,accept-datetime"); SimpleDateFormat httpformatterl = new SimpleDateFormat( "E, dd MMM yyyy HH:mm:ss z"); - TimeZone tzo = TimeZone.getTimeZone("GMT"); - httpformatterl.setTimeZone(tzo); - SimpleDateFormat formatterk = new SimpleDateFormat("yyyyMMddHHmmss"); - formatterk.setTimeZone(tzo); + TimeZone tzo = TimeZone.getTimeZone("GMT"); + httpformatterl.setTimeZone(tzo); + SimpleDateFormat formatterk = new SimpleDateFormat("yyyyMMddHHmmss"); + formatterk.setTimeZone(tzo); Date now = new Date(); UIResults results = UIResults.extractCaptureQuery(request);//nuzno potom perepisat' @@ -58,105 +58,105 @@ String replayUrl = results.resultToReplayUrl(res); StringBuffer sb = new StringBuffer(); - - String memento = ",<" + replayUrl - + ">;rel=\"memento\";datetime=\"" - + httpformatterl.format(closestDate) + "\""; + + String memento = ",<" + replayUrl + ">;rel=\"memento\";datetime=\"" + + httpformatterl.format(closestDate) + "\""; StringFormatter fmt = results.getWbRequest().getFormatter(); Date f = cResults.getFirstResultDate(); Date l = cResults.getLastResultDate(); - String mfl = null; - if ( (closestDate.equals(f)) && closestDate.equals(l)) { + if ((closestDate.equals(f)) && closestDate.equals(l)) { + mfl = ", <" + + uriPrefix + + formatterk.format(f) + + "/" + + u + + ">;rel=\"first-memento memento last-memento\"; datetime=\"" + + httpformatterl.format(f) + "\""; + } else if (closestDate.equals(f)) { + mfl = ", <" + uriPrefix + formatterk.format(f) + "/" + u + + ">;rel=\"first-memento memento\"; datetime=\"" + + httpformatterl.format(f) + "\""; + mfl = mfl + ", <" + uriPrefix + formatterk.format(l) + "/" + u + + ">;rel=\"last-memento\"; datetime=\"" + + httpformatterl.format(l) + "\""; - mfl = ", <" + uriPrefix + formatterk.format(f) + "/" + u - + ">;rel=\"first-memento memento last-memento\"; datetime=\"" - + httpformatterl.format(f) + "\""; + } else if (closestDate.equals(l)) { + mfl = ", <" + uriPrefix + formatterk.format(l) + "/" + u + + ">;rel=\"last-memento memento\"; datetime=\"" + + httpformatterl.format(l) + "\""; + mfl = mfl + ", <" + uriPrefix + formatterk.format(f) + "/" + u + + ">;rel=\"first-memento\"; datetime=\"" + + httpformatterl.format(f) + "\""; + } else { - } else if (closestDate.equals(f)){ + mfl = memento; + mfl = mfl + ", <" + uriPrefix + formatterk.format(l) + "/" + u + + ">;rel=\"last-memento\"; datetime=\"" + + httpformatterl.format(l) + "\""; + mfl = mfl + ", <" + uriPrefix + formatterk.format(f) + "/" + u + + ">;rel=\"first-memento\"; datetime=\"" + + httpformatterl.format(f) + "\""; + } - mfl = ", <" + uriPrefix + formatterk.format(f) + "/" + u - + ">;rel=\"first-memento memento\"; datetime=\"" - + httpformatterl.format(f) + "\"" - + ", <" + uriPrefix + formatterk.format(l) + "/" + u - + ">;rel=\"last-memento\"; datetime=\"" - + httpformatterl.format(l) + "\""; - - } else if (closestDate.equals(l)) { + sb = new StringBuffer(mfl); - mfl = ", <" + uriPrefix + formatterk.format(l) + "/" + u - + ">;rel=\"last-memento memento\"; datetime=\"" - + httpformatterl.format(l) + "\"" - + ", <" + uriPrefix + formatterk.format(f) + "/" + u - + ">;rel=\"first-memento\"; datetime=\"" - + httpformatterl.format(f) + "\""; + if (dtdate == null) + dtdate = ""; - } else { - - mfl = memento - + ", <" + uriPrefix + formatterk.format(l) + "/" + u - + ">;rel=\"last-memento\"; datetime=\"" - + httpformatterl.format(l) + "\"" - + ", <" + uriPrefix + formatterk.format(f) + "/" + u - + ">;rel=\"first-memento\"; datetime=\"" - + httpformatterl.format(f) + "\""; - } - - sb = new StringBuffer(mfl); - - if (dtdate==null) dtdate=""; - - //special handling date unparsable case if (dtdate.equals("unparsable")) { - String fl= null; + String fl = null; if (f.equals(l)) { - fl=", <" + uriPrefix + formatterk.format(f) + "/" + u - + ">;rel=\"last-memento first-memento\"; datetime=\"" - + httpformatterl.format(f) + "\""; - + fl = ", <" + + uriPrefix + + formatterk.format(f) + + "/" + + u + + ">;rel=\"last-memento first-memento\"; datetime=\"" + + httpformatterl.format(f) + "\""; + } else { fl = ", <" + uriPrefix + formatterk.format(l) + "/" + u - + ">;rel=\"last-memento\"; datetime=\"" - + httpformatterl.format(l) + "\""; - fl =fl +", <" + uriPrefix + formatterk.format(f) + "/" + u - + ">;rel=\"first-memento\"; datetime=\"" + + ">;rel=\"last-memento\"; datetime=\"" + + httpformatterl.format(l) + "\""; + fl = fl + ", <" + uriPrefix + formatterk.format(f) + "/" + + u + ">;rel=\"first-memento\"; datetime=\"" + httpformatterl.format(f) + "\""; } response.setHeader("TCN", "list"); response.setStatus(400); response.setHeader("Link", "<" + agguri - + ">;rel=\"timebundle\"" + origlink + fl - + timemap); - - - + + ">;rel=\"timebundle\"" + origlink + fl + timemap); + StringBuffer sberr = new StringBuffer(); - sberr.append("<html><head><title>400 Bad Request</title></head><body>" ); + sberr.append("<html><head><title>400 Bad Request</title></head><body>"); sberr.append("<center><table width='800px'><tr><td><div style='background-color: #e0e0e0; padding: 10px;'><br/>"); - sberr.append("<center><b>Error: 400</b><center>" ); - sberr.append("<center><p>Bad Date Request.</p>" ); - sberr.append("However, we found archived resources available in the following time-range: " ); - sberr.append("<i><blockquote><ul> " ); - - sberr.append("<li>Very first available Memento "+ " at "+ uriPrefix + formatterk.format(f) + "/" + u +"</BR>\n" ); - sberr.append("<li>Most recent available Memento " + " at " + uriPrefix + formatterk.format(f) + "/" + u +"</BR>\n" ); - - - sberr.append("</ul> </blockquote></i>" ); + sberr.append("<center><b>Error: 400</b><center>"); + sberr.append("<center><p>Bad Date Request.</p>"); + sberr.append("However, we found archived resources available in the following time-range: "); + sberr.append("<i><blockquote><ul> "); + + sberr.append("<li>Very first available Memento " + " at " + + uriPrefix + formatterk.format(f) + "/" + u + + "</BR>\n"); + sberr.append("<li>Most recent available Memento " + " at " + + uriPrefix + formatterk.format(f) + "/" + u + + "</BR>\n"); + + sberr.append("</ul> </blockquote></i>"); sberr.append("<br/></div></td></tr>"); sberr.append("</table>"); sberr.append("</body></html>"); PrintWriter pw = response.getWriter(); - response.setContentType("text/html"); - pw.print(sberr.toString()); - pw.flush(); - pw.close(); - return; - } - - + response.setContentType("text/html"); + pw.print(sberr.toString()); + pw.flush(); + pw.close(); + return; + } + // calculate closest values for alternates CaptureSearchResult closestleft = null; CaptureSearchResult closestright = null; @@ -167,12 +167,12 @@ long maxWindow = -1; long wantTime = closestDate.getTime(); - + Iterator<CaptureSearchResult> itr = cResults.iterator(); while (itr.hasNext()) { cur = itr.next(); cur.getCaptureDate(); - long curDistance = cur.getCaptureDate().getTime()-wantTime; + long curDistance = cur.getCaptureDate().getTime() - wantTime; // == 0 skip if (curDistance > 0) { if ((closestright == null) @@ -194,38 +194,42 @@ } - - if (closestleft != null) { if (!(closestleft.getCaptureDate().equals(f))) { - sb.append(", <" + uriPrefix + formatterk.format(closestleft.getCaptureDate()) - + "/" + u - + ">;rel=\"prev-memento\"; datetime=\"" - + httpformatterl.format(closestleft.getCaptureDate()) + "\""); + sb.append(", <" + + uriPrefix + + formatterk.format(closestleft.getCaptureDate()) + + "/" + + u + + ">;rel=\"prev-memento\"; datetime=\"" + + httpformatterl.format(closestleft + .getCaptureDate()) + "\""); } else { int m_index = sb.lastIndexOf("\"first-memento\""); - sb.insert(m_index + 1, "prev-memento "); + sb.insert(m_index + 1, "prev-memento "); } } if (closestright != null) { if (!(closestright.getCaptureDate().equals(l))) { - sb.append(", <" + uriPrefix + formatterk.format(closestright.getCaptureDate()) - + "/" + u + sb.append(", <" + + uriPrefix + + formatterk.format(closestright.getCaptureDate()) + + "/" + + u + ">;rel=\"next-memento\"; datetime=\"" - + httpformatterl.format(closestright.getCaptureDate()) + "\""); + + httpformatterl.format(closestright + .getCaptureDate()) + "\""); } else { int m_index = sb.lastIndexOf("\"last-memento\""); - sb.insert(m_index + 1, "next-memento "); + sb.insert(m_index + 1, "next-memento "); } + } - - - response.setHeader("Link", "<" + agguri - + ">;rel=\"timebundle\"" + origlink + sb.toString() - + timemap); //added timemap - + + response.setHeader("Link", "<" + agguri + ">;rel=\"timebundle\"" + + origlink + sb.toString() + timemap); //added timemap + response.setHeader("TCN", "choice"); response.setHeader("Location", replayUrl); response.sendError(302, "Found"); - %> \ No newline at end of file Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/ORE.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/ORE.jsp 2010-09-30 22:36:57 UTC (rev 3263) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/ORE.jsp 2010-10-01 15:43:09 UTC (rev 3264) @@ -1,39 +1,39 @@ -<%@ page import="java.util.Date" %> -<%@ page import="org.archive.wayback.core.UIResults" %> -<%@ page import="org.archive.wayback.util.StringFormatter" %> -<%@ page import="org.archive.wayback.core.WaybackRequest" %> -<%@ page import="org.archive.wayback.core.CaptureSearchResults" %> -<%@ page import="org.archive.wayback.core.CaptureSearchResult"%> -<%@ page import="org.archive.wayback.ResultURIConverter" %> -<%@ page import="java.text.SimpleDateFormat" %> -<%@ page import="org.archive.wayback.util.Timestamp" %> -<%@ page import="java.util.Iterator" %> -<%@ page import="java.util.List" %> -<%@ page import="java.util.ArrayList" %> -<%@ page import="org.dspace.foresite.Aggregation" %> -<%@ page import="org.dspace.foresite.ResourceMap" %> -<%@ page import="org.dspace.foresite.Agent" %> -<%@ page import="org.dspace.foresite.OREFactory" %> -<%@ page import="org.dspace.foresite.AggregatedResource" %> -<%@ page import="org.dspace.foresite.ORESerialiser" %> -<%@ page import="org.dspace.foresite.ORESerialiserFactory" %> -<%@ page import="org.dspace.foresite.ResourceMapDocument" %> -<%@ page import="java.io.PrintWriter" %> -<%@ page import="java.net.URI" %> -<%@ page import="org.dspace.foresite.Predicate" %> -<%@ page import="org.archive.wayback.archivalurl.ArchivalUrlResultURIConverter" %> -<%@page import="org.dspace.foresite.Triple"%> -<%@page import="org.dspace.foresite.jena.TripleJena"%> -<%@page import="java.util.UUID"%> -<%@ page import="java.util.TimeZone" %> -<%@page import="java.util.Calendar"%> -<% +<%@ page import="java.util.Date" +%><%@ page import="org.archive.wayback.core.UIResults" +%><%@ page import="org.archive.wayback.util.StringFormatter" +%><%@ page import="org.archive.wayback.core.WaybackRequest" +%><%@ page import="org.archive.wayback.core.CaptureSearchResults" +%><%@ page import="org.archive.wayback.core.CaptureSearchResult" +%><%@ page import="org.archive.wayback.ResultURIConverter" +%><%@ page import="java.text.SimpleDateFormat" +%><%@ page import="org.archive.wayback.util.Timestamp" +%><%@ page import="java.util.Iterator" +%><%@ page import="java.util.List" +%><%@ page import="java.util.ArrayList" +%><%@ page import="org.dspace.foresite.Aggregation" +%><%@ page import="org.dspace.foresite.ResourceMap" +%><%@ page import="org.dspace.foresite.Agent" +%><%@ page import="org.dspace.foresite.OREFactory" +%><%@ page import="org.dspace.foresite.AggregatedResource" +%><%@ page import="org.dspace.foresite.ORESerialiser" +%><%@ page import="org.dspace.foresite.ORESerialiserFactory" +%><%@ page import="org.dspace.foresite.ResourceMapDocument" +%><%@ page import="java.io.PrintWriter" +%><%@ page import="java.net.URI" +%><%@ page import="org.dspace.foresite.Predicate" +%><%@ page import="org.archive.wayback.archivalurl.ArchivalUrlResultURIConverter" +%><%@ page import="org.dspace.foresite.Triple" +%><%@ page import="org.dspace.foresite.jena.TripleJena" +%><%@ page import="java.util.UUID" +%><%@ page import="java.util.TimeZone" +%><%@ page import="java.util.Calendar" +%><% UIResults results = UIResults.extractCaptureQuery(request);//nuzno potom perepisat' SimpleDateFormat httpformatterl = new SimpleDateFormat( "E, dd MMM yyyy HH:mm:ss z"); TimeZone tzo = TimeZone.getTimeZone("GMT"); - httpformatterl.setTimeZone(tzo); - + httpformatterl.setTimeZone(tzo); + WaybackRequest wbRequest = results.getWbRequest(); CaptureSearchResults cResults = results.getCaptureResults(); CaptureSearchResult res = cResults.getClosest(wbRequest, true); @@ -41,22 +41,13 @@ ArchivalUrlResultURIConverter uriconverter = (ArchivalUrlResultURIConverter) results .getURIConverter(); String uriPrefix = uriconverter.getReplayURIPrefix(); - //String p_url = wbRequest.getContextPrefix(); String u = wbRequest.getRequestUrl(); String agguri = uriPrefix + "timebundle/" + u; - //String agguri = results.getContextConfig("Prefix") + "timebundle/" + u; - //String remuri = p_url +"timemap/" + u; - //System.out.println(agguri); - //System.out.println(remuri); String format = wbRequest.get("format"); - // System.out.println("here"); Aggregation agg = OREFactory.createAggregation(new URI(agguri)); - //System.out.println("here"); ResourceMap rem = agg.createResourceMap(new URI(uriPrefix + "timemap/" + format + "/" + u)); - //SimpleDateFormat formatter_utc = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); - Date now = new Date(); rem.setCreated(now); @@ -67,20 +58,14 @@ rem.setModified(now); rem.createTriple(pr_type, new URI( "http://www.mementoweb.org/terms/tb/TimeMap")); - //rem.addType(new URI("http://www.mementoweb.org/terms/tb/TimeMap")); Agent creator = OREFactory.createAgent(); creator.addName("Foresite Toolkit (Java)"); - //creator.addMbox(new URI("for...@go...")); - //rem.addAgent(new URI("http://foresite-toolkit.googlecode.com/#javaAgent"),creator); rem.addCreator(creator); agg.addTitle("Memento Time Bundle for " + u); - //CaptureSearchResults cResults = results.getCaptureResults(); - //CaptureSearchResult res = cResults.getClosest(wbRequest,true); Iterator<CaptureSearchResult> itr = cResults.iterator(); - SimpleDateFormat formatterk = new SimpleDateFormat( - "yyyyMMddHHmmss"); + SimpleDateFormat formatterk = new SimpleDateFormat("yyyyMMddHHmmss"); formatterk.setTimeZone(tzo); Date f = cResults.getFirstResultDate(); Date l = cResults.getLastResultDate(); @@ -88,24 +73,18 @@ String ArchiveInterval = formatterk.format(f) + " - " + formatterk.format(l); - //agg.createTriple(new URI("http://www.mementoweb.org/ns/archiveInterval"),ArchiveInterval); - agg.addType(new URI( - "http://www.mementoweb.org/terms/tb/TimeBundle")); - //String mementourl =p_url.replace("ore","memento"); + agg.addType(new URI("http://www.mementoweb.org/terms/tb/TimeBundle")); //include original into aggregation - AggregatedResource ar_o = agg.createAggregatedResource(new URI( - u)); + AggregatedResource ar_o = agg.createAggregatedResource(new URI(u)); ar_o.createTriple(pr_type, new URI( "http://www.mementoweb.org/terms/tb/OriginalResource")); //include timegate into aggregation - AggregatedResource ar_tg = agg - .createAggregatedResource(new URI(results - .getContextConfig("Prefix") - + "timegate/" + u)); + AggregatedResource ar_tg = agg.createAggregatedResource(new URI( + results.getContextConfig("Prefix") + "timegate/" + u)); + Predicate pr_format = new Predicate(); - pr_format.setURI(new URI( - "http://purl.org/dc/elements/1.1/format")); + pr_format.setURI(new URI("http://purl.org/dc/elements/1.1/format")); ar_tg.createTriple(pr_format, new URI(u)); ar_tg.createTriple(pr_type, new URI( "http://www.mementoweb.org/terms/tb/TimeGate")); @@ -127,8 +106,13 @@ linkbf.append("<" + u + ">;rel=\"original\"\n"); linkbf.append(",<" + agguri + ">;rel=\"timebundle\"\n"); - String firstmemento = null; + linkbf.append(",<" + results.getContextConfig("Prefix") + + "timegate/" + u + ">;rel=\"timegate\"\n"); + linkbf.append(",<" + uriPrefix + "timemap/" + format + "/" + u + + ">;rel=\"timemap\"\n"); + String firstmemento = null; + int count = 0; while (itr.hasNext()) { CaptureSearchResult cur = itr.next(); //I am not deduping urls (by digest) for the rdf serialization running out of time, extra efforts for me now ;) @@ -152,9 +136,7 @@ "http://www.mementoweb.org/terms/tb/Memento")); Date startdate = cur.getDuplicateDigestStoredDate(); - //System.out.println("start:"+startdate); enddate = cur.getCaptureDate(); - //System.out.println("end:"+enddate); // serialiase it in links format only for unique digest @@ -164,10 +146,12 @@ + ">;rel=\"first-memento\";datetime=\"" + httpformatterl.format(enddate) + "\"\n"); firstmemento = "firstmemento"; + } else { linkbf.append(",<" + resurl + ">;rel=\"memento\";datetime=\"" + httpformatterl.format(enddate) + "\"\n"); + count = count + 1; } } @@ -178,9 +162,8 @@ UUID a = UUID.randomUUID(); String blanc = "urn:uuid:" + a.toString(); - //System.out.println(blanc); pred.setURI(new URI( - "http://www.mementoweb.org/terms/tb/validOver")); + "http://www.mementoweb.org/terms/tb/observedOver")); triple.relate(pred, new URI(blanc)); Triple tr = new TripleJena(); tr.initialise(new URI(blanc)); @@ -193,7 +176,6 @@ String start = null; Triple trd = new TripleJena(); trd.initialise(new URI(blanc)); - //Calendar cal = Calendar.getInstance(); if (startdate != null) { @@ -206,8 +188,6 @@ start = httpformatterl.format(enddate); } - //System.out.println("type" +trd.getLiteralType()); - ar.addTriple(triple); ar.addTriple(tr); ar.addTriple(trd); @@ -220,7 +200,6 @@ Triple tre = new TripleJena(); tre.initialise(new URI(blanc_)); - //Calendar cal = Calendar.getInstance(); cal.setTime(enddate); tre.relate(pre, cal); ar.addTriple(tre); @@ -246,13 +225,11 @@ ar.addTriple(tre); } - // additional logic for link format - int m_index = linkbf.lastIndexOf("\"memento\""); - //System.out.println(m_index); - linkbf.insert(m_index + 1, "last-"); - //System.out.println("here"); + if (count > 0) { + int m_index = linkbf.lastIndexOf("\"memento\""); + linkbf.insert(m_index + 1, "last-"); + } - //String format = wbRequest.get("format"); ORESerialiser serial = null; if (format.equals("rdf")) { serial = ORESerialiserFactory.getInstance("RDF/XML"); @@ -272,15 +249,12 @@ //} else if (format.equals("link")) { PrintWriter pw = response.getWriter(); - //System.out.println(linkbf.toString()); - - // TODO: are we sure this is right? We want to flush *before* - // setting content-type? + + response.setContentType("text/csv"); pw.print(linkbf.toString()); pw.flush(); - response.setContentType("text/csv"); + } else { - // response.setStatus(404); // TODO: this should be handled in TimeBundleParser to allow // usual Exception rendering to happen. response.sendError(404, "Unknown TimeMap serialization"); @@ -306,5 +280,4 @@ pw.print(serialisation); pw.flush(); } - %> \ No newline at end of file Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/replay/MementoValidity.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/replay/MementoValidity.jsp 2010-09-30 22:36:57 UTC (rev 3263) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/replay/MementoValidity.jsp 2010-10-01 15:43:09 UTC (rev 3264) @@ -1,150 +1,164 @@ -<%@ page import="org.archive.wayback.core.UIResults" %> -<%@ page import="org.archive.wayback.core.CaptureSearchResults" %> -<%@ page import="org.archive.wayback.core.CaptureSearchResult"%> -<%@ page import="java.util.Date" %> -<%@ page import="org.archive.wayback.core.WaybackRequest" %> -<%@ page import="org.archive.wayback.archivalurl.ArchivalUrlResultURIConverter" %> -<%@ page import="java.text.SimpleDateFormat" %> -<%@ page import="java.util.TimeZone" %> -<%@ page import="java.util.Iterator" %> -<% - UIResults results = UIResults.extractCaptureQuery(request); - WaybackRequest wbRequest = results.getWbRequest(); - CaptureSearchResults cResults = results.getCaptureResults(); - CaptureSearchResult res = cResults.getClosest(wbRequest, true); - String u = wbRequest.getRequestUrl(); - SimpleDateFormat httpformatterl = new SimpleDateFormat( - "E, dd MMM yyyy HH:mm:ss z"); - TimeZone tzo = TimeZone.getTimeZone("GMT"); - httpformatterl.setTimeZone(tzo); - SimpleDateFormat formatterk = new SimpleDateFormat("yyyyMMddHHmmss"); - formatterk.setTimeZone(tzo); - - - Date closestDate = res.getCaptureDate(); - String agguri = results.getContextConfig("aggregationPrefix") - + "timebundle/" + u; - String timemap = " , <" - + results.getContextConfig("aggregationPrefix") - + "timemap/link/" + u - + ">;rel=\"timemap\"; type=\"text/csv\""; - ArchivalUrlResultURIConverter uriconverter = - (ArchivalUrlResultURIConverter) results.getURIConverter(); +<%@ page import="org.archive.wayback.core.UIResults" +%><%@ page import="org.archive.wayback.core.CaptureSearchResults" +%><%@ page import="org.archive.wayback.core.CaptureSearchResult" +%><%@ page import="java.util.Date" +%><%@ page import="org.archive.wayback.core.WaybackRequest" +%><%@ page import="org.archive.wayback.archivalurl.ArchivalUrlResultURIConverter" +%><%@ page import="java.text.SimpleDateFormat" +%><%@ page import="java.util.TimeZone" +%><%@ page import="java.util.Iterator" +%><% + UIResults results = UIResults.extractCaptureQuery(request); + WaybackRequest wbRequest = results.getWbRequest(); + CaptureSearchResults cResults = results.getCaptureResults(); + CaptureSearchResult res = cResults.getClosest(wbRequest, true); + String u = wbRequest.getRequestUrl(); + SimpleDateFormat httpformatterl = new SimpleDateFormat( + "E, dd MMM yyyy HH:mm:ss z"); + TimeZone tzo = TimeZone.getTimeZone("GMT"); + httpformatterl.setTimeZone(tzo); + SimpleDateFormat formatterk = new SimpleDateFormat("yyyyMMddHHmmss"); + formatterk.setTimeZone(tzo); - String uriPrefix = uriconverter.getReplayURIPrefix(); + ArchivalUrlResultURIConverter uriconverter = (ArchivalUrlResultURIConverter) results + .getURIConverter(); + Date closestDate = res.getCaptureDate(); + String uriPrefix = uriconverter.getReplayURIPrefix(); + String agguri = results.getContextConfig("aggregationPrefix") + + "timebundle/" + u; + String timemap = " , <" + + results.getContextConfig("aggregationPrefix") + + "timemap/link/" + u + + ">;rel=\"timemap\"; type=\"text/csv\""; - Date f = cResults.getFirstResultDate(); - Date l = cResults.getLastResultDate(); - - StringBuffer sb = new StringBuffer(); - - response.setHeader("Memento-Datetime", httpformatterl.format(res - .getCaptureDate())); - - String memento = ",<" + uriPrefix + formatterk.format(closestDate) + "/" + u - + ">;rel=\"memento\";datetime=\"" - + httpformatterl.format(closestDate) + "\""; - String mfl = null; - if ( (closestDate.equals(f)) && closestDate.equals(l)) { - mfl = ", <" + uriPrefix + formatterk.format(f) + "/" + u - + ">;rel=\"first-memento memento last-memento\"; datetime=\"" - + httpformatterl.format(f) + "\""; - } - else if (closestDate.equals(f)){ - mfl=", <" + uriPrefix + formatterk.format(f) + "/" + u + String timegate = ",<" + uriPrefix + "timegate/" + u + + ">;rel=\"timegate\""; + + Date f = cResults.getFirstResultDate(); + Date l = cResults.getLastResultDate(); + + StringBuffer sb = new StringBuffer(); + + response.setHeader("Memento-Datetime", + httpformatterl.format(res.getCaptureDate())); + + String memento = ",<" + uriPrefix + formatterk.format(closestDate) + + "/" + u + ">;rel=\"memento\";datetime=\"" + + httpformatterl.format(closestDate) + "\""; + String mfl = null; + if ((closestDate.equals(f)) && closestDate.equals(l)) { + mfl = ", <" + + uriPrefix + + formatterk.format(f) + + "/" + + u + + ">;rel=\"first-memento memento last-memento\"; datetime=\"" + + httpformatterl.format(f) + "\""; + } else if (closestDate.equals(f)) { + mfl = ", <" + uriPrefix + formatterk.format(f) + "/" + u + ">;rel=\"first-memento memento\"; datetime=\"" - + httpformatterl.format(f) + "\"" ; - mfl = mfl+", <" + uriPrefix + formatterk.format(l) + "/" + u - + ">;rel=\"last-memento\"; datetime=\"" - + httpformatterl.format(l) + "\""; - - } - else if (closestDate.equals(l)) { - mfl=", <" + uriPrefix + formatterk.format(l) + "/" + u - + ">;rel=\"last-memento memento\"; datetime=\"" - + httpformatterl.format(l) + "\""; - mfl = mfl +", <" + uriPrefix + formatterk.format(f) + "/" + u - + ">;rel=\"first-memento\"; datetime=\"" - + httpformatterl.format(f) + "\""; - } - else { - mfl = memento ; - - mfl = mfl+", <" + uriPrefix + formatterk.format(l) + "/" + u - + ">;rel=\"last-memento\"; datetime=\"" - + httpformatterl.format(l) + "\""; - mfl =mfl +", <" + uriPrefix + formatterk.format(f) + "/" + u + + httpformatterl.format(f) + "\""; + mfl = mfl + ", <" + uriPrefix + formatterk.format(l) + "/" + u + + ">;rel=\"last-memento\"; datetime=\"" + + httpformatterl.format(l) + "\""; + + } else if (closestDate.equals(l)) { + mfl = ", <" + uriPrefix + formatterk.format(l) + "/" + u + + ">;rel=\"last-memento memento\"; datetime=\"" + + httpformatterl.format(l) + "\""; + mfl = mfl + ", <" + uriPrefix + formatterk.format(f) + "/" + u + ">;rel=\"first-memento\"; datetime=\"" + httpformatterl.format(f) + "\""; + } else { + mfl = memento; + + mfl = mfl + ", <" + uriPrefix + formatterk.format(l) + "/" + u + + ">;rel=\"last-memento\"; datetime=\"" + + httpformatterl.format(l) + "\""; + mfl = mfl + ", <" + uriPrefix + formatterk.format(f) + "/" + u + + ">;rel=\"first-memento\"; datetime=\"" + + httpformatterl.format(f) + "\""; } - + sb = new StringBuffer(mfl); - - CaptureSearchResult closestleft = null; - CaptureSearchResult closestright = null; - long rclosestDistance = 0; - long lclosestDistance = 0; - CaptureSearchResult cur = null; - String anchorDate = null; - long maxWindow = -1; - long wantTime = closestDate.getTime(); - - Iterator<CaptureSearchResult> itr = cResults.iterator(); - while (itr.hasNext()) { - cur = itr.next(); - cur.getCaptureDate(); - long curDistance = cur.getCaptureDate().getTime()-wantTime; - // == 0 skip - if (curDistance > 0) { - if ((closestright == null) - || (Math.abs(curDistance) < Math - .abs(rclosestDistance))) { - closestright = cur; - rclosestDistance = Math.abs(curDistance); - } - } + // calculate closest values for link header - if (curDistance < 0) { - if ((closestleft == null) - || (Math.abs(curDistance) < Math - .abs(lclosestDistance))) { - closestleft = cur; - lclosestDistance = Math.abs(curDistance); - } - } + CaptureSearchResult closestleft = null; + CaptureSearchResult closestright = null; + long rclosestDistance = 0; + long lclosestDistance = 0; + CaptureSearchResult cur = null; + String anchorDate = null; - } + long maxWindow = -1; + long wantTime = closestDate.getTime(); - if (closestleft != null) { - if (!(closestleft.getCaptureDate().equals(f))) { - - sb.append(", <" + uriPrefix + formatterk.format(closestleft.getCaptureDate()) + "/" - + u + ">;rel=\"prev-memento\"; datetime=\"" - + httpformatterl.format(closestleft.getCaptureDate()) + "\""); - } - else { - int m_index = sb.lastIndexOf("\"first-memento\""); - sb.insert(m_index + 1, "prev-memento "); + Iterator<CaptureSearchResult> itr = cResults.iterator(); + while (itr.hasNext()) { + cur = itr.next(); + cur.getCaptureDate(); + long curDistance = cur.getCaptureDate().getTime() - wantTime; + // == 0 skip + if (curDistance > 0) { + if ((closestright == null) + || (Math.abs(curDistance) < Math + .abs(rclosestDistance))) { + closestright = cur; + rclosestDistance = Math.abs(curDistance); + } + } - } - } - if (closestright != null) { - if (!(closestright.getCaptureDate().equals(l))) { - sb.append(", <" + uriPrefix + formatterk.format(closestright.getCaptureDate()) + "/" - + u + ">;rel=\"next-memento\"; datetime=\"" - + httpformatterl.format(closestright.getCaptureDate()) + "\""); - } - else { - int m_index = sb.lastIndexOf("\"last-memento\""); - sb.insert(m_index + 1, "next-memento "); - - } + if (curDistance < 0) { + if ((closestleft == null) + || (Math.abs(curDistance) < Math + .abs(lclosestDistance))) { + closestleft = cur; + lclosestDistance = Math.abs(curDistance); + } + } - } + } - String origlink = ", <" + u + ">;rel=\"original\""; + if (closestleft != null) { + if (!(closestleft.getCaptureDate().equals(f))) { - response.setHeader("Link", "<" + agguri + ">;rel=\"timebundle\"" - + origlink + sb.toString() + timemap); + sb.append(", <" + + uriPrefix + + formatterk.format(closestleft.getCaptureDate()) + + "/" + + u + + ">;rel=\"prev-memento\"; datetime=\"" + + httpformatterl.format(closestleft + .getCaptureDate()) + "\""); + } else { + int m_index = sb.lastIndexOf("\"first-memento\""); + sb.insert(m_index + 1, "prev-memento "); + + } + } + if (closestright != null) { + if (!(closestright.getCaptureDate().equals(l))) { + sb.append(", <" + + uriPrefix + + formatterk.format(closestright.getCaptureDate()) + + "/" + + u + + ">;rel=\"next-memento\"; datetime=\"" + + httpformatterl.format(closestright + .getCaptureDate()) + "\""); + } else { + int m_index = sb.lastIndexOf("\"last-memento\""); + sb.insert(m_index + 1, "next-memento "); + + } + + } + + String origlink = ", <" + u + ">;rel=\"original\""; + + response.setHeader("Link", "<" + agguri + ">;rel=\"timebundle\"" + + origlink + sb.toString() + timemap + timegate); + + %> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |