Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5545E10CE7 for ; Fri, 5 Dec 2014 10:03:31 +0000 (UTC) Received: (qmail 46789 invoked by uid 500); 5 Dec 2014 10:03:31 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 46718 invoked by uid 500); 5 Dec 2014 10:03:31 -0000 Mailing-List: contact commits-help@ignite.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.incubator.apache.org Delivered-To: mailing list commits@ignite.incubator.apache.org Received: (qmail 46700 invoked by uid 99); 5 Dec 2014 10:03:31 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 05 Dec 2014 10:03:31 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 05 Dec 2014 10:03:24 +0000 Received: (qmail 45641 invoked by uid 99); 5 Dec 2014 10:03:03 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 05 Dec 2014 10:03:03 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 7DC6A8BD4E9; Fri, 5 Dec 2014 10:03:03 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sboikov@apache.org To: commits@ignite.incubator.apache.org Date: Fri, 05 Dec 2014 10:03:32 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [31/32] incubator-ignite git commit: # Renaming X-Virus-Checked: Checked by ClamAV on apache.org http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/650cb886/modules/core/src/main/java/org/gridgain/grid/streamer/index/tree/StreamerTreeIndexProvider.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/streamer/index/tree/StreamerTreeIndexProvider.java b/modules/core/src/main/java/org/gridgain/grid/streamer/index/tree/StreamerTreeIndexProvider.java deleted file mode 100644 index fa02b47..0000000 --- a/modules/core/src/main/java/org/gridgain/grid/streamer/index/tree/StreamerTreeIndexProvider.java +++ /dev/null @@ -1,945 +0,0 @@ -/* @java.file.header */ - -/* _________ _____ __________________ _____ - * __ ____/___________(_)______ /__ ____/______ ____(_)_______ - * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ - * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / - * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ - */ - -package org.gridgain.grid.streamer.index.tree; - -import com.romix.scala.collection.concurrent.*; -import org.apache.ignite.streamer.index.*; -import org.gridgain.grid.*; -import org.gridgain.grid.util.snaptree.*; -import org.gridgain.grid.util.typedef.*; -import org.gridgain.grid.util.typedef.internal.*; -import org.jetbrains.annotations.*; - -import java.util.*; -import java.util.concurrent.*; -import java.util.concurrent.atomic.*; - -import static org.apache.ignite.streamer.index.StreamerIndexPolicy.*; - -/** - * Tree index implementation of a {@link org.apache.ignite.streamer.index.StreamerIndexProvider}. - *

- * The advantage of a tree index is that it maintains entries in a - * sorted order, which is invaluable for many kinds of tasks, where - * event ordering makes sense (like {@code GridStreamingPopularNumbersExample}). - * The drawback is that the index entry values should be comparable to each other, - * and you'll are likely to need to implement a custom comparator for values in - * place of a default one. - *

- * If ordering is not required, consider using {@link org.gridgain.grid.streamer.index.hash.StreamerHashIndexProvider} - * instead, which is more efficient (O(1) vs. O(log(n))) and does not require - * comparability. - * - * @see org.gridgain.grid.streamer.index.hash.StreamerHashIndexProvider - * - */ -public class StreamerTreeIndexProvider extends StreamerIndexProviderAdapter { - /** */ - private SnapTreeMap, Entry> idx; - - /** */ - private TrieMap> key2Entry; - - /** */ - private final AtomicLong idxGen = new AtomicLong(); - - /** */ - private Comparator cmp; - - /** */ - private final ThreadLocal> state = new ThreadLocal<>(); - - /** - * Sets comparator. - * - * @param cmp Comparator. - */ - public void setComparator(Comparator cmp) { - this.cmp = cmp; - } - - /** {@inheritDoc} */ - @Override protected StreamerIndex index0() { - return new Index<>(); - } - - /** {@inheritDoc} */ - @Override public void initialize() { - idx = cmp == null ? new SnapTreeMap, Entry>() : - new SnapTreeMap, Entry>(new Comparator>() { - @Override public int compare(IndexKey o1, IndexKey o2) { - int res = cmp.compare(o1.value(), o2.value()); - - return res != 0 || isUnique() ? res : - ((Key)o1).seed > ((Key)o2).seed ? 1 : - ((Key)o1).seed == ((Key)o2).seed ? 0 : -1; - } - }); - - key2Entry = new TrieMap<>(); - } - - /** {@inheritDoc} */ - @Override public void reset0() { - // This will recreate maps. - initialize(); - } - - /** {@inheritDoc} */ - @Override protected void add(E evt, K key, StreamerIndexUpdateSync sync) throws GridException { - State state0 = state.get(); - - if (state0 != null) - throw new IllegalStateException("Previous operation has not been finished: " + state0); - - Entry oldEntry = trieGet(key, key2Entry); - - StreamerIndexUpdater updater = getUpdater(); - - if (oldEntry == null) { - V val = updater.initialValue(evt, key); - - if (val == null) - return; // Ignore event. - - IndexKey idxKey = nextKey(val); - - state0 = new State<>(null, null, idxKey, null, false, false); - - if (isUnique()) - // Lock new key. - lockIndexKey(idxKey, sync); - - state.set(state0); - - Entry newEntry = newEntry(key, val, idxKey, evt); - - // Save new entry to state. - state0.newEntry(newEntry); - - // Put new value to index. - Entry old = idx.putIfAbsent(idxKey, newEntry); - - if (isUnique()) { - if (old != null) - throw new GridException("Index unique key violation [evt=" + evt + ", key=" + key + - ", idxKey=" + idxKey + ']'); - } - else - assert old == null; - - // Put new entry. - Entry rmv = key2Entry.put(key, newEntry); - - assert rmv == null; - - // Update passed. - state0.finished(true); - } - else { - V val = updater.onAdded(oldEntry, evt); - - if (val == null) { - remove(evt, key, sync); - - return; - } - - IndexKey newIdxKey = nextKey(val); - - IndexKey oldIdxKey = oldEntry.keyIndex(); - - assert oldIdxKey != null; // Shouldn't be null for tree index. - - int order = compareKeys(oldIdxKey, newIdxKey); - - state0 = new State<>(oldIdxKey, oldEntry, newIdxKey, null, false, order == 0); - - if (isUnique()) { - if (order == 0) - // Keys are equal. - lockIndexKey(newIdxKey, sync); - else - lockKeys(oldIdxKey, newIdxKey, order, sync); - } - - state.set(state0); - - Entry newEntry = addEvent(oldEntry, key, val, newIdxKey, evt); - - // Save new entry to state. - state0.newEntry(newEntry); - - if (state0.keysEqual()) { - assert isUnique(); - - boolean b = idx.replace(newIdxKey, oldEntry, newEntry); - - assert b; - } - else { - // Put new value to index with new key. - Entry old = idx.putIfAbsent(newIdxKey, newEntry); - - if (isUnique()) { - if (old != null) - throw new GridException("Index unique key violation [evt=" + evt + ", key=" + key + - ", idxKey=" + newIdxKey + ']'); - } - else - assert old == null; - - boolean rmv0 = idx.remove(oldIdxKey, oldEntry); - - assert rmv0; - } - - // Replace former entry with the new one. - boolean b = key2Entry.replace(key, oldEntry, newEntry); - - assert b; - - // Update passed. - state0.finished(true); - } - } - - /** {@inheritDoc} */ - @Override protected void remove(E evt, K key, StreamerIndexUpdateSync sync) throws GridException { - State state0 = state.get(); - - if (state0 != null) - throw new IllegalStateException("Previous operation has not been finished: " + state0); - - Entry oldEntry = trieGet(key, key2Entry); - - if (oldEntry == null) - return; - - StreamerIndexUpdater updater = getUpdater(); - - V val = updater.onRemoved(oldEntry, evt); - - IndexKey oldIdxKey = oldEntry.keyIndex(); - - assert oldIdxKey != null; // Shouldn't be null for tree index. - - if (val == null) { - state0 = new State<>(oldIdxKey, oldEntry, null, null, false, false); - - if (isUnique()) - // Lock old key. - lockIndexKey(oldIdxKey, sync); - - state.set(state0); - - boolean b = idx.remove(oldIdxKey, oldEntry); - - assert b; - - b = key2Entry.remove(key, oldEntry); - - assert b; - - state0.finished(true); - } - else { - IndexKey newIdxKey = nextKey(val); - - int order = compareKeys(oldIdxKey, newIdxKey); - - state0 = new State<>(oldIdxKey, oldEntry, newIdxKey, null, false, order == 0); - - if (isUnique()) { - if (order == 0) - // Keys are equal. - lockIndexKey(newIdxKey, sync); - else - lockKeys(oldIdxKey, newIdxKey, order, sync); - } - - state.set(state0); - - Entry newEntry = removeEvent(oldEntry, key, val, newIdxKey, evt); - - // Save new entry to state. - state0.newEntry(newEntry); - - if (state0.keysEqual()) { - assert isUnique(); - - boolean b = idx.replace(newIdxKey, oldEntry, newEntry); - - assert b; - } - else { - // Put new value to index with new key. - Entry old = idx.putIfAbsent(newIdxKey, newEntry); - - if (isUnique()) { - if (old != null) - throw new GridException("Index unique key violation [evt=" + evt + ", key=" + key + - ", idxKey=" + newIdxKey + ']'); - } - else - assert old == null; - - boolean rmv0 = idx.remove(oldIdxKey, oldEntry); - - assert rmv0; - } - - // Replace former entry with the new one. - boolean b = key2Entry.replace(key, oldEntry, newEntry); - - assert b; - - state0.finished(true); - } - } - - /** - * @param key1 Key. - * @param key2 Key. - * @param order Keys comparison result. - * @param sync Sync. - * @throws GridException If interrupted. - */ - private void lockKeys(IndexKey key1, IndexKey key2, int order, StreamerIndexUpdateSync sync) - throws GridException { - assert isUnique(); - assert key1 != null; - assert key2 != null; - assert order != 0; - - boolean success = false; - - try { - if (order > 0) { - lockIndexKey(key1, sync); - lockIndexKey(key2, sync); - } - else { - // Reverse order. - lockIndexKey(key2, sync); - lockIndexKey(key1, sync); - } - - success = true; - } - finally { - if (!success) { - unlockIndexKey(key1, sync); - unlockIndexKey(key2, sync); - } - } - } - - /** - * @param key1 Key. - * @param key2 Key. - * @return Comparison result. - */ - private int compareKeys(IndexKey key1, IndexKey key2) { - assert key1 != null; - assert key2 != null; - - return cmp != null ? cmp.compare(key1.value(), key2.value()) : - ((Comparable)key1.value()).compareTo(key2.value()); - } - - /** {@inheritDoc} */ - @Override protected void endUpdate0(StreamerIndexUpdateSync sync, E evt, K key, boolean rollback) { - State state0 = state.get(); - - if (state0 == null) - return; - - state.remove(); - - IndexKey oldIdxKey = state0.oldIndexKey(); - Entry oldEntry = state0.oldEntry(); - IndexKey newIdxKey = state0.newIndexKey(); - Entry newEntry = state0.newEntry(); - - if (rollback && state0.finished()) { - // Rollback after index was updated. - if (oldEntry != null && newEntry != null) { - if (state0.keysEqual()) { - assert isUnique(); - - boolean b = idx.replace(oldIdxKey, newEntry, oldEntry); - - assert b; - } - else { - boolean b = idx.remove(newIdxKey, newEntry); - - assert b; - - Entry old = idx.put(oldIdxKey, oldEntry); - - assert old == null; - - b = key2Entry.replace(key, newEntry, oldEntry); - - assert b; - } - } - else if (newEntry == null) { - // Old was removed. Need to put it back. - Entry old = key2Entry.put(key, oldEntry); - - assert old == null; - - old = idx.put(oldIdxKey, oldEntry); - - assert old == null; - } - else { - assert oldEntry == null; - - // New entry was added. Remove it. - boolean b = idx.remove(newIdxKey, newEntry); - - assert b; - - b = key2Entry.remove(key, newEntry); - - assert b; - } - } - - // Unlock only if unique. - if (isUnique()) { - if (oldIdxKey != null) - unlockIndexKey(oldIdxKey, sync); - - if (state0.keysEqual()) - // No need to unlock second key. - return; - - if (newIdxKey != null) - unlockIndexKey(newIdxKey, sync); - } - } - - /** - * @param val Value. - * @return Index key. - */ - protected IndexKey nextKey(V val) { - return new Key<>(val, isUnique() ? 0 : idxGen.incrementAndGet(), cmp); - } - - /** - * @param val Value. - * @param asc {@code True} if ascending. - * @param incl {@code True} if inclusive. - * @return Key for search. - */ - private IndexKey searchKeyFrom(V val, boolean asc, boolean incl) { - // (asc && incl) || (!asc && !incl) -> asc == incl - return new Key<>(val, asc == incl ? Long.MIN_VALUE : Long.MAX_VALUE, cmp); - } - - /** - * @param val Value. - * @param asc {@code True} if ascending. - * @param incl {@code True} if inclusive. - * @return Key for search. - */ - private IndexKey searchKeyTo(V val, boolean asc, boolean incl) { - // (asc && incl) || (!asc && !incl) -> asc == incl - return new Key<>(val, asc == incl ? Long.MAX_VALUE : Long.MIN_VALUE, cmp); - } - - /** {@inheritDoc} */ - @Override public boolean sorted() { - return true; - } - - /** - * - */ - private static class Key implements Comparable>, IndexKey { - /** */ - private final V val; - - /** */ - private final long seed; - - /** */ - private final Comparator cmp; - - /** - * @param val Value. - * @param seed Seed. - * @param cmp Comparator. - */ - private Key(V val, long seed, @Nullable Comparator cmp) { - assert val != null; - - this.val = val; - this.seed = seed; - this.cmp = cmp; - } - - /** {@inheritDoc} */ - @Override public V value() { - return val; - } - - /** {@inheritDoc} */ - @Override public int compareTo(Key o) { - int res = cmp != null ? cmp.compare(val, o.val) : ((Comparable)val).compareTo(o.val); - - return res == 0 ? (seed < o.seed ? -1 : seed > o.seed ? 1 : 0) : res; - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return 31 * val.hashCode() + (int)(seed ^ (seed >>> 32)); - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object obj) { - if (obj == null || obj.getClass() != Key.class) - return false; - - Key key = (Key)obj; - - return seed == key.seed && val.equals(key.val); - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(Key.class, this); - } - } - - /** - * - */ - private static class State { - /** */ - private IndexKey oldIdxKey; - - /** */ - private Entry oldEntry; - - /** */ - private IndexKey newIdxKey; - - /** */ - private Entry newEntry; - - /** */ - private boolean finished; - - /** */ - private final boolean keysEqual; - - /** - * @param oldIdxKey Old index key. - * @param oldEntry Old entry. - * @param newIdxKey New Index key. - * @param newEntry New entry. - * @param finished Finished. - * @param keysEqual {@code True} if keys are equal. - */ - private State(@Nullable IndexKey oldIdxKey, @Nullable Entry oldEntry, @Nullable IndexKey newIdxKey, - @Nullable Entry newEntry, boolean finished, boolean keysEqual) { - this.oldIdxKey = oldIdxKey; - this.oldEntry = oldEntry; - this.newIdxKey = newIdxKey; - this.newEntry = newEntry; - this.finished = finished; - this.keysEqual = keysEqual; - } - - /** - * @return Old index entry. - */ - IndexKey oldIndexKey() { - return oldIdxKey; - } - - /** - * @param oldIdxKey Old index key. - */ - void oldIndexKey(IndexKey oldIdxKey) { - this.oldIdxKey = oldIdxKey; - } - - /** - * @return Old. - */ - Entry oldEntry() { - return oldEntry; - } - - /** - * @param oldEntry Old. - */ - void oldEntry(Entry oldEntry) { - this.oldEntry = oldEntry; - } - - /** - * @return New index key. - */ - IndexKey newIndexKey() { - return newIdxKey; - } - - /** - * @param newIdxKey New index key. - */ - void newIndexKey(IndexKey newIdxKey) { - this.newIdxKey = newIdxKey; - } - - /** - * @return New. - */ - Entry newEntry() { - return newEntry; - } - - /** - * @param newEntry New. - */ - void newEntry(Entry newEntry) { - this.newEntry = newEntry; - } - - /** - * @return Finished. - */ - boolean finished() { - return finished; - } - - /** - * @param finished Finished. - */ - void finished(boolean finished) { - this.finished = finished; - } - - /** - * @return {@code True} if both keys are not null and are equal (as comparables). - */ - boolean keysEqual() { - return keysEqual; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(State.class, this); - } - } - - /** - * - */ - private class Index> implements StreamerIndex { - /** */ - private final TrieMap> key2Entry0 = key2Entry.readOnlySnapshot(); - - /** */ - private final SnapTreeMap, Entry> idx0 = idx.clone(); - - /** */ - private final int evtsCnt = eventsCount(); - - /** {@inheritDoc} */ - @Nullable @Override public String name() { - return getName(); - } - - /** {@inheritDoc} */ - @Override public boolean unique() { - return isUnique(); - } - - /** {@inheritDoc} */ - @Override public boolean sorted() { - return true; - } - - /** {@inheritDoc} */ - @Override public StreamerIndexPolicy policy() { - return getPolicy(); - } - - /** {@inheritDoc} */ - @Override public int size() { - return key2Entry0.size(); - } - - /** {@inheritDoc} */ - @Nullable @Override public StreamerIndexEntry entry(K key) { - A.notNull(key, "key"); - - return trieGet(key, key2Entry0); - } - - /** {@inheritDoc} */ - @Override public Collection> entries(int cnt) { - Collection col = cnt >= 0 ? idx0.values() : idx0.descendingMap().values(); - - return (Collection>)(cnt == 0 ? Collections.unmodifiableCollection(col) : - F.limit(col, U.safeAbs(cnt))); - } - - /** {@inheritDoc} */ - @Override public Set keySet(final int cnt) { - Set col = new AbstractSet() { - private Collection entries = F.viewReadOnly( - cnt >= 0 ? idx0.values() : idx0.descendingMap().values(), - entryToKey); - - @NotNull @Override public Iterator iterator() { - return entries.iterator(); - } - - @Override public int size() { - return entries.size(); - } - }; - - return cnt == 0 ? col : F.limit(col, U.safeAbs(cnt)); - } - - /** {@inheritDoc} */ - @Override public Collection values(int cnt) { - Collection> col = entries(cnt); - - return F.viewReadOnly(col, entryToVal); - } - - /** {@inheritDoc} */ - @Override public Collection events(int cnt) { - Collection evts = events(cnt >= 0, null, false, null, false); - - return cnt == 0 ? evts : F.limit(evts, U.safeAbs(cnt)); - } - - /** {@inheritDoc} */ - @Override public Set> entrySet(V val) { - return entrySet(true, val, true, val, true); - } - - /** {@inheritDoc} */ - @Override public Set> entrySet(final boolean asc, @Nullable final V fromVal, - final boolean fromIncl, @Nullable final V toVal, final boolean toIncl) { - Set> set = new AbstractSet>() { - private Map, Entry> map = subMap(asc, fromVal, fromIncl, toVal, toIncl); - - @NotNull @Override public Iterator> iterator() { - Collection vals = map.values(); - - return (Iterator>)vals.iterator(); - } - - @Override public int size() { - return map.size(); - } - }; - - return Collections.unmodifiableSet(set); - } - - /** {@inheritDoc} */ - @Override public Set keySet(V val) { - return keySet(true, val, true, val, true); - } - - /** {@inheritDoc} */ - @Override public Set keySet(final boolean asc, @Nullable final V fromVal, final boolean fromIncl, - @Nullable final V toVal, final boolean toIncl) { - Set set = new AbstractSet() { - private Map, Entry> map = subMap(asc, fromVal, fromIncl, toVal, toIncl); - - @NotNull @Override public Iterator iterator() { - return F.iterator(map.values(), entryToKey, true); - } - - @Override public int size() { - return map.size(); - } - }; - - return Collections.unmodifiableSet(set); - } - - /** {@inheritDoc} */ - @Override public Collection values(boolean asc, @Nullable V fromVal, boolean fromIncl, @Nullable V toVal, - boolean toIncl) { - Map, Entry> map = subMap(asc, fromVal, fromIncl, toVal, toIncl); - - return F.viewReadOnly(map.values(), entryToVal); - } - - /** {@inheritDoc} */ - @Override public Collection events(V val) { - A.notNull(val, "val"); - - return events(true, val, true, val, true); - } - - /** {@inheritDoc} */ - @Override public Collection events(final boolean asc, @Nullable final V fromVal, final boolean fromIncl, - @Nullable final V toVal, final boolean toIncl) { - if (getPolicy() == EVENT_TRACKING_OFF) - throw new IllegalStateException("Event tracking is off: " + this); - - Collection evts = new AbstractCollection() { - private final Map, Entry> map = subMap(asc, fromVal, fromIncl, toVal, toIncl); - - private int size = -1; - - @NotNull @Override public Iterator iterator() { - return new Iterator() { - private final Iterator> entryIter = map.values().iterator(); - - private Iterator evtIter; - - private boolean moved = true; - - private boolean more; - - @Override public boolean hasNext() { - if (!moved) - return more; - - moved = false; - - if (evtIter != null && evtIter.hasNext()) - return more = true; - - while (entryIter.hasNext()) { - evtIter = eventsIterator(entryIter.next()); - - if (evtIter.hasNext()) - return more = true; - } - - return more = false; - } - - @Override public E next() { - if (hasNext()) { - moved = true; - - return evtIter.next(); - } - - throw new NoSuchElementException(); - } - - @Override public void remove() { - assert false; - } - }; - } - - @Override public int size() { - return size != -1 ? size : - fromVal == null && toVal == null ? (size = evtsCnt) : (size = F.size(iterator())); - } - - /** - * @param entry Entry. - * @return Events iterator. - */ - @SuppressWarnings("fallthrough") - Iterator eventsIterator(StreamerIndexEntry entry) { - switch (getPolicy()) { - case EVENT_TRACKING_ON: - case EVENT_TRACKING_ON_DEDUP: - Collection evts = entry.events(); - - assert evts != null; - - return evts.iterator(); - - default: - assert false; - - throw new IllegalStateException("Event tracking is off: " + Index.this); - } - } - }; - - return Collections.unmodifiableCollection(evts); - } - - /** {@inheritDoc} */ - @Nullable @Override public StreamerIndexEntry firstEntry() { - return idx0.firstEntry().getValue(); - } - - /** {@inheritDoc} */ - @Nullable @Override public StreamerIndexEntry lastEntry() { - return idx0.lastEntry().getValue(); - } - - /** {@inheritDoc} */ - @Override public Iterator> iterator() { - return entries(0).iterator(); - } - - /** - * @param asc Ascending. - * @param fromVal From. - * @param fromIncl Include from. - * @param toVal To. - * @param toIncl Include to. - * @return Map. - */ - private Map, Entry> subMap(boolean asc, @Nullable V fromVal, boolean fromIncl, - @Nullable V toVal, boolean toIncl) { - if (fromVal != null && toVal != null) { - int cmpRes = cmp != null ? cmp.compare(toVal, fromVal) : ((Comparable)toVal).compareTo(fromVal); - - if ((asc && cmpRes < 0) || (!asc && cmpRes > 0)) - throw new IllegalArgumentException("Boundaries are invalid [asc=" + asc + ", fromVal=" + fromVal + - ", toVal=" + toVal + ']'); - } - - if (idx0.isEmpty()) - return Collections.emptyMap(); - - ConcurrentNavigableMap,Entry> map = asc ? idx0 : idx0.descendingMap(); - - if (fromVal == null) { - fromVal = map.firstKey().value(); - - fromIncl = true; - } - - if (toVal == null) { - toVal = map.lastKey().value(); - - toIncl = true; - } - - return map.subMap(searchKeyFrom(fromVal, asc, fromIncl), fromIncl, searchKeyTo(toVal, asc, toIncl), toIncl); - } - - /** {@inheritDoc} */ - @Override public String toString() { - return S.toString(Index.class, this, "provider", StreamerTreeIndexProvider.this); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/650cb886/modules/core/src/main/java/org/gridgain/grid/streamer/index/tree/package.html ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/gridgain/grid/streamer/index/tree/package.html b/modules/core/src/main/java/org/gridgain/grid/streamer/index/tree/package.html deleted file mode 100644 index f8e8773..0000000 --- a/modules/core/src/main/java/org/gridgain/grid/streamer/index/tree/package.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - Contains tree-based streamer index implementation. - - http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/650cb886/modules/core/src/test/config/streamer/average/spring-streamer-average-base.xml ---------------------------------------------------------------------- diff --git a/modules/core/src/test/config/streamer/average/spring-streamer-average-base.xml b/modules/core/src/test/config/streamer/average/spring-streamer-average-base.xml index fbc93ea..968996b 100644 --- a/modules/core/src/test/config/streamer/average/spring-streamer-average-base.xml +++ b/modules/core/src/test/config/streamer/average/spring-streamer-average-base.xml @@ -39,7 +39,7 @@ - + http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/650cb886/modules/core/src/test/java/org/apache/ignite/streamer/index/GridStreamerIndexSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/streamer/index/GridStreamerIndexSelfTest.java b/modules/core/src/test/java/org/apache/ignite/streamer/index/GridStreamerIndexSelfTest.java index c4a3a66..75ac6de 100644 --- a/modules/core/src/test/java/org/apache/ignite/streamer/index/GridStreamerIndexSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/streamer/index/GridStreamerIndexSelfTest.java @@ -10,10 +10,10 @@ package org.apache.ignite.streamer.index; import org.apache.ignite.lang.*; +import org.apache.ignite.streamer.index.hash.*; +import org.apache.ignite.streamer.index.tree.*; import org.apache.ignite.streamer.window.*; import org.gridgain.grid.*; -import org.gridgain.grid.streamer.index.hash.*; -import org.gridgain.grid.streamer.index.tree.*; import org.gridgain.grid.util.typedef.*; import org.gridgain.grid.util.typedef.internal.*; import org.gridgain.testframework.junits.common.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/650cb886/modules/core/src/test/java/org/gridgain/loadtests/streamer/GridStreamerIndexLoadTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/loadtests/streamer/GridStreamerIndexLoadTest.java b/modules/core/src/test/java/org/gridgain/loadtests/streamer/GridStreamerIndexLoadTest.java index 948c82e..b4ae960 100644 --- a/modules/core/src/test/java/org/gridgain/loadtests/streamer/GridStreamerIndexLoadTest.java +++ b/modules/core/src/test/java/org/gridgain/loadtests/streamer/GridStreamerIndexLoadTest.java @@ -11,10 +11,10 @@ package org.gridgain.loadtests.streamer; import org.apache.ignite.lang.*; import org.apache.ignite.streamer.index.*; +import org.apache.ignite.streamer.index.hash.*; +import org.apache.ignite.streamer.index.tree.*; import org.apache.ignite.streamer.window.*; import org.gridgain.grid.*; -import org.gridgain.grid.streamer.index.hash.*; -import org.gridgain.grid.streamer.index.tree.*; import org.gridgain.grid.util.typedef.*; import org.gridgain.grid.util.typedef.internal.*;