Revision: 7161
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=7161&view=rev
Author:   dnaber
Date:     2012-06-02 10:10:49 +0000 (Sat, 02 Jun 2012)
Log Message:
-----------
index searcher cleanup - now handles fallback for unsupported rules 
transparently; some cleanups

Modified Paths:
--------------
    
trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/RuleCoverage.java
    trunk/JLanguageTool/src/dev/org/languagetool/dev/index/Searcher.java
    trunk/JLanguageTool/src/java/org/languagetool/JLanguageTool.java
    
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleLoader.java
    
trunk/JLanguageTool/src/test/org/languagetool/dev/index/IndexerSearcherTest.java

Added Paths:
-----------
    trunk/JLanguageTool/src/dev/org/languagetool/dev/index/MatchingSentence.java

Modified: 
trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/RuleCoverage.java
===================================================================
--- 
trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/RuleCoverage.java   
    2012-06-02 10:04:32 UTC (rev 7160)
+++ 
trunk/JLanguageTool/src/dev/org/languagetool/dev/conversion/RuleCoverage.java   
    2012-06-02 10:10:49 UTC (rev 7161)
@@ -189,7 +189,7 @@
     
     /**
      * Generates an error string that matches the given PatternRule object 
-     * @param pattern
+     * @param patternrule
      * @return
      */
     public String generateIncorrectExample(PatternRule patternrule) {
@@ -469,7 +469,6 @@
      * Faster version of inExceptionList, because we don't have to re-compile 
the Patterns for the exception elements
      * @param word
      * @param exceptionAttributes
-     * @param numExceptions
      * @return
      */
     @SuppressWarnings("unchecked")
@@ -497,10 +496,6 @@
      * @param word
      * @param tokenPattern
      * @param posPattern
-     * @param isTokenEmpty
-     * @param hasPosTag
-     * @param negate
-     * @param postagNegate
      * @return
      */
     public boolean isExampleOf(String word, Pattern tokenPattern, Pattern 
posPattern, Element e) {
@@ -824,10 +819,11 @@
       final PatternRuleLoader ruleLoader = new PatternRuleLoader();
       InputStream is = this.getClass().getResourceAsStream(filename);
       if (is == null) {
-          // happens for external rules plugged in as an XML file:
-          is = new FileInputStream(filename);
+        // happens for external rules plugged in as an XML file:
+        return ruleLoader.getRules(new File(filename));
+      } else {
+        return ruleLoader.getRules(is, filename);
       }
-      return ruleLoader.getRules(is, filename);
     }
     
     public List<PatternRule> parsePatternRule(final String ruleString) {
@@ -835,7 +831,7 @@
        String ruleFileString = ruleFileHeader + categoriesString + ruleString 
+ endCategoriesString + endRulesString;
        InputStream is = new ByteArrayInputStream(ruleFileString.getBytes());
        try {
-               return ruleLoader.getRules(is,null);
+               return ruleLoader.getRules(is, null);
        } catch (IOException e) {
                return new ArrayList<PatternRule>();
        }
@@ -849,7 +845,7 @@
        String ruleFileString = ruleFileHeader + categoriesString + rs + 
endCategoriesString + endRulesString;
        InputStream is = new ByteArrayInputStream(ruleFileString.getBytes());
        try {
-               return ruleLoader.getRules(is,null);
+               return ruleLoader.getRules(is, null);
        } catch (IOException e) {
                return new ArrayList<PatternRule>();
        }

Added: 
trunk/JLanguageTool/src/dev/org/languagetool/dev/index/MatchingSentence.java
===================================================================
--- 
trunk/JLanguageTool/src/dev/org/languagetool/dev/index/MatchingSentence.java    
                            (rev 0)
+++ 
trunk/JLanguageTool/src/dev/org/languagetool/dev/index/MatchingSentence.java    
    2012-06-02 10:10:49 UTC (rev 7161)
@@ -0,0 +1,45 @@
+/* LanguageTool, a natural language style checker
+ * Copyright (C) 2012 Daniel Naber (http://www.danielnaber.de)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+package org.languagetool.dev.index;
+
+import org.languagetool.rules.RuleMatch;
+
+import java.util.List;
+
+/**
+ * A sentence with rule matches.
+ */
+public class MatchingSentence {
+
+  private final String sentence;
+  private final List<RuleMatch> ruleMatches;
+
+  MatchingSentence(String sentence, List<RuleMatch> ruleMatches) {
+    this.sentence = sentence;
+    this.ruleMatches = ruleMatches;
+  }
+
+  public String getSentence() {
+    return sentence;
+  }
+
+  public List<RuleMatch> getRuleMatches() {
+    return ruleMatches;
+  }
+}

Modified: trunk/JLanguageTool/src/dev/org/languagetool/dev/index/Searcher.java
===================================================================
--- trunk/JLanguageTool/src/dev/org/languagetool/dev/index/Searcher.java        
2012-06-02 10:04:32 UTC (rev 7160)
+++ trunk/JLanguageTool/src/dev/org/languagetool/dev/index/Searcher.java        
2012-06-02 10:10:49 UTC (rev 7161)
@@ -19,9 +19,7 @@
 package org.languagetool.dev.index;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -40,10 +38,13 @@
 import org.languagetool.rules.patterns.PatternRuleLoader;
 
 /**
- * A class with a main() method that takes a rule id (of a simple rule) and 
the location of the
- * index that runs the query on that index and prints all matches
+ * A class with a main() method that takes a rule id  and the location of the
+ * index that runs the query on that index and prints all matches.
+ * Will transparently handle rules that are not supported, i.e. run on the 
candidate matches
+ * up to a limit.
  * 
  * @author Tao Lin
+ * @author Daniel Naber
  */
 public class Searcher {
 
@@ -62,7 +63,7 @@
     this.maxHits = maxHits;
   }
 
-  public List<RuleMatch> findRuleMatchesOnIndex(PatternRule rule, Language 
language, File indexDir) throws IOException {
+  public List<MatchingSentence> findRuleMatchesOnIndex(PatternRule rule, 
Language language, File indexDir) throws IOException {
     final IndexSearcher indexSearcher = new 
IndexSearcher(FSDirectory.open(indexDir));
     try {
       return findRuleMatchesOnIndex(rule, language, indexSearcher);
@@ -71,18 +72,37 @@
     }
   }
 
-  public List<RuleMatch> findRuleMatchesOnIndex(PatternRule rule, Language 
language, IndexSearcher indexSearcher) throws IOException {
-    final List<RuleMatch> matches = new ArrayList<RuleMatch>();
+  public List<MatchingSentence> findRuleMatchesOnIndex(PatternRule rule, 
Language language, IndexSearcher indexSearcher) throws IOException {
     final Query query = createQuery(rule);
     final TopDocs topDocs = indexSearcher.search(query, maxHits);
     final JLanguageTool languageTool = getLanguageToolWithOneRule(language, 
rule);
+    final List<MatchingSentence> matchingSentences = 
findMatchingSentences(indexSearcher, topDocs, languageTool);
+    return matchingSentences;
+  }
+
+  PatternRule getRuleById(String ruleId, File xmlRuleFile) throws IOException {
+    final PatternRuleLoader ruleLoader = new PatternRuleLoader();
+    final List<PatternRule> rules = ruleLoader.getRules(xmlRuleFile);
+    for (PatternRule rule : rules) {
+      if (rule.getId().equals(ruleId)) {
+        return rule;
+      }
+    }
+    throw new PatternRuleNotFoundException(ruleId, xmlRuleFile);
+  }
+
+  private List<MatchingSentence> findMatchingSentences(IndexSearcher 
indexSearcher, TopDocs topDocs, JLanguageTool languageTool) throws IOException {
+    final List<MatchingSentence> matchingSentences = new 
ArrayList<MatchingSentence>();
     for (ScoreDoc match : topDocs.scoreDocs) {
       final Document doc = indexSearcher.doc(match.doc);
       final String sentence = doc.get(PatternRuleQueryBuilder.FIELD_NAME);
       final List<RuleMatch> ruleMatches = languageTool.check(sentence);
-      matches.addAll(ruleMatches);
+      if (ruleMatches.size() > 0) {
+        final MatchingSentence matchingSentence = new 
MatchingSentence(sentence, ruleMatches);
+        matchingSentences.add(matchingSentence);
+      }
     }
-    return matches;
+    return matchingSentences;
   }
 
   private Query createQuery(PatternRule rule) {
@@ -96,34 +116,6 @@
     return query;
   }
 
-  public TopDocs run(PatternRule rule, IndexSearcher searcher, boolean 
throwExceptionOnUnsupportedRule)
-       throws IOException, UnsupportedPatternRuleException {
-    final PatternRuleQueryBuilder patternRuleQueryBuilder = new 
PatternRuleQueryBuilder();
-    final Query query;
-    if (throwExceptionOnUnsupportedRule) {
-      query = patternRuleQueryBuilder.buildQuery(rule);
-    } else {
-      query = patternRuleQueryBuilder.buildPossiblyRelaxedQuery(rule);
-    }
-    return searcher.search(query, maxHits);
-  }
-
-  public TopDocs run(String ruleId, File xmlRuleFile, IndexSearcher searcher, 
boolean checkUnsupportedRule) throws IOException, 
UnsupportedPatternRuleException {
-    final PatternRule rule = getRuleById(ruleId, xmlRuleFile);
-    final TopDocs topDocs = run(rule, searcher, checkUnsupportedRule);
-    return topDocs;
-  }
-
-  private PatternRule getRuleById(String ruleId, File xmlRuleFile) throws 
IOException {
-    final List<PatternRule> rules = loadRules(xmlRuleFile);
-    for (PatternRule rule : rules) {
-      if (rule.getId().equals(ruleId)) {
-        return rule;
-      }
-    }
-    throw new PatternRuleNotFoundException(ruleId, xmlRuleFile);
-  }
-
   private JLanguageTool getLanguageToolWithOneRule(Language lang, PatternRule 
patternRule) throws IOException {
     final JLanguageTool langTool = new JLanguageTool(lang);
     for (Rule rule : langTool.getAllActiveRules()) {
@@ -133,81 +125,13 @@
     return langTool;
   }
 
-  private List<PatternRule> loadRules(File xmlRuleFile) throws IOException {
-    final InputStream xmlRulesStream = new FileInputStream(xmlRuleFile);
-    try {
-      final PatternRuleLoader ruleLoader = new PatternRuleLoader();
-      return ruleLoader.getRules(xmlRulesStream, 
xmlRuleFile.getAbsolutePath());
-    } finally {
-      xmlRulesStream.close();
-    }
-  }
-
-  private void run(String ruleId, File xmlRuleFile, File indexDir)
-        throws IOException, UnsupportedPatternRuleException {
-    if (!xmlRuleFile.exists() || !xmlRuleFile.canRead()) {
-      System.out.println("Rule XML file '" + xmlRuleFile.getAbsolutePath()
-          + "' does not exist or is not readable, please check the path");
-      System.exit(1);
-    }
-    final IndexSearcher searcher = new 
IndexSearcher(FSDirectory.open(indexDir));
-    
-    try {
-      final TopDocs topDocs = run(ruleId, xmlRuleFile, searcher, true);
-      printResult(topDocs, searcher, null);
-    } catch (UnsupportedPatternRuleException e) {
-      System.out.println(e.getMessage() + " Will run checking on potential 
matches (this can be slow):");
-      final TopDocs topDocs = run(ruleId, xmlRuleFile, searcher, false);
-      final JLanguageTool languageTool = getLanguageToolWithOneRule(ruleId, 
xmlRuleFile);
-      printResult(topDocs, searcher, languageTool);
-    }
-    searcher.close();
-  }
-
-  private JLanguageTool getLanguageToolWithOneRule(String ruleId, File 
xmlRuleFile) throws IOException {
-    final JLanguageTool languageTool = new JLanguageTool(Language.DEMO);
-    final List<PatternRule> patternRules = loadRules(xmlRuleFile);
-    for (PatternRule patternRule : patternRules) {
-      if (ruleId.equals(patternRule.getId())) {
-        languageTool.addRule(patternRule);
-      }
-    }
-    return languageTool;
-  }
-
-  private void printResult(TopDocs docs, IndexSearcher searcher, JLanguageTool 
languageTool)
-      throws IOException {
-
-    final ScoreDoc[] hits = docs.scoreDocs;
-    if (languageTool != null) {
-      System.out.println("Potential search results: " + docs.totalHits);
-    } else {
-      System.out.println("Search results: " + docs.totalHits);
-    }
-
-    for (int i = 0; i < Math.min(docs.totalHits, maxHits);) {
-      final Document doc = searcher.doc(hits[i++].doc);
-      final String sentence = doc.get(PatternRuleQueryBuilder.FIELD_NAME);
-      if (languageTool != null) {
-        final List<RuleMatch> ruleMatches = languageTool.check(sentence);
-        if (ruleMatches.size() > 0) {
-          System.out.println(i + ": " + sentence);
-        }
-      } else {
-        System.out.println(i + ": " + sentence);
-      }
-    }
-    if (docs.totalHits > maxHits) {
-      System.out.println("NOTE: matches skipped due to maximum hit limit of " 
+ maxHits);
-    }
-  }
-
   private static void ensureCorrectUsageOrExit(String[] args) {
-    if (args.length != 3) {
-      System.err.println("Usage: Searcher <ruleId> <ruleXML> <indexDir>");
-      System.err.println("\truleId Id of the rule to search");
-      System.err.println("\truleXML path to a rule file, e.g. en/grammar.xml");
-      System.err.println("\tindexDir path to a directory containing the 
index");
+    if (args.length != 4) {
+      System.err.println("Usage: Searcher <ruleId> <ruleXML> <languageCode> 
<indexDir>");
+      System.err.println("\truleId       Id of the rule to search for");
+      System.err.println("\truleXML      path to a rule file, e.g. 
en/grammar.xml");
+      System.err.println("\tlanguageCode short language code, e.g. en for 
English");
+      System.err.println("\tindexDir     path to a directory containing the 
index");
       System.exit(1);
     }
   }
@@ -215,7 +139,21 @@
   public static void main(String[] args) throws Exception {
     ensureCorrectUsageOrExit(args);
     final Searcher searcher = new Searcher();
-    searcher.run(args[0], new File(args[1]), new File(args[2]));
+    final String ruleId = args[0];
+    final File ruleFile = new File(args[1]);
+    final String languageCode = args[2];
+    final Language language = Language.getLanguageForShortName(languageCode);
+    if (language == null) {
+      throw new RuntimeException("Unknown language code '" + languageCode + 
"'");
+    }
+    final File indexDir = new File(args[3]);
+    final PatternRule rule = searcher.getRuleById(ruleId, ruleFile);
+    final List<MatchingSentence> ruleMatchesOnIndex = 
searcher.findRuleMatchesOnIndex(rule, language, indexDir);
+    int i = 1;
+    for (MatchingSentence ruleMatch : ruleMatchesOnIndex) {
+      System.out.println(i + ": " + ruleMatch.getSentence());
+      i++;
+    }
   }
 
 }

Modified: trunk/JLanguageTool/src/java/org/languagetool/JLanguageTool.java
===================================================================
--- trunk/JLanguageTool/src/java/org/languagetool/JLanguageTool.java    
2012-06-02 10:04:32 UTC (rev 7160)
+++ trunk/JLanguageTool/src/java/org/languagetool/JLanguageTool.java    
2012-06-02 10:10:49 UTC (rev 7161)
@@ -311,12 +311,13 @@
   public List<PatternRule> loadPatternRules(final String filename)
       throws IOException {
     final PatternRuleLoader ruleLoader = new PatternRuleLoader();
-    InputStream is = this.getClass().getResourceAsStream(filename);
+    final InputStream is = this.getClass().getResourceAsStream(filename);
     if (is == null) {
       // happens for external rules plugged in as an XML file:
-      is = new FileInputStream(filename);
+      return ruleLoader.getRules(new File(filename));
+    } else {
+      return ruleLoader.getRules(is, filename);
     }
-    return ruleLoader.getRules(is, filename);
   }
 
   /**

Modified: 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleLoader.java
===================================================================
--- 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleLoader.java
 2012-06-02 10:04:32 UTC (rev 7160)
+++ 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleLoader.java
 2012-06-02 10:10:49 UTC (rev 7161)
@@ -18,6 +18,8 @@
  */
 package org.languagetool.rules.patterns;
 
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
@@ -27,8 +29,6 @@
 
 import org.xml.sax.helpers.DefaultHandler;
 
-import org.languagetool.JLanguageTool;
-
 /**
  * Loads {@link PatternRule}s from an XML file.
  * 
@@ -37,11 +37,23 @@
 public class PatternRuleLoader extends DefaultHandler {
 
   /**
+   * @param file XML file with pattern rules
+   */
+  public final List<PatternRule> getRules(final File file) throws IOException {
+    final InputStream inputStream = new FileInputStream(file);
+    try {
+      final PatternRuleLoader ruleLoader = new PatternRuleLoader();
+      return ruleLoader.getRules(inputStream, file.getAbsolutePath());
+    } finally {
+      inputStream.close();
+    }
+  }
+
+  /**
    * @param is stream with the XML rules
-   * @param filename used only for verbose exception message
+   * @param filename used only for verbose exception message - should refer to 
where the stream comes from
    */
-  public final List<PatternRule> getRules(final InputStream is,
-      final String filename) throws IOException {
+  public final List<PatternRule> getRules(final InputStream is, final String 
filename) throws IOException {
     try {
       final PatternRuleHandler handler = new PatternRuleHandler();
       final SAXParserFactory factory = SAXParserFactory.newInstance();
@@ -50,17 +62,9 @@
       saxParser.parse(is, handler);
       return handler.getRules();
     } catch (final Exception e) {
-      throw new IOException("Cannot load or parse '" + filename + "'", e);
+      throw new IOException("Cannot load or parse input stream of '" + 
filename + "'", e);
     }
   }
 
-  /** Testing only. */
-  public final void main(final String[] args) throws IOException {
-    final PatternRuleLoader prg = new PatternRuleLoader();
-    final String name = "/de/grammar.xml";
-    final List<PatternRule> l = 
prg.getRules(JLanguageTool.getDataBroker().getFromRulesDirAsStream(name), name);
-    System.out.println(l);
-  }
-
 }
 

Modified: 
trunk/JLanguageTool/src/test/org/languagetool/dev/index/IndexerSearcherTest.java
===================================================================
--- 
trunk/JLanguageTool/src/test/org/languagetool/dev/index/IndexerSearcherTest.java
    2012-06-02 10:04:32 UTC (rev 7160)
+++ 
trunk/JLanguageTool/src/test/org/languagetool/dev/index/IndexerSearcherTest.java
    2012-06-02 10:10:49 UTC (rev 7161)
@@ -19,20 +19,24 @@
 package org.languagetool.dev.index;
 
 import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.TopDocs;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.LuceneTestCase;
 import org.languagetool.Language;
+import org.languagetool.rules.Rule;
 import org.languagetool.rules.RuleMatch;
 import org.languagetool.rules.patterns.Element;
 import org.languagetool.rules.patterns.PatternRule;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 
 public class IndexerSearcherTest extends LuceneTestCase {
 
+  private final File ruleFile = new File("src/rules/en/grammar.xml");
+  private final Searcher errorSearcher = new Searcher();
+
   private IndexSearcher searcher;
   private Directory directory;
 
@@ -40,6 +44,10 @@
   public void setUp() throws Exception {
     super.setUp();
     directory = newDirectory();
+    // Note that the second sentence ends with "lid" instead of "lids" (the 
inflated one)
+    final String content = "How to move back and fourth from linux to xmb? 
Calcium deposits on eye lid.";
+    Indexer.run(content, directory, Language.ENGLISH, false);
+    searcher = new IndexSearcher(directory);
   }
 
   @Override
@@ -52,60 +60,27 @@
   }
 
   public void testIndexerSearcher() throws Exception {
-    // Note that the second sentence ends with "lid" instead of "lids" (the 
inflated one)
-    final String content = "How to move back and fourth from linux to xmb? 
Calcium deposits on eye lid.";
+    List<MatchingSentence> matchingSentences =
+            errorSearcher.findRuleMatchesOnIndex(getRule("BACK_AND_FOURTH"), 
Language.ENGLISH, searcher);
+    assertEquals(1, matchingSentences.size());
 
-    Indexer.run(content, directory, Language.ENGLISH, false);
+    matchingSentences = 
errorSearcher.findRuleMatchesOnIndex(getRule("EYE_BROW"), Language.ENGLISH, 
searcher);
+    assertEquals(1, matchingSentences.size());
 
-    searcher = new IndexSearcher(directory);
-    final Searcher errorSearcher = new Searcher();
-    final File ruleFile = new File("src/rules/en/grammar.xml");
-    TopDocs topDocs = errorSearcher.run("BACK_AND_FOURTH", ruleFile, searcher, 
true);
-    assertEquals(1, topDocs.totalHits);
+    matchingSentences = 
errorSearcher.findRuleMatchesOnIndex(getRule("ALL_OVER_THE_WORD"), 
Language.ENGLISH, searcher);
+    assertEquals(0, matchingSentences.size());
 
-    topDocs = errorSearcher.run("BACK_AND_FOURTH", ruleFile, searcher, false);
-    assertEquals(1, topDocs.totalHits);
-
-    topDocs = errorSearcher.run("ALL_OVER_THE_WORD", ruleFile, searcher, true);
-    assertEquals(0, topDocs.totalHits);
-
-    topDocs = errorSearcher.run("ALL_OVER_THE_WORD", ruleFile, searcher, 
false);
-    assertEquals(0, topDocs.totalHits);
-
     try {
-      errorSearcher.run("Invalid Rule Id", ruleFile, searcher, true);
+      errorSearcher.findRuleMatchesOnIndex(getRule("Invalid Rule Id"), 
Language.ENGLISH, searcher);
       fail("Exception should be thrown for invalid rule id.");
-    } catch (PatternRuleNotFoundException expected) {
-      try {
-        errorSearcher.run("Invalid Rule Id", ruleFile, searcher, false);
-        fail("Exception should be thrown for invalid rule id.");
-      } catch (PatternRuleNotFoundException expected2) {}
-    }
+    } catch (PatternRuleNotFoundException expected) {}
+  }
 
-    try {
-      errorSearcher.run("EYE_BROW", ruleFile, searcher, true);
-      fail("Exception should be thrown for unsupported PatternRule");
-    } catch (UnsupportedPatternRuleException expected) {}
-
-    topDocs = errorSearcher.run("EYE_BROW", ruleFile, searcher, false);
-    assertEquals(1, topDocs.totalHits);
-
-
-    try {
-      errorSearcher.run("ALL_FOR_NOT", ruleFile, searcher, true);
-      fail("Exception should be thrown for unsupported PatternRule");
-    } catch (UnsupportedPatternRuleException expected) {
-      topDocs = errorSearcher
-          .run("ALL_FOR_NOT", ruleFile, searcher, false);
-      assertEquals(0, topDocs.totalHits);
-    }
+  private PatternRule getRule(String ruleId) throws IOException {
+    return errorSearcher.getRuleById(ruleId, ruleFile);
   }
 
-  public void testIndexerSearcher2() throws Exception {
-    final String content = "How to move back and fourth from linux to xmb?";
-
-    Indexer.run(content, directory, Language.ENGLISH, false);
-
+  public void testIndexerSearcherWithNewRule() throws Exception {
     final Searcher errorSearcher = new Searcher();
     final List<Element> elements = Arrays.asList(
             new Element("move", false, false, false),
@@ -114,9 +89,12 @@
     final PatternRule rule1 = new PatternRule("RULE1", Language.ENGLISH, 
elements, "desc", "msg", "shortMsg");
     final IndexSearcher indexSearcher = new IndexSearcher(directory);
     try {
-      final List<RuleMatch> matches = 
errorSearcher.findRuleMatchesOnIndex(rule1, Language.ENGLISH, indexSearcher);
-      assertEquals(1, matches.size());
-      assertEquals("RULE1", matches.get(0).getRule().getId());
+      final List<MatchingSentence> matchingSentences = 
errorSearcher.findRuleMatchesOnIndex(rule1, Language.ENGLISH, indexSearcher);
+      assertEquals(1, matchingSentences.size());
+      final List<RuleMatch> ruleMatches = 
matchingSentences.get(0).getRuleMatches();
+      assertEquals(1, ruleMatches.size());
+      final Rule rule = ruleMatches.get(0).getRule();
+      assertEquals("RULE1", rule.getId());
     } finally {
       indexSearcher.close();
     }

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


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Languagetool-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-cvs

Reply via email to