Revision: 17475
          http://sourceforge.net/p/gate/code/17475
Author:   adamfunk
Date:     2014-02-27 15:02:48 +0000 (Thu, 27 Feb 2014)
Log Message:
-----------
The app now runs again.  The GUIs, however,....

Modified Paths:
--------------
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/apply/TermScoreCopier.java
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/AbstractTermbank.java
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/AnnotationTermbank.java
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/DocumentFrequencyBank.java
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/HyponymyTermbank.java
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/TfIdfTermbank.java
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/CsvFileSelectionActionListener.java
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/SliderPanel.java
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/TermbankViewer.java
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/output/CsvGenerator.java
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/util/Utilities.java

Removed Paths:
-------------
    
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/DocumentFrequencyViewer.java

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/apply/TermScoreCopier.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/apply/TermScoreCopier.java
      2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/apply/TermScoreCopier.java
      2014-02-27 15:02:48 UTC (rev 17475)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (c) 2012--2013, The University of Sheffield. See the file
+ *  Copyright (c) 2012--2014, The University of Sheffield. See the file
  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
  *
  *  This file is part of GATE (see http://gate.ac.uk/), and is free
@@ -21,11 +21,9 @@
 import gate.creole.metadata.RunTime;
 import gate.termraider.bank.AbstractTermbank;
 import gate.termraider.util.*;
-
 import java.text.NumberFormat;
 import java.util.*;
 
-import org.apache.commons.lang.StringUtils;
 
 
 @CreoleResource(name = "Termbank Score Copier",
@@ -68,7 +66,6 @@
     Set<String> annotationTypes = termbank.getInputAnnotationTypes();
     String termFeature = termbank.getInputAnnotationFeature();
     String languageFeature = termbank.getLanguageFeature();
-    String scoreFeature = termbank.getScoreProperty();
     
     AnnotationSet candidates = 
document.getAnnotations(annotationSetName).get(annotationTypes);
     checkInterruption();
@@ -76,23 +73,14 @@
     for (Annotation candidate : candidates) {
       Term term = new Term(candidate, document, languageFeature, termFeature);
       FeatureMap fm = candidate.getFeatures();
-      Double score = termbank.getScore(term);
-      if (score != null) {
-        fm.put(scoreFeature, score);
+
+      // What the heck, slap them all on the annotation features.
+      // You can't put too many features in a nuclear reactor.
+      Map<ScoreType, Number> scoreMap = termbank.getScoreMap(term);
+      for (ScoreType st : scoreMap.keySet()) {
+        fm.put(st.toNormalizedString(), scoreMap.get(st));
       }
       
-      if (useFeature(frequencyFeature)) {
-        fm.put(frequencyFeature, termbank.getTermFrequency(term));
-      }
-      
-      // TODO
-      // Figure out whether to deal with non-main scores (term freq, doc freq,
-      // ref doc freq, &c.; & if so, how
-      
-      if (useFeature(docFrequencyFeature)) {
-        fm.put(docFrequencyFeature, termbank.getDocFrequency(term));
-      }
-      
       checkInterruption();
     } // end for candidates loop
     
@@ -111,11 +99,6 @@
   }
   
   
-  private boolean useFeature(String feature) {
-    return (StringUtils.stripToEmpty(feature).length() > 0);
-  }
-
-  
   /* CREOLE METHODS */
   
   @RunTime

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/AbstractTermbank.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/AbstractTermbank.java
      2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/AbstractTermbank.java
      2014-02-27 15:02:48 UTC (rev 17475)
@@ -16,16 +16,12 @@
 import gate.gui.ActionsPublisher;
 import gate.util.*;
 import gate.*;
-
 import java.io.*;
 import java.util.*;
-
 import gate.termraider.output.*;
 import gate.termraider.util.*;
 import gate.termraider.gui.*;
-
 import javax.swing.Action;
-
 import org.apache.commons.lang.StringEscapeUtils;
 
 
@@ -47,15 +43,14 @@
   // TODO get rid of this in favour of the default key of scores
   @Deprecated
   protected Map<Term, Double>       termScores;
-  
-  protected List<Term>              termsByDescendingScore;
+  @Deprecated
   protected Map<Term, Integer>      termFrequencies, docFrequencies;
-  protected boolean                 descendingScoresDone = false;
+
+  private List<Term> termsByDescendingScore;
+  protected boolean  descendingScoresDone = false;
   
-  // TODO delete when FrequencyTableModel is superseded
-  public static final String freqProperty = "frequency";
-
   protected List<ScoreType> scoreTypes;
+  private Number minDefaultScore, maxDefaultScore;
 
 
   public Resource init() throws ResourceInstantiationException {
@@ -68,8 +63,8 @@
     }
     resetScores();
     processCorpora();
+    calculateScores();
     scanTypesLanguagesDocFreq();
-    calculateScores();
     return this;
   }
   
@@ -106,6 +101,11 @@
   }
   
   
+  public Map<Term, Number> getDefaultScores() {
+    return this.scores.get(getDefaultScoreType());
+  }
+  
+  
   protected abstract void initializeScoreTypes();
   
   
@@ -131,6 +131,15 @@
   }
   
   
+  public Map<ScoreType, Number> getScoreMap(Term term) {
+    Map<ScoreType, Number> result = new HashMap<ScoreType, Number>();
+    for (ScoreType st : this.scoreTypes) {
+      result.put(st, this.scores.get(st).get(term));
+    }
+    return result;
+  }
+  
+  
   public Set<String> getDocumentsForTerm(Term term) {
     if (this.termDocuments.containsKey(term)) {
       return this.termDocuments.get(term);
@@ -152,32 +161,49 @@
     return this.docFrequencies;
   }
   
-  // TODO delete when FrequencyTableModel is superseded
-  @Deprecated
-  public String getFreqProperty() {
-    return freqProperty;
-  }
   
-  
   public Map<Term, Number> getScores() {
     return this.scores.get(this.getDefaultScoreType());
   }
 
   
+  private void findMinAndMaxDefaultScores() {
+    Collection<Number> values = this.getDefaultScores().values();
+    if (values.isEmpty()) {
+      minDefaultScore = new Integer(0);
+      maxDefaultScore = new Integer(1);
+    }
+    else {
+      minDefaultScore = values.iterator().next();
+      maxDefaultScore = values.iterator().next();
+      for (Number n : values) {
+        if (n.doubleValue() < minDefaultScore.doubleValue()) {
+          minDefaultScore = n;
+        }
+        
+        if (n.doubleValue() > maxDefaultScore.doubleValue()) {
+          maxDefaultScore = n;
+        }
+      }
+    }
+  }
+  
+  
   public Number getMinScore() {
-    if (this.termScores.isEmpty()) {
-      return 1.0;
+    // lazy calculation
+    if (minDefaultScore == null) {
+      findMinAndMaxDefaultScores();
     }
-    // implied else
-    return Collections.min(this.termScores.values());
+    return minDefaultScore;
   }
+
   
   public Number getMaxScore() {
-    if (this.termScores.isEmpty()) {
-      return 1.0;
+    // lazy calculation
+    if (maxDefaultScore == null) {
+      findMinAndMaxDefaultScores();
     }
-    // implied else
-    return Collections.max(this.termScores.values());
+    return maxDefaultScore;
   }
   
   
@@ -222,10 +248,9 @@
   protected void scanTypesLanguagesDocFreq() {
     this.types = new TreeSet<String>();
     this.languages = new TreeSet<String>();
-    for (Term term : this.termFrequencies.keySet()) {
+    for (Term term : this.getDefaultScores().keySet()) {
       this.languages.add(term.getLanguageCode());
       this.types.add(term.getType());
-      this.docFrequencies.put(term, termDocuments.get(term).size());
     }
   }
   

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/AnnotationTermbank.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/AnnotationTermbank.java
    2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/AnnotationTermbank.java
    2014-02-27 15:02:48 UTC (rev 17475)
@@ -68,11 +68,12 @@
     for (Term term : termIndividualScores.keySet()) {
       score = MergingMode.calculate(mergingMode, 
termIndividualScores.get(term));
       Utilities.setScoreTermValue(scores, getDefaultScoreType(), term, score);
-      Utilities.setScoreTermValue(scores, localDocFrequencyST, term, 
termDocuments.size());
+      int localDF = termDocuments.get(term).size();
+      Utilities.setScoreTermValue(scores, localDocFrequencyST, term, localDF);
     }
     
     if (debugMode) {
-      System.out.println("Termbank: nbr of terms = " + 
termsByDescendingScore.size());
+      System.out.println("Termbank: nbr of terms = " + termDocuments.size());
     }
   }
 

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/DocumentFrequencyBank.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/DocumentFrequencyBank.java
 2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/DocumentFrequencyBank.java
 2014-02-27 15:02:48 UTC (rev 17475)
@@ -11,7 +11,6 @@
  */
 package gate.termraider.bank;
 
-import java.io.File;
 import java.util.*;
 import javax.swing.Action;
 import org.apache.commons.lang.StringEscapeUtils;
@@ -26,10 +25,9 @@
 import gate.creole.metadata.CreoleResource;
 import gate.gui.ActionsPublisher;
 import gate.termraider.gui.ActionSaveCsv;
-import gate.termraider.output.CsvGenerator;
 import gate.termraider.util.*;
-import gate.util.GateException;
 
+
 @CreoleResource(name = "DocumentFrequencyBank",
 icon = "termbank-lr.png",
 comment = "Document frequency counter derived from corpora and other DFBs")
@@ -38,12 +36,9 @@
   
   private static final long serialVersionUID = 5149075094060830331L;
   
-  
+  // Note: corpora parameter inherited from AbstractBank
   private Set<DocumentFrequencyBank> inputBanks;
-  // note: corpora inherited from AbstractBank
   
-  private Map<Term, Integer> documentFrequencies;
-  private int minFrequency, maxFrequency;
   private Map<String, Set<Term>> stringLookupTable;
 
   // transient to allow serialization
@@ -52,11 +47,12 @@
 
   public Resource init() throws ResourceInstantiationException {
     prepare();
+    initializeScoreTypes();
     resetScores();
     processInputBanks();
     processCorpora();
+    calculateScores();
     scanTypesLanguagesDocFreq();
-    calculateScores();
     return this;
   }
   
@@ -75,10 +71,14 @@
       inputBanks = new HashSet<DocumentFrequencyBank>();
     }
   }
+
   
   protected void resetScores() {
+    scores = new HashMap<ScoreType, Map<Term,Number>>();
+    for (ScoreType type : scoreTypes) {
+      scores.put(type, new HashMap<Term, Number>());
+    }
     documentCount = 0;
-    documentFrequencies = new HashMap<Term, Integer>();
     languages = new HashSet<String>();
     types = new HashSet<String>();
     stringLookupTable = new HashMap<String, Set<Term>>();
@@ -105,7 +105,7 @@
     for (DocumentFrequencyBank bank : inputBanks) {
       this.documentCount += bank.documentCount;
       for (Term term : bank.getTerms()) {
-        increment(term, bank.getFrequencyStrict(term));
+        Utilities.incrementMap(getDefaultScores(), term, 
bank.getFrequencyStrict(term));
       }
     }
   }
@@ -135,37 +135,29 @@
     }
     
     for (Term term : documentTerms) {
-      increment(term, 1);
+      Utilities.incrementMap(getDefaultScores(), term, 1);
     }
   }
 
   
   protected void calculateScores() {
-    if (this.getTerms().size() > 0) {
-      minFrequency = 
this.getFrequencyStrict(this.getTerms().iterator().next());
-    }
-    else {
-      minFrequency = 0;
-    }
-    maxFrequency = 0;
+    // TODO use the termDocuments mapping here
+    
     for (Term term : this.getTerms()) {
-      int freq = this.getFrequencyStrict(term);
-      maxFrequency = Math.max(maxFrequency, freq);
-      minFrequency = Math.min(minFrequency, freq);
       this.types.add(term.getType());
       this.languages.add(term.getLanguageCode());
       storeStringLookup(term);
     }
+
+    if (debugMode) {
+      System.out.println("Termbank: nbr of terms = " + termDocuments.size());
+    }
   }
   
   
-  public Set<Term> getTerms() {
-    return documentFrequencies.keySet();
-  }
-  
   public int getFrequencyStrict(Term term) {
-    if (documentFrequencies.containsKey(term)) {
-      return documentFrequencies.get(term).intValue();
+    if (getDefaultScores().containsKey(term)) {
+      return getDefaultScores().get(term).intValue();
     }
     
     return 0;
@@ -174,8 +166,8 @@
   
   public int getFrequencyLax(Term term) {
     // Try for an exact match first
-    if (documentFrequencies.containsKey(term)) {
-      return documentFrequencies.get(term).intValue();
+    if (getDefaultScores().containsKey(term)) {
+      return getDefaultScores().get(term).intValue();
     }
     
     // Now see if there's one with a blank language code
@@ -183,7 +175,7 @@
     if (stringLookupTable.containsKey(termString)) {
       for (Term testTerm : stringLookupTable.get(termString)) {
         if (testTerm.closeMatch(term)) {
-          return documentFrequencies.get(testTerm).intValue();
+          return getDefaultScores().get(testTerm).intValue();
         }
       }
     }
@@ -220,56 +212,6 @@
   }
 
 
-  @Override
-  public Double getMinScore() {
-    return new Double(this.minFrequency);
-  }
-
-
-  @Override
-  public Double getMaxScore() {
-    return new Double(this.maxFrequency);
-  }
-
-  
-  public int getMinFrequency() {
-    return this.minFrequency;
-  }
-  
-  public int getMaxFrequency() {
-    return this.maxFrequency;
-  }
-  
-  
-  public List<Term> getTermsByDescendingFreq() {
-    List<Term> terms = new ArrayList<Term>(this.getTerms());
-    Comparator<Term> comparator = new 
TermComparatorByDescendingScore(documentFrequencies);
-    Collections.sort(terms, comparator);
-    return terms;
-  }
-
-  
-  @Override
-  public void saveAsCsv(Number threshold, File file) throws GateException {
-    CsvGenerator.generateAndSaveCsv(this, threshold, file);
-  }
-
-
-  @Override
-  public void saveAsCsv(File file) throws GateException {
-    saveAsCsv(0.0, file);
-  }
-
-  
-  private void increment(Term term, int i) {
-    int count = i;
-    if (documentFrequencies.containsKey(term)) {
-      count += documentFrequencies.get(term).intValue();
-    }
-    documentFrequencies.put(term, count);
-  }
-  
-  
   private void storeStringLookup(Term term) {
     String termString = term.getTermString();
     Set<Term> terms;
@@ -283,16 +225,11 @@
     stringLookupTable.put(termString, terms);
   }
   
-  
-  public Map<Term, Integer> getDocFrequencies() {
-    return this.documentFrequencies;
-  }
-  
 
   protected void initializeScoreTypes() {
     // Whatever this is called, it must be the reference
     // document frequency, so we will only need
-    // getDefaultScoreType()
+    // to use getDefaultScoreType() later
     this.scoreTypes = new ArrayList<ScoreType>();
     this.scoreTypes.add(new ScoreType(scoreProperty));
   }

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/HyponymyTermbank.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/HyponymyTermbank.java
      2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/HyponymyTermbank.java
      2014-02-27 15:02:48 UTC (rev 17475)
@@ -16,7 +16,6 @@
 import gate.*;
 import gate.termraider.modes.*;
 import gate.termraider.util.*;
-
 import java.util.*;
 
 
@@ -115,11 +114,12 @@
       double normalized = Normalization.calculate(normalization, rawScore);
       Utilities.setScoreTermValue(scores, rawScoreST, term, rawScore);
       Utilities.setScoreTermValue(scores, getDefaultScoreType(), term, 
normalized);
-      Utilities.setScoreTermValue(scores, localDocFrequencyST, term, 
this.termDocuments.size());
+      int localDF = this.termDocuments.get(term).size();
+      Utilities.setScoreTermValue(scores, localDocFrequencyST, term, localDF);
     }
     
     if (debugMode) {
-      System.out.println("Termbank: nbr of terms = " + 
termsByDescendingScore.size());
+      System.out.println("Termbank: nbr of terms = " + termDocuments.size());
     }
   }
   
@@ -128,7 +128,7 @@
     termHeads       = new HashMap<Term, Set<String>>();
     termHyponyms    = new HashMap<Term, Set<String>>();
     termDocuments   = new HashMap<Term, Set<String>>();
-    termsByDescendingScore     = new ArrayList<Term>();
+    scores = new HashMap<ScoreType, Map<Term,Number>>();
     termFrequencies = new HashMap<Term, Integer>();
     docFrequencies = new HashMap<Term, Integer>();
   }
@@ -137,7 +137,8 @@
   protected void initializeScoreTypes() {
     this.scoreTypes = new ArrayList<ScoreType>();
     this.scoreTypes.add(new ScoreType(scoreProperty));
-    
+    this.rawScoreST = new ScoreType(scoreProperty + RAW_SUFFIX);
+    this.scoreTypes.add(rawScoreST);
     this.termFrequencyST = new ScoreType("termFrequency");
     this.scoreTypes.add(termFrequencyST);
     this.localDocFrequencyST = new ScoreType("localDocFrequency");

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/TfIdfTermbank.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/TfIdfTermbank.java
 2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/bank/TfIdfTermbank.java
 2014-02-27 15:02:48 UTC (rev 17475)
@@ -48,7 +48,6 @@
     for (Annotation candidate : candidates) {
       Term term = makeTerm(candidate, document);
       Utilities.incrementScoreTermValue(scores, termFrequencyST, term, 1);
-      
       Utilities.addToMapSet(termDocuments, term, documentSource);
     }
   }
@@ -74,9 +73,12 @@
   
   
   protected void calculateScores() {
-    for (Term term : termFrequencies.keySet()) {
-      int tf = termFrequencies.get(term);
+    for (Term term : scores.get(termFrequencyST).keySet()) {
+      int tf = scores.get(termFrequencyST).get(term).intValue();
       int df = getRefDocFrequency(term);
+      Utilities.setScoreTermValue(scores, refDocFrequencyST, term, df);
+      int localDF = this.termDocuments.get(term).size();
+      Utilities.setScoreTermValue(scores, localDocFrequencyST, term, localDF);
       int n = docFreqSource.getDocumentCount();
       double rawScore = TfCalculation.calculate(tfCalculation, tf) * 
IdfCalculation.calculate(idfCalculation, df, n);
       Utilities.setScoreTermValue(scores, rawScoreST, term, rawScore);
@@ -96,6 +98,7 @@
     termDocuments    = new HashMap<Term, Set<String>>();
     termFrequencies = new HashMap<Term, Integer>();
     documentCount = 0;
+    scores = new HashMap<ScoreType, Map<Term,Number>>();
   }
 
 

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/CsvFileSelectionActionListener.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/CsvFileSelectionActionListener.java
 2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/CsvFileSelectionActionListener.java
 2014-02-27 15:02:48 UTC (rev 17475)
@@ -45,7 +45,7 @@
               Utilities.EXTENSION_CSV);
       try {
         if (mode == Mode.SAVE) {
-          termbank.saveAsCsv(sliderPanel.getValues(), file);
+          termbank.saveAsCsv(sliderPanel.getValue(), file);
         }
         else { // must be LOAD
           System.err.println("LOAD mode is no longer supported.");

Deleted: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/DocumentFrequencyViewer.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/DocumentFrequencyViewer.java
        2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/DocumentFrequencyViewer.java
        2014-02-27 15:02:48 UTC (rev 17475)
@@ -1,217 +0,0 @@
-/*
- *  Copyright (c) 2008--2014, The University of Sheffield. See the file
- *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
- *
- *  This file is part of GATE (see http://gate.ac.uk/), and is free
- *  software, licenced under the GNU Library General Public License,
- *  Version 2, June 1991 (in the distribution as file licence.html,
- *  and also available at http://gate.ac.uk/gate/licence.html).
- *
- *  $Id$
- */
-package gate.termraider.gui;
-
-import gate.Resource;
-import gate.creole.ANNIEConstants;
-import gate.creole.AbstractVisualResource;
-import gate.creole.metadata.CreoleResource;
-import gate.creole.metadata.GuiType;
-import gate.event.ProgressListener;
-import gate.termraider.bank.*;
-import gate.termraider.util.*;
-
-import java.awt.BorderLayout;
-import java.util.*;
-
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JSplitPane;
-import javax.swing.JTabbedPane;
-import javax.swing.JTable;
-import javax.swing.JTextField;
-import javax.swing.table.AbstractTableModel;
-
-
-@CreoleResource(name = "Document Frequency Viewer",
-        comment = "viewer for the TermRaider DocumentFrequencyBank",
-        guiType = GuiType.LARGE,
-        mainViewer = true,
-        resourceDisplayed = "gate.termraider.bank.DocumentFrequencyBank")
-public class DocumentFrequencyViewer 
-  extends AbstractVisualResource 
-  implements ANNIEConstants, ProgressListener {
-
-  private static final long serialVersionUID = 5632849477601995493L;
-  
-  private JScrollPane freqScrollPane;
-  private DocumentFrequencyBank dfb;
-  private JTable freqTable, typeTable, langTable;
-  private JTabbedPane tabbedPane;
-  private DFTableModel freqTableModel;
-  private ListTableModel typeTableModel, langTableModel;
-  private JTextField docsField;
-  
-  
-  @Override
-  public Resource init() {
-    initGuiComponents();
-    return this;
-  }
-
-
-  private void initGuiComponents() {
-    setLayout(new BorderLayout());
-    tabbedPane = new JTabbedPane();
-    JPanel dfTab = new JPanel(new BorderLayout());
-    tabbedPane.addTab("Document frequencies", dfTab);
-    
-    docsField = new JTextField("...");
-    dfTab.add(docsField, BorderLayout.NORTH);
-
-    freqTableModel = new DFTableModel();
-    freqTable = new JTable(freqTableModel);
-    freqTable.setAutoCreateRowSorter(true);
-    freqScrollPane = new JScrollPane(freqTable, 
-            JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
-            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
-    dfTab.add(freqScrollPane, BorderLayout.CENTER);
-    
-    JSplitPane listsTab = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
-    typeTableModel = new ListTableModel("Annotation types indexed");
-    typeTable = new JTable(typeTableModel);
-    typeTable.setAutoCreateRowSorter(true);
-    JScrollPane typeScrollPane = new JScrollPane(typeTable, 
-            JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
-            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
-    
-    langTableModel = new ListTableModel("Language codes indexed");
-    langTable = new JTable(langTableModel);
-    langTable.setAutoCreateRowSorter(true);
-    JScrollPane langScrollPane = new JScrollPane(langTable, 
-            JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
-            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
-
-    listsTab.setLeftComponent(typeScrollPane);
-    listsTab.setRightComponent(langScrollPane);
-    tabbedPane.addTab("Types and languages", listsTab);
-    
-    this.add(tabbedPane, BorderLayout.CENTER);
-    tabbedPane.validate();
-    tabbedPane.repaint();
-  }
-  
-  
-  public void processFinished() {
-    setTarget(dfb);
-  }
-
-  public void progressChanged(int i) {
-    // nothing?
-  }  
-
-  public void setTarget(Object target) {
-    if(target == null || ! (target instanceof DocumentFrequencyBank)) {
-      throw new IllegalArgumentException("This Viewer cannot show a "
-              + (target == null ? "null" : target.getClass().toString()));
-    }
-    
-    dfb = (DocumentFrequencyBank) target;
-    docsField.setText("Doc count = " + this.dfb.getDocumentCount());
-    freqTableModel.setBank(this.dfb);
-    typeTableModel.setList(dfb.getTypes());
-    langTableModel.setList(dfb.getLanguages());
-  }
-}
-
-
-class DFTableModel extends AbstractTableModel {
-  private static final long serialVersionUID = 7536874522584055763L;
-
-  private List<Term> terms;
-  private String[] columnNames = {"term", "doc frequency"};
-  private Map<Term, Integer> docFrequencies; 
-
-  public DFTableModel() {
-    this.docFrequencies = new HashMap<Term, Integer>();
-    this.terms = new ArrayList<Term>();
-  }
-  
-  public void setBank(DocumentFrequencyBank termbank) {
-    this.docFrequencies = termbank.getDocFrequencies();
-    this.terms = new ArrayList<Term>(docFrequencies.keySet());
-    Collections.sort(this.terms, new TermComparator());
-  }
-  
-  public int getColumnCount() {
-    return 2;
-  }
-
-  public int getRowCount() {
-    return this.terms.size();
-  }
-
-  public Object getValueAt(int row, int col) {
-    Term term = this.terms.get(row); 
-    if (col == 0) {
-      return term.toString();
-    }
-    // implied else
-    if (this.docFrequencies.containsKey(term)) {
-      return this.docFrequencies.get(term);
-    }
-    return 0;
-  }
-  
-  public Class<?> getColumnClass(int col) {
-    if (col == 0) {
-      return String.class;
-    }
-    // implied else
-    return Integer.class;
-  }
-  
-  public String getColumnName(int col) {
-    return columnNames[col];
-  }
-
-}
-
-
-
-class ListTableModel extends AbstractTableModel {
-  private static final long serialVersionUID = 8277085631925984080L;
-  
-  private List<String> strings;
-  private String heading;
-
-  public ListTableModel(String heading) {
-    this.heading = heading;
-    this.strings = new ArrayList<String>();
-  }
-  
-  public void setList(Collection<String> strings) {
-    this.strings = new ArrayList<String>(strings);
-    Collections.sort(this.strings);
-  }
-  
-  public int getColumnCount() {
-    return 1;
-  }
-
-  public int getRowCount() {
-    return this.strings.size();
-  }
-
-  public Object getValueAt(int row, int col) {
-    return this.strings.get(row);
-  }
-  
-  public Class<?> getColumnClass(int col) {
-    return String.class;
-  }
-  
-  public String getColumnName(int col) {
-    return heading;
-  }
-
-}

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/SliderPanel.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/SliderPanel.java
    2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/SliderPanel.java
    2014-02-27 15:02:48 UTC (rev 17475)
@@ -98,8 +98,8 @@
   }
   
   
-  public Double getValues() {
-    return Double.valueOf(slider.getValue());
+  public int getValue() {
+    return slider.getValue();
   }
   
   public static JLabel intLabel(int i) {

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/TermbankViewer.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/TermbankViewer.java
 2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/gui/TermbankViewer.java
 2014-02-27 15:02:48 UTC (rev 17475)
@@ -70,9 +70,9 @@
   private JScrollPane treeScrollPane, freqScrollPane;
   private AbstractTermbank termbank;
   private JTree tree;
-  private JTable freqTable;
+  private JTable termbankTable;
   private JTabbedPane tabbedPane;
-  private FrequencyTableModel freqTableModel;
+  private TermbankTableModel termbankTableModel;
   
   private XHTMLPanel termCloud = new XHTMLPanel();
   private JComboBox cloudType = new JComboBox(new String[]{"Term Score", "Term 
Frequency", "Document Frequency"});
@@ -96,15 +96,15 @@
 
   protected void populateTree(DefaultMutableTreeNode root, AbstractTermbank 
termbank) {
     List<Term> typeSortedTerms = termbank.getTermsByDescendingScore();
-    Map<Term, Double> typeTermScores = termbank.getTermScores();
+    Map<Term, Number> typeTermScores = termbank.getDefaultScores();
     Map<Term, Set<String>> typeTermDocuments = termbank.getTermDocuments();
     
     DefaultMutableTreeNode node1, node2;
-    Double minScore = sliderPanel.getValues();
+    int minScore = sliderPanel.getValue();
     
     for (Term term : typeSortedTerms) {
-      Double score = typeTermScores.get(term);
-      if (score >= minScore) {
+      Number score = typeTermScores.get(term);
+      if (score.intValue() >= minScore) {
         node1 = new DefaultMutableTreeNode(term + "  " + score.toString());
         root.add(node1);
         
@@ -142,11 +142,11 @@
     controlPanel.validate();
     controlPanel.repaint();
     
-    freqTable = new JTable();
-    freqTable.setAutoCreateRowSorter(true);
+    termbankTable = new JTable();
+    termbankTable.setAutoCreateRowSorter(true);
     // Set the table model later, because the specific type of termbank
     // will determine the number of columns
-    freqScrollPane = new JScrollPane(freqTable, 
+    freqScrollPane = new JScrollPane(termbankTable, 
             JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
             JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
     tableTab.add(freqScrollPane, BorderLayout.CENTER);
@@ -301,9 +301,8 @@
     sliderPanel = new SliderPanel(termbank, "display", false, this);
     controlPanel.add(sliderPanel, BorderLayout.CENTER);
     sliderPanel.reformat();
-    freqTableModel = new FrequencyTableModel();
-    freqTableModel.setTermbank(this.termbank);
-    freqTable.setModel(freqTableModel);
+    termbankTableModel = new TermbankTableModel(this.termbank);
+    termbankTable.setModel(termbankTableModel);
   }
 
 
@@ -316,8 +315,7 @@
   }  
 
   public void setTarget(Object target) {
-    if(target == null || ! (target instanceof AbstractTermbank)
-            || (target instanceof DocumentFrequencyBank) ) {
+    if(target == null || ! (target instanceof AbstractTermbank)) {
       throw new IllegalArgumentException("This Viewer cannot show a "
               + (target == null ? "null" : target.getClass().toString()));
     }
@@ -428,77 +426,3 @@
   }
 
 }
-
-
-class FrequencyTableModel extends AbstractTableModel {
-  private static final long serialVersionUID = -7654670667296912991L;
-  private List<Term> terms;
-  private String[] columnNames = {"term", "term frequency", "doc frequency", 
"ref doc frequency"};
-  private Map<Term, Integer> termFrequencies, docFrequencies;
-  private AbstractTermbank termbank;
-
-  public FrequencyTableModel() {
-    this.termFrequencies = new HashMap<Term, Integer>();
-    this.docFrequencies = new HashMap<Term, Integer>();
-    this.terms = new ArrayList<Term>();
-  }
-  
-  public void setTermbank(AbstractTermbank termbank) {
-    this.termFrequencies = termbank.getTermFrequencies();
-    this.docFrequencies = termbank.getDocFrequencies();
-    this.terms = new ArrayList<Term>(termFrequencies.keySet());
-    this.termbank = termbank;
-    Collections.sort(this.terms, new TermComparator());
-  }
-  
-  public int getColumnCount() {
-    if (this.termbank instanceof TfIdfTermbank) {
-      return 4;
-    }
-    return 3;
-  }
-
-  public int getRowCount() {
-    return this.terms.size();
-  }
-
-  public Object getValueAt(int row, int col) {
-    Term term = this.terms.get(row); 
-    if (col == 0) {
-      return term.toString();
-    }
-    // implied else
-    if (col == 1) {
-      if (this.termFrequencies.containsKey(term)) {
-        return this.termFrequencies.get(term);
-      }
-      return 0;
-    }
-    // implied else
-    if (col == 2) {
-      if (this.docFrequencies.containsKey(term)) {
-        return this.docFrequencies.get(term);
-      }
-      return 0;
-    }
-    // implied else
-    if (col == 3) {
-      return ((TfIdfTermbank) this.termbank).getRefDocFrequency(term);
-    }
-    return 0;
-  }
-  
-  
-  public Class<?> getColumnClass(int col) {
-    if (col == 0) {
-      return String.class;
-    }
-    // implied else
-    return Integer.class;
-  }
-  
-  public String getColumnName(int col) {
-    return columnNames[col];
-  }
-
-}

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/output/CsvGenerator.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/output/CsvGenerator.java
        2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/output/CsvGenerator.java
        2014-02-27 15:02:48 UTC (rev 17475)
@@ -32,8 +32,8 @@
     writer.println(bank.getCsvHeader());
     
     for (Term term : sortedTerms) {
-      Double score = bank.getScore(term);
-      if (score >= threshold.doubleValue()) {
+      Number score = bank.getDefaultScores().get(term);
+      if (score.doubleValue() >= threshold.doubleValue()) {
         writer.println(bank.getCsvLine(term));
         written++;
       }

Modified: 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/util/Utilities.java
===================================================================
--- 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/util/Utilities.java
     2014-02-27 14:53:44 UTC (rev 17474)
+++ 
gate/branches/termraider-refactoring/plugins/TermRaider/src/gate/termraider/util/Utilities.java
     2014-02-27 15:02:48 UTC (rev 17475)
@@ -33,7 +33,14 @@
   }
 
   
-  public static int incrementMap(Map<Term, Integer> map, Term key, int 
increment) {
+  /** This is a little dodgy because it forces the new value 
+   * to be Integer; to be used carefully.
+   * @param map
+   * @param key
+   * @param increment
+   * @return
+   */
+  public static int incrementMap(Map<Term, Number> map, Term key, int 
increment) {
     int count = 0;
     if (map.containsKey(key)) {
       count = map.get(key).intValue();

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Flow-based real-time traffic analytics software. Cisco certified tool.
Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
Customize your own dashboards, set traffic alerts and generate reports.
Network behavioral analysis & security monitoring. All-in-one tool.
http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs

Reply via email to