package codeine.mail;
import java.util.List;
import codeine.model.Result;
import codeine.utils.LimitedQueue;
public class CollectorOnNodeState
{
private static final int NUMBER_OF_RESULTS_TO_KEEP = 3;
private boolean previousState;
private List<Result> results;
public CollectorOnNodeState(int n)
{
previousState = true;
results = new LimitedQueue<Result>(n);
}
public CollectorOnNodeState()
{
previousState = true;
results = new LimitedQueue<Result>(NUMBER_OF_RESULTS_TO_KEEP);
}
public void addResult(Result r)
{
previousState = calcState();
results.add(r);
}
private boolean calcState()
{
int success = 0;
if (results.isEmpty())
{
return true;
}
for (Result r : results)
{
if (r != null && r.success())
{
success++;
}
}
return success > results.size() / 2;
}
public boolean state()
{
return calcState();
}
public boolean prevState()
{
return previousState;
}
public Result getLast()
{
return results.get(results.size() - 1);
}
@Override
public String toString()
{
return "CollectorOnNodeState [previousState=" + previousState + ", results=" + results + "]";
}
}