/*****************************************************************************
* Limpet - the Lightweight InforMation ProcEssing Toolkit
* http://limpet.info
*
* (C) 2015-2016, Deep Blue C Technologies Ltd
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the Eclipse Public License v1.0
* (http://www.eclipse.org/legal/epl-v10.html)
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*****************************************************************************/
package info.limpet.analysis;
import info.limpet.IStoreItem;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public abstract class AnalysisLibrary extends CoreAnalysis
{
private final List<IAnalysis> _library;
private final List<String> _titles = new ArrayList<String>();
private final List<String> _values = new ArrayList<String>();
public AnalysisLibrary()
{
super("Library of analysis routines");
_library = new ArrayList<IAnalysis>();
_library.add(new GeneralDescription()
{
protected void presentResults(List<String> titles, List<String> values)
{
output(getName(), titles, values);
}
});
_library.add(new SimpleDescriptiveQuantity()
{
protected void presentResults(List<String> titles, List<String> values)
{
output(getName(), titles, values);
}
});
_library.add(new SimpleDescriptiveObject()
{
protected void presentResults(List<String> titles, List<String> values)
{
output(getName(), titles, values);
}
});
_library.add(new QuantityFrequencyBins()
{
protected void presentResults(List<String> titles, List<String> values)
{
output(getName(), titles, values);
}
});
_library.add(new ObjectFrequencyBins()
{
protected void presentResults(List<String> titles, List<String> values)
{
output(getName(), titles, values);
}
});
}
@Override
public void analyse(List<IStoreItem> selection)
{
// clear the lists
_titles.clear();
_values.clear();
Iterator<IAnalysis> iter = _library.iterator();
while (iter.hasNext())
{
// get the next analysis library
IAnalysis iAnalysis = (IAnalysis) iter.next();
// and run this analysis
iAnalysis.analyse(selection);
}
presentResults(_titles, _values);
}
protected void output(String title, List<String> titles, List<String> values)
{
if (titles.size() > 0)
{
_titles.add("= " + title + " =");
_values.add("");
_titles.addAll(titles);
_values.addAll(values);
}
}
protected abstract void presentResults(List<String> titles,
List<String> values);
}