| 
 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.shapelogic.streams.BaseListCommonStream<E>
public abstract class BaseListCommonStream<E>
Implementation of ListStream. 
 
 Close to
 
 1: a lazy stream.
 2: a UNIX pipe.
 
 This is close to org.apache.commons.collections.list.LazyList,
 but that takes a factory to calculate next element, and that works badly here.
 
 How should a step work?
 Normally call the hasNext, in order for this to work it would have to do the 
 calculation.
 
 So _current should be the last element that has been returned.
 
 So when you call hasNext it will add that element to the list.
 When you call next it will bump the counter up one element if goes too high 
 then do the calculation.
 
 At the end it will get to a point where the calculation fails. 
 At that point last will be set to the current element.
 
 I will ignore synchronization to begin with.
| Field Summary | |
|---|---|
| protected  java.util.Map[] | _contexts | 
| protected  int | _currentThe last value that was calculated and looked at So if you want to see that again use this for a lookup | 
| protected  boolean | _dirty | 
| protected  int | _lastLast value that can be calculated. | 
| protected  java.util.List<E> | _list | 
| protected  int | _maxLastHighest value that last can take. | 
| protected  java.lang.String | _nameDoes not always exist. | 
| protected  IQueryCalc | _query | 
| protected  E | _value | 
| Constructor Summary | |
|---|---|
| BaseListCommonStream() | |
| Method Summary | |
|---|---|
| protected  boolean | calcAddNext()Try to calculate one more, independent of the _current. | 
|  E | get(int arg0)Get next element without advancing _current. | 
|  java.util.Map | getContext()The context if needed. | 
|  java.util.Map[] | getContexts() | 
|  int | getCurrentSize() | 
|  java.lang.Object | getInContext(java.lang.Object key) | 
|  int | getIndex()Index of last successfully processed element. | 
|  int | getLast()Last possible element. | 
|  java.util.List<E> | getList()Get underlying list. | 
|  int | getMaxLast()Set a max value for last possible element. | 
|  java.lang.String | getName()If a stream has a name. | 
|  E | getValue()Starts a lazy calculation. | 
|  boolean | hasNext() | 
|  boolean | hasNextBase() | 
| abstract  E | invokeIndex(int index)Calculate the value at an index. | 
|  boolean | isCached()If there is a list that contains all the results. | 
|  boolean | isContextBased()If it needs a context. | 
|  boolean | isDeterministic()Is the result of a calculation deterministic. | 
|  boolean | isDirty()When dirty is false that means that the calculated value can be used | 
|  boolean | isRandomAccess()If you can calculate 1 element independent of other elements. | 
|  java.util.Iterator<E> | iterator() | 
|  E | next()Get next element and advance _current. | 
|  void | remove() | 
|  void | setList(java.util.List<E> list)Get underlying list. | 
|  void | setMaxLast(int maxLast)Set a max value for last possible element. | 
|  void | setup()Currently not super well define used for 2 purposes: Reset: called from the outside if you want to reuse it init: Called from the inside when calculation start to have everything setup maybe the semantic could work for both? TODO: This should be separated better. | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
protected java.util.List<E> _list
protected int _current
protected int _last
protected int _maxLast
protected java.lang.String _name
protected boolean _dirty
protected E _value
protected java.util.Map[] _contexts
protected IQueryCalc _query
| Constructor Detail | 
|---|
public BaseListCommonStream()
| Method Detail | 
|---|
public abstract E invokeIndex(int index)
public boolean hasNext()
hasNext in interface java.util.Iterator<E>protected boolean calcAddNext()
public boolean hasNextBase()
public E next()
next in interface java.util.Iterator<E>public E get(int arg0)
get in interface NumberedStream<E>public int getLast()
NumberedStream
getLast in interface NumberedStream<E>public int getMaxLast()
NumberedStream
getMaxLast in interface NumberedStream<E>public void setMaxLast(int maxLast)
setMaxLast in interface NumberedStream<E>public boolean isRandomAccess()
StreamProperties
isRandomAccess in interface StreamPropertiespublic boolean isCached()
isCached in interface StreamPropertiespublic int getCurrentSize()
public java.util.List<E> getList()
ListStream
getList in interface ListStream<E>public void setList(java.util.List<E> list)
ListStream
setList in interface ListStream<E>public int getIndex()
NumberedStream
getIndex in interface NumberedStream<E>public java.lang.String getName()
StreamProperties
getName in interface StreamPropertiespublic void setup()
LazyCalc
setup in interface LazyCalc<E>public java.util.Map getContext()
StreamProperties
getContext in interface StreamPropertiespublic E getValue()
CalcValue
getValue in interface CalcValue<E>public boolean isContextBased()
StreamProperties
isContextBased in interface StreamPropertiespublic boolean isDeterministic()
StreamProperties
isDeterministic in interface StreamPropertiespublic boolean isDirty()
LazyCalc
isDirty in interface LazyCalc<E>public void remove()
remove in interface java.util.Iterator<E>public java.util.Iterator<E> iterator()
iterator in interface java.lang.Iterable<E>public java.util.Map[] getContexts()
getContexts in interface InContextspublic java.lang.Object getInContext(java.lang.Object key)
getInContext in interface ContextGettable| 
 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||