You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(10) |
Sep
(36) |
Oct
(339) |
Nov
(103) |
Dec
(152) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(141) |
Feb
(102) |
Mar
(125) |
Apr
(203) |
May
(57) |
Jun
(30) |
Jul
(139) |
Aug
(46) |
Sep
(64) |
Oct
(105) |
Nov
(34) |
Dec
(162) |
2007 |
Jan
(81) |
Feb
(57) |
Mar
(141) |
Apr
(72) |
May
(9) |
Jun
(1) |
Jul
(144) |
Aug
(88) |
Sep
(40) |
Oct
(43) |
Nov
(34) |
Dec
(20) |
2008 |
Jan
(44) |
Feb
(45) |
Mar
(16) |
Apr
(36) |
May
(8) |
Jun
(77) |
Jul
(177) |
Aug
(66) |
Sep
(8) |
Oct
(33) |
Nov
(13) |
Dec
(37) |
2009 |
Jan
(2) |
Feb
(5) |
Mar
(8) |
Apr
|
May
(36) |
Jun
(19) |
Jul
(46) |
Aug
(8) |
Sep
(1) |
Oct
(66) |
Nov
(61) |
Dec
(10) |
2010 |
Jan
(13) |
Feb
(16) |
Mar
(38) |
Apr
(76) |
May
(47) |
Jun
(32) |
Jul
(35) |
Aug
(45) |
Sep
(20) |
Oct
(61) |
Nov
(24) |
Dec
(16) |
2011 |
Jan
(22) |
Feb
(34) |
Mar
(11) |
Apr
(8) |
May
(24) |
Jun
(23) |
Jul
(11) |
Aug
(42) |
Sep
(81) |
Oct
(48) |
Nov
(21) |
Dec
(20) |
2012 |
Jan
(30) |
Feb
(25) |
Mar
(4) |
Apr
(6) |
May
(1) |
Jun
(5) |
Jul
(5) |
Aug
(8) |
Sep
(6) |
Oct
(6) |
Nov
|
Dec
|
From: <bra...@us...> - 2008-07-15 01:56:40
|
Revision: 2455 http://archive-access.svn.sourceforge.net/archive-access/?rev=2455&view=rev Author: bradtofel Date: 2008-07-14 18:56:50 -0700 (Mon, 14 Jul 2008) Log Message: ----------- INITIAL REV: common cookie setting Javascript code. Added Paths: ----------- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/CookieJS.jsp Added: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/CookieJS.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/CookieJS.jsp (rev 0) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/CookieJS.jsp 2008-07-15 01:56:50 UTC (rev 2455) @@ -0,0 +1,18 @@ +<%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> +<%@ page import="org.archive.wayback.core.WaybackRequest" %> +<script type="text/javascript"> +function SetCookie(cookieName,cookieValue,nDays) { + var today = new Date(); + var expire = new Date(); + if (nDays==null || nDays==0) nDays=1; + expire.setTime(today.getTime() + 86400000*nDays); + document.cookie = cookieName+"="+escape(cookieValue) + + ";expires="+expire.toGMTString() + ";path=/"; +} +function SetAnchorDate(date) { + SetCookie("<%= WaybackRequest.REQUEST_ANCHOR_DATE %>",date,365); +} +function SetAnchorWindow(maxSeconds) { + SetCookie("<%= WaybackRequest.REQUEST_ANCHOR_WINDOW %>",maxSeconds,365); +} +</script> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:53:15
|
Revision: 2454 http://archive-access.svn.sourceforge.net/archive-access/?rev=2454&view=rev Author: bradtofel Date: 2008-07-14 18:53:25 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR: BDBMap package moved: org.archive.wayback.core => org.archive.wayback.util Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp 2008-07-15 01:51:52 UTC (rev 2453) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp 2008-07-15 01:53:25 UTC (rev 2454) @@ -1,4 +1,4 @@ -<%@ page import="org.archive.wayback.core.BDBMap" %> +<%@ page import="org.archive.wayback.util.bdb.BDBMap" %> <% String url = request.getParameter("url"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:51:42
|
Revision: 2453 http://archive-access.svn.sourceforge.net/archive-access/?rev=2453&view=rev Author: bradtofel Date: 2008-07-14 18:51:52 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR: BDBMap package moved: org.archive.wayback.core => org.archive.wayback.util Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java Added Paths: ----------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/bdb/BDBMap.java Removed Paths: ------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java 2008-07-15 01:46:45 UTC (rev 2452) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java 2008-07-15 01:51:52 UTC (rev 2453) @@ -1,171 +0,0 @@ -/* - * Created on 2006-apr-05 - * - * Copyright (C) 2006 Royal Library of Sweden. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -package org.archive.wayback.core; - -import java.io.File; -import java.io.UnsupportedEncodingException; -import java.util.Properties; - -import org.archive.wayback.util.Timestamp; - -import com.sleepycat.je.Database; -import com.sleepycat.je.DatabaseConfig; -import com.sleepycat.je.DatabaseEntry; -import com.sleepycat.je.DatabaseException; -import com.sleepycat.je.Environment; -import com.sleepycat.je.EnvironmentConfig; -import com.sleepycat.je.LockMode; -import com.sleepycat.je.OperationStatus; - -/** - * Generic class for simple key-value pair lookup using BDBJE. - * - * @author osk...@kb... - * @version $Date$, $Revision$ - */ -public class BDBMap { - - // Acts as a mapping between an ID and a timestamp to surf at. - // The dir should probably be configurable somehow. - private static String BDB_DIR = System.getProperty("java.io.tmpdir") + - "/wayback/bdb"; - private static Properties bdbMaps = new Properties(); - - protected Environment env = null; - protected Database db = null; - protected String name; - protected String dir; - - /** - * consturctor - * @param name of database - * @param dir path of directory where dbd files should be stored. The - * directory is created if it does not exist. - */ - public BDBMap(String name, String dir) { - this.name = name; - this.dir = dir; - init(); - } - - protected void init() { - try { - EnvironmentConfig envConf = new EnvironmentConfig(); - envConf.setAllowCreate(true); - File envDir = new File(dir); - if (!envDir.exists()) - envDir.mkdirs(); - env = new Environment(envDir, envConf); - - DatabaseConfig dbConf = new DatabaseConfig(); - dbConf.setAllowCreate(true); - dbConf.setSortedDuplicates(false); - db = env.openDatabase(null, name, dbConf); - } catch (DatabaseException e) { - e.printStackTrace(); - } - } - - /** - * persistantly store key-value pair - * @param keyStr - * @param valueStr - */ - public void put(String keyStr, String valueStr) { - try { - DatabaseEntry key = new DatabaseEntry(keyStr.getBytes("UTF-8")); - DatabaseEntry data = new DatabaseEntry(valueStr.getBytes("UTF-8")); - db.put(null, key, data); - } catch (DatabaseException e) { - e.printStackTrace(); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - } - - /** - * retrieve the value assoicated with keyStr from persistant storage - * @param keyStr - * @return String value associated with key, or null if no key is found - * or an error occurs - */ - public String get(String keyStr) { - String result = null; - try { - DatabaseEntry key = new DatabaseEntry(keyStr.getBytes("UTF-8")); - DatabaseEntry data = new DatabaseEntry(); - if (db.get(null, key, data, LockMode.DEFAULT) == - OperationStatus.SUCCESS) { - - byte[] bytes = data.getData(); - result = new String(bytes, "UTF-8"); - } - } catch (DatabaseException e) { - e.printStackTrace(); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return result; - } - - /** - * @param context - * @return singleton BDBMap for the context - */ - public static BDBMap getContextMap(String context) { - if(context == null) context = ""; - if(context.startsWith("/")) { - context = context.substring(1); - } - BDBMap map = null; - synchronized(BDBMap.class) { - if(!bdbMaps.containsKey(context)) { - File bdbDir = new File(BDB_DIR,context); - bdbMaps.put(context,new BDBMap(context, - bdbDir.getAbsolutePath())); - } - map = (BDBMap) bdbMaps.get(context); - } - return map; - } - /** - * return the timestamp associated with the identifier argument, or now - * if no value is associated or something goes wrong. - * @param context - * @param ip - * @return timestamp string value - */ - public static String getTimestampForId(String context, String ip) { - BDBMap bdbMap = getContextMap(context); - String dateStr = bdbMap.get(ip); - return (dateStr != null) ? dateStr : Timestamp.currentTimestamp().getDateStr(); - } - - /** - * associate timestamp time with idenfier ip persistantly - * @param context - * @param ip - * @param time - */ - public static void addTimestampForId(String context, String ip, String time) { - BDBMap bdbMap = getContextMap(context); - bdbMap.put(ip, time); - } -} Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java 2008-07-15 01:46:45 UTC (rev 2452) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java 2008-07-15 01:51:52 UTC (rev 2453) @@ -29,12 +29,12 @@ import javax.servlet.http.HttpServletRequest; import org.archive.wayback.RequestParser; -import org.archive.wayback.core.BDBMap; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.BadQueryException; import org.archive.wayback.requestparser.CompositeRequestParser; import org.archive.wayback.requestparser.FormRequestParser; import org.archive.wayback.requestparser.OpenSearchRequestParser; +import org.archive.wayback.util.bdb.BDBMap; import org.archive.wayback.webapp.AccessPoint; /** Copied: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/bdb/BDBMap.java (from rev 2452, trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java) =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/bdb/BDBMap.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/bdb/BDBMap.java 2008-07-15 01:51:52 UTC (rev 2453) @@ -0,0 +1,171 @@ +/* + * Created on 2006-apr-05 + * + * Copyright (C) 2006 Royal Library of Sweden. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +package org.archive.wayback.util.bdb; + +import java.io.File; +import java.io.UnsupportedEncodingException; +import java.util.Properties; + +import org.archive.wayback.util.Timestamp; + +import com.sleepycat.je.Database; +import com.sleepycat.je.DatabaseConfig; +import com.sleepycat.je.DatabaseEntry; +import com.sleepycat.je.DatabaseException; +import com.sleepycat.je.Environment; +import com.sleepycat.je.EnvironmentConfig; +import com.sleepycat.je.LockMode; +import com.sleepycat.je.OperationStatus; + +/** + * Generic class for simple key-value pair lookup using BDBJE. + * + * @author osk...@kb... + * @version $Date$, $Revision$ + */ +public class BDBMap { + + // Acts as a mapping between an ID and a timestamp to surf at. + // The dir should probably be configurable somehow. + private static String BDB_DIR = System.getProperty("java.io.tmpdir") + + "/wayback/bdb"; + private static Properties bdbMaps = new Properties(); + + protected Environment env = null; + protected Database db = null; + protected String name; + protected String dir; + + /** + * consturctor + * @param name of database + * @param dir path of directory where dbd files should be stored. The + * directory is created if it does not exist. + */ + public BDBMap(String name, String dir) { + this.name = name; + this.dir = dir; + init(); + } + + protected void init() { + try { + EnvironmentConfig envConf = new EnvironmentConfig(); + envConf.setAllowCreate(true); + File envDir = new File(dir); + if (!envDir.exists()) + envDir.mkdirs(); + env = new Environment(envDir, envConf); + + DatabaseConfig dbConf = new DatabaseConfig(); + dbConf.setAllowCreate(true); + dbConf.setSortedDuplicates(false); + db = env.openDatabase(null, name, dbConf); + } catch (DatabaseException e) { + e.printStackTrace(); + } + } + + /** + * persistantly store key-value pair + * @param keyStr + * @param valueStr + */ + public void put(String keyStr, String valueStr) { + try { + DatabaseEntry key = new DatabaseEntry(keyStr.getBytes("UTF-8")); + DatabaseEntry data = new DatabaseEntry(valueStr.getBytes("UTF-8")); + db.put(null, key, data); + } catch (DatabaseException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + + /** + * retrieve the value assoicated with keyStr from persistant storage + * @param keyStr + * @return String value associated with key, or null if no key is found + * or an error occurs + */ + public String get(String keyStr) { + String result = null; + try { + DatabaseEntry key = new DatabaseEntry(keyStr.getBytes("UTF-8")); + DatabaseEntry data = new DatabaseEntry(); + if (db.get(null, key, data, LockMode.DEFAULT) == + OperationStatus.SUCCESS) { + + byte[] bytes = data.getData(); + result = new String(bytes, "UTF-8"); + } + } catch (DatabaseException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return result; + } + + /** + * @param context + * @return singleton BDBMap for the context + */ + public static BDBMap getContextMap(String context) { + if(context == null) context = ""; + if(context.startsWith("/")) { + context = context.substring(1); + } + BDBMap map = null; + synchronized(BDBMap.class) { + if(!bdbMaps.containsKey(context)) { + File bdbDir = new File(BDB_DIR,context); + bdbMaps.put(context,new BDBMap(context, + bdbDir.getAbsolutePath())); + } + map = (BDBMap) bdbMaps.get(context); + } + return map; + } + /** + * return the timestamp associated with the identifier argument, or now + * if no value is associated or something goes wrong. + * @param context + * @param ip + * @return timestamp string value + */ + public static String getTimestampForId(String context, String ip) { + BDBMap bdbMap = getContextMap(context); + String dateStr = bdbMap.get(ip); + return (dateStr != null) ? dateStr : Timestamp.currentTimestamp().getDateStr(); + } + + /** + * associate timestamp time with idenfier ip persistantly + * @param context + * @param ip + * @param time + */ + public static void addTimestampForId(String context, String ip, String time) { + BDBMap bdbMap = getContextMap(context); + bdbMap.put(ip, time); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:46:35
|
Revision: 2452 http://archive-access.svn.sourceforge.net/archive-access/?rev=2452&view=rev Author: bradtofel Date: 2008-07-14 18:46:45 -0700 (Mon, 14 Jul 2008) Log Message: ----------- BUGFIX: missed changing synchronization class during refactor. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java 2008-07-15 01:45:01 UTC (rev 2451) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java 2008-07-15 01:46:45 UTC (rev 2452) @@ -135,7 +135,7 @@ context = context.substring(1); } BDBMap map = null; - synchronized(Timestamp.class) { + synchronized(BDBMap.class) { if(!bdbMaps.containsKey(context)) { File bdbDir = new File(BDB_DIR,context); bdbMaps.put(context,new BDBMap(context, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:44:54
|
Revision: 2451 http://archive-access.svn.sourceforge.net/archive-access/?rev=2451&view=rev Author: bradtofel Date: 2008-07-14 18:45:01 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR: Timestamp package change: org.archive.wayback.core => org.archive.wayback.util Added Paths: ----------- trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/util/TimestampTest.java Removed Paths: ------------- trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/core/TimestampTest.java Deleted: trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/core/TimestampTest.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/core/TimestampTest.java 2008-07-15 01:40:47 UTC (rev 2450) +++ trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/core/TimestampTest.java 2008-07-15 01:45:01 UTC (rev 2451) @@ -1,93 +0,0 @@ -/* TimestampTest - * - * $Id$ - * - * Created on 6:44:30 PM Jan 11, 2006. - * - * Copyright (C) 2006 Internet Archive. - * - * This file is part of wayback. - * - * wayback is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * any later version. - * - * wayback is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser Public License for more details. - * - * You should have received a copy of the GNU Lesser Public License - * along with wayback; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.archive.wayback.core; - -import java.util.Calendar; - -import junit.framework.TestCase; - -import org.archive.wayback.core.Timestamp; - -/** - * - * - * @author brad - * @version $Date$, $Revision$ - */ -public class TimestampTest extends TestCase { - /** - * run several padding tests - */ - public void testPadDateStr() { - - String curYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); - - assertEquals("padStart '1'","19960101000000",Timestamp.padStartDateStr("1")); - assertEquals("padEnd '1'","19991231235959",Timestamp.padEndDateStr("1")); - assertEquals("padStart '2'","20000101000000",Timestamp.padStartDateStr("2")); - assertEquals("padEnd",curYear + "1231235959",Timestamp.padEndDateStr("2")); - assertEquals("padEnd",curYear + "1231235959",Timestamp.padEndDateStr("3")); - assertEquals("padEnd","20061231235959",Timestamp.padEndDateStr("2006")); - assertEquals("padEnd","20061231235959",Timestamp.padEndDateStr("200613")); - assertEquals("padEnd","20071231235959",Timestamp.padEndDateStr("2007")); - - - // day of month stuff: - assertEquals("padEnd","20060131235959",Timestamp.padEndDateStr("200601")); - assertEquals("padEnd","20060228235959",Timestamp.padEndDateStr("200602")); - assertEquals("padEnd","20060331235959",Timestamp.padEndDateStr("200603")); - assertEquals("padEnd","20060430235959",Timestamp.padEndDateStr("200604")); - assertEquals("padEnd","20060430235959",Timestamp.padEndDateStr("2006044")); - - assertEquals("padEnd","20050228235959",Timestamp.padEndDateStr("200502")); - assertEquals("padEnd","20040229235959",Timestamp.padEndDateStr("200402")); - assertEquals("padEnd","20030228235959",Timestamp.padEndDateStr("200302")); - - assertEquals("padEnd","19960229235959",Timestamp.padEndDateStr("199602")); - assertEquals("padStart","19960201000000",Timestamp.padStartDateStr("199602")); - - assertEquals("padStart","19960101000000",Timestamp.padStartDateStr("19960")); - assertEquals("padEnd","19960930235959",Timestamp.padEndDateStr("19960")); - - assertEquals("padStart","19961001000000",Timestamp.padStartDateStr("19961")); - assertEquals("padEnd","19961231235959",Timestamp.padEndDateStr("19961")); - - assertEquals("padStart","19961001000000",Timestamp.padStartDateStr("19962")); - assertEquals("padEnd","19961231235959",Timestamp.padEndDateStr("19962")); - - assertEquals("padStart","19960101000050",Timestamp.padStartDateStr("19960101000060")); - assertEquals("padEnd","19960101000050",Timestamp.padEndDateStr("19960101000060")); - - - } - /** - * - */ - public void testConstructors() { - int sse = 1147986348; - String dateSpec = "20060518210548"; - assertEquals("bad fromSSe",dateSpec,Timestamp.fromSse(sse).getDateStr()); - } -} Copied: trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/util/TimestampTest.java (from rev 2174, trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/core/TimestampTest.java) =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/util/TimestampTest.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/util/TimestampTest.java 2008-07-15 01:45:01 UTC (rev 2451) @@ -0,0 +1,93 @@ +/* TimestampTest + * + * $Id$ + * + * Created on 6:44:30 PM Jan 11, 2006. + * + * Copyright (C) 2006 Internet Archive. + * + * This file is part of wayback. + * + * wayback is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * any later version. + * + * wayback is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser Public License for more details. + * + * You should have received a copy of the GNU Lesser Public License + * along with wayback; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.archive.wayback.util; + +import java.util.Calendar; + +import junit.framework.TestCase; + +import org.archive.wayback.util.Timestamp; + +/** + * + * + * @author brad + * @version $Date$, $Revision$ + */ +public class TimestampTest extends TestCase { + /** + * run several padding tests + */ + public void testPadDateStr() { + + String curYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); + + assertEquals("padStart '1'","19960101000000",Timestamp.padStartDateStr("1")); + assertEquals("padEnd '1'","19991231235959",Timestamp.padEndDateStr("1")); + assertEquals("padStart '2'","20000101000000",Timestamp.padStartDateStr("2")); + assertEquals("padEnd",curYear + "1231235959",Timestamp.padEndDateStr("2")); + assertEquals("padEnd",curYear + "1231235959",Timestamp.padEndDateStr("3")); + assertEquals("padEnd","20061231235959",Timestamp.padEndDateStr("2006")); + assertEquals("padEnd","20061231235959",Timestamp.padEndDateStr("200613")); + assertEquals("padEnd","20071231235959",Timestamp.padEndDateStr("2007")); + + + // day of month stuff: + assertEquals("padEnd","20060131235959",Timestamp.padEndDateStr("200601")); + assertEquals("padEnd","20060228235959",Timestamp.padEndDateStr("200602")); + assertEquals("padEnd","20060331235959",Timestamp.padEndDateStr("200603")); + assertEquals("padEnd","20060430235959",Timestamp.padEndDateStr("200604")); + assertEquals("padEnd","20060430235959",Timestamp.padEndDateStr("2006044")); + + assertEquals("padEnd","20050228235959",Timestamp.padEndDateStr("200502")); + assertEquals("padEnd","20040229235959",Timestamp.padEndDateStr("200402")); + assertEquals("padEnd","20030228235959",Timestamp.padEndDateStr("200302")); + + assertEquals("padEnd","19960229235959",Timestamp.padEndDateStr("199602")); + assertEquals("padStart","19960201000000",Timestamp.padStartDateStr("199602")); + + assertEquals("padStart","19960101000000",Timestamp.padStartDateStr("19960")); + assertEquals("padEnd","19960930235959",Timestamp.padEndDateStr("19960")); + + assertEquals("padStart","19961001000000",Timestamp.padStartDateStr("19961")); + assertEquals("padEnd","19961231235959",Timestamp.padEndDateStr("19961")); + + assertEquals("padStart","19961001000000",Timestamp.padStartDateStr("19962")); + assertEquals("padEnd","19961231235959",Timestamp.padEndDateStr("19962")); + + assertEquals("padStart","19960101000050",Timestamp.padStartDateStr("19960101000060")); + assertEquals("padEnd","19960101000050",Timestamp.padEndDateStr("19960101000060")); + + + } + /** + * + */ + public void testConstructors() { + int sse = 1147986348; + String dateSpec = "20060518210548"; + assertEquals("bad fromSSe",dateSpec,Timestamp.fromSse(sse).getDateStr()); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:40:37
|
Revision: 2450 http://archive-access.svn.sourceforge.net/archive-access/?rev=2450&view=rev Author: bradtofel Date: 2008-07-14 18:40:47 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR: moved all the various UIResults subclasses functionality into the base class. These are no longer needed. Removed Paths: ------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/UIReplayResult.java Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/UIReplayResult.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/UIReplayResult.java 2008-07-15 01:40:21 UTC (rev 2449) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/UIReplayResult.java 2008-07-15 01:40:47 UTC (rev 2450) @@ -1,154 +0,0 @@ -/* UIReplayResult - * - * $Id$ - * - * Created on 12:42:09 PM Apr 24, 2006. - * - * Copyright (C) 2006 Internet Archive. - * - * This file is part of wayback. - * - * wayback is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * any later version. - * - * wayback is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser Public License for more details. - * - * You should have received a copy of the GNU Lesser Public License - * along with wayback; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.archive.wayback.replay; - -import java.io.IOException; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; - -import org.archive.wayback.ResultURIConverter; -import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.core.CaptureSearchResults; -import org.archive.wayback.core.Resource; -import org.archive.wayback.core.Timestamp; -import org.archive.wayback.core.UIResults; -import org.archive.wayback.core.WaybackRequest; - -/** - * - * - * @author brad - * @version $Date$, $Revision$ - */ -public class UIReplayResult extends UIResults { - - private HttpServletRequest httpRequest; - private CaptureSearchResult result; - private CaptureSearchResults results; - private Resource resource; - - - /** - * Constructor -- chew search result summaries into format easier for JSPs - * to digest. - * - * @param httpRequest - * @param wbRequest - * @param result - * @param results - * @param resource - * @param uriConverter - * @throws IOException - */ - public UIReplayResult(HttpServletRequest httpRequest, - WaybackRequest wbRequest, CaptureSearchResult result, - CaptureSearchResults results, Resource resource, - ResultURIConverter uriConverter) - throws IOException { - - super(wbRequest,uriConverter); - this.httpRequest = httpRequest; - this.result = result; - this.results = results; - this.resource = resource; - } - - /** - * @return Returns the httpRequest. - */ - public HttpServletRequest getHttpRequest() { - return httpRequest; - } - - /** - * @return Returns the resource. - */ - public Resource getResource() { - return resource; - } - - /** - * @return Returns the result. - */ - public CaptureSearchResult getResult() { - return result; - } - - /** - * @return the original URL, or at least as close as can be rebuilt from - * the index info - */ - public String getOriginalUrl() { - return result.getOriginalUrl(); - } - /** - * @return the MimeURL key from the index of the result - */ - public String getUrlKey() { - return result.getUrlKey(); - } - /** - * @return a string offset+arc file name combo, which should uniquely - * identify this document - */ - public String getArchiveID() { - return result.getOffset() + "/" + result.getFile(); - } - /** - * @return the CaptureDate Timestamp of the result - */ - public Timestamp getCaptureTimestamp() { - return Timestamp.parseBefore(result.getCaptureTimestamp()); - } - /** - * @return the MimeType String of the result - */ - public String getMimeType() { - return result.getMimeType(); - } - - /** - * @return the Digest string of the result - */ - public String getDigest() { - return result.getDigest(); - } - - /** - * @return the HTTP Headers as Properties - */ - public Map<String,String> getHttpHeaders() { - return resource.getHttpHeaders(); - } - - public CaptureSearchResults getResults() { - return results; - } - - public void setResults(CaptureSearchResults results) { - this.results = results; - } -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:40:11
|
Revision: 2449 http://archive-access.svn.sourceforge.net/archive-access/?rev=2449&view=rev Author: bradtofel Date: 2008-07-14 18:40:21 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR: moved all the various UIResults subclasses functionality into the base class. These are no longer needed. Removed Paths: ------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UICaptureQueryResults.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UIQueryResults.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UIUrlQueryResults.java Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UICaptureQueryResults.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UICaptureQueryResults.java 2008-07-15 01:37:42 UTC (rev 2448) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UICaptureQueryResults.java 2008-07-15 01:40:21 UTC (rev 2449) @@ -1,99 +0,0 @@ -/* UICaptureQueryResults - * - * $Id$ - * - * Created on 6:14:06 PM Jun 27, 2008. - * - * Copyright (C) 2008 Internet Archive. - * - * This file is part of wayback. - * - * wayback is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * any later version. - * - * wayback is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser Public License for more details. - * - * You should have received a copy of the GNU Lesser Public License - * along with wayback; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.archive.wayback.query; - -import java.util.Iterator; - -import javax.servlet.http.HttpServletRequest; - -import org.archive.wayback.ResultURIConverter; -import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.core.CaptureSearchResults; -import org.archive.wayback.core.Timestamp; -import org.archive.wayback.core.WaybackRequest; - -/** - * - * - * @author brad - * @version $Date$, $Revision$ - */ -public class UICaptureQueryResults extends UIQueryResults { - - private CaptureSearchResults results; - private Timestamp firstResultTimestamp; - - private Timestamp lastResultTimestamp; - - /** - * Constructor -- chew search result summaries into format easier for JSPs - * to digest. - * - * @param httpRequest - * @param wbRequest - * @param results - * @param uriConverter - */ - public UICaptureQueryResults(HttpServletRequest httpRequest, - WaybackRequest wbRequest, CaptureSearchResults results, - ResultURIConverter uriConverter) { - super(httpRequest, wbRequest, results, uriConverter); - - this.firstResultTimestamp = Timestamp.parseBefore(results - .getFirstResultTimestamp()); - this.lastResultTimestamp = Timestamp.parseBefore(results - .getLastResultTimestamp()); - - this.results = results; - } - - /** - * @return first Timestamp in returned ResourceResults - */ - public Timestamp getFirstResultTimestamp() { - return firstResultTimestamp; - } - - /** - * @return last Timestamp in returned ResourceResults - */ - public Timestamp getLastResultTimestamp() { - return lastResultTimestamp; - } - - /** - * @return Iterator of CaptureSearchResult - */ - public Iterator<CaptureSearchResult> resultsIterator() { - return results.iterator(); - } - - /** - * @return Returns the results. - */ - public CaptureSearchResults getResults() { - return results; - } -} Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UIQueryResults.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UIQueryResults.java 2008-07-15 01:37:42 UTC (rev 2448) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UIQueryResults.java 2008-07-15 01:40:21 UTC (rev 2449) @@ -1,212 +0,0 @@ -/* UIQueryResults - * - * $Id$ - * - * Created on 12:03:14 PM Nov 8, 2005. - * - * Copyright (C) 2005 Internet Archive. - * - * This file is part of wayback. - * - * wayback is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * any later version. - * - * wayback is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser Public License for more details. - * - * You should have received a copy of the GNU Lesser Public License - * along with wayback; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.archive.wayback.query; - -import java.util.Date; - -import javax.servlet.http.HttpServletRequest; - -import org.archive.wayback.ResultURIConverter; -import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.core.SearchResults; -import org.archive.wayback.core.Timestamp; -import org.archive.wayback.core.UIResults; -import org.archive.wayback.core.WaybackRequest; - -/** - * Abstraction class to provide a single, (hopefully) simpler interface to - * query results for UI JSPs. Handles slight massaging of SearchResults (to - * fix zero-based/one-based numbers) URI fixup and creation for result pages, - * and later may provide more functionality for dividing results into columns, - * again to simplify UI JSPs. - * - * @author brad - * @version $Date$, $Revision$ - */ -public class UIQueryResults extends UIResults { - - private String searchUrl; - - private Timestamp startTimestamp; - - private Timestamp endTimestamp; - - private Timestamp exactRequestedTimestamp; - - private long resultsReturned; - private long resultsMatching; - private long resultsPerPage; - private long firstResult; - private long lastResult; - - private int numPages; - private int curPage; - - private CaptureSearchResult result; - - /** - * Constructor -- chew search result summaries into format easier for JSPs - * to digest. - * - * @param httpRequest - * @param wbRequest - * @param results - * @param uriConverter - */ - public UIQueryResults(HttpServletRequest httpRequest, - WaybackRequest wbRequest, SearchResults results, - ResultURIConverter uriConverter) { - super(wbRequest,uriConverter); - this.searchUrl = wbRequest.getRequestUrl(); - this.startTimestamp = Timestamp.parseBefore(results. - getFilter(WaybackRequest.REQUEST_START_DATE)); - this.endTimestamp = Timestamp.parseAfter(results.getFilter( - WaybackRequest.REQUEST_END_DATE)); - - this.resultsReturned = results.getReturnedCount(); - this.resultsMatching = results.getMatchingCount(); - this.resultsPerPage = results.getNumRequested(); - this.firstResult = results.getFirstReturned() + 1; - this.lastResult = ((firstResult - 1) + resultsReturned); - this.exactRequestedTimestamp = Timestamp.parseAfter( - wbRequest.getReplayTimestamp()); - // calculate total pages: - numPages = (int) Math.ceil((double)resultsMatching/(double)resultsPerPage); - curPage = (int) Math.floor(((double)(firstResult-1))/(double)resultsPerPage) + 1; - - } - - /** - * @return Timestamp end cutoff requested by user - */ - public Timestamp getEndTimestamp() { - return endTimestamp; - } - - /** - * @return URL or URL prefix requested by user - */ - public String getSearchUrl() { - return searchUrl; - } - - /** - * @return Timestamp start cutoff requested by user - */ - public Timestamp getStartTimestamp() { - return startTimestamp; - } - - /** - * @param timestamp - * @return Date for the timestamp string - */ - public Date timestampToDate(String timestamp) { - return new Timestamp(timestamp).getDate(); - } - - /** - * @param result - * @return Date representing captureDate of SearchResult result - */ - public Date resultToDate(CaptureSearchResult result) { - return result.getCaptureDate(); - } - - /** - * @return Returns the firstResult. - */ - public long getFirstResult() { - return firstResult; - } - - /** - * @return Returns the resultsMatching. - */ - public long getResultsMatching() { - return resultsMatching; - } - - /** - * @return Returns the resultsPerPage. - */ - public long getResultsPerPage() { - return resultsPerPage; - } - - /** - * @return Returns the resultsReturned. - */ - public long getResultsReturned() { - return resultsReturned; - } - - /** - * @return Returns the curPage. - */ - public int getCurPage() { - return curPage; - } - - /** - * @return Returns the numPages. - */ - public int getNumPages() { - return numPages; - } - - /** - * @param pageNum - * @return String URL which will drive browser to search results for a - * different page of results for the same query - */ - public String urlForPage(int pageNum) { - WaybackRequest wbRequest = getWbRequest(); - return wbRequest.getContextPrefix() + "query?" + - wbRequest.getQueryArguments(pageNum); - } - - /** - * @return Returns the lastResult. - */ - public long getLastResult() { - return lastResult; - } - - /** - * @return Returns the exactRequestedTimestamp. - */ - public Timestamp getExactRequestedTimestamp() { - return exactRequestedTimestamp; - } - - public CaptureSearchResult getResult() { - return result; - } - - public void setResult(CaptureSearchResult result) { - this.result = result; - } -} Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UIUrlQueryResults.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UIUrlQueryResults.java 2008-07-15 01:37:42 UTC (rev 2448) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/UIUrlQueryResults.java 2008-07-15 01:40:21 UTC (rev 2449) @@ -1,76 +0,0 @@ -/* UIUrlQueryResults - * - * $Id$ - * - * Created on 6:01:39 PM Jun 27, 2008. - * - * Copyright (C) 2008 Internet Archive. - * - * This file is part of wayback. - * - * wayback is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * any later version. - * - * wayback is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser Public License for more details. - * - * You should have received a copy of the GNU Lesser Public License - * along with wayback; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.archive.wayback.query; - -import java.util.Iterator; - -import javax.servlet.http.HttpServletRequest; - -import org.archive.wayback.ResultURIConverter; -import org.archive.wayback.core.UrlSearchResult; -import org.archive.wayback.core.UrlSearchResults; -import org.archive.wayback.core.WaybackRequest; - -/** - * - * - * @author brad - * @version $Date$, $Revision$ - */ -public class UIUrlQueryResults extends UIQueryResults { - - private UrlSearchResults results; - - /** - * Constructor -- chew search result summaries into format easier for JSPs - * to digest. - * - * @param httpRequest - * @param wbRequest - * @param results - * @param uriConverter - */ - public UIUrlQueryResults(HttpServletRequest httpRequest, - WaybackRequest wbRequest, UrlSearchResults results, - ResultURIConverter uriConverter) { - super(httpRequest, wbRequest, results, uriConverter); - - this.results = results; - } - - /** - * @return Iterator of ResourceResults - */ - public Iterator<UrlSearchResult> resultsIterator() { - return results.iterator(); - } - - /** - * @return Returns the results. - */ - public UrlSearchResults getResults() { - return results; - } -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:37:32
|
Revision: 2448 http://archive-access.svn.sourceforge.net/archive-access/?rev=2448&view=rev Author: bradtofel Date: 2008-07-14 18:37:42 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR: Timestamp package change: org.archive.wayback.core => org.archive.wayback.util Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ExternalExcluder.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ui/AdministrativeExclusionRule.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ui/AdministrativeExclusionServlet.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDatePrefixQueryRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDateRangeQueryRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDatePrefixQueryRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDateRangeQueryRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/CaptureSearchResults.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/SearchResult.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/WaybackRequest.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixReplayRenderer.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/liveweb/LiveWebCache.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsPartitioner.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsPartitionsFactory.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsTimelinePartitionsFactory.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/BaseRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/FormRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/LocalResourceIndex.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/NutchResourceIndex.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/DateRangeFilter.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/EndDateFilter.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/StartDateFilter.java Added Paths: ----------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/Timestamp.java Removed Paths: ------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ExternalExcluder.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ExternalExcluder.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ExternalExcluder.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -25,8 +25,8 @@ package org.archive.wayback.accesscontrol; import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.util.ObjectFilter; +import org.archive.wayback.util.Timestamp; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ui/AdministrativeExclusionRule.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ui/AdministrativeExclusionRule.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ui/AdministrativeExclusionRule.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -29,7 +29,7 @@ import java.net.URLEncoder; import java.text.ParseException; -import org.archive.wayback.core.Timestamp; +import org.archive.wayback.util.Timestamp; /** * Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ui/AdministrativeExclusionServlet.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ui/AdministrativeExclusionServlet.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/ui/AdministrativeExclusionServlet.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -36,8 +36,8 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.httpclient.URIException; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.surt.SURTTokenizer; +import org.archive.wayback.util.Timestamp; import org.archive.wayback.webapp.ServletRequestContext; import com.sleepycat.je.DatabaseException; Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDatePrefixQueryRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDatePrefixQueryRequestParser.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDatePrefixQueryRequestParser.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -27,9 +27,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.requestparser.PathRequestParser; +import org.archive.wayback.util.Timestamp; /** * RequestParser implementation that extracts request info from an Archival Url Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDateRangeQueryRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDateRangeQueryRequestParser.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDateRangeQueryRequestParser.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -27,9 +27,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.requestparser.PathRequestParser; +import org.archive.wayback.util.Timestamp; /** * RequestParser implementation that extracts request info from an Archival Url Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDatePrefixQueryRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDatePrefixQueryRequestParser.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDatePrefixQueryRequestParser.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -27,9 +27,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.requestparser.PathRequestParser; +import org.archive.wayback.util.Timestamp; /** * RequestParser implementation that extracts request info from an Archival Url Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDateRangeQueryRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDateRangeQueryRequestParser.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDateRangeQueryRequestParser.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -27,9 +27,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.requestparser.PathRequestParser; +import org.archive.wayback.util.Timestamp; /** * RequestParser implementation that extracts request info from an Archival Url Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -27,9 +27,9 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.requestparser.PathRequestParser; +import org.archive.wayback.util.Timestamp; /** * RequestParser implementation that extracts request info from a Replay Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -23,6 +23,8 @@ import java.io.UnsupportedEncodingException; import java.util.Properties; +import org.archive.wayback.util.Timestamp; + import com.sleepycat.je.Database; import com.sleepycat.je.DatabaseConfig; import com.sleepycat.je.DatabaseEntry; Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/CaptureSearchResults.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/CaptureSearchResults.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/CaptureSearchResults.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -29,6 +29,7 @@ import java.util.Iterator; import org.archive.wayback.exception.AnchorWindowTooSmallException; +import org.archive.wayback.util.Timestamp; /** * Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/SearchResult.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/SearchResult.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/SearchResult.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -28,6 +28,8 @@ import java.util.HashMap; import java.util.Map; +import org.archive.wayback.util.Timestamp; + /** * * Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -1,459 +0,0 @@ -/* Timestamp - * - * Created on 2005/10/18 14:00:00 - * - * Copyright (C) 2005 Internet Archive. - * - * This file is part of the Wayback Machine (crawler.archive.org). - * - * Wayback Machine is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * any later version. - * - * Wayback Machine is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser Public License for more details. - * - * You should have received a copy of the GNU Lesser Public License - * along with Wayback Machine; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -package org.archive.wayback.core; - -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.SimpleTimeZone; -import java.util.TimeZone; - - -/** - * Represents a moment in time as a 14-digit string, and interally as a Date. - * - * @author Brad Tofel - * @version $Date$, $Revision$ - */ -public class Timestamp { - - private final static String LOWER_TIMESTAMP_LIMIT = "10000000000000"; - private final static String UPPER_TIMESTAMP_LIMIT = "29991939295959"; - private final static String YEAR_LOWER_LIMIT = "1996"; - private final static String YEAR_UPPER_LIMIT = - String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); - private final static String MONTH_LOWER_LIMIT = "01"; - private final static String MONTH_UPPER_LIMIT = "12"; - private final static String DAY_LOWER_LIMIT = "01"; - private final static String HOUR_UPPER_LIMIT = "23"; - private final static String HOUR_LOWER_LIMIT = "00"; - private final static String MINUTE_UPPER_LIMIT = "59"; - private final static String MINUTE_LOWER_LIMIT = "00"; - private final static String SECOND_UPPER_LIMIT = "59"; - private final static String SECOND_LOWER_LIMIT = "00"; - - private final static int SSE_1996 = 820454400; - - private final static String[] months = { "Jan", "Feb", "Mar", "Apr", "May", - "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; - - private String dateStr = null; - private Date date = null; - - /** - * Constructor - */ - public Timestamp() { - super(); - } - - /** - * Construct and initialize structure from a 14-digit String timestamp. If - * the argument is too short, or specifies an invalid timestamp, cleanup - * will be attempted to create the earliest legal timestamp given the input. - * @param dateStr - */ - public Timestamp(final String dateStr) { - super(); - - Calendar cal = dateStrToCalendar(dateStr); - setDate(cal.getTime()); - } - - /** - * Construct and initialize structure from an integer number of seconds - * since the epoch. - * @param sse - */ - public Timestamp(final int sse) { - super(); - setSse(sse); - } - - /** - * Construct and initialize structure from an Date - * @param date - */ - public Timestamp(final Date date) { - super(); - setDate(date); - } - - /** - * set internal structure using Date argument - * @param date - */ - public void setDate(final Date date) { - this.date = (Date) date.clone(); - Calendar cal = getCalendar(); - cal.setTime(this.date); - dateStr = calendarToDateStr(cal); - } - - - /** - * @return Date for this Timestamp - */ - public Date getDate() { - return date; - } - - /** - * set internal structure using seconds since the epoch integer argument - * @param sse - */ - public void setSse(final int sse) { - setDate(new Date(((long)sse) * 1000)); - } - - /** - * initialize interal data structures for this Timestamp from the 14-digit - * argument. Will clean up timestamp as needed to yield the ealiest - * possible timestamp given the possible partial or wrong argument. - * - * @param dateStr - */ - public void setDateStr(String dateStr) { - Calendar cal = dateStrToCalendar(dateStr); - setDate(cal.getTime()); - } - - /** - * @return the 14-digit String representation of this Timestamp. - */ - - public String getDateStr() { - return dateStr; - } - - /** - * @return the integer number of seconds since epoch represented by this - * Timestamp. - */ - public int sse() { - return Math.round(date.getTime() / 1000); - } - - /** - * function that calculates integer seconds between this records - * timeStamp and the arguments timeStamp. result is the absolute number of - * seconds difference. - * - * @param otherTimeStamp - * @return int absolute seconds between the argument and this records - * timestamp. - */ - public int absDistanceFromTimestamp(final Timestamp otherTimeStamp) { - return Math.abs(distanceFromTimestamp(otherTimeStamp)); - } - - /** - * function that calculates integer seconds between this records - * timeStamp and the arguments timeStamp. result is negative if this records - * timeStamp is less than the argument, positive if it is greater, and 0 if - * the same. - * - * @param otherTimeStamp - * @return int milliseconds - */ - public int distanceFromTimestamp(final Timestamp otherTimeStamp) { - return otherTimeStamp.sse() - sse(); - } - - /** - * @return the year portion(first 4 digits) of this Timestamp - */ - public String getYear() { - return this.dateStr.substring(0, 4); - } - - /** - * @return the month portion(digits 5-6) of this Timestamp - */ - public String getMonth() { - return this.dateStr.substring(4, 6); - } - - /** - * @return the day portion(digits 7-8) of this Timestamp - */ - public String getDay() { - return this.dateStr.substring(6, 8); - } - - /** - * @return user friendly String representation of the date of this - * Timestamp. eg: "Jan 13, 1999" - */ - public String prettyDate() { - String year = dateStr.substring(0, 4); - String month = dateStr.substring(4, 6); - String day = dateStr.substring(6, 8); - int monthInt = Integer.parseInt(month) - 1; - String prettyMonth = "UNK"; - if ((monthInt >= 0) && (monthInt < months.length)) { - prettyMonth = months[monthInt]; - } - return prettyMonth + " " + day + ", " + year; - } - - /** - * @return user friendly String representation of the Time of this - * Timestamp. - */ - public String prettyTime() { - return dateStr.substring(8, 10) + ":" + dateStr.substring(10, 12) + ":" - + dateStr.substring(12, 14); - } - - /** - * @return user friendly String representation of the Date and Time of this - * Timestamp. - */ - public String prettyDateTime() { - return prettyDate() + " " + prettyTime(); - } - - /* - * - * ALL STATIC METHOD BELOW HERE: - * ============================= - * - */ - - private static String frontZeroPad(final String input, final int digits) { - int missing = digits - input.length(); - String padded = ""; - for(int i = 0; i < missing; i++) { - padded += "0"; - } - padded += input; - return padded; - } - private static String frontZeroPad(final int input, final int digits) { - return frontZeroPad(String.valueOf(input) ,digits); - } - - private static Calendar getCalendar() { - String[] ids = TimeZone.getAvailableIDs(0); - if (ids.length < 1) { - return null; - } - TimeZone gmt = new SimpleTimeZone(0, ids[0]); - return new GregorianCalendar(gmt); - } - - /** - * cleanup the dateStr argument assuming earliest values, and return a - * GMT calendar set to the time described by the dateStr. - * - * @param dateStr - * @return Calendar - */ - public static Calendar dateStrToCalendar(final String dateStr) { - - String paddedDateStr = padStartDateStr(dateStr); - - Calendar cal = getCalendar(); - int iYear = Integer.parseInt(paddedDateStr.substring(0,4)); - int iMonth = Integer.parseInt(paddedDateStr.substring(4,6)); - int iDay = Integer.parseInt(paddedDateStr.substring(6,8)); - int iHour = Integer.parseInt(paddedDateStr.substring(8,10)); - int iMinute = Integer.parseInt(paddedDateStr.substring(10,12)); - int iSecond = Integer.parseInt(paddedDateStr.substring(12,14)); - - cal.set(Calendar.YEAR,iYear); - cal.set(Calendar.MONTH,iMonth - 1); - cal.set(Calendar.DAY_OF_MONTH,iDay); - cal.set(Calendar.HOUR_OF_DAY,iHour); - cal.set(Calendar.MINUTE,iMinute); - cal.set(Calendar.SECOND,iSecond); - - return cal; - } - private static String calendarToDateStr(Calendar cal) { - return frontZeroPad(cal.get(Calendar.YEAR),4) + - frontZeroPad(cal.get(Calendar.MONTH) + 1 ,2) + - frontZeroPad(cal.get(Calendar.DAY_OF_MONTH),2) + - frontZeroPad(cal.get(Calendar.HOUR_OF_DAY),2) + - frontZeroPad(cal.get(Calendar.MINUTE),2) + - frontZeroPad(cal.get(Calendar.SECOND),2); - } - - - private static String padDigits(String input, String min, String max, - String missing) { - if(input == null) { - input = ""; - } - String finalDigits = ""; - for(int i = 0; i < missing.length(); i++) { - if(input.length() <= i) { - finalDigits = finalDigits + missing.charAt(i); - } else { - char inc = input.charAt(i); - char maxc = max.charAt(i); - char minc = min.charAt(i); - if(inc > maxc) { - inc = maxc; - } else if (inc < minc) { - inc = minc; - } - finalDigits = finalDigits + inc; - } - } - - return finalDigits; - } - - private static String boundDigits(String input, String min, String max) { - String bounded = input; - if(input.compareTo(min) < 0) { - bounded = min; - } else if(input.compareTo(max) > 0) { - bounded = max; - } - return bounded; - } - - // check each of YEAR, MONTH, DAY, HOUR, MINUTE, SECOND to make sure they - // are not too large or too small, factoring in the month, leap years, etc. - private static String boundTimestamp(String input) { - String boundTimestamp = ""; - if(input == null) { - input = ""; - } - // MAKE SURE THE YEAR IS WITHIN LEGAL BOUNDARIES: - Calendar tmpCal = getCalendar(); - tmpCal.setTime(new Date()); - - boundTimestamp = boundDigits(input.substring(0,4), - YEAR_LOWER_LIMIT,YEAR_UPPER_LIMIT); - - // MAKE SURE THE MONTH IS WITHIN LEGAL BOUNDARIES: - boundTimestamp += boundDigits(input.substring(4,6), - MONTH_LOWER_LIMIT,MONTH_UPPER_LIMIT); - - // NOW DEPENDING ON THE YEAR + MONTH, MAKE SURE THE DAY OF MONTH IS - // WITHIN LEGAL BOUNDARIES: - Calendar cal = getCalendar(); - cal.clear(); - int iYear = Integer.parseInt(boundTimestamp.substring(0,4)); - int iMonth = Integer.parseInt(boundTimestamp.substring(4,6)); - cal.set(Calendar.YEAR,iYear); - cal.set(Calendar.MONTH,iMonth - 1); - cal.set(Calendar.DAY_OF_MONTH,1); - - String maxDayOfMonth = String.valueOf(cal.getActualMaximum(Calendar.DAY_OF_MONTH)); - if(maxDayOfMonth.length() == 1) { - maxDayOfMonth = "0" + maxDayOfMonth; - } - boundTimestamp += boundDigits(input.substring(6,8), - DAY_LOWER_LIMIT,maxDayOfMonth); - - // MAKE SURE THE HOUR IS WITHIN LEGAL BOUNDARIES: - boundTimestamp += boundDigits(input.substring(8,10), - HOUR_LOWER_LIMIT,HOUR_UPPER_LIMIT); - - // MAKE SURE THE MINUTE IS WITHIN LEGAL BOUNDARIES: - boundTimestamp += boundDigits(input.substring(10,12), - MINUTE_LOWER_LIMIT,MINUTE_UPPER_LIMIT); - - // MAKE SURE THE SECOND IS WITHIN LEGAL BOUNDARIES: - boundTimestamp += boundDigits(input.substring(12,14), - SECOND_LOWER_LIMIT,SECOND_UPPER_LIMIT); - - return boundTimestamp; - } - - /** - * clean up timestamp argument assuming latest possible values for missing - * or bogus digits. - * @param timestamp String - * @return String - */ - public static String padEndDateStr(String timestamp) { - return boundTimestamp(padDigits(timestamp,LOWER_TIMESTAMP_LIMIT, - UPPER_TIMESTAMP_LIMIT,UPPER_TIMESTAMP_LIMIT)); - } - - /** - * clean up timestamp argument assuming earliest possible values for missing - * or bogus digits. - * @param timestamp String - * @return String - */ - public static String padStartDateStr(String timestamp) { - return boundTimestamp(padDigits(timestamp,LOWER_TIMESTAMP_LIMIT, - UPPER_TIMESTAMP_LIMIT,LOWER_TIMESTAMP_LIMIT)); - } - - /** - * @param dateStr - * @return Timestamp object representing the earliest date represented by - * the (possibly) partial digit-string argument. - */ - public static Timestamp parseBefore(final String dateStr) { - return new Timestamp(padStartDateStr(dateStr)); - } - - /** - * @param dateStr - * @return Timestamp object representing the latest date represented by the - * (possibly) partial digit-string argument. - */ - public static Timestamp parseAfter(final String dateStr) { - return new Timestamp(padEndDateStr(dateStr)); - } - - /** - * @param sse - * @return Timestamp object representing the seconds since epoch argument. - */ - public static Timestamp fromSse(final int sse) { - //String dateStr = ArchiveUtils.get14DigitDate(sse * 1000); - return new Timestamp(sse); - } - - /** - * @return Timestamp object representing the current date. - */ - public static Timestamp currentTimestamp() { - return new Timestamp(new Date()); - } - - /** - * @return Timestamp object representing the latest possible date. - */ - public static Timestamp latestTimestamp() { - return currentTimestamp(); - } - - /** - * @return Timestamp object representing the earliest possible date. - */ - public static Timestamp earliestTimestamp() { - return new Timestamp(SSE_1996); - } -} Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/WaybackRequest.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/WaybackRequest.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/WaybackRequest.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -38,6 +38,7 @@ import org.archive.wayback.requestparser.OpenSearchRequestParser; import org.archive.wayback.util.ObjectFilter; import org.archive.wayback.util.StringFormatter; +import org.archive.wayback.util.Timestamp; import org.archive.wayback.webapp.AccessPoint; /** Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixReplayRenderer.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixReplayRenderer.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -38,12 +38,12 @@ import org.archive.wayback.core.Resource; import org.archive.wayback.core.CaptureSearchResult; import org.archive.wayback.core.CaptureSearchResults; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.BadContentException; import org.archive.wayback.replay.HTMLPage; import org.archive.wayback.replay.HttpHeaderProcessor; import org.archive.wayback.replay.HttpHeaderOperation; +import org.archive.wayback.util.Timestamp; import org.archive.wayback.util.url.UrlOperations; /** Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixRequestParser.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixRequestParser.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -29,10 +29,10 @@ import javax.servlet.http.HttpServletRequest; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.BadQueryException; import org.archive.wayback.requestparser.BaseRequestParser; +import org.archive.wayback.util.Timestamp; import org.archive.wayback.webapp.AccessPoint; /** Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/liveweb/LiveWebCache.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/liveweb/LiveWebCache.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/liveweb/LiveWebCache.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -37,13 +37,13 @@ import org.archive.wayback.core.CaptureSearchResult; import org.archive.wayback.core.CaptureSearchResults; import org.archive.wayback.core.SearchResults; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.LiveDocumentNotAvailableException; import org.archive.wayback.exception.ResourceNotInArchiveException; import org.archive.wayback.exception.WaybackException; import org.archive.wayback.resourcestore.indexer.ARCRecordToSearchResultAdapter; import org.archive.wayback.resourcestore.resourcefile.ArcResource; +import org.archive.wayback.util.Timestamp; import org.archive.wayback.util.url.AggressiveUrlCanonicalizer; /** Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsPartitioner.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsPartitioner.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsPartitioner.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -29,8 +29,8 @@ import java.util.SimpleTimeZone; import java.util.TimeZone; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.util.Timestamp; /** * Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsPartitionsFactory.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsPartitionsFactory.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsPartitionsFactory.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -30,8 +30,8 @@ import org.archive.util.ArchiveUtils; import org.archive.wayback.core.CaptureSearchResults; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.util.Timestamp; /** * Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsTimelinePartitionsFactory.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsTimelinePartitionsFactory.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/resultspartitioner/ResultsTimelinePartitionsFactory.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -29,8 +29,8 @@ import org.archive.util.ArchiveUtils; import org.archive.wayback.core.CaptureSearchResults; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.util.Timestamp; /** * Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/BaseRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/BaseRequestParser.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/BaseRequestParser.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -29,9 +29,9 @@ import javax.servlet.http.HttpServletRequest; import org.archive.wayback.RequestParser; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.BadQueryException; +import org.archive.wayback.util.Timestamp; import org.archive.wayback.webapp.AccessPoint; /** Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/FormRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/FormRequestParser.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/FormRequestParser.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -30,8 +30,8 @@ import javax.servlet.http.HttpServletRequest; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.util.Timestamp; import org.archive.wayback.webapp.AccessPoint; /** Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/LocalResourceIndex.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/LocalResourceIndex.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/LocalResourceIndex.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -37,7 +37,6 @@ import org.archive.wayback.core.CaptureToUrlSearchResultAdapter; import org.archive.wayback.core.SearchResult; import org.archive.wayback.core.SearchResults; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.UrlSearchResult; import org.archive.wayback.core.UrlSearchResults; import org.archive.wayback.core.WaybackRequest; @@ -61,6 +60,7 @@ import org.archive.wayback.util.ObjectFilter; import org.archive.wayback.util.ObjectFilterChain; import org.archive.wayback.util.ObjectFilterIterator; +import org.archive.wayback.util.Timestamp; import org.archive.wayback.util.url.AggressiveUrlCanonicalizer; /** Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/NutchResourceIndex.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/NutchResourceIndex.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/NutchResourceIndex.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -40,13 +40,13 @@ import org.archive.wayback.core.CaptureSearchResult; import org.archive.wayback.core.CaptureSearchResults; import org.archive.wayback.core.SearchResults; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.AccessControlException; import org.archive.wayback.exception.BadQueryException; import org.archive.wayback.exception.ConfigurationException; import org.archive.wayback.exception.ResourceIndexNotAvailableException; import org.archive.wayback.exception.ResourceNotInArchiveException; +import org.archive.wayback.util.Timestamp; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; @@ -71,10 +71,10 @@ private String searchUrlBase; private DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); private DocumentBuilder builder; - private static final String NUTCH_ARCNAME = "arcname"; - private static final String NUTCH_ARCOFFSET = "arcoffset"; -// private static final String NUTCH_FILENAME = "filename"; -// private static final String NUTCH_FILEOFFSET = "fileoffset"; +// private static final String NUTCH_ARCNAME = "arcname"; +// private static final String NUTCH_ARCOFFSET = "arcoffset"; + private static final String NUTCH_FILENAME = "filename"; + private static final String NUTCH_FILEOFFSET = "fileoffset"; private static final String NUTCH_ARCDATE = "date"; // private static final String NUTCH_ARCDATE_ALT = "arcdate"; private static final String NUTCH_DIGEST = "digest"; @@ -194,11 +194,11 @@ private List<CaptureSearchResult> itemToSearchResults(Element e) throws ResourceIndexNotAvailableException { - String fileName = getNodeNutchContent(e,NUTCH_ARCNAME); + String fileName = getNodeNutchContent(e,NUTCH_FILENAME); String httpCode = NUTCH_DEFAULT_HTTP_CODE; String digest = getNodeNutchContent(e,NUTCH_DIGEST); String mimeType = getNodeNutchContent(e,NUTCH_MIME_TYPE); - String offsetStr = getNodeNutchContent(e,NUTCH_ARCOFFSET); + String offsetStr = getNodeNutchContent(e,NUTCH_FILEOFFSET); long offset = 0; if(offsetStr != null && offsetStr.length() > 0) { offset = Long.parseLong(offsetStr); Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/DateRangeFilter.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/DateRangeFilter.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/DateRangeFilter.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -25,8 +25,8 @@ package org.archive.wayback.resourceindex.filters; import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.util.ObjectFilter; +import org.archive.wayback.util.Timestamp; /** * SearchResultFilter that excludes records outside of start and end range. Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/EndDateFilter.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/EndDateFilter.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/EndDateFilter.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -25,8 +25,8 @@ package org.archive.wayback.resourceindex.filters; import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.util.ObjectFilter; +import org.archive.wayback.util.Timestamp; /** Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/StartDateFilter.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/StartDateFilter.java 2008-07-15 01:30:13 UTC (rev 2447) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filters/StartDateFilter.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -25,8 +25,8 @@ package org.archive.wayback.resourceindex.filters; import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.core.Timestamp; import org.archive.wayback.util.ObjectFilter; +import org.archive.wayback.util.Timestamp; /** * SearchResultFilter which includes all records until 1 is found before start Copied: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/Timestamp.java (from rev 2443, trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java) =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/Timestamp.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/Timestamp.java 2008-07-15 01:37:42 UTC (rev 2448) @@ -0,0 +1,459 @@ +/* Timestamp + * + * Created on 2005/10/18 14:00:00 + * + * Copyright (C) 2005 Internet Archive. + * + * This file is part of the Wayback Machine (crawler.archive.org). + * + * Wayback Machine is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * any later version. + * + * Wayback Machine is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser Public License for more details. + * + * You should have received a copy of the GNU Lesser Public License + * along with Wayback Machine; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +package org.archive.wayback.util; + +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.SimpleTimeZone; +import java.util.TimeZone; + + +/** + * Represents a moment in time as a 14-digit string, and interally as a Date. + * + * @author Brad Tofel + * @version $Date$, $Revision$ + */ +public class Timestamp { + + private final static String LOWER_TIMESTAMP_LIMIT = "10000000000000"; + private final static String UPPER_TIMESTAMP_LIMIT = "29991939295959"; + private final static String YEAR_LOWER_LIMIT = "1996"; + private final static String YEAR_UPPER_LIMIT = + String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); + private final static String MONTH_LOWER_LIMIT = "01"; + private final static String MONTH_UPPER_LIMIT = "12"; + private final static String DAY_LOWER_LIMIT = "01"; + private final static String HOUR_UPPER_LIMIT = "23"; + private final static String HOUR_LOWER_LIMIT = "00"; + private final static String MINUTE_UPPER_LIMIT = "59"; + private final static String MINUTE_LOWER_LIMIT = "00"; + private final static String SECOND_UPPER_LIMIT = "59"; + private final static String SECOND_LOWER_LIMIT = "00"; + + private final static int SSE_1996 = 820454400; + + private final static String[] months = { "Jan", "Feb", "Mar", "Apr", "May", + "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; + + private String dateStr = null; + private Date date = null; + + /** + * Constructor + */ + public Timestamp() { + super(); + } + + /** + * Construct and initialize structure from a 14-digit String timestamp. If + * the argument is too short, or specifies an invalid timestamp, cleanup + * will be attempted to create the earliest legal timestamp given the input. + * @param dateStr + */ + public Timestamp(final String dateStr) { + super(); + + Calendar cal = dateStrToCalendar(dateStr); + setDate(cal.getTime()); + } + + /** + * Construct and initialize structure from an integer number of seconds + * since the epoch. + * @param sse + */ + public Timestamp(final int sse) { + super(); + setSse(sse); + } + + /** + * Construct and initialize structure from an Date + * @param date + */ + public Timestamp(final Date date) { + super(); + setDate(date); + } + + /** + * set internal structure using Date argument + * @param date + */ + public void setDate(final Date date) { + this.date = (Date) date.clone(); + Calendar cal = getCalendar(); + cal.setTime(this.date); + dateStr = calendarToDateStr(cal); + } + + + /** + * @return Date for this Timestamp + */ + public Date getDate() { + return date; + } + + /** + * set internal structure using seconds since the epoch integer argument + * @param sse + */ + public void setSse(final int sse) { + setDate(new Date(((long)sse) * 1000)); + } + + /** + * initialize interal data structures for this Timestamp from the 14-digit + * argument. Will clean up timestamp as needed to yield the ealiest + * possible timestamp given the possible partial or wrong argument. + * + * @param dateStr + */ + public void setDateStr(String dateStr) { + Calendar cal = dateStrToCalendar(dateStr); + setDate(cal.getTime()); + } + + /** + * @return the 14-digit String representation of this Timestamp. + */ + + public String getDateStr() { + return dateStr; + } + + /** + * @return the integer number of seconds since epoch represented by this + * Timestamp. + */ + public int sse() { + return Math.round(date.getTime() / 1000); + } + + /** + * function that calculates integer seconds between this records + * timeStamp and the arguments timeStamp. result is the absolute number of + * seconds difference. + * + * @param otherTimeStamp + * @return int absolute seconds between the argument and this records + * timestamp. + */ + public int absDistanceFromTimestamp(final Timestamp otherTimeStamp) { + return Math.abs(distanceFromTimestamp(otherTimeStamp)); + } + + /** + * function that calculates integer seconds between this records + * timeStamp and the arguments timeStamp. result is negative if this records + * timeStamp is less than the argument, positive if it is greater, and 0 if + * the same. + * + * @param otherTimeStamp + * @return int milliseconds + */ + public int distanceFromTimestamp(final Timestamp otherTimeStamp) { + return otherTimeStamp.sse() - sse(); + } + + /** + * @return the year portion(first 4 digits) of this Timestamp + */ + public String getYear() { + return this.dateStr.substring(0, 4); + } + + /** + * @return the month portion(digits 5-6) of this Timestamp + */ + public String getMonth() { + return this.dateStr.substring(4, 6); + } + + /** + * @return the day portion(digits 7-8) of this Timestamp + */ + public String getDay() { + return this.dateStr.substring(6, 8); + } + + /** + * @return user friendly String representation of the date of this + * Timestamp. eg: "Jan 13, 1999" + */ + public String prettyDate() { + String year = dateStr.substring(0, 4); + String month = dateStr.substring(4, 6); + String day = dateStr.substring(6, 8); + int monthInt = Integer.parseInt(month) - 1; + String prettyMonth = "UNK"; + if ((monthInt >= 0) && (monthInt < months.length)) { + prettyMonth = months[monthInt]; + } + return prettyMonth + " " + day + ", " + year; + } + + /** + * @return user friendly String representation of the Time of this + * Timestamp. + */ + public String prettyTime() { + return dateStr.substring(8, 10) + ":" + dateStr.substring(10, 12) + ":" + + dateStr.substring(12, 14); + } + + /** + * @return user friendly String representation of the Date and Time of this + * Timestamp. + */ + public String prettyDateTime() { + return prettyDate() + " " + prettyTime(); + } + + /* + * + * ALL STATIC METHOD BELOW HERE: + * ============================= + * + */ + + private static String frontZeroPad(final String input, final int digits) { + int missing = digits - input.length(); + String padded = ""; + for(int i = 0; i < missing; i++) { + padded += "0"; + } + padded += input; + return padded; + } + private static String frontZeroPad(final int input, final int digits) { + return frontZeroPad(String.valueOf(input) ,digits); + } + + private static Calendar getCalendar() { + String[] ids = TimeZone.getAvailableIDs(0); + if (ids.length < 1) { + return null; + } + TimeZone gmt = new SimpleTimeZone(0, ids[0]); + return new GregorianCalendar(gmt); + } + + /** + * cleanup the dateStr argument assuming earliest values, and return a + * GMT calendar set to the time described by the dateStr. + * + * @param dateStr + * @return Calendar + */ + public static Calendar dateStrToCalendar(final String dateStr) { + + String paddedDateStr = padStartDateStr(dateStr); + + Calendar cal = getCalendar(); + int iYear = Integer.parseInt(paddedDateStr.substring(0,4)); + int iMonth = Integer.parseInt(paddedDateStr.substring(4,6)); + int iDay = Integer.parseInt(paddedDateStr.substring(6,8)); + int iHour = Integer.parseInt(paddedDateStr.substring(8,10)); + int iMinute = Integer.parseInt(paddedDateStr.substring(10,12)); + int iSecond = Integer.parseInt(paddedDateStr.substring(12,14)); + + cal.set(Calendar.YEAR,iYear); + cal.set(Calendar.MONTH,iMonth - 1); + cal.set(Calendar.DAY_OF_MONTH,iDay); + cal.set(Calendar.HOUR_OF_DAY,iHour); + cal.set(Calendar.MINUTE,iMinute); + cal.set(Calendar.SECOND,iSecond); + + return cal; + } + private static String calendarToDateStr(Calendar cal) { + return frontZeroPad(cal.get(Calendar.YEAR),4) + + frontZeroPad(cal.get(Calendar.MONTH) + 1 ,2) + + frontZeroPad(cal.get(Calendar.DAY_OF_MONTH),2) + + frontZeroPad(cal.get(Calendar.HOUR_OF_DAY),2) + + frontZeroPad(cal.get(Calendar.MINUTE),2) + + frontZeroPad(cal.get(Calendar.SECOND),2); + } + + + private static String padDigits(String input, String min, String max, + String missing) { + if(input == null) { + input = ""; + } + String finalDigits = ""; + for(int i = 0; i < missing.length(); i++) { + if(input.length() <= i) { + finalDigits = finalDigits + missing.charAt(i); + } else { + char inc = input.charAt(i); + char maxc = max.charAt(i); + char minc = min.charAt(i); + if(inc > maxc) { + inc = maxc; + } else if (inc < minc) { + inc = minc; + } + finalDigits = finalDigits + inc; + } + } + + return finalDigits; + } + + private static String boundDigits(String input, String min, String max) { + String bounded = input; + if(input.compareTo(min) < 0) { + bounded = min; + } else if(input.compareTo(max) > 0) { + bounded = max; + } + return bounded; + } + + // check each of YEAR, MONTH, DAY, HOUR, MINUTE, SECOND to make sure they + // are not too large or too small, factoring in the month, leap years, etc. + private static String boundTimestamp(String input) { + String boundTimestamp = ""; + if(input == null) { + input = ""; + } + // MAKE SURE THE YEAR IS WITHIN LEGAL BOUNDARIES: + Calendar tmpCal = getCalendar(); + tmpCal.setTime(new Date()); + + boundTimestamp = boundDigits(input.substring(0,4), + YEAR_LOWER_LIMIT,YEAR_UPPER_LIMIT); + + // MAKE SURE THE MONTH IS WITHIN LEGAL BOUNDARIES: + boundTimestamp += boundDigits(input.substring(4,6), + MONTH_LOWER_LIMIT,MONTH_UPPER_LIMIT); + + // NOW DEPENDING ON THE YEAR + MONTH, MAKE SURE THE DAY OF MONTH IS + // WITHIN LEGAL BOUNDARIES: + Calendar cal = getCalendar(); + cal.clear(); + int iYear = Integer.parseInt(boundTimestamp.substring(0,4)); + int iMonth = Integer.parseInt(boundTimestamp.substring(4,6)); + cal.set(Calendar.YEAR,iYear); + cal.set(Calendar.MONTH,iMonth - 1); + cal.set(Calendar.DAY_OF_MONTH,1); + + String maxDayOfMonth = String.valueOf(cal.getActualMaximum(Calendar.DAY_OF_MONTH)); + if(maxDayOfMonth.length() == 1) { + maxDayOfMonth = "0" + maxDayOfMonth; + } + boundTimestamp += boundDigits(input.substring(6,8), + DAY_LOWER_LIMIT,maxDayOfMonth); + + // MAKE SURE THE HOUR IS WITHIN LEGAL BOUNDARIES: + boundTimestamp += boundDigits(input.substring(8,10), + HOUR_LOWER_LIMIT,HOUR_UPPER_LIMIT); + + // MAKE SURE THE MINUTE IS WITHIN LEGAL BOUNDARIES: + boundTimestamp += boundDigits(input.substring(10,12), + MINUTE_LOWER_LIMIT,MINUTE_UPPER_LIMIT); + + // MAKE SURE THE SECOND IS WITHIN LEGAL BOUNDARIES: + boundTimestamp += boundDigits(input.substring(12,14), + SECOND_LOWER_LIMIT,SECOND_UPPER_LIMIT); + + return boundTimestamp; + } + + /** + * clean up timestamp argument assuming latest possible values for missing + * or bogus digits. + * @param timestamp String + * @return String + */ + public static String padEndDateStr(String timestamp) { + return boundTimestamp(padDigits(timestamp,LOWER_TIMESTAMP_LIMIT, + UPPER_TIMESTAMP_LIMIT,UPPER_TIMESTAMP_LIMIT)); + } + + /** + * clean up timestamp argument assuming earliest possible values for missing + * or bogus digits. + * @param timestamp String + * @return String + */ + public static String padStartDateStr(String timestamp) { + return boundTimestamp(padDigits(timestamp,LOWER_TIMESTAMP_LIMIT, + UPPER_TIMESTAMP_LIMIT,LOWER_TIMESTAMP_LIMIT)); + } + + /** + * @param dateStr + * @return Timestamp object representing the earliest date represented by + * the (possibly) partial digit-string argument. + */ + public static Timestamp parseBefore(final String dateStr) { + return new Timestamp(padStartDateStr(dateStr)); + } + + /** + * @param dateStr + * @return Timestamp object representing the latest date represented by the + * (possibly) partial digit-string argument. + */ + public static Timestamp parseAfter(final String dateStr) { + return new Timestamp(padEndDateStr(dateStr)); + } + + /** + * @param sse + * @return Timestamp object representing the seconds since epoch argument. + */ + public static Timestamp fromSse(final int sse) { + //String dateStr = ArchiveUtils.get14DigitDate(sse * 1000); + return new Timestamp(sse); + } + + /** + * @return Timestamp object representing the current date. + */ + public static Timestamp currentTimestamp() { + return new Timestamp(new Date()); + } + + /** + * @return Timestamp object representing the latest possible date. + */ + public static Timestamp latestTimestamp() { + return currentTimestamp(); + } + + /** + * @return Timestamp object representing the earliest possible date. + */ + public static Timestamp earliestTimestamp() { + return new Timestamp(SSE_1996); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:30:04
|
Revision: 2447 http://archive-access.svn.sourceforge.net/archive-access/?rev=2447&view=rev Author: bradtofel Date: 2008-07-14 18:30:13 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR(major) of all .jsp files to use simplified UIResults interface, instead of all the previous subclasses. Also now all .jsp files now use convenience methods on underlying objects within the UIResults. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/advanced_search.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/CSSError.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/HTMLError.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/JavaScriptError.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/XMLError.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/help.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/index.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/CalendarResults.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/HTMLCaptureResults.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/HTMLUrlResults.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/XMLCaptureResults.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/XMLUrlResults.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ArchiveComment.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ClientSideJSInsert.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Disclaimer.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/JSLessTimeline.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ResultMeta.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Timeline.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/UI-footer.jsp trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/UI-header.jsp Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/advanced_search.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/advanced_search.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/advanced_search.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -3,7 +3,7 @@ <jsp:include page="/template/UI-header.jsp" flush="true" /> <% -UIResults results = UIResults.getFromRequest(request); +UIResults results = UIResults.getGeneric(request); StringFormatter fmt = results.getFormatter(); %> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/CSSError.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/CSSError.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/CSSError.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -3,10 +3,9 @@ <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <% - -WaybackException e = (WaybackException) request.getAttribute("exception"); -UIResults results = UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); +UIResults results = UIResults.extractException(request); +WaybackException e = results.getException(); +StringFormatter fmt = results.getWbRequest().getFormatter(); response.setStatus(e.getStatus()); %> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/HTMLError.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/HTMLError.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/HTMLError.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -3,14 +3,14 @@ <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <% -WaybackException e = (WaybackException) request.getAttribute("exception"); +UIResults results = UIResults.extractException(request); +WaybackException e = results.getException(); e.setupResponse(response); %> <jsp:include page="/template/UI-header.jsp" flush="true" /> <% -UIResults results = UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); +StringFormatter fmt = results.getWbRequest().getFormatter(); %> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/JavaScriptError.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/JavaScriptError.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/JavaScriptError.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -4,9 +4,9 @@ <%@ page import="org.archive.wayback.util.StringFormatter" %> <% -WaybackException e = (WaybackException) request.getAttribute("exception"); -UIResults results = UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); +UIResults results = UIResults.extractException(request); +WaybackException e = results.getException(); +StringFormatter fmt = results.getWbRequest().getFormatter(); response.setStatus(e.getStatus()); %> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/XMLError.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/XMLError.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/exception/XMLError.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -5,9 +5,9 @@ <%@ page import="org.archive.wayback.util.StringFormatter" %> <% -WaybackException e = (WaybackException) request.getAttribute("exception"); -UIResults results = UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); +UIResults results = UIResults.extractException(request); +WaybackException e = results.getException(); +StringFormatter fmt = results.getWbRequest().getFormatter(); //response.setStatus(e.getStatus()); %> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/help.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/help.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/help.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -2,7 +2,7 @@ <%@ page import="org.archive.wayback.util.StringFormatter" %> <jsp:include page="/template/UI-header.jsp" flush="true" /> <% -UIResults results = UIResults.getFromRequest(request); +UIResults results = UIResults.getGeneric(request); StringFormatter fmt = results.getFormatter(); String url = "http://archive-access.sourceforge.net/projects/wayback/faq.html"; %> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/index.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/index.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/index.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -3,7 +3,7 @@ <%@ page import="org.archive.wayback.util.StringFormatter" %> <jsp:include page="template/UI-header.jsp" flush="true" /> <% -UIResults results = UIResults.getFromRequest(request); +UIResults results = UIResults.getGeneric(request); StringFormatter fmt = results.getFormatter(); Object names = request.getAttribute("AccessPointNames"); if(names != null) { Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/CalendarResults.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/CalendarResults.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/CalendarResults.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -5,32 +5,31 @@ <%@ page import="java.text.ParseException" %> <%@ page import="org.archive.wayback.WaybackConstants" %> <%@ page import="org.archive.wayback.core.CaptureSearchResult" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> +<%@ page import="org.archive.wayback.core.CaptureSearchResults" %> <%@ page import="org.archive.wayback.core.UIResults" %> -<%@ page import="org.archive.wayback.query.UICaptureQueryResults" %> +<%@ page import="org.archive.wayback.core.WaybackRequest" %> <%@ page import="org.archive.wayback.query.resultspartitioner.ResultsPartitionsFactory" %> <%@ page import="org.archive.wayback.query.resultspartitioner.ResultsPartition" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <jsp:include page="/template/UI-header.jsp" flush="true" /> +<jsp:include page="/template/CookieJS.jsp" flush="true" /> <% +UIResults results = UIResults.extractCaptureQuery(request); -UICaptureQueryResults results = (UICaptureQueryResults) UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); -String searchString = results.getSearchUrl(); +WaybackRequest wbRequest = results.getWbRequest(); +CaptureSearchResults cResults = results.getCaptureResults(); +StringFormatter fmt = wbRequest.getFormatter(); +String searchString = wbRequest.getRequestUrl(); -Date searchStartDate = results.getStartTimestamp().getDate(); -Date searchEndDate = results.getEndTimestamp().getDate(); -long firstResult = results.getFirstResult(); -long lastResult = results.getLastResult(); -long resultCount = results.getResultsMatching(); -//Timestamp searchStartTs = results.getStartTimestamp(); -//Timestamp searchEndTs = results.getEndTimestamp(); -//String prettySearchStart = results.prettyDateFull(searchStartTs.getDate()); -//String prettySearchEnd = results.prettyDateFull(searchEndTs.getDate()); +Date searchStartDate = wbRequest.getStartDate(); +Date searchEndDate = wbRequest.getEndDate(); +long firstResult = cResults.getFirstReturned(); +long lastResult = cResults.getReturnedCount() + firstResult; +long resultCount = cResults.getMatchingCount(); -ArrayList<ResultsPartition> partitions = ResultsPartitionsFactory.get( - results.getResults(),results.getWbRequest()); +ArrayList<ResultsPartition> partitions = + ResultsPartitionsFactory.get(cResults, wbRequest); int numPartitions = partitions.size(); %> <table border="0" cellpadding="5" width="100%" class="mainSearchBanner" cellspacing="0"> @@ -39,6 +38,13 @@ <%= fmt.format("PathQueryClassic.searchedFor",searchString) %> </td> <td align="right"> + <select onchange="SetAnchorWindow(this.value)"> + <option value="86400">1 day</option> + <option value="604800">1 week</option> + <option value="2592000">1 month</option> + <option value="31536000">1 year</option> + <option value="315360000">10 years</option> + </select> <%= fmt.format("PathQueryClassic.resultsSummary",resultCount) %> </td> </tr> @@ -108,10 +114,10 @@ CaptureSearchResult result = partitionResults.get(j); String url = result.getUrlKey(); - String captureDate = result.getCaptureTimestamp(); - Timestamp captureTS = Timestamp.parseBefore(captureDate); + String captureTimestamp = result.getCaptureTimestamp(); + Date captureDate = result.getCaptureDate(); String prettyDate = fmt.format("PathQuery.classicResultLinkText", - captureTS.getDate()); + captureDate); String origHost = result.getOriginalHost(); String MD5 = result.getDigest(); String redirectFlag = (0 == result.getRedirectUrl().compareTo("-")) @@ -134,7 +140,7 @@ } String updateStar = updated ? "*" : ""; %> - <a href="<%= replayUrl %>"><%= prettyDate %></a> <%= updateStar %><br></br> + <a onclick="SetAnchorDate('<%= captureTimestamp %>');" href="<%= replayUrl %>"><%= prettyDate %></a> <%= updateStar %><br></br> <% } @@ -153,12 +159,12 @@ <% // show page indicators: -if(results.getNumPages() > 1) { - int curPage = results.getCurPage(); +if(cResults.getNumPages() > 1) { + int curPage = cResults.getCurPageNum(); %> <hr></hr> <% - for(int i = 1; i <= results.getNumPages(); i++) { + for(int i = 1; i <= cResults.getNumPages(); i++) { if(i == curPage) { %> <b><%= i %></b> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/HTMLCaptureResults.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/HTMLCaptureResults.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/HTMLCaptureResults.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -4,27 +4,26 @@ <%@ page import="java.util.Date" %> <%@ page import="org.archive.wayback.WaybackConstants" %> <%@ page import="org.archive.wayback.core.CaptureSearchResult" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> +<%@ page import="org.archive.wayback.core.CaptureSearchResults" %> <%@ page import="org.archive.wayback.core.UIResults" %> -<%@ page import="org.archive.wayback.query.UICaptureQueryResults" %> +<%@ page import="org.archive.wayback.core.WaybackRequest" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <jsp:include page="/template/UI-header.jsp" flush="true" /> <% -UICaptureQueryResults results = (UICaptureQueryResults) UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); +UIResults results = UIResults.extractCaptureQuery(request); +WaybackRequest wbRequest = results.getWbRequest(); +CaptureSearchResults cResults = results.getCaptureResults(); +StringFormatter fmt = wbRequest.getFormatter(); -String searchString = results.getSearchUrl(); +String searchString = wbRequest.getRequestUrl(); -long resultCount = results.getResultsReturned(); +long resultCount = cResults.getReturnedCount(); +Date searchStartDate = wbRequest.getStartDate(); +Date searchEndDate = wbRequest.getEndDate(); - Timestamp searchStartTs = results.getStartTimestamp(); - Timestamp searchEndTs = results.getEndTimestamp(); - Date searchStartDate = searchStartTs.getDate(); - Date searchEndDate = searchEndTs.getDate(); - - Iterator<CaptureSearchResult> itr = results.resultsIterator(); - %> +Iterator<CaptureSearchResult> itr = cResults.iterator(); +%> <%= fmt.format("PathQuery.resultsSummary",resultCount,searchString) %> <br></br> <%= fmt.format("PathQuery.resultRange",searchStartDate,searchEndDate) %> @@ -87,17 +86,17 @@ } // show page indicators: -int curPage = results.getCurPage(); -if(curPage > results.getNumPages()) { +int curPage = cResults.getCurPageNum(); +if(curPage > cResults.getNumPages()) { %> <hr></hr> <a href="<%= results.urlForPage(1) %>">First results</a> <% -} else if(results.getNumPages() > 1) { +} else if(cResults.getNumPages() > 1) { %> <hr></hr> <% - for(int i = 1; i <= results.getNumPages(); i++) { + for(int i = 1; i <= cResults.getNumPages(); i++) { if(i == curPage) { %> <b><%= i %></b> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/HTMLUrlResults.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/HTMLUrlResults.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/HTMLUrlResults.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -2,35 +2,35 @@ <%@ page import="java.util.Iterator" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.Date" %> +<%@ page import="org.archive.wayback.ResultURIConverter" %> <%@ page import="org.archive.wayback.WaybackConstants" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.core.UrlSearchResult" %> -<%@ page import="org.archive.wayback.query.UIUrlQueryResults" %> +<%@ page import="org.archive.wayback.core.UrlSearchResults" %> +<%@ page import="org.archive.wayback.core.WaybackRequest" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <jsp:include page="/template/UI-header.jsp" flush="true" /> <% -UIUrlQueryResults results = (UIUrlQueryResults) UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); +UIResults results = UIResults.extractUrlQuery(request); +WaybackRequest wbRequest = results.getWbRequest(); +UrlSearchResults uResults = results.getUrlResults(); +ResultURIConverter uriConverter = results.getURIConverter(); +StringFormatter fmt = wbRequest.getFormatter(); -String searchString = results.getSearchUrl(); +String searchString = wbRequest.getRequestUrl(); -Date searchStartDate = results.getStartTimestamp().getDate(); -Date searchEndDate = results.getEndTimestamp().getDate(); +Date searchStartDate = wbRequest.getStartDate(); +Date searchEndDate = wbRequest.getEndDate(); -//PathQuerySearchResultPartitioner partitioner = -// new PathQuerySearchResultPartitioner(results.getResults(), -// results.getURIConverter()); +long firstResult = uResults.getFirstReturned(); +long resultCount = uResults.getReturnedCount(); +long lastResult = resultCount + firstResult; -long firstResult = results.getFirstResult(); -long lastResult = results.getLastResult(); -long resultCount = results.getResultsMatching(); +long totalCaptures = uResults.getMatchingCount(); -long totalCaptures = results.getResultsMatching(); - %> <%= fmt.format("PathPrefixQuery.showingResults",firstResult,lastResult, resultCount,searchString) %> @@ -38,22 +38,23 @@ <hr></hr> <% -Iterator<UrlSearchResult> itr = results.resultsIterator(); +Iterator<UrlSearchResult> itr = uResults.iterator(); while(itr.hasNext()) { UrlSearchResult result = itr.next(); String urlKey = result.getUrlKey(); String originalUrl = result.getOriginalUrl(); - String firstDateTS = result.getFirstCaptureTimestamp(); - String lastDateTS = result.getLastCaptureTimestamp(); + String firstDateTSss = result.getFirstCaptureTimestamp(); + String lastDateTSss = result.getLastCaptureTimestamp(); long numCaptures = result.getNumCaptures(); long numVersions = result.getNumVersions(); - Date firstDate = results.timestampToDate(firstDateTS); - Date lastDate = results.timestampToDate(lastDateTS); + Date firstDate = result.getFirstCaptureDate(); + Date lastDate = result.getLastCaptureDate(); if(numCaptures == 1) { - String anchor = results.makeReplayUrl(originalUrl,firstDateTS); + String ts = result.getFirstCaptureTimestamp(); + String anchor = uriConverter.makeReplayURI(ts,originalUrl); %> <a href="<%= anchor %>"> <%= urlKey %> @@ -89,17 +90,17 @@ } // show page indicators: -int curPage = results.getCurPage(); -if(curPage > results.getNumPages()) { +int curPage = uResults.getCurPageNum(); +if(curPage > uResults.getNumPages()) { %> <hr></hr> <a href="<%= results.urlForPage(1) %>">First results</a> <% -} else if(results.getNumPages() > 1) { +} else if(uResults.getNumPages() > 1) { %> <hr></hr> <% - for(int i = 1; i <= results.getNumPages(); i++) { + for(int i = 1; i <= uResults.getNumPages(); i++) { if(i == curPage) { %> <b><%= i %></b> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/XMLCaptureResults.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/XMLCaptureResults.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/XMLCaptureResults.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -7,14 +7,12 @@ <%@ page import="org.archive.wayback.core.CaptureSearchResult" %> <%@ page import="org.archive.wayback.core.CaptureSearchResults" %> <%@ page import="org.archive.wayback.core.SearchResults" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> <%@ page import="org.archive.wayback.core.UIResults" %> -<%@ page import="org.archive.wayback.query.UICaptureQueryResults" %> <% -UICaptureQueryResults uiResults = (UICaptureQueryResults) UIResults.getFromRequest(request); +UIResults uiResults = UIResults.extractCaptureQuery(request); -CaptureSearchResults results = uiResults.getResults(); -Iterator<CaptureSearchResult> itr = uiResults.resultsIterator(); +CaptureSearchResults results = uiResults.getCaptureResults(); +Iterator<CaptureSearchResult> itr = results.iterator(); %> <wayback> <request> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/XMLUrlResults.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/XMLUrlResults.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/query/XMLUrlResults.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -5,16 +5,14 @@ <%@ page import="java.util.Map" %> <%@ page import="java.util.Enumeration" %> <%@ page import="org.archive.wayback.core.SearchResults" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.core.UrlSearchResults" %> <%@ page import="org.archive.wayback.core.UrlSearchResult" %> -<%@ page import="org.archive.wayback.query.UIUrlQueryResults" %> <% -UIUrlQueryResults uiResults = (UIUrlQueryResults) UIResults.getFromRequest(request); +UIResults uiResults = UIResults.extractUrlQuery(request); -UrlSearchResults results = uiResults.getResults(); -Iterator<UrlSearchResult> itr = uiResults.resultsIterator(); +UrlSearchResults results = uiResults.getUrlResults(); +Iterator<UrlSearchResult> itr = results.iterator(); %> <wayback> <request> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ArchiveComment.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ArchiveComment.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ArchiveComment.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -1,12 +1,10 @@ <%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> <%@ page import="java.util.Date" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> <%@ page import="org.archive.wayback.core.UIResults" %> -<%@ page import="org.archive.wayback.replay.UIReplayResult" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <% -UIReplayResult results = (UIReplayResult) UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); +UIResults results = UIResults.extractReplay(request); +StringFormatter fmt = results.getWbRequest().getFormatter(); Date exactDate = results.getResult().getCaptureDate(); Date now = new Date(); String prettyDateFormat = "{0,date,H:mm:ss MMM d, yyyy}"; Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ClientSideJSInsert.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ClientSideJSInsert.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ClientSideJSInsert.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -1,15 +1,13 @@ <%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> <%@ page import="java.util.Date" %> <%@ page import="org.archive.wayback.ResultURIConverter" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.core.WaybackRequest" %> -<%@ page import="org.archive.wayback.replay.UIReplayResult" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <% -UIReplayResult results = (UIReplayResult) UIResults.getFromRequest(request); +UIResults results = UIResults.extractReplay(request); String requestDate = results.getResult().getCaptureTimestamp(); -String contextPath = results.makeReplayUrl("",requestDate); +String contextPath = results.getURIConverter().makeReplayURI(requestDate,""); String contextRoot = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Disclaimer.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Disclaimer.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Disclaimer.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -1,27 +1,24 @@ <%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> <%@ page import="java.util.Date" %> <%@ page import="org.archive.wayback.WaybackConstants" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> <%@ page import="org.archive.wayback.core.CaptureSearchResult" %> <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.core.WaybackRequest" %> -<%@ page import="org.archive.wayback.replay.UIReplayResult" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <% -UIReplayResult results = (UIReplayResult) UIResults.getFromRequest(request); +UIResults results = UIResults.extractReplay(request); -StringFormatter fmt = results.getFormatter(); +StringFormatter fmt = results.getWbRequest().getFormatter(); CaptureSearchResult result = results.getResult(); String dupeMsg = ""; if(result != null) { if(result.isDuplicateDigest()) { - String dupeDate = result.getDuplicateDigestStoredTimestamp(); + Date dupeDate = result.getDuplicateDigestStoredDate(); String prettyDate = ""; if(dupeDate != null) { - Timestamp dupeTS = Timestamp.parseBefore(dupeDate); prettyDate = "(" + fmt.format("MetaReplay.captureDateDisplay", - dupeTS.getDate()) + ")"; + dupeDate) + ")"; } dupeMsg = " Note that this document was downloaded, and not saved because it was a duplicate of a previously captured version " + prettyDate + ". HTTP headers presented here are from the original capture."; Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/JSLessTimeline.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/JSLessTimeline.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/JSLessTimeline.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -6,10 +6,8 @@ <%@ page import="org.archive.wayback.WaybackConstants" %> <%@ page import="org.archive.wayback.core.CaptureSearchResult" %> <%@ page import="org.archive.wayback.core.CaptureSearchResults" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.core.WaybackRequest" %> -<%@ page import="org.archive.wayback.replay.UIReplayResult" %> <%@ page import="org.archive.wayback.query.resultspartitioner.ResultsTimelinePartitionsFactory" %> <%@ page import="org.archive.wayback.query.resultspartitioner.ResultsPartition" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> @@ -18,24 +16,21 @@ String contextRoot = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); -UIReplayResult results = (UIReplayResult) UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); +UIResults results = UIResults.extractReplay(request); WaybackRequest wbRequest = results.getWbRequest(); -CaptureSearchResults cResults = results.getResults(); +StringFormatter fmt = wbRequest.getFormatter(); +CaptureSearchResults cResults = results.getCaptureResults(); -String exactDateStr = wbRequest.get(WaybackConstants.REQUEST_DATE); -String searchUrl = wbRequest.get(WaybackConstants.REQUEST_URL); -String resolution = wbRequest.get(WaybackConstants.REQUEST_RESOLUTION); -String metaMode = wbRequest.get(WaybackConstants.REQUEST_META_MODE); +String exactDateStr = wbRequest.getReplayTimestamp(); +Date exactDate = wbRequest.getReplayDate(); +String searchUrl = wbRequest.getRequestUrl(); +String resolution = wbRequest.getTimelineResolution(); -Date exactDate = Timestamp.parseBefore(exactDateStr).getDate(); - - if(resolution == null) { - resolution = WaybackConstants.REQUEST_RESOLUTION_AUTO; + resolution = WaybackRequest.REQUEST_RESOLUTION_AUTO; } String metaChecked = ""; -if(metaMode != null && metaMode.equals("yes")) { +if(wbRequest.isMetaMode()) { metaChecked = "checked"; } @@ -49,8 +44,9 @@ Iterator<CaptureSearchResult> it = cResults.iterator(); while(it.hasNext()) { CaptureSearchResult res = it.next(); - String resDateStr = res.getCaptureTimestamp(); - int compared = resDateStr.compareTo(exactDateStr.substring(0,resDateStr.length())); + Date resDate = res.getCaptureDate(); + + int compared = resDate.compareTo(exactDate); if(compared < 0) { resultIndex++; prev = res; @@ -74,15 +70,15 @@ String minResolution = ResultsTimelinePartitionsFactory.getMinResolution(cResults); String optimal = ""; -if(minResolution.equals(WaybackConstants.REQUEST_RESOLUTION_HOURS)) { +if(minResolution.equals(WaybackRequest.REQUEST_RESOLUTION_HOURS)) { optimal = fmt.format("TimelineView.timeRange.hours"); -} else if(minResolution.equals(WaybackConstants.REQUEST_RESOLUTION_DAYS)) { +} else if(minResolution.equals(WaybackRequest.REQUEST_RESOLUTION_DAYS)) { optimal = fmt.format("TimelineView.timeRange.days"); -} else if(minResolution.equals(WaybackConstants.REQUEST_RESOLUTION_MONTHS)) { +} else if(minResolution.equals(WaybackRequest.REQUEST_RESOLUTION_MONTHS)) { optimal = fmt.format("TimelineView.timeRange.months"); -} else if(minResolution.equals(WaybackConstants.REQUEST_RESOLUTION_TWO_MONTHS)) { +} else if(minResolution.equals(WaybackRequest.REQUEST_RESOLUTION_TWO_MONTHS)) { optimal = fmt.format("TimelineView.timeRange.twomonths"); -} else if(minResolution.equals(WaybackConstants.REQUEST_RESOLUTION_YEARS)) { +} else if(minResolution.equals(WaybackRequest.REQUEST_RESOLUTION_YEARS)) { optimal = fmt.format("TimelineView.timeRange.years"); } else { optimal = fmt.format("TimelineView.timeRange.unknown"); @@ -90,30 +86,24 @@ String autoOptString = fmt.format("TimelineView.timeRange.auto",optimal); ArrayList<ResultsPartition> partitions; -if(resolution.equals(WaybackConstants.REQUEST_RESOLUTION_HOURS)) { +if(resolution.equals(WaybackRequest.REQUEST_RESOLUTION_HOURS)) { hoursOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getHour(results.getResults(), - wbRequest); -} else if(resolution.equals(WaybackConstants.REQUEST_RESOLUTION_DAYS)) { + partitions = ResultsTimelinePartitionsFactory.getHour(cResults,wbRequest); +} else if(resolution.equals(WaybackRequest.REQUEST_RESOLUTION_DAYS)) { daysOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getDay(results.getResults(), - wbRequest); -} else if(resolution.equals(WaybackConstants.REQUEST_RESOLUTION_MONTHS)) { + partitions = ResultsTimelinePartitionsFactory.getDay(cResults,wbRequest); +} else if(resolution.equals(WaybackRequest.REQUEST_RESOLUTION_MONTHS)) { monthsOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getMonth(results.getResults(), - wbRequest); -} else if(resolution.equals(WaybackConstants.REQUEST_RESOLUTION_TWO_MONTHS)) { + partitions = ResultsTimelinePartitionsFactory.getMonth(cResults,wbRequest); +} else if(resolution.equals(WaybackRequest.REQUEST_RESOLUTION_TWO_MONTHS)) { monthsOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getTwoMonth(results.getResults(), - wbRequest); -} else if(resolution.equals(WaybackConstants.REQUEST_RESOLUTION_YEARS)) { + partitions = ResultsTimelinePartitionsFactory.getTwoMonth(cResults,wbRequest); +} else if(resolution.equals(WaybackRequest.REQUEST_RESOLUTION_YEARS)) { yearsOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getYear(results.getResults(), - wbRequest); + partitions = ResultsTimelinePartitionsFactory.getYear(cResults,wbRequest); } else { autoOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getAuto(results.getResults(), - wbRequest); + partitions = ResultsTimelinePartitionsFactory.getAuto(cResults,wbRequest); } int numPartitions = partitions.size(); ResultsPartition firstP = (ResultsPartition) partitions.get(0); @@ -283,9 +273,9 @@ <option <%= autoOptSelected %> value="auto"><%= autoOptString %></option> </select> <%= fmt.format("TimelineView.metaDataCheck") - %><input type="checkbox" name="metamode" value="yes" <%= + %><input type="checkbox" name="<%= WaybackRequest.REQUEST_META_MODE%>" value="<%= WaybackRequest.REQUEST_YES %>" <%= metaChecked - %> onClick="changeMeta()">  + %> onClick="changeMeta()"> </form> --> <a wmSpecial="1" href="<%= contextRoot %>/help.jsp" target="_top"><%= Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ResultMeta.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ResultMeta.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/ResultMeta.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -1,24 +1,23 @@ <%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> <%@ page import="java.util.Iterator" %> <%@ page import="java.util.Map" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> +<%@ page import="org.archive.wayback.core.CaptureSearchResult" %> <%@ page import="org.archive.wayback.core.UIResults" %> -<%@ page import="org.archive.wayback.replay.UIReplayResult" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <% -UIReplayResult uiResults = (UIReplayResult) UIResults.getFromRequest(request); -StringFormatter fmt = uiResults.getFormatter(); - -String origUrl = uiResults.getOriginalUrl(); -String urlKey = uiResults.getUrlKey(); -String archiveID = uiResults.getArchiveID(); -Timestamp captureTS = uiResults.getCaptureTimestamp(); +UIResults uiResults = UIResults.extractReplay(request); +StringFormatter fmt = uiResults.getWbRequest().getFormatter(); +CaptureSearchResult result = uiResults.getResult(); +String origUrl = result.getOriginalUrl(); +String urlKey = result.getUrlKey(); +String archiveID = result.getFile() + "/" + result.getOffset(); +String captureTS = result.getCaptureTimestamp(); String capturePrettyDateTime = fmt.format("MetaReplay.captureDateDisplay", - captureTS.getDate()); -String mimeType = uiResults.getMimeType(); -String digest = uiResults.getDigest(); -Map<String,String> headers = uiResults.getHttpHeaders(); + result.getCaptureDate()); +String mimeType = result.getMimeType(); +String digest = result.getDigest(); +Map<String,String> headers = uiResults.getResource().getHttpHeaders(); %> <html> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Timeline.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Timeline.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Timeline.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -6,10 +6,8 @@ <%@ page import="org.archive.wayback.WaybackConstants" %> <%@ page import="org.archive.wayback.core.CaptureSearchResult" %> <%@ page import="org.archive.wayback.core.CaptureSearchResults" %> -<%@ page import="org.archive.wayback.core.Timestamp" %> <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.core.WaybackRequest" %> -<%@ page import="org.archive.wayback.replay.UIReplayResult" %> <%@ page import="org.archive.wayback.query.resultspartitioner.ResultsTimelinePartitionsFactory" %> <%@ page import="org.archive.wayback.query.resultspartitioner.ResultsPartition" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> @@ -18,24 +16,22 @@ String contextRoot = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); -UIReplayResult results = (UIReplayResult) UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); +UIResults results = UIResults.extractReplay(request); WaybackRequest wbRequest = results.getWbRequest(); -CaptureSearchResults cResults = results.getResults(); +StringFormatter fmt = wbRequest.getFormatter(); +CaptureSearchResults cResults = results.getCaptureResults(); -String exactDateStr = wbRequest.get(WaybackConstants.REQUEST_DATE); -String searchUrl = wbRequest.get(WaybackConstants.REQUEST_URL); -String resolution = wbRequest.get(WaybackConstants.REQUEST_RESOLUTION); -String metaMode = wbRequest.get(WaybackConstants.REQUEST_META_MODE); +String exactDateStr = wbRequest.getReplayTimestamp(); +Date exactDate = wbRequest.getReplayDate(); +String searchUrl = wbRequest.getRequestUrl(); +String resolution = wbRequest.getTimelineResolution(); -Date exactDate = Timestamp.parseBefore(exactDateStr).getDate(); - if(resolution == null) { - resolution = WaybackConstants.REQUEST_RESOLUTION_AUTO; + resolution = WaybackRequest.REQUEST_RESOLUTION_AUTO; } String metaChecked = ""; -if(metaMode != null && metaMode.equals("yes")) { +if(wbRequest.isMetaMode()) { metaChecked = "checked"; } @@ -74,15 +70,15 @@ String minResolution = ResultsTimelinePartitionsFactory.getMinResolution(cResults); String optimal = ""; -if(minResolution.equals(WaybackConstants.REQUEST_RESOLUTION_HOURS)) { +if(minResolution.equals(WaybackRequest.REQUEST_RESOLUTION_HOURS)) { optimal = fmt.format("TimelineView.timeRange.hours"); -} else if(minResolution.equals(WaybackConstants.REQUEST_RESOLUTION_DAYS)) { +} else if(minResolution.equals(WaybackRequest.REQUEST_RESOLUTION_DAYS)) { optimal = fmt.format("TimelineView.timeRange.days"); -} else if(minResolution.equals(WaybackConstants.REQUEST_RESOLUTION_MONTHS)) { +} else if(minResolution.equals(WaybackRequest.REQUEST_RESOLUTION_MONTHS)) { optimal = fmt.format("TimelineView.timeRange.months"); -} else if(minResolution.equals(WaybackConstants.REQUEST_RESOLUTION_TWO_MONTHS)) { +} else if(minResolution.equals(WaybackRequest.REQUEST_RESOLUTION_TWO_MONTHS)) { optimal = fmt.format("TimelineView.timeRange.twomonths"); -} else if(minResolution.equals(WaybackConstants.REQUEST_RESOLUTION_YEARS)) { +} else if(minResolution.equals(WaybackRequest.REQUEST_RESOLUTION_YEARS)) { optimal = fmt.format("TimelineView.timeRange.years"); } else { optimal = fmt.format("TimelineView.timeRange.unknown"); @@ -90,30 +86,24 @@ String autoOptString = fmt.format("TimelineView.timeRange.auto",optimal); ArrayList<ResultsPartition> partitions; -if(resolution.equals(WaybackConstants.REQUEST_RESOLUTION_HOURS)) { +if(resolution.equals(WaybackRequest.REQUEST_RESOLUTION_HOURS)) { hoursOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getHour(results.getResults(), - wbRequest); -} else if(resolution.equals(WaybackConstants.REQUEST_RESOLUTION_DAYS)) { + partitions = ResultsTimelinePartitionsFactory.getHour(cResults,wbRequest); +} else if(resolution.equals(WaybackRequest.REQUEST_RESOLUTION_DAYS)) { daysOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getDay(results.getResults(), - wbRequest); -} else if(resolution.equals(WaybackConstants.REQUEST_RESOLUTION_MONTHS)) { + partitions = ResultsTimelinePartitionsFactory.getDay(cResults,wbRequest); +} else if(resolution.equals(WaybackRequest.REQUEST_RESOLUTION_MONTHS)) { monthsOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getMonth(results.getResults(), - wbRequest); -} else if(resolution.equals(WaybackConstants.REQUEST_RESOLUTION_TWO_MONTHS)) { + partitions = ResultsTimelinePartitionsFactory.getMonth(cResults,wbRequest); +} else if(resolution.equals(WaybackRequest.REQUEST_RESOLUTION_TWO_MONTHS)) { monthsOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getTwoMonth(results.getResults(), - wbRequest); -} else if(resolution.equals(WaybackConstants.REQUEST_RESOLUTION_YEARS)) { + partitions = ResultsTimelinePartitionsFactory.getTwoMonth(cResults,wbRequest); +} else if(resolution.equals(WaybackRequest.REQUEST_RESOLUTION_YEARS)) { yearsOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getYear(results.getResults(), - wbRequest); + partitions = ResultsTimelinePartitionsFactory.getYear(cResults,wbRequest); } else { autoOptSelected = "selected"; - partitions = ResultsTimelinePartitionsFactory.getAuto(results.getResults(), - wbRequest); + partitions = ResultsTimelinePartitionsFactory.getAuto(cResults,wbRequest); } int numPartitions = partitions.size(); ResultsPartition firstP = (ResultsPartition) partitions.get(0); @@ -305,7 +295,7 @@ <option <%= autoOptSelected %> value="auto"><%= autoOptString %></option> </select> <%= fmt.format("TimelineView.metaDataCheck") - %><input type="checkbox" name="metamode" value="yes" <%= + %><input type="checkbox" name="<%= WaybackRequest.REQUEST_META_MODE %>" value="<%= WaybackRequest.REQUEST_YES %>" <%= metaChecked %> onClick="changeMeta()">  </form> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/UI-footer.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/UI-footer.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/UI-footer.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -2,10 +2,10 @@ <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <% -UIResults results = UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); -String contextRoot = results.getContextPrefix(); -String serverRoot = results.getServerPrefix(); +UIResults results = UIResults.getGeneric(request); +StringFormatter fmt = results.getWbRequest().getFormatter(); +String contextRoot = results.getWbRequest().getContextPrefix(); +String serverRoot = results.getWbRequest().getServerPrefix(); %> <!-- FOOTER --> <div align="center"> Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/UI-header.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/UI-header.jsp 2008-07-15 01:27:41 UTC (rev 2446) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/template/UI-header.jsp 2008-07-15 01:30:13 UTC (rev 2447) @@ -1,25 +1,27 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<%@ page import="org.archive.wayback.core.WaybackRequest" %> <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> <% -UIResults results = UIResults.getFromRequest(request); -StringFormatter fmt = results.getFormatter(); -String contextRoot = results.getContextPrefix(); -String serverRoot = results.getServerPrefix(); +UIResults results = UIResults.getGeneric(request); +WaybackRequest wbRequest = results.getWbRequest(); +StringFormatter fmt = wbRequest.getFormatter(); +String contextRoot = wbRequest.getContextPrefix(); +String serverRoot = wbRequest.getServerPrefix(); %> <!-- HEADER --> <html xmlns="http://www.w3.org/1999/xhtml"> <head> - <meta http-equiv="content-type" content="text/html; charset=utf-8"> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="<%= contextRoot %>css/styles.css" - src="<%= contextRoot %>css/styles.css"> + src="<%= contextRoot %>css/styles.css" /> <title><%= fmt.format("UIGlobal.pageTitle") %></title> - <base target="_top"> + <base target="_top" /> </head> <body bgcolor="white" alink="red" vlink="#0000aa" link="blue" @@ -64,13 +66,14 @@ <font size="2" color="#FFFFFF" face="Arial, Helvetica, sans-serif"> <%= fmt.format("UIGlobal.enterWebAddress") %> </font> - <input type="hidden" name="type" value="urlquery"> - <input type="text" name="url" value="http://" size="24" maxlength="256"> + <input type="hidden" name="<%= WaybackRequest.REQUEST_TYPE %>" value="<%= WaybackRequest.REQUEST_CAPTURE_QUERY %>"> + <input type="text" name="<%= WaybackRequest.REQUEST_URL %>" value="http://" size="24" maxlength="256"> </b> - <select name="date" size="1"> + <select name="<%= WaybackRequest.REQUEST_DATE %>" size="1"> <option value="" selected><%= fmt.format("UIGlobal.selectYearAll") %></option> - <option>2007</option> + <option>2008</option> + <option>2007</option> <option>2006</option> <option>2005</option> <option>2004</option> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:27:32
|
Revision: 2446 http://archive-access.svn.sourceforge.net/archive-access/?rev=2446&view=rev Author: bradtofel Date: 2008-07-14 18:27:41 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR(major...): eliminating the various UIResults subclasses, which were confusing/poorly designed, in favor of a single, more flexible class that adapts to the various modes. removed many convenience methods, as the same capabilities should now be available on the underlying objects. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/SearchResults.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/UIResults.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/exception/BaseExceptionRenderer.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/Renderer.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/HTMLPage.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/AccessPoint.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/SearchResults.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/SearchResults.java 2008-07-15 01:25:18 UTC (rev 2445) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/SearchResults.java 2008-07-15 01:27:41 UTC (rev 2446) @@ -171,4 +171,25 @@ this.numRequested = numRequested; putFilter(RESULTS_REQUESTED, String.valueOf(numRequested)); } + + public int getNumPages() { + double resultsMatching = getMatchingCount(); + double resultsPerPage = getNumRequested(); + if(resultsPerPage == 0) { + return 1; + } + // calculate total pages: + int numPages = (int) Math.ceil(resultsMatching/resultsPerPage); + return numPages; + } + public int getCurPageNum() { + double resultsPerPage = getNumRequested(); + double firstResult = getFirstReturned(); + if(resultsPerPage == 0) { + return 1; + } + // calculate total pages: + int curPage = (int) Math.floor(firstResult/resultsPerPage) + 1; + return curPage; + } } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/UIResults.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/UIResults.java 2008-07-15 01:25:18 UTC (rev 2445) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/UIResults.java 2008-07-15 01:27:41 UTC (rev 2446) @@ -24,36 +24,106 @@ */ package org.archive.wayback.core; +import java.io.IOException; import java.util.Properties; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.archive.wayback.ResultURIConverter; +import org.archive.wayback.exception.WaybackException; import org.archive.wayback.util.StringFormatter; import org.archive.wayback.webapp.AccessPoint; /** + * Simple class which acts as the go-between between Java request handling code + * and .jsp files which actually draw various forms of results for end user + * consumption. Designed to be flexible enough to handle forward various types + * of data to the eventual .jsp files, and provides a handful of convenience + * method to simplify .jsp code. + * + * 5 main "forms" of this object: + * 1) Generic: has WaybackRequest, uriConverter + * 2) Exception: has WaybackRequest, uriConverter, WaybackException + * 3) CaptureQuery: has WaybackRequest, uriConverter, CaptureSearchResults + * 4) UrlQuery: has WaybackRequest, uriConverter, UrlSearchResults + * 5) Replay: has WaybackRequest, uriConverter, CaptureSearchResult, + * CaptureSearchResults, Resource * + * There are constructors to create each of these forms from the appropriate + * component objects. + * + * There is also a common method "forward()" which will store the UIResults + * object into an HttpServletRequest, for later retrieval by .jsp files. * + * There are static methods to extract each of these from an HttpServletRequest, + * which will also verify that the appropriate internal objects are present. + * These methods are intended to be used by the target .jsp files. + * + * * @author brad * @version $Date$, $Revision$ */ public class UIResults { private final static String FERRET_NAME = "ui-results"; + // usually present private WaybackRequest wbRequest; + // usually present private ResultURIConverter uriConverter; + // target .jsp (or static file) we forwarded to private String contentJsp = null; + // original URL that was received, prior to the forwarding private String originalRequestURL = null; + + // present for CaptureQuery and Replay requests + private CaptureSearchResults captureResults = null; + // present for UrlQuery requests + private UrlSearchResults urlResults = null; + // Present for Replay requests, the "closest" result + private CaptureSearchResult result = null; + // Present for Replay requests, the actual Resource being replayed + private Resource resource = null; + // Present for... requests that resulted in an expected Exception. + private WaybackException exception = null; - - /** - * @param wbRequest Wayback Request argument - */ public UIResults(WaybackRequest wbRequest,ResultURIConverter uriConverter) { - super(); this.wbRequest = wbRequest; this.uriConverter = uriConverter; } + public UIResults(WaybackRequest wbRequest, ResultURIConverter uriConverter, + WaybackException exception) { + this.wbRequest = wbRequest; + this.uriConverter = uriConverter; + this.exception = exception; + } + public UIResults(WaybackRequest wbRequest, ResultURIConverter uriConverter, + CaptureSearchResults captureResults) { + this.wbRequest = wbRequest; + this.uriConverter = uriConverter; + this.captureResults = captureResults; + } + public UIResults(WaybackRequest wbRequest, ResultURIConverter uriConverter, + UrlSearchResults urlResults) { + this.wbRequest = wbRequest; + this.uriConverter = uriConverter; + this.urlResults = urlResults; + } + public UIResults(WaybackRequest wbRequest, ResultURIConverter uriConverter, + CaptureSearchResults captureResults, CaptureSearchResult result, + Resource resource) { + this.wbRequest = wbRequest; + this.uriConverter = uriConverter; + this.captureResults = captureResults; + this.result = result; + this.resource = resource; + } + + /* + * GENERAL GETTERS: + */ + /** * @return Returns the wbRequest. */ @@ -63,8 +133,58 @@ } return wbRequest; } - /** + * @return the ResultURIConverter + */ + public ResultURIConverter getURIConverter() { + return uriConverter; + } + /** + * @return the captureResults + */ + public CaptureSearchResults getCaptureResults() { + return captureResults; + } + /** + * @return the urlResults + */ + public UrlSearchResults getUrlResults() { + return urlResults; + } + /** + * @return the result + */ + public CaptureSearchResult getResult() { + return result; + } + /** + * @return the resource + */ + public Resource getResource() { + return resource; + } + /** + * @return the exception + */ + public WaybackException getException() { + return exception; + } + /** + * @return the contentJsp + */ + public String getContentJsp() { + return contentJsp; + } + + public String getOriginalRequestURL() { + return originalRequestURL; + } + + /* + * JSP CONVENIENCE METHODS: + */ + + /** * @param url * @return String url that will make a query for all captures of an URL. */ @@ -76,13 +196,49 @@ return newWBR.getContextPrefix() + "query?" + newWBR.getQueryArguments(1); } + /** + * @param configName + * @return String configuration for the context, if present, otherwise null + */ + public String getContextConfig(final String configName) { + String configValue = null; + AccessPoint context = getWbRequest().getAccessPoint(); + if(context != null) { + Properties configs = context.getConfigs(); + if(configs != null) { + configValue = configs.getProperty(configName); + } + } + return configValue; + } + /** + * @param result + * @return URL string that will replay the specified Resource Result. + */ + public String resultToReplayUrl(CaptureSearchResult result) { + if(uriConverter == null) { + return null; + } + String url = result.getOriginalUrl(); + String captureDate = result.getCaptureTimestamp(); + return uriConverter.makeReplayURI(captureDate,url); + } /** - * @return StringFormatter localized to user request + * @param pageNum + * @return String URL which will drive browser to search results for a + * different page of results for the same query */ - public StringFormatter getFormatter() { - return getWbRequest().getFormatter(); + public String urlForPage(int pageNum) { + WaybackRequest wbRequest = getWbRequest(); + return wbRequest.getContextPrefix() + "query?" + + wbRequest.getQueryArguments(pageNum); } + + /* + * FORWARD TO A .JSP + */ + /** * Store this UIResults in the HttpServletRequest argument. * @param httpRequest @@ -96,28 +252,149 @@ } /** + * @param request + * @param response + * @param targt + * @throws ServletException + * @throws IOException + */ + public void forward(HttpServletRequest request, + HttpServletResponse response, final String target) + throws ServletException, IOException { + + this.contentJsp = target; + this.originalRequestURL = request.getRequestURL().toString(); + request.setAttribute(FERRET_NAME, this); + RequestDispatcher dispatcher = request.getRequestDispatcher(target); + if(dispatcher == null) { + throw new IOException("No dispatcher for " + target); + } + dispatcher.forward(request, response); + } + + /* + * EXTRACT FROM HttpServletRequest + */ + /** * @param httpRequest - * @return UIResults from httpRequest, or a generic one if not present + * @return generic UIResult with info from httpRequest applied. */ - public static UIResults getFromRequest(HttpServletRequest httpRequest) { + public static UIResults getGeneric(HttpServletRequest httpRequest) { UIResults results = (UIResults) httpRequest.getAttribute(FERRET_NAME); if(results == null) { - results = getGeneric(httpRequest); - // why not store it in case someone else needs it... -// results.storeInRequest(httpRequest,""); + WaybackRequest wbRequest = new WaybackRequest(); + wbRequest.fixup(httpRequest); + results = new UIResults(wbRequest, null); } return results; } - + /** * @param httpRequest - * @return generic UIResult with info from httpRequest applied. + * @return UIResults from httpRequest + * @throws ServletException */ - public static UIResults getGeneric(HttpServletRequest httpRequest) { - WaybackRequest wbRequest = new WaybackRequest(); - wbRequest.fixup(httpRequest); - return new UIResults(wbRequest, null); + public static UIResults extractException(HttpServletRequest httpRequest) + throws ServletException { + + UIResults results = (UIResults) httpRequest.getAttribute(FERRET_NAME); + if(results == null) { + throw new ServletException("No attribute.."); + } + if(results.exception == null) { + throw new ServletException("No WaybackException.."); + } + if(results.wbRequest == null) { + throw new ServletException("No WaybackRequest.."); + } + if(results.uriConverter == null) { + throw new ServletException("No ResultURIConverter.."); + } + return results; } + /** + * @param httpRequest + * @return UIResults from httpRequest + * @throws ServletException + */ + public static UIResults extractCaptureQuery(HttpServletRequest httpRequest) + throws ServletException { + + UIResults results = (UIResults) httpRequest.getAttribute(FERRET_NAME); + if(results == null) { + throw new ServletException("No attribute.."); + } + if(results.wbRequest == null) { + throw new ServletException("No WaybackRequest.."); + } + if(results.uriConverter == null) { + throw new ServletException("No ResultURIConverter.."); + } + if(results.captureResults == null) { + throw new ServletException("No CaptureSearchResults.."); + } + return results; + } + /** + * @param httpRequest + * @return UIResults from httpRequest + * @throws ServletException + */ + public static UIResults extractUrlQuery(HttpServletRequest httpRequest) + throws ServletException { + + UIResults results = (UIResults) httpRequest.getAttribute(FERRET_NAME); + if(results == null) { + throw new ServletException("No attribute.."); + } + if(results.wbRequest == null) { + throw new ServletException("No WaybackRequest.."); + } + if(results.uriConverter == null) { + throw new ServletException("No ResultURIConverter.."); + } + if(results.urlResults == null) { + throw new ServletException("No UrlSearchResults.."); + } + return results; + } + /** + * @param httpRequest + * @return UIResults from httpRequest + * @throws ServletException + */ + public static UIResults extractReplay(HttpServletRequest httpRequest) + throws ServletException { + + UIResults results = (UIResults) httpRequest.getAttribute(FERRET_NAME); + if(results == null) { + throw new ServletException("No attribute.."); + } + if(results.wbRequest == null) { + throw new ServletException("No WaybackRequest.."); + } + if(results.uriConverter == null) { + throw new ServletException("No ResultURIConverter.."); + } + if(results.captureResults == null) { + throw new ServletException("No CaptureSearchResults.."); + } + if(results.result == null) { + throw new ServletException("No CaptureSearchResult.."); + } + if(results.resource == null) { + throw new ServletException("No Resource.."); + } + return results; + } + + + + /* + * STATIC CONVENIENCE METHODS + */ + + private static void replaceAll(StringBuffer s, final String o, final String n) { int olen = o.length(); @@ -175,79 +452,53 @@ replaceAll(encoded,"gt",">"); replaceAll(encoded,"quot","""); return encoded.toString(); - } + } + /* + * DEPRECATED + */ + /** * @return URL that points to the root of the current WaybackContext + * @deprecated */ public String getContextPrefix() { return getWbRequest().getContextPrefix(); } + + /** + * @return StringFormatter localized to user request + * @deprecated + */ + public StringFormatter getFormatter() { + return getWbRequest().getFormatter(); + } /** * @return URL that points to the root of the Server + * @deprecated */ public String getServerPrefix() { return getWbRequest().getServerPrefix(); } + /** - * @return the contentJsp - */ - public String getContentJsp() { - return contentJsp; - } - /** * @param contentJsp the contentJsp to set + * @deprecated */ public void setContentJsp(String contentJsp) { this.contentJsp = contentJsp; } - /** - * @param configName - * @return String configuration for the context, if present, otherwise null - */ - public String getContextConfig(final String configName) { - String configValue = null; - AccessPoint context = getWbRequest().getAccessPoint(); - if(context != null) { - Properties configs = context.getConfigs(); - if(configs != null) { - configValue = configs.getProperty(configName); - } - } - return configValue; - } - public String getOriginalRequestURL() { - return originalRequestURL; - } - /** - * @param result - * @return URL string that will replay the specified Resource Result. - */ - public String resultToReplayUrl(CaptureSearchResult result) { - if(uriConverter == null) { - return null; - } - String url = result.getOriginalUrl(); - String captureDate = result.getCaptureTimestamp(); - return uriConverter.makeReplayURI(captureDate,url); - } /** - * @return the ResultURIConverter - */ - public ResultURIConverter getURIConverter() { - return uriConverter; - } - - /** * @param url * @param timestamp * @return String url that will replay the url at timestamp + * @deprecated */ public String makeReplayUrl(String url, String timestamp) { if(uriConverter == null) { return null; } return uriConverter.makeReplayURI(timestamp, url); - } + } } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/exception/BaseExceptionRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/exception/BaseExceptionRenderer.java 2008-07-15 01:25:18 UTC (rev 2445) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/exception/BaseExceptionRenderer.java 2008-07-15 01:27:41 UTC (rev 2446) @@ -28,7 +28,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -141,15 +140,8 @@ wbRequest, exception); httpRequest.setAttribute("exception", exception); - UIResults uiResults = new UIResults(wbRequest,null); - uiResults.storeInRequest(httpRequest, jspPath); - - RequestDispatcher dispatcher = httpRequest - .getRequestDispatcher(jspPath); - if(dispatcher == null) { - throw new ServletException("Null dispatcher for " + jspPath); - } - dispatcher.forward(httpRequest, httpResponse); + UIResults uiResults = new UIResults(wbRequest,null,exception); + uiResults.forward(httpRequest, httpResponse, jspPath); } public String getErrorJsp() { Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/Renderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/Renderer.java 2008-07-15 01:25:18 UTC (rev 2445) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/Renderer.java 2008-07-15 01:27:41 UTC (rev 2446) @@ -26,7 +26,6 @@ import java.io.IOException; -import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -34,6 +33,7 @@ import org.archive.wayback.QueryRenderer; import org.archive.wayback.ResultURIConverter; import org.archive.wayback.core.CaptureSearchResults; +import org.archive.wayback.core.UIResults; import org.archive.wayback.core.UrlSearchResults; import org.archive.wayback.core.WaybackRequest; @@ -52,36 +52,17 @@ private String xmlCaptureJsp = "/query/XMLCaptureResults.jsp"; private String xmlUrlJsp = "/query/XMLUrlResults.jsp"; - /** - * @param request - * @param response - * @param jspName - * @throws ServletException - * @throws IOException - */ - private void proxyRequest(HttpServletRequest request, - HttpServletResponse response, final String jspPath) - throws ServletException, IOException { - - RequestDispatcher dispatcher = request.getRequestDispatcher(jspPath); - dispatcher.forward(request, response); - } - public void renderCaptureResults(HttpServletRequest httpRequest, HttpServletResponse httpResponse, WaybackRequest wbRequest, CaptureSearchResults results, ResultURIConverter uriConverter) throws ServletException, IOException { - UICaptureQueryResults uiResults = new UICaptureQueryResults(httpRequest, - wbRequest, results, uriConverter); String jsp = captureJsp; if(wbRequest.isXMLMode()) { jsp = xmlCaptureJsp; } - - uiResults.storeInRequest(httpRequest,jsp); - proxyRequest(httpRequest, httpResponse, jsp); - + UIResults uiResults = new UIResults(wbRequest,uriConverter,results); + uiResults.forward(httpRequest, httpResponse, jsp); } /* (non-Javadoc) @@ -92,16 +73,12 @@ UrlSearchResults results, ResultURIConverter uriConverter) throws ServletException, IOException { - UIUrlQueryResults uiResults = new UIUrlQueryResults(httpRequest, wbRequest, - results, uriConverter); String jsp = urlJsp; if(wbRequest.isXMLMode()) { jsp = xmlUrlJsp; } - - uiResults.storeInRequest(httpRequest,jsp); - proxyRequest(httpRequest, httpResponse, jsp); - + UIResults uiResults = new UIResults(wbRequest,uriConverter,results); + uiResults.forward(httpRequest, httpResponse, jsp); } /** Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/HTMLPage.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/HTMLPage.java 2008-07-15 01:25:18 UTC (rev 2445) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/HTMLPage.java 2008-07-15 01:27:41 UTC (rev 2446) @@ -33,7 +33,6 @@ import java.text.ParseException; import java.util.Map; -import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -42,8 +41,8 @@ import org.archive.wayback.core.Resource; import org.archive.wayback.core.CaptureSearchResult; import org.archive.wayback.core.CaptureSearchResults; +import org.archive.wayback.core.UIResults; import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.replay.UIReplayResult; import org.mozilla.universalchardet.UniversalDetector; /** @@ -440,14 +439,15 @@ CaptureSearchResult result, Resource resource) throws ServletException, IOException { - UIReplayResult uiResults = new UIReplayResult(httpRequest, wbRequest, - result, results, resource, uriConverter); + UIResults uiResults = new UIResults(wbRequest,uriConverter,results, + result,resource); StringHttpServletResponseWrapper wrappedResponse = new StringHttpServletResponseWrapper(httpResponse); - uiResults.storeInRequest(httpRequest,jspPath); - RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(jspPath); - dispatcher.forward(httpRequest, wrappedResponse); + uiResults.forward(httpRequest, wrappedResponse, jspPath); +// uiResults.storeInRequest(httpRequest,jspPath); +// RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(jspPath); +// dispatcher.forward(httpRequest, wrappedResponse); return wrappedResponse.getStringResponse(); } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/AccessPoint.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/AccessPoint.java 2008-07-15 01:25:18 UTC (rev 2445) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/AccessPoint.java 2008-07-15 01:27:41 UTC (rev 2446) @@ -28,7 +28,6 @@ import java.util.Properties; import java.util.logging.Logger; -import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -232,24 +231,32 @@ HttpServletResponse httpResponse) throws ServletException, IOException { + String translated = "/" + translateRequestPathQuery(httpRequest); + WaybackRequest wbRequest = new WaybackRequest(); wbRequest.setContextPrefix(getAbsoluteLocalPrefix(httpRequest)); wbRequest.setAccessPoint(this); + UIResults uiResults = new UIResults(wbRequest,uriConverter); - String translated = "/" + translateRequestPathQuery(httpRequest); - uiResults.storeInRequest(httpRequest,translated); - RequestDispatcher dispatcher = null; + try { + uiResults.forward(httpRequest, httpResponse, translated); + return true; + } catch(IOException e) { + // TODO: figure out if we got IO because of a missing dispatcher + } +// uiResults.storeInRequest(httpRequest,translated); +// RequestDispatcher dispatcher = null; // // special case for the front '/' page: // if(translated.length() == 0) { // translated = "/"; // } else { // translated = "/" + translated; // } - dispatcher = httpRequest.getRequestDispatcher(translated); - if(dispatcher != null) { - dispatcher.forward(httpRequest, httpResponse); - return true; - } +// dispatcher = httpRequest.getRequestDispatcher(translated); +// if(dispatcher != null) { +// dispatcher.forward(httpRequest, httpResponse); +// return true; +// } return false; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:25:12
|
Revision: 2445 http://archive-access.svn.sourceforge.net/archive-access/?rev=2445&view=rev Author: bradtofel Date: 2008-07-14 18:25:18 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR: moved decision of using earliest/latest timestamp out of base class -- allows FormRequestParser(and others) to determine how to populate the request more flexibly. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/BaseRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/FormRequestParser.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/BaseRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/BaseRequestParser.java 2008-07-15 01:20:01 UTC (rev 2444) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/BaseRequestParser.java 2008-07-15 01:25:18 UTC (rev 2445) @@ -126,18 +126,11 @@ * @return */ public String getEarliestTimestamp() { - if(earliestTimestamp != null) { - return earliestTimestamp; - - } - return Timestamp.earliestTimestamp().getDateStr(); + return earliestTimestamp; } public String getLatestTimestamp() { - if(latestTimestamp != null) { - return latestTimestamp; - } - return Timestamp.latestTimestamp().getDateStr(); + return latestTimestamp; } public void setLatestTimestamp(String timestamp) { Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/FormRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/FormRequestParser.java 2008-07-15 01:20:01 UTC (rev 2444) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/FormRequestParser.java 2008-07-15 01:25:18 UTC (rev 2445) @@ -30,6 +30,7 @@ import javax.servlet.http.HttpServletRequest; +import org.archive.wayback.core.Timestamp; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.webapp.AccessPoint; @@ -82,12 +83,24 @@ String val = getMapParam(queryMap,key); wbRequest.put(key,val); } - if(wbRequest.getStartTimestamp()== null) { - wbRequest.setStartTimestamp(getEarliestTimestamp()); + String partialTS = wbRequest.getReplayTimestamp(); + if(partialTS != null) { + if(wbRequest.getStartTimestamp()== null) { + String startTS = Timestamp.parseBefore(partialTS).getDateStr(); + wbRequest.setStartTimestamp(startTS); + } + if(wbRequest.getEndTimestamp() == null) { + String endTS = Timestamp.parseAfter(partialTS).getDateStr(); + wbRequest.setEndTimestamp(endTS); + } + } else { + if(wbRequest.getStartTimestamp()== null) { + wbRequest.setStartTimestamp(getEarliestTimestamp()); + } + if(wbRequest.getEndTimestamp() == null) { + wbRequest.setEndTimestamp(getLatestTimestamp()); + } } - if(wbRequest.getEndTimestamp() == null) { - wbRequest.setEndTimestamp(getLatestTimestamp()); - } } if(wbRequest != null) { wbRequest.fixup(httpRequest); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:19:52
|
Revision: 2444 http://archive-access.svn.sourceforge.net/archive-access/?rev=2444&view=rev Author: bradtofel Date: 2008-07-14 18:20:01 -0700 (Mon, 14 Jul 2008) Log Message: ----------- BUGFIX(ACC-26): string OOB exception in javascript generated escaped HTML attributes. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java 2008-07-15 01:18:56 UTC (rev 2443) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java 2008-07-15 01:20:01 UTC (rev 2444) @@ -42,9 +42,9 @@ */ public class TagMagix { - // minimum length XXXX in a 'style=XXXX' declaration... mostly handy - // to keep us from trying to mark up javascript generated style code. - private static int MIN_STYLE_LENGTH = 3; + // minimum length XXXX in a 'ATTR=XXXX' declaration... mostly handy + // to keep us from trying to mark up javascript generated HTML/CSS code. + private static int MIN_ATTR_LENGTH = 3; private static HashMap<String, Pattern> pcPatterns = new HashMap<String, Pattern>(); @@ -171,7 +171,7 @@ int attrStart = matcher.start(1); int attrEnd = matcher.end(1); idx = attrEnd; - if(origAttrLength < MIN_STYLE_LENGTH) { + if(origAttrLength < MIN_ATTR_LENGTH) { continue; } @@ -250,6 +250,10 @@ int origUrlLength = url.length(); int attrStart = matcher.start(1); int attrEnd = matcher.end(1); + if(origUrlLength < MIN_ATTR_LENGTH) { + idx = attrEnd; + continue; + } String quote = ""; if (url.charAt(0) == '"') { quote = "\""; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-15 01:18:47
|
Revision: 2443 http://archive-access.svn.sourceforge.net/archive-access/?rev=2443&view=rev Author: bradtofel Date: 2008-07-14 18:18:56 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR: moved proxy mode timestamp association from Timestamp to BDBMap. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java 2008-07-14 23:19:40 UTC (rev 2442) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java 2008-07-15 01:18:56 UTC (rev 2443) @@ -21,6 +21,7 @@ import java.io.File; import java.io.UnsupportedEncodingException; +import java.util.Properties; import com.sleepycat.je.Database; import com.sleepycat.je.DatabaseConfig; @@ -39,6 +40,12 @@ */ public class BDBMap { + // Acts as a mapping between an ID and a timestamp to surf at. + // The dir should probably be configurable somehow. + private static String BDB_DIR = System.getProperty("java.io.tmpdir") + + "/wayback/bdb"; + private static Properties bdbMaps = new Properties(); + protected Environment env = null; protected Database db = null; protected String name; @@ -116,4 +123,47 @@ return result; } + /** + * @param context + * @return singleton BDBMap for the context + */ + public static BDBMap getContextMap(String context) { + if(context == null) context = ""; + if(context.startsWith("/")) { + context = context.substring(1); + } + BDBMap map = null; + synchronized(Timestamp.class) { + if(!bdbMaps.containsKey(context)) { + File bdbDir = new File(BDB_DIR,context); + bdbMaps.put(context,new BDBMap(context, + bdbDir.getAbsolutePath())); + } + map = (BDBMap) bdbMaps.get(context); + } + return map; + } + /** + * return the timestamp associated with the identifier argument, or now + * if no value is associated or something goes wrong. + * @param context + * @param ip + * @return timestamp string value + */ + public static String getTimestampForId(String context, String ip) { + BDBMap bdbMap = getContextMap(context); + String dateStr = bdbMap.get(ip); + return (dateStr != null) ? dateStr : Timestamp.currentTimestamp().getDateStr(); + } + + /** + * associate timestamp time with idenfier ip persistantly + * @param context + * @param ip + * @param time + */ + public static void addTimestampForId(String context, String ip, String time) { + BDBMap bdbMap = getContextMap(context); + bdbMap.put(ip, time); + } } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java 2008-07-14 23:19:40 UTC (rev 2442) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java 2008-07-15 01:18:56 UTC (rev 2443) @@ -23,11 +23,9 @@ package org.archive.wayback.core; -import java.io.File; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; -import java.util.Properties; import java.util.SimpleTimeZone; import java.util.TimeZone; @@ -59,13 +57,7 @@ private final static String[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; - - // Acts as a mapping between an ID and a timestamp to surf at. - // The dir should probably be configurable somehow. - private static String BDB_DIR = System.getProperty("java.io.tmpdir") + - "/wayback/bdb"; - private static Properties bdbMaps = new Properties(); - + private String dateStr = null; private Date date = null; @@ -464,49 +456,4 @@ public static Timestamp earliestTimestamp() { return new Timestamp(SSE_1996); } - - /** - * @param context - * @return singleton BDBMap for the context - */ - public static BDBMap getContextMap(String context) { - if(context == null) context = ""; - if(context.startsWith("/")) { - context = context.substring(1); - } - BDBMap map = null; - synchronized(Timestamp.class) { - if(!bdbMaps.containsKey(context)) { - File bdbDir = new File(BDB_DIR,context); - bdbMaps.put(context,new BDBMap(context, - bdbDir.getAbsolutePath())); - } - map = (BDBMap) bdbMaps.get(context); - } - return map; - } - /** - * return the timestamp associated with the identifier argument, or now - * if no value is associated or something goes wrong. - * @param context - * @param ip - * @return timestamp string value - */ - public static String getTimestampForId(String context, String ip) { - BDBMap bdbMap = getContextMap(context); - String dateStr = bdbMap.get(ip); - return (dateStr != null) ? dateStr : currentTimestamp().getDateStr(); - } - - /** - * associate timestamp time with idenfier ip persistantly - * @param context - * @param ip - * @param time - */ - public static void addTimestampForId(String context, String ip, String time) { - BDBMap bdbMap = getContextMap(context); - bdbMap.put(ip, time); - } - } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java 2008-07-14 23:19:40 UTC (rev 2442) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java 2008-07-15 01:18:56 UTC (rev 2443) @@ -29,7 +29,7 @@ import javax.servlet.http.HttpServletRequest; import org.archive.wayback.RequestParser; -import org.archive.wayback.core.Timestamp; +import org.archive.wayback.core.BDBMap; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.BadQueryException; import org.archive.wayback.requestparser.CompositeRequestParser; @@ -71,7 +71,7 @@ if (id == null) id = httpRequest.getRemoteAddr(); // TODO: This is hacky. - String replayDateStr = Timestamp.getTimestampForId( + String replayDateStr = BDBMap.getTimestampForId( httpRequest.getContextPath(), id); wbRequest.setReplayTimestamp(replayDateStr); wbRequest.fixup(httpRequest); Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp 2008-07-14 23:19:40 UTC (rev 2442) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp 2008-07-15 01:18:56 UTC (rev 2443) @@ -1,4 +1,4 @@ -<%@ page import="org.archive.wayback.core.Timestamp" %> +<%@ page import="org.archive.wayback.core.BDBMap" %> <% String url = request.getParameter("url"); @@ -7,7 +7,7 @@ // Put time-mapping for this id, or if no id, the ip-addr. String id = request.getHeader("Proxy-Id"); if(id == null) id = request.getRemoteAddr(); - Timestamp.addTimestampForId(request.getContextPath(),id, time); + BDBMap.addTimestampForId(request.getContextPath(),id, time); // Now redirect to the page the user wanted. response.sendRedirect(url); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-14 23:19:31
|
Revision: 2442 http://archive-access.svn.sourceforge.net/archive-access/?rev=2442&view=rev Author: bradtofel Date: 2008-07-14 16:19:40 -0700 (Mon, 14 Jul 2008) Log Message: ----------- BUGFIX(ACC-26): string OOB exception in javascript generated escaped HTML attributes. Modified Paths: -------------- branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java Modified: branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java =================================================================== --- branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java 2008-07-14 21:24:37 UTC (rev 2441) +++ branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java 2008-07-14 23:19:40 UTC (rev 2442) @@ -42,9 +42,9 @@ */ public class TagMagix { - // minimum length XXXX in a 'style=XXXX' declaration... mostly handy - // to keep us from trying to mark up javascript generated style code. - private static int MIN_STYLE_LENGTH = 3; + // minimum length XXXX in a 'ATTR=XXXX' declaration... mostly handy + // to keep us from trying to mark up javascript generated HTML/CSS code. + private static int MIN_ATTR_LENGTH = 3; private static HashMap<String, Pattern> pcPatterns = new HashMap<String, Pattern>(); @@ -179,7 +179,7 @@ int attrStart = matcher.start(1); int attrEnd = matcher.end(1); idx = attrEnd; - if(origAttrLength < MIN_STYLE_LENGTH) { + if(origAttrLength < MIN_ATTR_LENGTH) { continue; } @@ -227,10 +227,12 @@ * Alter the HTML document in page, updating URLs in the attrName attributes * of all tagName tags such that: * - * 1) absolute URLs are prefixed with: wmPrefix + pageTS 2) server-relative - * URLs are prefixed with: wmPrefix + pageTS + (host of page) 3) - * path-relative URLs are prefixed with: wmPrefix + pageTS + (attribute URL - * resolved against pageUrl) + * 1) absolute URLs are prefixed with: + * wmPrefix + pageTS + * 2) server-relative URLs are prefixed with: + * wmPrefix + pageTS + (host of page) + * 3) path-relative URLs are prefixed with: + * wmPrefix + pageTS + (attribute URL resolved against baseUrl) * * @param page * @param uriConverter @@ -258,6 +260,10 @@ int origUrlLength = url.length(); int attrStart = matcher.start(1); int attrEnd = matcher.end(1); + if(origUrlLength < MIN_ATTR_LENGTH) { + idx = attrEnd; + continue; + } String quote = ""; if (url.charAt(0) == '"') { quote = "\""; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-07-14 21:24:27
|
Revision: 2441 http://archive-access.svn.sourceforge.net/archive-access/?rev=2441&view=rev Author: binzino Date: 2008-07-14 14:24:37 -0700 (Mon, 14 Jul 2008) Log Message: ----------- Fix JIRA: WAX-10, WAX-11, WAX-12. Added 'fileoffset' metadata field and changed 'arcname' to 'filename'. Also add 'exacturl' to be copy of 'url' that is untokenized so it can be matched exactly. All of these changes are driven by Wayback-NutchWAX integration. Modified Paths: -------------- trunk/archive-access/projects/nutchwax/archive/conf/nutch-site.xml trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/Importer.java trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/NutchWax.java trunk/archive-access/projects/nutchwax/archive/src/plugin/query-nutchwax/plugin.xml Modified: trunk/archive-access/projects/nutchwax/archive/conf/nutch-site.xml =================================================================== --- trunk/archive-access/projects/nutchwax/archive/conf/nutch-site.xml 2008-07-14 21:21:52 UTC (rev 2440) +++ trunk/archive-access/projects/nutchwax/archive/conf/nutch-site.xml 2008-07-14 21:24:37 UTC (rev 2441) @@ -44,9 +44,11 @@ <name>nutchwax.filter.index</name> <value> url:false:true:true + url:flase:true:false:true:exacturl orig:false digest:false - arcname:false + filename:false + fileoffset:false collection date type @@ -68,7 +70,9 @@ <name>nutchwax.filter.query</name> <value> raw:digest:false - raw:arcname:false + raw:filename:false + raw:fileoffset:false + raw:exacturl:false group:collection group:type field:anchor Modified: trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/Importer.java =================================================================== --- trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/Importer.java 2008-07-14 21:21:52 UTC (rev 2440) +++ trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/Importer.java 2008-07-14 21:24:37 UTC (rev 2441) @@ -158,8 +158,8 @@ } /** - * <p>Runs the Map job to translate an arc file into output for Nutch - * segments.</p> + * <p>Runs the Map job to import records from an archive file into a + * Nutch segment.</p> * * @param key Line number in manifest corresponding to the <code>value</code> * @param value A line from the manifest @@ -306,7 +306,8 @@ contentMetadata.set( NutchWax.ORIG_KEY, key ); contentMetadata.set( NutchWax.CONTENT_TYPE_KEY, meta.getMimetype() ); - contentMetadata.set( NutchWax.ARCNAME_KEY, meta.getArcFile().getName() ); + contentMetadata.set( NutchWax.FILENAME_KEY, meta.getArcFile().getName() ); + contentMetadata.set( NutchWax.FILEOFFSET_KEY, String.valueOf( record.getHeader().getOffset( ) ) ); contentMetadata.set( NutchWax.COLLECTION_KEY, collectionName ); contentMetadata.set( NutchWax.DATE_KEY, meta.getDate() ); contentMetadata.set( NutchWax.DIGEST_KEY, meta.getDigest() ); @@ -360,7 +361,11 @@ } /** - * + * Writes the key and related content to the output collector. The + * division between <code>importRecord</code> and + * <code>output</code> is merely based on the way the code was + * structured in the <code>ArcSegmentCreator.java</code> which was + * used as a starting-point for this class. */ private void output( OutputCollector output, Text key, @@ -563,7 +568,10 @@ } /** - * + * Runs the import job with the given arguments. This method + * assumes that is is being run via the command-line; as such, it + * emits error messages regarding invalid/missing arguments to the + * system error stream. */ public int run( String[] args ) throws Exception { @@ -630,6 +638,8 @@ catch ( Exception e ) { LOG.fatal( "Importer: ", e ); + System.err.println( "Fatal error: " + e ); + e.printStackTrace( System.err ); return -1; } @@ -637,7 +647,7 @@ } /** - * + * Emit usage information for command-line driver. */ public void usage( ) { @@ -655,7 +665,7 @@ } /** - * + * Command-line driver. Runs the Importer as a Hadoop job. */ public static void main( String args[] ) throws Exception { Modified: trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/NutchWax.java =================================================================== --- trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/NutchWax.java 2008-07-14 21:21:52 UTC (rev 2440) +++ trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/NutchWax.java 2008-07-14 21:24:37 UTC (rev 2441) @@ -24,7 +24,8 @@ { public static final String URL_KEY = "url"; public static final String ORIG_KEY = "orig"; - public static final String ARCNAME_KEY = "arcname"; + public static final String FILENAME_KEY = "filename"; + public static final String FILEOFFSET_KEY = "fileoffset"; public static final String COLLECTION_KEY = "collection"; public static final String CONTENT_TYPE_KEY = "type"; public static final String DATE_KEY = "date"; Modified: trunk/archive-access/projects/nutchwax/archive/src/plugin/query-nutchwax/plugin.xml =================================================================== --- trunk/archive-access/projects/nutchwax/archive/src/plugin/query-nutchwax/plugin.xml 2008-07-14 21:21:52 UTC (rev 2440) +++ trunk/archive-access/projects/nutchwax/archive/src/plugin/query-nutchwax/plugin.xml 2008-07-14 21:24:37 UTC (rev 2441) @@ -40,7 +40,7 @@ point="org.apache.nutch.searcher.QueryFilter"> <implementation id="ConfigurableQueryFilter" class="org.archive.nutchwax.query.ConfigurableQueryFilter"> - <parameter name="raw-fields" value="arcname,collection,date,type" /> + <parameter name="raw-fields" value="collection,date,digest,exacturl,filename,fileoffset,type" /> <parameter name="fields" value="anchor,content,host,title" /> </implementation> </extension> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bi...@us...> - 2008-07-14 21:21:43
|
Revision: 2440 http://archive-access.svn.sourceforge.net/archive-access/?rev=2440&view=rev Author: binzino Date: 2008-07-14 14:21:52 -0700 (Mon, 14 Jul 2008) Log Message: ----------- Add file offset to ARCRecord created when reading WARC records. Related to JIRA: WAX-12. Modified Paths: -------------- trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/ArcReader.java Modified: trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/ArcReader.java =================================================================== --- trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/ArcReader.java 2008-07-14 02:59:21 UTC (rev 2439) +++ trunk/archive-access/projects/nutchwax/archive/src/java/org/archive/nutchwax/ArcReader.java 2008-07-14 21:21:52 UTC (rev 2440) @@ -212,7 +212,7 @@ arcMetadataFields.put( ARCConstants.MIMETYPE_FIELD_KEY, header.getHeaderValue( null ) ); // We don't know the MIME type of the *payload* in a WARC (yet) arcMetadataFields.put( ARCConstants.LENGTH_FIELD_KEY, header.getHeaderValue( WARCConstants.CONTENT_LENGTH ) ); arcMetadataFields.put( ARCConstants.VERSION_FIELD_KEY, header.getHeaderValue( null ) ); // FIXME: Do we need actual values for these? - arcMetadataFields.put( ARCConstants.ABSOLUTE_OFFSET_KEY, header.getHeaderValue( null ) ); // FIXME: Do we need actual values for these? + arcMetadataFields.put( ARCConstants.ABSOLUTE_OFFSET_KEY, header.getOffset( ) ); // Dates must be converted from WARC format to 14-digit format, // that is, from YYYY-MM-DDTHH:MM:SSZ to YYYYMMDDHHMMSS This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 2439 http://archive-access.svn.sourceforge.net/archive-access/?rev=2439&view=rev Author: bradtofel Date: 2008-07-13 19:59:21 -0700 (Sun, 13 Jul 2008) Log Message: ----------- BUGFIX: was doing extra http:// prefix check, where it should be done in WaybackRequest.setRequestUrl() Modified Paths: -------------- branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java Modified: branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java =================================================================== --- branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java 2008-07-14 01:56:28 UTC (rev 2438) +++ branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java 2008-07-14 02:59:21 UTC (rev 2439) @@ -59,9 +59,6 @@ wbRequest = new WaybackRequest(); String dateStr = matcher.group(1); urlStr = matcher.group(2); - if (!urlStr.startsWith("http://")) { - urlStr = "http://" + urlStr; - } // The logic of the classic WM wrt timestamp bounding: // if 14-digits are specified, assume min-max range boundaries This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-14 01:56:18
|
Revision: 2438 http://archive-access.svn.sourceforge.net/archive-access/?rev=2438&view=rev Author: bradtofel Date: 2008-07-13 18:56:28 -0700 (Sun, 13 Jul 2008) Log Message: ----------- missed target for tag.. Removed Paths: ------------- branches/wayback-1_2_2/wayback/wayback/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-14 01:54:38
|
Revision: 2437 http://archive-access.svn.sourceforge.net/archive-access/?rev=2437&view=rev Author: bradtofel Date: 2008-07-13 18:54:48 -0700 (Sun, 13 Jul 2008) Log Message: ----------- whoops. missed a pom.xml.. 1.2.2 release Modified Paths: -------------- branches/wayback-1_2_2/wayback/dist/pom.xml Modified: branches/wayback-1_2_2/wayback/dist/pom.xml =================================================================== --- branches/wayback-1_2_2/wayback/dist/pom.xml 2008-07-14 01:52:02 UTC (rev 2436) +++ branches/wayback-1_2_2/wayback/dist/pom.xml 2008-07-14 01:54:48 UTC (rev 2437) @@ -3,7 +3,7 @@ <parent> <groupId>org.archive</groupId> <artifactId>wayback</artifactId> - <version>1.2.1</version> + <version>1.2.2</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -54,13 +54,13 @@ <dependency> <groupId>org.archive.wayback</groupId> <artifactId>wayback-webapp</artifactId> - <version>1.2.1</version> + <version>1.2.2</version> <type>war</type> </dependency> <dependency> <groupId>org.archive.wayback</groupId> <artifactId>wayback-mapreduce</artifactId> - <version>1.2.1</version> + <version>1.2.2</version> </dependency> </dependencies> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-14 01:51:53
|
Revision: 2436 http://archive-access.svn.sourceforge.net/archive-access/?rev=2436&view=rev Author: bradtofel Date: 2008-07-13 18:52:02 -0700 (Sun, 13 Jul 2008) Log Message: ----------- 1.2.2 release Added Paths: ----------- branches/wayback-1_2_2/wayback/wayback/ Copied: branches/wayback-1_2_2/wayback/wayback (from rev 2435, branches/wayback-1_2_2/wayback) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-14 01:51:13
|
Revision: 2435 http://archive-access.svn.sourceforge.net/archive-access/?rev=2435&view=rev Author: bradtofel Date: 2008-07-13 18:51:22 -0700 (Sun, 13 Jul 2008) Log Message: ----------- 1.2.2 branch. Modified Paths: -------------- branches/wayback-1_2_2/wayback/pom.xml branches/wayback-1_2_2/wayback/wayback-core/pom.xml branches/wayback-1_2_2/wayback/wayback-mapreduce/pom.xml branches/wayback-1_2_2/wayback/wayback-mapreduce-prereq/pom.xml branches/wayback-1_2_2/wayback/wayback-webapp/pom.xml Modified: branches/wayback-1_2_2/wayback/pom.xml =================================================================== --- branches/wayback-1_2_2/wayback/pom.xml 2008-07-14 01:40:33 UTC (rev 2434) +++ branches/wayback-1_2_2/wayback/pom.xml 2008-07-14 01:51:22 UTC (rev 2435) @@ -16,7 +16,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.archive</groupId> <artifactId>wayback</artifactId> - <version>1.2.1</version> + <version>1.2.2</version> <packaging>pom</packaging> <name>Wayback</name> Modified: branches/wayback-1_2_2/wayback/wayback-core/pom.xml =================================================================== --- branches/wayback-1_2_2/wayback/wayback-core/pom.xml 2008-07-14 01:40:33 UTC (rev 2434) +++ branches/wayback-1_2_2/wayback/wayback-core/pom.xml 2008-07-14 01:51:22 UTC (rev 2435) @@ -17,7 +17,7 @@ <parent> <groupId>org.archive</groupId> <artifactId>wayback</artifactId> - <version>1.2.1</version> + <version>1.2.2</version> </parent> <groupId>org.archive.wayback</groupId> <artifactId>wayback-core</artifactId> Modified: branches/wayback-1_2_2/wayback/wayback-mapreduce/pom.xml =================================================================== --- branches/wayback-1_2_2/wayback/wayback-mapreduce/pom.xml 2008-07-14 01:40:33 UTC (rev 2434) +++ branches/wayback-1_2_2/wayback/wayback-mapreduce/pom.xml 2008-07-14 01:51:22 UTC (rev 2435) @@ -12,7 +12,7 @@ <parent> <groupId>org.archive</groupId> <artifactId>wayback</artifactId> - <version>1.2.1</version> + <version>1.2.2</version> </parent> <groupId>org.archive.wayback</groupId> <artifactId>wayback-mapreduce</artifactId> Modified: branches/wayback-1_2_2/wayback/wayback-mapreduce-prereq/pom.xml =================================================================== --- branches/wayback-1_2_2/wayback/wayback-mapreduce-prereq/pom.xml 2008-07-14 01:40:33 UTC (rev 2434) +++ branches/wayback-1_2_2/wayback/wayback-mapreduce-prereq/pom.xml 2008-07-14 01:51:22 UTC (rev 2435) @@ -10,7 +10,7 @@ <parent> <groupId>org.archive</groupId> <artifactId>wayback</artifactId> - <version>1.2.1</version> + <version>1.2.2</version> </parent> <groupId>org.archive.wayback</groupId> <artifactId>wayback-mapreduce-prereq</artifactId> Modified: branches/wayback-1_2_2/wayback/wayback-webapp/pom.xml =================================================================== --- branches/wayback-1_2_2/wayback/wayback-webapp/pom.xml 2008-07-14 01:40:33 UTC (rev 2434) +++ branches/wayback-1_2_2/wayback/wayback-webapp/pom.xml 2008-07-14 01:51:22 UTC (rev 2435) @@ -3,7 +3,7 @@ <parent> <artifactId>wayback</artifactId> <groupId>org.archive</groupId> - <version>1.2.1</version> + <version>1.2.2</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.archive.wayback</groupId> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-14 01:40:23
|
Revision: 2434 http://archive-access.svn.sourceforge.net/archive-access/?rev=2434&view=rev Author: bradtofel Date: 2008-07-13 18:40:33 -0700 (Sun, 13 Jul 2008) Log Message: ----------- BUGFIX (ACC-21): now rewrites all(or at least more) url(XXX) tags in CSS. Modified Paths: -------------- branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java Modified: branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java =================================================================== --- branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java 2008-07-14 01:40:16 UTC (rev 2433) +++ branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TagMagix.java 2008-07-14 01:40:33 UTC (rev 2434) @@ -76,14 +76,14 @@ private static String cssUrlPatString = "url\\s*\\(\\s*([\\\\\"']*.+?[\\\\\"']*)\\s*\\)"; - private static String cssImportPatString = - "@import\\s+" + cssUrlPatString; +// private static String cssImportPatString = +// "@import\\s+" + cssUrlPatString; private static String cssImportNoUrlPatString = "@import\\s+([\"'].+?[\"'])"; - private static Pattern cssImportPattern = - Pattern.compile(cssImportPatString); +// private static Pattern cssImportPattern = +// Pattern.compile(cssImportPatString); private static Pattern cssImportNoUrlPattern = Pattern.compile(cssImportNoUrlPatString); @@ -161,8 +161,9 @@ public static void markupCSSImports(StringBuilder page, ResultURIConverter uriConverter, String captureDate, String baseUrl) { - markupTagREURIC(page,uriConverter,captureDate,baseUrl,cssImportPattern); +// markupTagREURIC(page,uriConverter,captureDate,baseUrl,cssImportPattern); markupTagREURIC(page,uriConverter,captureDate,baseUrl,cssImportNoUrlPattern); + markupTagREURIC(page,uriConverter,captureDate,baseUrl,cssUrlPattern); } public static void markupStyleUrls(StringBuilder page, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-14 01:40:07
|
Revision: 2433 http://archive-access.svn.sourceforge.net/archive-access/?rev=2433&view=rev Author: bradtofel Date: 2008-07-13 18:40:16 -0700 (Sun, 13 Jul 2008) Log Message: ----------- BUGFIX(ACC-24): now sets number of results requested on WaybackRequest object. Modified Paths: -------------- branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyReplayRequestParser.java Modified: branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyReplayRequestParser.java =================================================================== --- branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyReplayRequestParser.java 2008-07-14 01:39:52 UTC (rev 2432) +++ branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyReplayRequestParser.java 2008-07-14 01:40:16 UTC (rev 2433) @@ -92,6 +92,7 @@ e.printStackTrace(); return null; } + wbRequest.setResultsPerPage(maxRecords); wbRequest.put(WaybackConstants.REQUEST_TYPE, WaybackConstants.REQUEST_REPLAY_QUERY); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-14 01:39:42
|
Revision: 2432 http://archive-access.svn.sourceforge.net/archive-access/?rev=2432&view=rev Author: bradtofel Date: 2008-07-13 18:39:52 -0700 (Sun, 13 Jul 2008) Log Message: ----------- BUGFIX: moved extract HTTP request call to beginning of fixup. IMPROVEMENT (ACC-25): now we allow "http:/" instead of just "http://" to begin URLs. Modified Paths: -------------- branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/core/WaybackRequest.java Modified: branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/core/WaybackRequest.java =================================================================== --- branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/core/WaybackRequest.java 2008-07-14 01:19:31 UTC (rev 2431) +++ branches/wayback-1_2_2/wayback/wayback-core/src/main/java/org/archive/wayback/core/WaybackRequest.java 2008-07-14 01:39:52 UTC (rev 2432) @@ -259,6 +259,7 @@ * @param httpRequest */ public void fixup(HttpServletRequest httpRequest) { + extractHttpRequestInfo(httpRequest); String startDate = get(WaybackConstants.REQUEST_START_DATE); String endDate = get(WaybackConstants.REQUEST_END_DATE); String exactDate = get(WaybackConstants.REQUEST_EXACT_DATE); @@ -287,7 +288,6 @@ put(WaybackConstants.REQUEST_EXACT_DATE, Timestamp .padEndDateStr(exactDate)); } - extractHttpRequestInfo(httpRequest); } /** @@ -346,8 +346,12 @@ * @throws URIException */ public void setRequestUrl(String urlStr) throws URIException { - if (!urlStr.startsWith("http://")) { - urlStr = "http://" + urlStr; + if (!urlStr.startsWith("http://")) { + if(urlStr.startsWith("http:/")) { + urlStr = "http://" + urlStr.substring(6); + } else { + urlStr = "http://" + urlStr; + } } // If its not http, next line throws exception. TODO: Fix. UURI requestURI = UURIFactory.getInstance(urlStr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2008-07-14 01:19:21
|
Revision: 2431 http://archive-access.svn.sourceforge.net/archive-access/?rev=2431&view=rev Author: bradtofel Date: 2008-07-13 18:19:31 -0700 (Sun, 13 Jul 2008) Log Message: ----------- Added Paths: ----------- branches/wayback-1_2_2/wayback/ Copied: branches/wayback-1_2_2/wayback (from rev 2430, branches/wayback-1_2_1/wayback) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |