package timeflow.views;
import timeflow.app.ui.HtmlDisplay;
import timeflow.data.analysis.*;
import timeflow.data.db.*;
import timeflow.data.time.*;
import timeflow.format.field.FieldFormatCatalog;
import timeflow.model.*;
import java.awt.*;
import java.util.Date;
import javax.swing.*;
public class SummaryView extends AbstractView {
private JEditorPane analysisDisplay;
private FieldAnalysis[] fieldAnalyzers=new FieldAnalysis[]
{
new MissingValueAnalysis(), new RangeDateAnalysis(),
new RangeNumberAnalysis(), new FrequencyAnalysis()
};
private int numItems;
private int numFiltered;
private Interval range;
private JComponent controls;
public SummaryView(TFModel model)
{
super(model);
analysisDisplay=HtmlDisplay.create();
JScrollPane scrollPane = new JScrollPane(analysisDisplay);
setLayout(new GridLayout(1,1));
add(scrollPane);
controls=new HtmlControls("This report gives a
statistical breakdown
"+
"of your data.
Reading the summary often helps
you find "+
"data errors.");
}
@Override
public JComponent _getControls()
{
return controls;
}
void makeHtml()
{
Display d=getModel().getDisplay();
ActDB db=getModel().getDB();
ActList acts=getModel().getActs();
StringBuffer page=new StringBuffer();
page.append("
"); if (getModel().getDB()==null) { page.append(""); analysisDisplay.setText(page.toString()); analysisDisplay.setCaretPosition(0); } static void append(StringBuffer page, String label, String value) { page.append(""+label+" "); page.append(value); page.append("No data loaded.
"); } else { page.append("
File: "+getModel().getDbFile()+"
"); page.append("Source: "+getModel().getDB().getSource()+"
"); page.append("Description: "+getModel().getDB().getDescription()+"
"); page.append("
"); page.append(""); page.append("
"); if (numFiltered>0) { page.append(""); page.append(" "); page.append("Data
"); page.append(""); append(page, "Total events", ""+numItems); if (numItems>0) { append(page, "Total selected", ""+numFiltered); if (numFiltered>0) { append(page, "Earliest", new Date(range.start).toString()); append(page, "Latest", new Date(range.end).toString()); } } page.append(" "); page.append(" "); page.append("Fields
"); page.append(""); for (Field f: getModel().getDB().getFields()) { append(page, f.getName(),FieldFormatCatalog.humanName(f.getType())+fieldLabel(f)); } page.append(" Statistics (for "+acts.size()+" items)
"); for (Field field: db.getFields()) { page.append(""+field.getName()+"
"); page.append(""); for (int i=0; i
"); } } } page.append(""); page.append(""+fa.getName()+"
"); fa.perform(acts, field); String[] s=fa.getResultDescription(); for (int j=0; j"); } page.append(""); } } page.append("