Skip to content

Commit 8782221

Browse files
committed
add support for 0.9 spec, in particular from and until replacing modified in rs:md
1 parent d021a04 commit 8782221

File tree

10 files changed

+164
-39
lines changed

10 files changed

+164
-39
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>org.openarchives</groupId>
88
<artifactId>resourcesync</artifactId>
9-
<version>0.6-SNAPSHOT</version>
9+
<version>0.9-SNAPSHOT</version>
1010

1111
<build>
1212
<plugins>

src/main/java/org/openarchives/resourcesync/CapabilityList.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ public CapabilityList()
1313
this(null, null);
1414
}
1515

16+
public CapabilityList(String describedBy)
17+
{
18+
this(describedBy, null);
19+
}
20+
1621
public CapabilityList(String describedBy, Date lastModified)
1722
{
1823
super(ResourceSync.CAPABILITY_CAPABILITYLIST);
@@ -22,13 +27,9 @@ public CapabilityList(String describedBy, Date lastModified)
2227
this.allowedCapabilities.add(ResourceSync.CAPABILITY_CHANGELIST);
2328
this.allowedCapabilities.add(ResourceSync.CAPABILITY_CHANGEDUMP);
2429

25-
if (lastModified == null)
26-
{
27-
this.lastModified = new Date();
28-
}
29-
else
30+
if (lastModified != null)
3031
{
31-
this.lastModified = lastModified;
32+
this.setLastModified(lastModified);
3233
}
3334

3435
if (describedBy != null)

src/main/java/org/openarchives/resourcesync/ChangeList.java

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,28 @@ public class ChangeList extends UrlSet
66
{
77
public ChangeList()
88
{
9-
this(null, null, null);
9+
this(null, null, null, null);
1010
}
1111

12-
public ChangeList(Date lastMod)
12+
public ChangeList(Date from, Date until)
1313
{
14-
this(lastMod, null, null);
14+
this(from, until, null, null);
1515
}
1616

1717
public ChangeList(String capabilityList)
1818
{
19-
this(null, capabilityList, null);
19+
this(null, null, capabilityList, null);
2020
}
2121

22-
public ChangeList(Date lastMod, String capabilityList)
22+
public ChangeList(Date from, Date until, String capabilityList)
2323
{
24-
this(lastMod, capabilityList, null);
24+
this(from, until, capabilityList, null);
2525
}
2626

27-
public ChangeList(Date lastMod, String capabilityList, String changeListArchive)
27+
public ChangeList(Date from, Date until, String capabilityList, String changeListArchive)
2828
{
2929
super(ResourceSync.CAPABILITY_CHANGELIST);
30-
this.setLastModified(lastMod);
30+
this.setFromUntil(from, until);
3131

3232
if (capabilityList != null)
3333
{
@@ -42,6 +42,23 @@ public void inChangeListArchive(String changeListArchive)
4242

4343
public void addChange(URL change)
4444
{
45+
if (this.getFrom() == null)
46+
{
47+
this.setFrom(change.getLastModified());
48+
}
49+
else if (change.getLastModified().getTime() < this.getFrom().getTime())
50+
{
51+
this.setFrom(change.getLastModified());
52+
}
53+
54+
if (this.getUntil() == null)
55+
{
56+
this.setUntil(change.getLastModified());
57+
}
58+
else if (change.getLastModified().getTime() > this.getUntil().getTime())
59+
{
60+
this.setUntil(change.getLastModified());
61+
}
4562
this.addUrl(change);
4663
}
4764

src/main/java/org/openarchives/resourcesync/ChangeListArchive.java

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,36 @@ public ChangeListArchive()
1010
this(null, null);
1111
}
1212

13-
public ChangeListArchive(Date lastMod)
13+
public ChangeListArchive(Date from, Date until)
1414
{
15-
this(lastMod, null);
15+
this(from, until, null);
1616
}
1717

18-
public ChangeListArchive(Date lastMod, String capabilityList)
18+
public ChangeListArchive(String capabilityList)
19+
{
20+
this(null, null, capabilityList);
21+
}
22+
23+
public ChangeListArchive(Date from, Date until, String capabilityList)
1924
{
2025
super(ResourceSync.CAPABILITY_CHANGELIST_ARCHIVE);
2126

22-
if (lastMod != null)
27+
if (from != null)
28+
{
29+
this.setFrom(from);
30+
}
31+
else
32+
{
33+
this.setFrom(new Date());
34+
}
35+
36+
if (until != null)
2337
{
24-
this.setLastModified(lastMod);
38+
this.setUntil(until);
2539
}
2640
else
2741
{
28-
this.setLastModified(new Date());
42+
this.setFrom(new Date());
2943
}
3044

3145
if (capabilityList != null)
@@ -41,6 +55,24 @@ public ChangeListArchive(InputStream in)
4155

4256
public void addChangeList(Sitemap sitemap)
4357
{
58+
if (this.getFrom() == null)
59+
{
60+
this.setFrom(sitemap.getLastModified());
61+
}
62+
else if (sitemap.getLastModified().getTime() < this.getFrom().getTime())
63+
{
64+
this.setFrom(sitemap.getLastModified());
65+
}
66+
67+
if (this.getUntil() == null)
68+
{
69+
this.setUntil(sitemap.getLastModified());
70+
}
71+
else if (sitemap.getLastModified().getTime() > this.getUntil().getTime())
72+
{
73+
this.setUntil(sitemap.getLastModified());
74+
}
75+
4476
this.addSitemap(sitemap);
4577
}
4678

src/main/java/org/openarchives/resourcesync/ResourceList.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ public ResourceList(Date lastMod, String capabilityList, boolean dump)
4545

4646
if (lastMod == null)
4747
{
48-
this.lastModified = new Date();
48+
this.setFrom(new Date());
4949
}
5050
else
5151
{
52-
this.lastModified = lastMod;
52+
this.setFrom(lastMod);
5353
}
5454

5555
if (capabilityList != null)

src/main/java/org/openarchives/resourcesync/ResourceSyncDocument.java

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public abstract class ResourceSyncDocument
2525
protected String root;
2626

2727
// these options can be accessed using getters and setters
28-
protected Date lastModified;
28+
protected Date from;
29+
protected Date until;
2930
protected List<ResourceSyncEntry> unorderedEntries = new ArrayList<ResourceSyncEntry>();
3031
protected TreeMap<Date, List<ResourceSyncEntry>> orderedEntries = new TreeMap<Date, List<ResourceSyncEntry>>();
3132
protected List<ResourceSyncLn> lns = new ArrayList<ResourceSyncLn>();
@@ -98,12 +99,38 @@ public List<ResourceSyncLn> getLns()
9899

99100
public Date getLastModified()
100101
{
101-
return lastModified;
102+
return this.getFrom();
102103
}
103104

104105
public void setLastModified(Date lastModified)
105106
{
106-
this.lastModified = lastModified;
107+
this.setFrom(lastModified);
108+
}
109+
110+
public void setFrom(Date from)
111+
{
112+
this.from = from;
113+
}
114+
115+
public Date getFrom()
116+
{
117+
return this.from;
118+
}
119+
120+
public void setUntil(Date until)
121+
{
122+
this.until = until;
123+
}
124+
125+
public Date getUntil()
126+
{
127+
return this.until;
128+
}
129+
130+
public void setFromUntil(Date from, Date until)
131+
{
132+
this.setFrom(from);
133+
this.setUntil(until);
107134
}
108135

109136
public String getCapability()
@@ -126,12 +153,20 @@ protected void populateDocument(Element element)
126153
this.capability = capability;
127154
}
128155

129-
// - modified
130-
String modified = mdElement.getAttributeValue("modified");
156+
// - from
157+
String modified = mdElement.getAttributeValue("from");
131158
if (modified != null && !"".equals(modified))
132159
{
133160
Date lastMod = ResourceSync.DATE_FORMAT.parse(modified);
134-
this.setLastModified(lastMod);
161+
this.setFrom(lastMod);
162+
}
163+
164+
// - until
165+
String until = mdElement.getAttributeValue("until");
166+
if (until != null && !"".equals(until))
167+
{
168+
Date ud = ResourceSync.DATE_FORMAT.parse(until);
169+
this.setUntil(ud);
135170
}
136171
}
137172

@@ -161,9 +196,13 @@ public Element getElement()
161196
// set the capability of the document in the rs:md
162197
Element md = new Element("md", ResourceSync.NS_RS);
163198
md.setAttribute("capability", this.capability);
164-
if (this.lastModified != null)
199+
if (this.from != null)
200+
{
201+
md.setAttribute("from", ResourceSync.DATE_FORMAT.format(this.from));
202+
}
203+
if (this.until != null)
165204
{
166-
md.setAttribute("modified", ResourceSync.DATE_FORMAT.format(this.lastModified));
205+
md.setAttribute("until", ResourceSync.DATE_FORMAT.format(this.until));
167206
}
168207
root.addContent(md);
169208

src/test/java/org/openarchives/resourcesync/test/TestBaseClasses.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ public void resourceSyncDocument()
250250

251251
ResourceSyncDocument doc = new TestResourceSyncDocument();
252252
doc.setLastModified(now);
253+
doc.setUntil(now);
253254

254255
ResourceSyncEntry entry1 = new TestResourceSyncEntry();
255256
entry1.setLoc("http://entry1");
@@ -271,6 +272,8 @@ public void resourceSyncDocument()
271272

272273
assert doc.getCapability().equals(ResourceSync.CAPABILITY_CHANGEDUMP);
273274
assert doc.getLastModified().equals(now);
275+
assert doc.getFrom().equals(now);
276+
assert doc.getUntil().equals(now);
274277

275278
List<ResourceSyncEntry> entries = doc.getEntries();
276279
assert entries.size() == 2;
@@ -320,9 +323,12 @@ public void resourceSyncDocument()
320323
String cap = md.getAttributeValue("capability");
321324
assert cap.equals(ResourceSync.CAPABILITY_CHANGEDUMP);
322325

323-
String mod = md.getAttributeValue("modified");
326+
String mod = md.getAttributeValue("from");
324327
assert mod.equals(nowStr);
325328

329+
String until = md.getAttributeValue("until");
330+
assert until.equals(nowStr);
331+
326332
List<Element> linkEls = element.getChildren("ln", ResourceSync.NS_RS);
327333
assert linkEls.size() == 2;
328334
descby = false;

src/test/java/org/openarchives/resourcesync/test/TestCapabilityList.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public void blankConstructor()
2323
CapabilityList cl = new CapabilityList();
2424

2525
assert cl.getCapability().equals(ResourceSync.CAPABILITY_CAPABILITYLIST);
26-
assert cl.getLastModified().getTime() >= now.getTime();
26+
assert cl.getLastModified() == null;
2727

2828
List<ResourceSyncLn> lns = cl.getLns();
2929
assert lns.size() == 0;

src/test/java/org/openarchives/resourcesync/test/TestChangeList.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class TestChangeList
1919
public void simpleConstructor()
2020
{
2121
Date now = new Date();
22-
ChangeList cl = new ChangeList(now);
22+
ChangeList cl = new ChangeList(now, now);
2323

2424
assert cl.getCapability().equals(ResourceSync.CAPABILITY_CHANGELIST);
2525
assert cl.getLastModified().getTime() >= now.getTime();
@@ -32,7 +32,7 @@ public void simpleConstructor()
3232
public void construction()
3333
{
3434
Date now = new Date();
35-
ChangeList cl = new ChangeList(now, "http://capabilitylist");
35+
ChangeList cl = new ChangeList(now, now, "http://capabilitylist");
3636

3737
assert cl.getCapability().equals(ResourceSync.CAPABILITY_CHANGELIST);
3838
assert cl.getLastModified().equals(now);
@@ -45,7 +45,7 @@ public void construction()
4545
public void methods()
4646
{
4747
Date now = new Date();
48-
ChangeList cl = new ChangeList(now);
48+
ChangeList cl = new ChangeList(now, now);
4949

5050
URL change = new URL();
5151
change.setLoc("http://change1");
@@ -79,10 +79,23 @@ public void methods()
7979
assert change2;
8080
}
8181

82+
@Test
83+
public void checkFromUntil()
84+
{
85+
ChangeList cl = new ChangeList();
86+
cl.addChange("http://change1", new Date(1000), ResourceSync.CHANGE_CREATED);
87+
cl.addChange("http://change2", new Date(500), ResourceSync.CHANGE_UPDATED);
88+
cl.addChange("http://change3", new Date(50000), ResourceSync.CHANGE_CREATED);
89+
cl.addChange("http://change1", new Date(5000), ResourceSync.CHANGE_UPDATED);
90+
91+
assert cl.getFrom().equals(new Date(500));
92+
assert cl.getUntil().equals(new Date(50000));
93+
}
94+
8295
@Test
8396
public void manualCheck()
8497
{
85-
ChangeList cl = new ChangeList(new Date());
98+
ChangeList cl = new ChangeList(new Date(), new Date());
8699
cl.addChange("http://change1", new Date(), ResourceSync.CHANGE_CREATED);
87100
cl.addChange("http://change2", new Date(), ResourceSync.CHANGE_UPDATED);
88101
cl.addChange("http://change3", new Date(), ResourceSync.CHANGE_CREATED);

0 commit comments

Comments
 (0)