package edu.harvard.wcfia.yoshikoder.reporting;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Logger;
import edu.harvard.wcfia.yoshikoder.dictionary.Node;
import edu.harvard.wcfia.yoshikoder.document.DocumentListImpl;
import edu.harvard.wcfia.yoshikoder.document.YKDocument;
public class DictionaryFrequencyReport extends AbstractReport implements YKReport {
private static Logger log =
Logger.getLogger("edu.harvard.wcfia.yoshikoder.reporting.DictionaryFrequencyReport");
protected EntryFrequencyMap map;
protected boolean showPatterns = false;
public DictionaryFrequencyReport(String reportTitle, String desc, String dictName,
YKDocument doc, EntryFrequencyMap efmmap) {
this(reportTitle, desc, dictName, doc, efmmap, false);
}
public DictionaryFrequencyReport(String reportTitle, String desc, String dictName,
YKDocument doc, EntryFrequencyMap efmmap, boolean showPats) {
super(reportTitle, desc, dictName, new DocumentListImpl(doc));
map = efmmap;
showPatterns = showPats;
data = initData();
}
public boolean getShowPatterns(){
return showPatterns;
}
protected Object[][] initData(){
List l = null;
if (showPatterns)
l = map.getSortedEntries();
else {
l = map.getSortedCategoryEntries();
log.info("length of sorted categories: " + l.size());
}
Object[][] report = new Object[l.size()][3];
int ii=0;
for (Iterator iter = l.iterator(); iter.hasNext();) {
Node node = (Node) iter.next();
//if (node.getParent()==null) // a root node - the dictionary name
// continue;
String entryPath = map.getEntryPath(node);
report[ii][0] = entryPath;//.substring(entryPath.indexOf('>')+2, entryPath.length());
report[ii][1] = map.getEntryCount(node);
report[ii][2] = map.getEntryProportion(node);
//report[ii][3] = map.getEntryProportion(node);
ii++;
}
return report;
}
public EntryFrequencyMap getEntryFrequencyMap(){
return map;
}
public Class getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0:
return String.class;
case 1:
return Integer.class;
case 2:
return Double.class;
default:
return Object.class;
}
}
public String getColumnName(int column) {
switch (column) {
case 0:
return "Entry";
case 1:
return "Count";
case 2:
return "Proportion";
default:
return "No title";
}
}
}