Update of /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/cache
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21729/src/java/net/sf/tail/indicator/cache
Added Files:
CachedIndicator.java
Log Message:
refatoração de código (control + shift + f)
--- NEW FILE: CachedIndicator.java ---
package net.sf.tail.indicator.cache;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import net.sf.tail.Indicator;
public class CachedIndicator implements Indicator {
private final Indicator<? extends Number> indicator;
// TODO - A melhor solução é realmente List<Number> ?
private List<Number> results;
public CachedIndicator(Indicator<? extends Number> indicator) {
this.indicator = indicator;
results = new ArrayList<Number>();
}
public Number getValue(int index) {
increaseLength(index);
if (results.get(index) == null) {
results.set(index, indicator.getValue(index));
}
return results.get(index);
}
private void increaseLength(int index) {
if (results.size() <= index) {
results.addAll(Collections.<Number> nCopies(index - results.size() + 1, null));
}
}
}
|