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...> - 2011-08-16 10:47:35
|
Revision: 3503 http://archive-access.svn.sourceforge.net/archive-access/?rev=3503&view=rev Author: bradtofel Date: 2011-08-16 10:47:28 +0000 (Tue, 16 Aug 2011) Log Message: ----------- BUGFIX: NPE checks Modified Paths: -------------- branches/wayback-1_6_2/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/HTTPRecordAnnotater.java branches/wayback-1_6_2/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/WARCRecordToSearchResultAdapter.java Modified: branches/wayback-1_6_2/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/HTTPRecordAnnotater.java =================================================================== --- branches/wayback-1_6_2/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/HTTPRecordAnnotater.java 2011-08-16 10:26:44 UTC (rev 3502) +++ branches/wayback-1_6_2/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/HTTPRecordAnnotater.java 2011-08-16 10:47:28 UTC (rev 3503) @@ -72,6 +72,9 @@ } public String transformHTTPMime(String input) { + if(input == null) { + return null; + } int semiIdx = input.indexOf(";"); if(semiIdx > 0) { return escapeSpaces(input.substring(0,semiIdx).trim()); @@ -120,6 +123,9 @@ // nothing present in the HTTP headers.. Use the WARC field: mimeType = transformHTTPMime(mimeGuess); } + if(mimeType == null) { + mimeType = "unknown"; + } result.setMimeType(mimeType); // Now the sticky part: If it looks like an HTML document, look for // robot meta tags: Modified: branches/wayback-1_6_2/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/WARCRecordToSearchResultAdapter.java =================================================================== --- branches/wayback-1_6_2/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/WARCRecordToSearchResultAdapter.java 2011-08-16 10:26:44 UTC (rev 3502) +++ branches/wayback-1_6_2/wayback-core/src/main/java/org/archive/wayback/resourcestore/indexer/WARCRecordToSearchResultAdapter.java 2011-08-16 10:47:28 UTC (rev 3503) @@ -95,7 +95,7 @@ if(type.equals(WARCConstants.RESPONSE)) { String mime = annotater.transformHTTPMime(header.getMimetype()); - if(mime.equals("text/dns")) { + if(mime != null && mime.equals("text/dns")) { // close to complete reading, then the digest is legit // TODO: DO we want to use the WARC header digest for this? rec.close(); @@ -264,7 +264,8 @@ int eolCharCount = getEolCharsCount(statusBytes); if (eolCharCount <= 0) { throw new RecoverableIOException("Failed to read http status where one " + - " was expected: " + new String(statusBytes)); + " was expected: " + + ((statusBytes == null) ? "(null)" : new String(statusBytes))); } String statusLine = EncodingUtil.getString(statusBytes, 0, statusBytes.length - eolCharCount, ARCConstants.DEFAULT_ENCODING); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2011-08-16 10:26:51
|
Revision: 3502 http://archive-access.svn.sourceforge.net/archive-access/?rev=3502&view=rev Author: bradtofel Date: 2011-08-16 10:26:44 +0000 (Tue, 16 Aug 2011) Log Message: ----------- edits for 1.6.2 Added Paths: ----------- branches/wayback-1_6_2/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2011-08-16 10:24:35
|
Revision: 3501 http://archive-access.svn.sourceforge.net/archive-access/?rev=3501&view=rev Author: bradtofel Date: 2011-08-16 10:24:29 +0000 (Tue, 16 Aug 2011) Log Message: ----------- Removed Paths: ------------- branches/wayback-1_6_2/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bra...@us...> - 2011-08-16 10:22:35
|
Revision: 3500 http://archive-access.svn.sourceforge.net/archive-access/?rev=3500&view=rev Author: bradtofel Date: 2011-08-16 10:22:29 +0000 (Tue, 16 Aug 2011) Log Message: ----------- edits for 1.6.2 Added Paths: ----------- branches/wayback-1_6_2/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nl...@ar...> - 2011-08-09 00:22:41
|
Wayback-1 - Build # 34 - Successful: Check console output at https://builds.archive.org:1443/job/Wayback-1/34/ to view the results. |
From: <nl...@ar...> - 2011-08-09 00:18:31
|
Access-Control - Build # 37 - Successful: Check console output at https://builds.archive.org:1443/job/Access-Control/37/ to view the results. |
From: <nl...@ar...> - 2011-08-06 00:21:05
|
Wayback-1 - Build # 33 - Successful: Check console output at https://builds.archive.org:1443/job/Wayback-1/33/ to view the results. |
From: <nl...@ar...> - 2011-08-06 00:16:57
|
Access-Control - Build # 36 - Successful: Check console output at https://builds.archive.org:1443/job/Access-Control/36/ to view the results. |
Revision: 3499 http://archive-access.svn.sourceforge.net/archive-access/?rev=3499&view=rev Author: ikreymer Date: 2011-08-06 00:13:21 +0000 (Sat, 06 Aug 2011) Log Message: ----------- ORACLE: Fix URL testing code, properly checks date now, pads to 14-digits correctly Modified Paths: -------------- trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java Modified: trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java =================================================================== --- trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java 2011-08-05 04:55:54 UTC (rev 3498) +++ trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java 2011-08-06 00:13:21 UTC (rev 3499) @@ -162,7 +162,7 @@ String surt; - if (!this.isSurt(url)) { + if (this.isSurt(url)) { surt = url; } else { url = ArchiveUtils.addImpliedHttpIfNecessary(url); @@ -173,24 +173,33 @@ String dateStamp = request.getParameter("checkDate"); String group = request.getParameter("checkGroup"); model.put("checkGroup", group); - model.put("dateStamp", dateStamp); model.put("checkURL", url); Date captureDate = null; if ((dateStamp != null) && !dateStamp.isEmpty()) { - String paddedDateStr = ArchiveUtils.padTo(dateStamp, 14, '0'); + String paddedDateStr = dateStamp; + int pad = 14 - dateStamp.length(); + for (int i = 0; i < pad; i++) { + paddedDateStr += '0'; + } + try { captureDate = ArchiveUtils.parse14DigitDate(paddedDateStr); + model.put("checkDate", dateStamp); } catch (ParseException e) { captureDate = null; } } - Date retrivealDate = new Date(); + Date retrievalDate = new Date(); - Rule theRule = rules.getMatchingRule(surt, captureDate, retrivealDate, group); + if (captureDate == null) { + captureDate = retrievalDate; + } + Rule theRule = rules.getMatchingRule(surt, captureDate, retrievalDate, group); + if (theRule == null) { return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nl...@ar...> - 2011-08-05 18:48:17
|
Wayback-1 - Build # 32 - Successful: Check console output at https://builds.archive.org:1443/job/Wayback-1/32/ to view the results. |
From: <nl...@ar...> - 2011-08-05 18:44:05
|
Access-Control - Build # 35 - Successful: Check console output at https://builds.archive.org:1443/job/Access-Control/35/ to view the results. |
From: <nl...@ar...> - 2011-08-05 18:12:26
|
Access-Control - Build # 34 - Successful: Check console output at https://builds.archive.org:1443/job/Access-Control/34/ to view the results. |
From: <nl...@ar...> - 2011-08-05 05:06:22
|
Wayback-1 - Build # 31 - Successful: Check console output at https://builds.archive.org:1443/job/Wayback-1/31/ to view the results. |
From: <nl...@ar...> - 2011-08-05 05:02:08
|
Access-Control - Build # 33 - Successful: Check console output at https://builds.archive.org:1443/job/Access-Control/33/ to view the results. |
From: <ikr...@us...> - 2011-08-05 04:56:01
|
Revision: 3498 http://archive-access.svn.sourceforge.net/archive-access/?rev=3498&view=rev Author: ikreymer Date: 2011-08-05 04:55:54 +0000 (Fri, 05 Aug 2011) Log Message: ----------- ACCESS_CONTROL: Cleanup Rule sorting, most specific rules are sorted first (including SURT), though oracle web UI reverse order to show general to specific (can add sort option) -Starting work for web test URL UI that highlights the rule that will be matched given a URL Modified Paths: -------------- trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/AccessControlClient.java trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java trunk/archive-access/projects/access-control/access-control/src/test/java/org/archive/accesscontrol/model/RuleSetTest.java trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/DisplayRule.java Modified: trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/AccessControlClient.java =================================================================== --- trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/AccessControlClient.java 2011-08-04 18:36:05 UTC (rev 3497) +++ trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/AccessControlClient.java 2011-08-05 04:55:54 UTC (rev 3498) @@ -154,6 +154,7 @@ * @return * @throws RuleOracleUnavailableException */ + @Deprecated public Rule getRule(String url, Date captureDate, Date retrievalDate, Collection<String> groups) throws RuleOracleUnavailableException { @@ -167,7 +168,7 @@ * member of does not. */ if (bestRule == null || - rule.getPolicyId().compareTo(bestRule.getPolicyId()) < 0) { + rule.getPolicy().compareTo(bestRule.getPolicy()) < 0) { bestRule = rule; } } Modified: trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java =================================================================== --- trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java 2011-08-04 18:36:05 UTC (rev 3497) +++ trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java 2011-08-05 04:55:54 UTC (rev 3498) @@ -4,8 +4,6 @@ import java.util.Date; import java.util.GregorianCalendar; -import org.apache.commons.lang.ArrayUtils; - /** * An access control rules. Rules are organized into a tree based on SURT * components. The leafmost (most specific) matching rule takes precedence. In @@ -18,7 +16,7 @@ public class Rule implements Comparable<Rule> { // in decreasing order of precedence - public static final String[] POLICIES = { "allow", "block", "robots" }; + //public static final String[] POLICIES = { "allow", "block", "robots" }; private Long id; private String policy; @@ -32,11 +30,10 @@ private String privateComment; private String publicComment; private Boolean enabled; - private Boolean exactMatch; + private Boolean exactMatch = Boolean.FALSE; public Rule() { super(); - exactMatch = Boolean.FALSE; } public Rule(String policy, String surt) { @@ -56,6 +53,11 @@ this(policy, surt); this.who = who; } + + public Rule(String policy, String surt, boolean exact) { + this(policy, surt); + this.exactMatch = exact; + } /** @@ -255,9 +257,9 @@ this.publicComment = publicComment; } - public Integer getPolicyId() { - return ArrayUtils.indexOf(POLICIES, getPolicy()); - } +// public Integer getPolicyId() { +// return ArrayUtils.indexOf(POLICIES, getPolicy()); +// } @SuppressWarnings({ "rawtypes", "unchecked" }) public int doCompare(Comparable mine, Comparable other) @@ -267,10 +269,10 @@ } if ((mine != null) && (other != null)) { - return mine.compareTo(other); + return -mine.compareTo(other); } - return ((mine == null) ? -1 : 1); + return -((mine == null) ? -1 : 1); } /* @@ -279,34 +281,45 @@ * then group, then policy. */ public int compareTo(Rule o) { - int i = getSurt().compareTo(o.getSurt()); - if (i == 0) { - // exact matches come before non-exact - if (isExactMatch() && !o.isExactMatch()) { - i = -1; - } else if (!isExactMatch() && o.isExactMatch()) { - i = 1; - } + + int i; + + i = doCompare(this.getSurt(), o.getSurt()); + + if (i != 0) { + return i; + } + + // exact matches come after non-exact + i = doCompare(this.getExactMatch(), o.getExactMatch()); + + if (i != 0) { + return i; + } + + // Compare by accessGroup, specific accessGroups take precedence + i = doCompare(this.getWho(), o.getWho()); + + if (i != 0) { + return i; + } + + // if we're still equal try capture date start + i = doCompare(this.getCaptureStart(), o.getCaptureStart()); + + if (i != 0) { + return i; + } + + // and retrieval date + i = doCompare(this.getRetrievalStart(), o.getRetrievalStart()); + + if (i != 0) { + return i; + } + + i = doCompare(this.getSecondsSinceCapture(), o.getSecondsSinceCapture()); - if (i == 0) { - i = doCompare(this.getWho(), o.getWho()); - } - - // if we're still equal try capture date start - if (i == 0) { - i = doCompare(this.getCaptureStart(), o.getCaptureStart()); - } - - // and retrieval date - if (i == 0) { - i = doCompare(this.getRetrievalStart(), o.getRetrievalStart()); - } - - if (i == 0) { - i = doCompare(this.getPolicyId(), o.getPolicyId()); - } - - } return i; } @@ -367,11 +380,15 @@ && matches(surt, captureDate, retrievalDate); } - public Boolean isExactMatch() { + public boolean isExactMatch() { + return exactMatch.booleanValue(); + } + + public Boolean getExactMatch() { return exactMatch; - } + } public void setExactMatch(Boolean exactMatch) { - this.exactMatch = exactMatch; + this.exactMatch = ((exactMatch == null) ? Boolean.FALSE : exactMatch); } } Modified: trunk/archive-access/projects/access-control/access-control/src/test/java/org/archive/accesscontrol/model/RuleSetTest.java =================================================================== --- trunk/archive-access/projects/access-control/access-control/src/test/java/org/archive/accesscontrol/model/RuleSetTest.java 2011-08-04 18:36:05 UTC (rev 3497) +++ trunk/archive-access/projects/access-control/access-control/src/test/java/org/archive/accesscontrol/model/RuleSetTest.java 2011-08-05 04:55:54 UTC (rev 3498) @@ -35,11 +35,11 @@ public void testSimplePrecedence() { ruleset = new RuleSet(); - ruleset.add(new Rule("robots", "(")); + //ruleset.add(new Rule("robots", "(")); ruleset.add(new Rule("allow", "(")); ruleset.add(new Rule("block", "(org,archive,)/secret/")); ruleset.add(new Rule("allow", "(org,archive,)/secret/public/")); - ruleset.add(new Rule("block", "(org,archive,)/secret/public/")); + //ruleset.add(new Rule("block", "(org,archive,)/secret/public/")); assertEquals("allow", ruleset.getMatchingRule("(org", new Date(), new Date(), null).getPolicy()); assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/", new Date(), new Date(), null).getPolicy()); @@ -81,6 +81,37 @@ assertEquals("robots", ruleset.getMatchingRule("(org,archive,)/classified-photons", new Date(), new Date(), "public").getPolicy()); } + public void testGroupMore() { + ruleset = new RuleSet(); + ruleset.add(new Rule("allow", "(")); + ruleset.add(new Rule("block", "(org,", "coll")); + ruleset.add(new Rule("block", "(org,archive,)/collonly/")); + ruleset.add(new Rule("block", "(org,archive,)/collonly/index.html")); + ruleset.add(new Rule("allow", "(org,archive,)/collonly/", "coll")); + + assertEquals("allow", ruleset.getMatchingRule("(org,archive,www,)/index.html", new Date(), new Date(), "dinosaurs").getPolicy()); + assertEquals("block", ruleset.getMatchingRule("(org,archive,www,)/index.html", new Date(), new Date(), "coll").getPolicy()); + assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/collonly/index.html", new Date(), new Date(), "coll").getPolicy()); + assertEquals("block", ruleset.getMatchingRule("(org,archive,)/collonly/index.html", new Date(), new Date(), "dinosaurs").getPolicy()); + } + + public void testExact() { + ruleset = new RuleSet(); + ruleset.add(new Rule("block", "(org,archive,)/", true)); + ruleset.add(new Rule("allow", "(org,archive,)/", false)); + + assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/somefile", new Date(), new Date(), null).getPolicy()); + assertEquals("block", ruleset.getMatchingRule("(org,archive,)/", new Date(), new Date(), null).getPolicy()); + + + ruleset = new RuleSet(); + ruleset.add(new Rule("allow", "(org,archive,)/", false)); + ruleset.add(new Rule("block", "(org,archive,)/", true)); + + assertEquals("allow", ruleset.getMatchingRule("(org,archive,)/somefile", new Date(), new Date(), null).getPolicy()); + assertEquals("block", ruleset.getMatchingRule("(org,archive,)/", new Date(), new Date(), null).getPolicy()); + } + public void testIterator() { ruleset = new RuleSet(); assertFalse(ruleset.iterator().hasNext()); Modified: trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java =================================================================== --- trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java 2011-08-04 18:36:05 UTC (rev 3497) +++ trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java 2011-08-05 04:55:54 UTC (rev 3498) @@ -9,6 +9,7 @@ import java.util.Collections; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.TimeZone; @@ -117,8 +118,15 @@ } } } - Collections.sort(ruleList); + String order = request.getParameter("order"); + boolean reverse = order != null && order.equals("1"); + if (!reverse) { + Collections.sort(ruleList, Collections.reverseOrder()); + } else { + Collections.sort(ruleList); + } + if (editingRuleId != null && editingRuleId == NEW_RULE) { Rule rule = new Rule(); rule.setId(NEW_RULE); @@ -129,9 +137,11 @@ ruleList.add(newRule); } - ArrayList<String> childSurtsList = new ArrayList<String>(childSurts); + ArrayList<String> childSurtsList = new ArrayList<String>(childSurts); Collections.sort(childSurtsList); + doURLCheck(rules, ruleList, request, model); + model.put("rules", ruleList); model.put("surt", surt); model.put("childSurts", childSurtsList); @@ -142,6 +152,59 @@ return new ModelAndView("list_rules", model); } + protected void doURLCheck(RuleSet rules, List<DisplayRule> ruleList, HttpServletRequest request, Map<String, Object> model) { + + String url = request.getParameter("checkURL"); + + if (url == null || url.isEmpty()) { + return; + } + + String surt; + + if (!this.isSurt(url)) { + surt = url; + } else { + url = ArchiveUtils.addImpliedHttpIfNecessary(url); + surt = SURT.fromURI(url); + } + surt = this.cleanSurt(surt); + + String dateStamp = request.getParameter("checkDate"); + String group = request.getParameter("checkGroup"); + model.put("checkGroup", group); + model.put("dateStamp", dateStamp); + model.put("checkURL", url); + + Date captureDate = null; + + if ((dateStamp != null) && !dateStamp.isEmpty()) { + String paddedDateStr = ArchiveUtils.padTo(dateStamp, 14, '0'); + try { + captureDate = ArchiveUtils.parse14DigitDate(paddedDateStr); + } catch (ParseException e) { + captureDate = null; + } + } + + Date retrivealDate = new Date(); + + Rule theRule = rules.getMatchingRule(surt, captureDate, retrivealDate, group); + + if (theRule == null) { + return; + } + + // Now, find displayRule that contains matched rule, if any, and set it to highlight + for (DisplayRule displayRule : ruleList) + { + if (displayRule.getRule().getId().equals(theRule.getId())) { + displayRule.setHighlight(true); + break; + } + } + } + protected ModelAndView redirectToSurt(HttpServletRequest request, HttpServletResponse response, String surt, ErrorStatus errStatus) throws UnsupportedEncodingException { String newUrl = request.getContextPath() + "/admin?surt=" + URLEncoder.encode(surt, "UTF-8"); if (errStatus != ErrorStatus.SUCCESS) { Modified: trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/DisplayRule.java =================================================================== --- trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/DisplayRule.java 2011-08-04 18:36:05 UTC (rev 3497) +++ trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/DisplayRule.java 2011-08-05 04:55:54 UTC (rev 3498) @@ -14,6 +14,7 @@ private Rule rule; private boolean inherited; private boolean editing; + private boolean highlight; public DisplayRule(Rule rule, boolean inherited) { super(); @@ -52,5 +53,14 @@ public String getEncodedSurt() throws UnsupportedEncodingException { return URLEncoder.encode(rule.getSurt(), "utf-8"); } + + public void setHighlight(boolean highlight) { + this.highlight = highlight; + } + + public boolean isHighlight() + { + return this.highlight; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nl...@ar...> - 2011-08-04 18:46:15
|
Wayback-1 - Build # 30 - Successful: Check console output at https://builds.archive.org:1443/job/Wayback-1/30/ to view the results. |
From: <nl...@ar...> - 2011-08-04 18:41:57
|
Access-Control - Build # 32 - Successful: Check console output at https://builds.archive.org:1443/job/Access-Control/32/ to view the results. |
From: <ikr...@us...> - 2011-08-04 18:36:11
|
Revision: 3497 http://archive-access.svn.sourceforge.net/archive-access/?rev=3497&view=rev Author: ikreymer Date: 2011-08-04 18:36:05 +0000 (Thu, 04 Aug 2011) Log Message: ----------- ACCESS_CONTROL: Switch exactMatch field to be java.lang.Boolean from boolean Modified Paths: -------------- trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java trunk/archive-access/projects/access-control/access-control/src/main/resources/Rule.hbm.xml Modified: trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java =================================================================== --- trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java 2011-08-04 00:33:20 UTC (rev 3496) +++ trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java 2011-08-04 18:36:05 UTC (rev 3497) @@ -32,20 +32,21 @@ private String privateComment; private String publicComment; private Boolean enabled; - private boolean exactMatch; + private Boolean exactMatch; public Rule() { - + super(); + exactMatch = Boolean.FALSE; } public Rule(String policy, String surt) { - super(); + this(); this.policy = policy; this.surt = surt; } public Rule(String policy, String surt, Integer secondsSinceCapture) { - super(); + this(); this.policy = policy; this.surt = surt; this.secondsSinceCapture = secondsSinceCapture; @@ -366,11 +367,11 @@ && matches(surt, captureDate, retrievalDate); } - public boolean isExactMatch() { + public Boolean isExactMatch() { return exactMatch; } - public void setExactMatch(boolean exactMatch) { + public void setExactMatch(Boolean exactMatch) { this.exactMatch = exactMatch; } } Modified: trunk/archive-access/projects/access-control/access-control/src/main/resources/Rule.hbm.xml =================================================================== --- trunk/archive-access/projects/access-control/access-control/src/main/resources/Rule.hbm.xml 2011-08-04 00:33:20 UTC (rev 3496) +++ trunk/archive-access/projects/access-control/access-control/src/main/resources/Rule.hbm.xml 2011-08-04 18:36:05 UTC (rev 3497) @@ -25,6 +25,6 @@ <property name="privateComment" column="private_comment" type="text" /> <property name="publicComment" column="public_comment" type="text" /> <property name="enabled" column="enabled" type="java.lang.Boolean" /> - <property name="exactMatch" column="exactMatch" type="boolean" /> + <property name="exactMatch" column="exactMatch" type="java.lang.Boolean" /> </class> </hibernate-mapping> \ 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: <nl...@ar...> - 2011-08-04 02:11:39
|
Wayback-1 - Build # 29 - Successful: Check console output at https://builds.archive.org:1443/job/Wayback-1/29/ to view the results. |
From: <nl...@ar...> - 2011-08-04 02:07:45
|
Access-Control - Build # 31 - Successful: Check console output at https://builds.archive.org:1443/job/Access-Control/31/ to view the results. |
From: <nl...@ar...> - 2011-08-04 00:51:13
|
Wayback-1 - Build # 28 - Successful: Check console output at https://builds.archive.org:1443/job/Wayback-1/28/ to view the results. |
From: <nl...@ar...> - 2011-08-04 00:47:23
|
Access-Control - Build # 30 - Successful: Check console output at https://builds.archive.org:1443/job/Access-Control/30/ to view the results. |
From: <ikr...@us...> - 2011-08-04 00:33:26
|
Revision: 3496 http://archive-access.svn.sourceforge.net/archive-access/?rev=3496&view=rev Author: ikreymer Date: 2011-08-04 00:33:20 +0000 (Thu, 04 Aug 2011) Log Message: ----------- ACCESS_CONTROL: Rule compareTo() sorts by captureDate, retrievalDate, then policy Modified Paths: -------------- trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java Modified: trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java =================================================================== --- trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java 2011-08-03 19:29:03 UTC (rev 3495) +++ trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java 2011-08-04 00:33:20 UTC (rev 3496) @@ -258,6 +258,20 @@ return ArrayUtils.indexOf(POLICIES, getPolicy()); } + @SuppressWarnings({ "rawtypes", "unchecked" }) + public int doCompare(Comparable mine, Comparable other) + { + if ((mine == null) && (other == null)) { + return 0; + } + + if ((mine != null) && (other != null)) { + return mine.compareTo(other); + } + + return ((mine == null) ? -1 : 1); + } + /* * Rules are sorted in descending order of "specificity". * So we order first by SURT, exact-match, @@ -271,28 +285,26 @@ i = -1; } else if (!isExactMatch() && o.isExactMatch()) { i = 1; - - // non-null groups come before null groups - } else if (getWho() != null && o.getWho() == null) { - i = -1; - } else if (getWho() == null && o.getWho() != null) { - i = 1; - } else if (getWho() != null && o.getWho() != null) { - i = getWho().compareTo(o.getWho()); - } else { - i = getPolicyId().compareTo(o.getPolicyId()); } - + if (i == 0) { + i = doCompare(this.getWho(), o.getWho()); + } + // if we're still equal try capture date start - if (i == 0 && getCaptureStart() != null) { - i = getCaptureStart().compareTo(o.getCaptureStart()); + if (i == 0) { + i = doCompare(this.getCaptureStart(), o.getCaptureStart()); } // and retrieval date - if (i == 0 && getRetrievalStart() != null) { - i = getRetrievalStart().compareTo(o.getRetrievalStart()); + if (i == 0) { + i = doCompare(this.getRetrievalStart(), o.getRetrievalStart()); } + + if (i == 0) { + i = doCompare(this.getPolicyId(), o.getPolicyId()); + } + } return i; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ikr...@us...> - 2011-08-03 19:29:13
|
Revision: 3495 http://archive-access.svn.sourceforge.net/archive-access/?rev=3495&view=rev Author: ikreymer Date: 2011-08-03 19:29:03 +0000 (Wed, 03 Aug 2011) Log Message: ----------- EXCLUSION ORACLE WEBUI: Check for dups when adding a new rule. Attempts to add a duplicate rule (all constraints matching) will set errorStatus param and reject the add Modified Paths: -------------- trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/model/HibernateRuleDao.java trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java Modified: trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/model/HibernateRuleDao.java =================================================================== --- trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/model/HibernateRuleDao.java 2011-08-03 19:26:49 UTC (rev 3494) +++ trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/model/HibernateRuleDao.java 2011-08-03 19:29:03 UTC (rev 3495) @@ -75,6 +75,24 @@ getHibernateTemplate().saveOrUpdate(rule); } + public boolean saveRuleIfNotDup(Rule rule) + { + List<Rule> allRules = getAllRules(); + + for (Rule existingRule : allRules) + { + if (existingRule.compareTo(rule) == 0) { + // If we're not the same, rule then we're a dup! + if ((rule.getId() == null) || !rule.getId().equals(existingRule.getId())) { + return false; + } + } + } + + saveRule(rule); + return true; + } + /** * Save a rule and a change log entry in one go. (Uses a transaction). * @param rule Modified: trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java =================================================================== --- trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java 2011-08-03 19:26:49 UTC (rev 3494) +++ trunk/archive-access/projects/access-control/oracle/src/main/java/org/archive/accesscontrol/webui/AdminController.java 2011-08-03 19:29:03 UTC (rev 3495) @@ -32,6 +32,12 @@ static { dateFormatter.setTimeZone(TimeZone.getTimeZone("GMT")); } + + protected enum ErrorStatus + { + SUCCESS, + DUP_RULE, + } @Autowired public AdminController(HibernateRuleDao ruleDao) { @@ -132,15 +138,24 @@ model.put("encodedSurt", URLEncoder.encode(surt, "utf-8")); model.put("breadcrumbs", SurtNode.nodesFromSurt(surt)); model.put("editingRuleId", request.getParameter("edit")); + model.put("errorStatus", request.getParameter("errorStatus")); return new ModelAndView("list_rules", model); } - protected ModelAndView redirectToSurt(HttpServletRequest request, HttpServletResponse response, String surt) throws UnsupportedEncodingException { - response.setHeader("Location", request.getContextPath() + "/admin?surt=" + URLEncoder.encode(surt, "UTF-8")); + protected ModelAndView redirectToSurt(HttpServletRequest request, HttpServletResponse response, String surt, ErrorStatus errStatus) throws UnsupportedEncodingException { + String newUrl = request.getContextPath() + "/admin?surt=" + URLEncoder.encode(surt, "UTF-8"); + if (errStatus != ErrorStatus.SUCCESS) { + newUrl += "&errorStatus=" + errStatus.toString(); + } + response.setHeader("Location", newUrl); response.setStatus(302); return null; } + protected ModelAndView redirectToSurt(HttpServletRequest request, HttpServletResponse response, String surt) throws UnsupportedEncodingException { + return redirectToSurt(request, response, surt, ErrorStatus.SUCCESS); + } + @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { @@ -197,9 +212,19 @@ rule.setSecondsSinceCapture(parseInteger(request.getParameter("secondsSinceCapture"))); rule.setPrivateComment(request.getParameter("privateComment")); rule.setPublicComment(request.getParameter("publicComment")); - ruleDao.saveRule(rule); + rule.setExactMatch(request.getParameter("exactMatch") != null); - return redirectToSurt(request, response, surt); + boolean saved = true; + + // If adding a new rule, make sure it doesn't match any existing rules + // or we'll have duplicates (and only one of the dups will show up in the list) + if (ruleId == NEW_RULE) { + saved = ruleDao.saveRuleIfNotDup(rule); + } else { + ruleDao.saveRule(rule); + } + + return redirectToSurt(request, response, surt, saved ? ErrorStatus.SUCCESS : ErrorStatus.DUP_RULE); } private Date parseDate(String s) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ikr...@us...> - 2011-08-03 19:27:00
|
Revision: 3494 http://archive-access.svn.sourceforge.net/archive-access/?rev=3494&view=rev Author: ikreymer Date: 2011-08-03 19:26:49 +0000 (Wed, 03 Aug 2011) Log Message: ----------- ACCESS_CONTROL: Store the exactMatch field boolean, and use it for comparison. If set, using equals() to match a SURT, otherwise using startsWith() as before Modified Paths: -------------- trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/RuleSet.java trunk/archive-access/projects/access-control/access-control/src/main/resources/Rule.hbm.xml Modified: trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java =================================================================== --- trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java 2011-08-02 23:23:25 UTC (rev 3493) +++ trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/Rule.java 2011-08-03 19:26:49 UTC (rev 3494) @@ -301,7 +301,8 @@ * @see #matches(String, Date, Date, String) */ public boolean matches(String surt) { - return surt.startsWith(getSurt()); + String mySurt = getSurt(); + return (isExactMatch() ? surt.equals(mySurt) : surt.startsWith(mySurt)); } /** Modified: trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/RuleSet.java =================================================================== --- trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/RuleSet.java 2011-08-02 23:23:25 UTC (rev 3493) +++ trunk/archive-access/projects/access-control/access-control/src/main/java/org/archive/accesscontrol/model/RuleSet.java 2011-08-03 19:26:49 UTC (rev 3494) @@ -6,7 +6,6 @@ import java.util.TreeSet; import org.archive.surt.NewSurtTokenizer; -import sun.reflect.generics.reflectiveObjects.NotImplementedException; /** * A set of acess control rules which can be queried to find the governing rule @@ -46,7 +45,7 @@ } public void remove() { - throw new NotImplementedException(); + throw new UnsupportedOperationException(); } } Modified: trunk/archive-access/projects/access-control/access-control/src/main/resources/Rule.hbm.xml =================================================================== --- trunk/archive-access/projects/access-control/access-control/src/main/resources/Rule.hbm.xml 2011-08-02 23:23:25 UTC (rev 3493) +++ trunk/archive-access/projects/access-control/access-control/src/main/resources/Rule.hbm.xml 2011-08-03 19:26:49 UTC (rev 3494) @@ -25,6 +25,6 @@ <property name="privateComment" column="private_comment" type="text" /> <property name="publicComment" column="public_comment" type="text" /> <property name="enabled" column="enabled" type="java.lang.Boolean" /> - - </class> + <property name="exactMatch" column="exactMatch" type="boolean" /> + </class> </hibernate-mapping> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |