Revision: 7547
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=7547&view=rev
Author:   dnaber
Date:     2012-06-28 20:58:57 +0000 (Thu, 28 Jun 2012)
Log Message:
-----------
Wikipedia check: index sub id so we can correctly link the rule; show rule 
descriptions instead of ids

Modified Paths:
--------------
    
trunk/JLanguageTool/src/dev/org/languagetool/dev/wikipedia/DatabaseDumpHandler.java
    
trunk/ltcommunity/grails-app/controllers/org/languagetool/CorpusMatchController.groovy
    trunk/ltcommunity/grails-app/domain/org/languagetool/CorpusMatch.groovy
    trunk/ltcommunity/grails-app/views/corpusMatch/list.gsp

Modified: 
trunk/JLanguageTool/src/dev/org/languagetool/dev/wikipedia/DatabaseDumpHandler.java
===================================================================
--- 
trunk/JLanguageTool/src/dev/org/languagetool/dev/wikipedia/DatabaseDumpHandler.java
 2012-06-28 20:47:07 UTC (rev 7546)
+++ 
trunk/JLanguageTool/src/dev/org/languagetool/dev/wikipedia/DatabaseDumpHandler.java
 2012-06-28 20:58:57 UTC (rev 7547)
@@ -6,10 +6,7 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
+import java.sql.*;
 import java.util.Date;
 import java.util.List;
 import java.util.Properties;
@@ -17,7 +14,9 @@
 import org.languagetool.JLanguageTool;
 import org.languagetool.Language;
 import org.languagetool.gui.Tools;
+import org.languagetool.rules.Rule;
 import org.languagetool.rules.RuleMatch;
+import org.languagetool.rules.patterns.PatternRule;
 
 /**
  * Writes result of LanguageTool check to database. Used for 
community.languagetool.org.
@@ -64,7 +63,7 @@
     private String getProperty(Properties prop, String key) {
       final String value = prop.getProperty(key);
       if (value == null) {
-        throw new RuntimeException("required key '" +key+ "' not found in 
properties");
+        throw new RuntimeException("required key '" + key + "' not found in 
properties");
       }
       return value;
     }
@@ -73,20 +72,30 @@
     protected void handleResult(String title, List<RuleMatch> ruleMatches,
             String text, Language language) throws SQLException {
       final String sql = "INSERT INTO corpus_match " +
-              "(version, language_code, ruleid, message, error_context, 
corpus_date, " +
+              "(version, language_code, ruleid, rule_subid, rule_description, 
message, error_context, corpus_date, " +
               "check_date, sourceuri, is_visible) "+
-              "VALUES (0, ?, ?, ?, ?, ?, ?, ?, 1)";
+              "VALUES (0, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1)";
       final PreparedStatement prepSt = conn.prepareStatement(sql);
       try {
+        final java.sql.Date dumpSqlDate = new 
java.sql.Date(dumpDate.getTime());
+        final java.sql.Date nowDate = new java.sql.Date(new Date().getTime());
         for (RuleMatch match : ruleMatches) {
           prepSt.setString(1, language.getShortName());
-          prepSt.setString(2, match.getRule().getId());
-          prepSt.setString(3, match.getMessage());
-          prepSt.setString(4, Tools.getContext(match.getFromPos(),
+          final Rule rule = match.getRule();
+          prepSt.setString(2, rule.getId());
+          if (rule instanceof PatternRule) {
+            final PatternRule patternRule = (PatternRule) rule;
+            prepSt.setString(3, patternRule.getSubId());
+          } else {
+            prepSt.setNull(3, Types.VARCHAR);
+          }
+          prepSt.setString(4, rule.getDescription());
+          prepSt.setString(5, match.getMessage());
+          prepSt.setString(6, Tools.getContext(match.getFromPos(),
                 match.getToPos(), text, CONTEXT_SIZE, MARKER_START, 
MARKER_END));
-          prepSt.setDate(5, new java.sql.Date(dumpDate.getTime()));
-          prepSt.setDate(6, new java.sql.Date(new Date().getTime()));
-          prepSt.setString(7, URL_PREFIX.replaceAll(LANG_MARKER, langCode) + 
title);
+          prepSt.setDate(7, dumpSqlDate);
+          prepSt.setDate(8, nowDate);
+          prepSt.setString(9, URL_PREFIX.replaceAll(LANG_MARKER, langCode) + 
title);
           prepSt.executeUpdate();
         }
       } finally {

Modified: 
trunk/ltcommunity/grails-app/controllers/org/languagetool/CorpusMatchController.groovy
===================================================================
--- 
trunk/ltcommunity/grails-app/controllers/org/languagetool/CorpusMatchController.groovy
      2012-06-28 20:47:07 UTC (rev 7546)
+++ 
trunk/ltcommunity/grails-app/controllers/org/languagetool/CorpusMatchController.groovy
      2012-06-28 20:58:57 UTC (rev 7547)
@@ -56,6 +56,7 @@
             projections {
                 groupProperty("ruleID")
                 count "ruleID", 'mycount'
+                property("ruleDescription")
             }
             order 'mycount', 'desc'
         }

Modified: 
trunk/ltcommunity/grails-app/domain/org/languagetool/CorpusMatch.groovy
===================================================================
--- trunk/ltcommunity/grails-app/domain/org/languagetool/CorpusMatch.groovy     
2012-06-28 20:47:07 UTC (rev 7546)
+++ trunk/ltcommunity/grails-app/domain/org/languagetool/CorpusMatch.groovy     
2012-06-28 20:58:57 UTC (rev 7547)
@@ -26,8 +26,15 @@
  */
 class CorpusMatch {
 
+    static constraints = {
+        ruleDescription(nullable: true) // nullable because it was introduced 
later
+        ruleSubID(nullable: true) // nullable because it was introduced later
+    }
+
     String languageCode
     String ruleID
+    String ruleSubID
+    String ruleDescription
     String message
     String sourceURI
     String errorContext

Modified: trunk/ltcommunity/grails-app/views/corpusMatch/list.gsp
===================================================================
--- trunk/ltcommunity/grails-app/views/corpusMatch/list.gsp     2012-06-28 
20:47:07 UTC (rev 7546)
+++ trunk/ltcommunity/grails-app/views/corpusMatch/list.gsp     2012-06-28 
20:58:57 UTC (rev 7547)
@@ -27,11 +27,12 @@
                 <select name="filter">
                     <option value="">- all rules -</option>
                     <g:each in="${matchesByRule}" var="rule">
+                        <g:set var="ruleDesc" value="${rule[2]}"/>
                         <g:if test="${params.filter == rule[0]}">
-                            <option selected 
value="${rule[0].encodeAsHTML()}">${rule[0].encodeAsHTML()} 
(${rule[1].encodeAsHTML()} matches)</option>
+                            <option selected 
value="${rule[0].encodeAsHTML()}">${ruleDesc.encodeAsHTML()} 
(${rule[1].encodeAsHTML()} matches)</option>
                         </g:if>
                         <g:else>
-                            <option 
value="${rule[0].encodeAsHTML()}">${rule[0].encodeAsHTML()} 
(${rule[1].encodeAsHTML()} matches)</option>
+                            <option 
value="${rule[0].encodeAsHTML()}">${ruleDesc.encodeAsHTML()} 
(${rule[1].encodeAsHTML()} matches)</option>
                         </g:else>
                     </g:each>
                 </select>
@@ -56,7 +57,7 @@
                                 <span class="additional">URI: <g:link 
class="additional" 
url="${match.sourceURI}">${match.sourceURI.encodeAsHTML()}</g:link></span>
                                 <span class="additional"> - check date: 
${StringTools.formatDate(match.checkDate).encodeAsHTML()}
                                 - <g:link controller="rule" action="show" 
id="${match.ruleID}"
-                                                               
params="${[lang: lang, textToCheck: cleanText]}"><span 
class="additional"><g:message 
code="ltc.check.visit.rule"/></span></g:link></span>
+                                                               
params="${[lang: lang, subId: match.ruleSubID, textToCheck: cleanText]}"><span 
class="additional"><g:message 
code="ltc.check.visit.rule"/></span></g:link></span>
                             </td>
                         
                         </tr>

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