diff --git a/htroot/IndexControl_p.html b/htroot/IndexControl_p.html index 6a374ccdf..b4d4c9eaf 100644 --- a/htroot/IndexControl_p.html +++ b/htroot/IndexControl_p.html @@ -116,14 +116,13 @@ - #(keyhashsimilar)# - ::Sequential List of Word-Hashes:
#{rows}# + #(keyhashsimilar)#::Sequential List of Word-Hashes:
+ #{rows}# #{cols}# #[wordHash]##{/cols}#
#{/rows}# #(/keyhashsimilar)# - #(urlhashsimilar)# - ::Sequential List of URL-Hashes:
+ #(urlhashsimilar)#::Sequential List of URL-Hashes:
#{rows}# #{cols}##[urlHash]# #{/cols}#
#{/rows}# diff --git a/source/de/anomic/kelondro/kelondroFlexSplitTable.java b/source/de/anomic/kelondro/kelondroFlexSplitTable.java index 759158c17..3fe941b47 100644 --- a/source/de/anomic/kelondro/kelondroFlexSplitTable.java +++ b/source/de/anomic/kelondro/kelondroFlexSplitTable.java @@ -31,6 +31,7 @@ import java.io.IOException; import java.util.Calendar; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -40,7 +41,7 @@ public class kelondroFlexSplitTable implements kelondroIndex { // this is a set of kelondroFlex tables // the set is divided into FlexTables with different entry date - private HashMap tables; + private HashMap tables; // a map from a date string to a kelondroIndex object private kelondroRow rowdef; private File path; private String tablename; @@ -270,47 +271,14 @@ public class kelondroFlexSplitTable implements kelondroIndex { } public synchronized kelondroCloneableIterator rows(boolean up, byte[] firstKey) throws IOException { - return new rowIter(); - } - - public class rowIter implements kelondroCloneableIterator { - - Iterator t, tt; - - public rowIter() { - t = tables.values().iterator(); - tt = null; - } - - public Object clone(Object modifier) { - return new rowIter(); - } - - public boolean hasNext() { - return ((t.hasNext()) || ((tt != null) && (tt.hasNext()))); - } - - public Object next() { - if ((tt == null) || (!(tt.hasNext()))) { - try { - tt = ((kelondroIndex) t.next()).rows(true, null); - } catch (IOException e) { - return null; - } - } - if (tt.hasNext()) { - return tt.next(); - } else { - return this.next(); // t is empty, try next table - } - } - - public void remove() { - if (tt != null) tt.remove(); + HashSet set = new HashSet(); + Iterator i = tables.values().iterator(); + while (i.hasNext()) { + set.add(((kelondroIndex) i.next()).rows(up, firstKey)); } - + return kelondroMergeIterator.cascade(set, rowdef.objectOrder, kelondroMergeIterator.simpleMerge, up); } - + public final int cacheObjectChunkSize() { // dummy method return -1; diff --git a/source/de/anomic/kelondro/kelondroMergeIterator.java b/source/de/anomic/kelondro/kelondroMergeIterator.java index 04329603b..2418507ce 100644 --- a/source/de/anomic/kelondro/kelondroMergeIterator.java +++ b/source/de/anomic/kelondro/kelondroMergeIterator.java @@ -146,7 +146,7 @@ public class kelondroMergeIterator implements kelondroCloneableIterator { throw new java.lang.UnsupportedOperationException("merge does not support remove"); } - public static Iterator cascade(Set /*of*/ iterators, Comparator c, Method merger, boolean up) { + public static kelondroCloneableIterator cascade(Set /*of*/ iterators, Comparator c, Method merger, boolean up) { // this extends the ability to combine two iterators // to the abiliy of combining a set of iterators if (iterators == null) return null;