X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FCacheCollectionResult.java;h=b87fb840abecde563718330773ec412cb5f603b6;hp=72ca07e65af284507525a35181cf6d99a412c660;hb=HEAD;hpb=969bd23cab98a79ca9101af33334000879fb60c5 diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/CacheCollectionResult.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/CacheCollectionResult.java index 72ca07e65..b87fb840a 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/CacheCollectionResult.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/CacheCollectionResult.java @@ -1,73 +1,73 @@ -package org.simantics.db.impl.query; - -import java.util.ArrayList; -import java.util.Collection; - -public class CacheCollectionResult { - public static final int LEVELS = 10; - private int level = 0; - private int position = -1; - private int currentLength = 0; - private int size = 0; - private ArrayList currentLevel; - public ArrayList levels[] = new ArrayList[LEVELS]; - public CacheCollectionResult() { - for(int i=0;i(); - } - } - public void add(CacheEntryBase entry) { - short level = entry.getLevel(); - if(level < (LEVELS-1)) levels[level].add(entry); - else levels[(LEVELS-1)].add(entry); - size++; - } - public Collection toCollection() { - ArrayList result = new ArrayList(size()); - for(int i=0;i= currentLength) { - if(level == (LEVELS-1)) return null; - if(level == maxLevel) return null; - level++; - position=-1; - currentLevel = levels[level]; - currentLength = currentLevel.size(); - return next(maxLevel); - } - return currentLevel.get(position); - } - public void remove() { - int lastPosition = currentLevel.size()-1; - CacheEntryBase last = currentLevel.remove(lastPosition); - if(lastPosition > position) { - currentLevel.set(position, last); - } - currentLength--; - position--; - size--; - } - public void setLevel(CacheEntryBase current, int level) { - if(level == current.level) return; - current.level = (short)level; - remove(); - add(current); - } +package org.simantics.db.impl.query; + +import java.util.ArrayList; +import java.util.Collection; + +public class CacheCollectionResult { + public static final int LEVELS = 10; + private int level = 0; + private int position = -1; + private int currentLength = 0; + private int size = 0; + private ArrayList currentLevel; + public ArrayList levels[] = new ArrayList[LEVELS]; + public CacheCollectionResult() { + for(int i=0;i(); + } + } + public void add(CacheEntryBase entry) { + short level = entry.getLevel(); + if(level < (LEVELS-1)) levels[level].add(entry); + else levels[(LEVELS-1)].add(entry); + size++; + } + public Collection toCollection() { + ArrayList result = new ArrayList(size()); + for(int i=0;i= currentLength) { + if(level == (LEVELS-1)) return null; + if(level == maxLevel) return null; + level++; + position=-1; + currentLevel = levels[level]; + currentLength = currentLevel.size(); + return next(maxLevel); + } + return currentLevel.get(position); + } + public void remove() { + int lastPosition = currentLevel.size()-1; + CacheEntryBase last = currentLevel.remove(lastPosition); + if(lastPosition > position) { + currentLevel.set(position, last); + } + currentLength--; + position--; + size--; + } + public void setLevel(CacheEntryBase current, int level) { + if(level == current.level) return; + current.level = (short)level; + remove(); + add(current); + } } \ No newline at end of file