Revision: 6675
          
http://languagetool.svn.sourceforge.net/languagetool/?rev=6675&view=rev
Author:   dnaber
Date:     2012-04-01 10:46:03 +0000 (Sun, 01 Apr 2012)
Log Message:
-----------
refactor toXml() to its own class; adding simple test case

Modified Paths:
--------------
    
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRule.java

Added Paths:
-----------
    
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleXmlCreator.java
    
trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleXmlCreatorTest.java

Modified: 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRule.java
===================================================================
--- 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRule.java   
    2012-04-01 09:12:02 UTC (rev 6674)
+++ 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRule.java   
    2012-04-01 10:46:03 UTC (rev 6675)
@@ -26,7 +26,6 @@
 import org.languagetool.AnalyzedSentence;
 import org.languagetool.AnalyzedTokenReadings;
 import org.languagetool.Language;
-import org.languagetool.rules.IncorrectExample;
 import org.languagetool.rules.RuleMatch;
 import org.languagetool.tools.StringTools;
 
@@ -186,70 +185,8 @@
    * @since 0.9.3
    */
   public final String toXML() {
-    final StringBuilder sb = new StringBuilder();
-    sb.append("<rule id=\"");
-    sb.append(StringTools.escapeXML(getId()));
-    sb.append("\" name=\"");
-    sb.append(StringTools.escapeXML(getDescription()));
-    sb.append("\">\n");
-    sb.append("<pattern mark_from=\"");
-    sb.append(startPositionCorrection);
-    sb.append("\" mark_to=\"");
-    sb.append(endPositionCorrection);
-    sb.append('"');
-    // for now, case sensitivity is per pattern, not per element,
-    // so just use the setting of the first element:
-    if (!patternElements.isEmpty() && 
patternElements.get(0).getCaseSensitive()) {
-      sb.append(" case_sensitive=\"yes\"");
-    }
-    sb.append(">\n");
-    for (Element patternElement : patternElements) {
-      sb.append("<token");
-      if (patternElement.getNegation()) {
-        sb.append(" negate=\"yes\"");
-      }
-      if (patternElement.isRegularExpression()) {
-        sb.append(" regexp=\"yes\"");
-      }
-      if (patternElement.getPOStag() != null) {
-        sb.append(" postag=\"");
-        sb.append(patternElement.getPOStag());
-        sb.append('"');
-      }
-      if (patternElement.getPOSNegation()) {
-        sb.append(" negate_pos=\"yes\"");
-      }
-      if (patternElement.isInflected()) {
-        sb.append(" inflected=\"yes\"");
-      }
-      sb.append('>');
-      if (patternElement.getString() != null) {
-        sb.append(StringTools.escapeXML(patternElement.getString()));
-      } else {
-        // TODO
-      }
-      sb.append("</token>\n");
-    }
-    sb.append("</pattern>\n");
-    sb.append("<message>");
-    sb.append(StringTools.escapeXML(message));
-    sb.append("</message>\n");
-    if (getIncorrectExamples() != null) {
-      for (IncorrectExample example : getIncorrectExamples()) {
-        sb.append("<example type=\"incorrect\">");
-        sb.append(StringTools.escapeXML(example.getExample()));
-        sb.append("</example>\n");
-      }
-    }
-    if (getCorrectExamples() != null) {
-      for (String example : getCorrectExamples()) {
-        sb.append("<example type=\"correct\">");
-        sb.append(StringTools.escapeXML(example));
-        sb.append("</example>\n");
-      }
-    }
-    sb.append("</rule>");
-    return sb.toString();
+    final PatternRuleXmlCreator xmlCreator = new PatternRuleXmlCreator();
+    return xmlCreator.toXML(this);
   }
 
   public final void setMessage(final String message) {

Added: 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleXmlCreator.java
===================================================================
--- 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleXmlCreator.java
                             (rev 0)
+++ 
trunk/JLanguageTool/src/java/org/languagetool/rules/patterns/PatternRuleXmlCreator.java
     2012-04-01 10:46:03 UTC (rev 6675)
@@ -0,0 +1,83 @@
+package org.languagetool.rules.patterns;
+
+import org.languagetool.rules.IncorrectExample;
+import org.languagetool.tools.StringTools;
+
+/**
+ * Serializes a PatternRule object to XML.
+ *
+ * @since 1.8
+ */
+class PatternRuleXmlCreator {
+
+  /**
+   * Return the pattern as an XML string. FIXME: this is not complete, 
information might be lost!
+   */
+  public final String toXML(PatternRule rule) {
+    final StringBuilder sb = new StringBuilder();
+    sb.append("<rule id=\"");
+    sb.append(StringTools.escapeXML(rule.getId()));
+    sb.append("\" name=\"");
+    sb.append(StringTools.escapeXML(rule.getDescription()));
+    sb.append("\">\n");
+    sb.append("<pattern mark_from=\"");
+    sb.append(rule.startPositionCorrection);
+    sb.append("\" mark_to=\"");
+    sb.append(rule.endPositionCorrection);
+    sb.append('"');
+    // for now, case sensitivity is per pattern, not per element,
+    // so just use the setting of the first element:
+    if (!rule.patternElements.isEmpty() && 
rule.patternElements.get(0).getCaseSensitive()) {
+      sb.append(" case_sensitive=\"yes\"");
+    }
+    sb.append(">\n");
+    for (Element patternElement : rule.patternElements) {
+      sb.append("<token");
+      if (patternElement.getNegation()) {
+        sb.append(" negate=\"yes\"");
+      }
+      if (patternElement.isRegularExpression()) {
+        sb.append(" regexp=\"yes\"");
+      }
+      if (patternElement.getPOStag() != null) {
+        sb.append(" postag=\"");
+        sb.append(patternElement.getPOStag());
+        sb.append('"');
+      }
+      if (patternElement.getPOSNegation()) {
+        sb.append(" negate_pos=\"yes\"");
+      }
+      if (patternElement.isInflected()) {
+        sb.append(" inflected=\"yes\"");
+      }
+      sb.append('>');
+      if (patternElement.getString() != null) {
+        sb.append(StringTools.escapeXML(patternElement.getString()));
+      } else {
+        // TODO
+      }
+      sb.append("</token>\n");
+    }
+    sb.append("</pattern>\n");
+    sb.append("<message>");
+    sb.append(StringTools.escapeXML(rule.getMessage()));
+    sb.append("</message>\n");
+    if (rule.getIncorrectExamples() != null) {
+      for (IncorrectExample example : rule.getIncorrectExamples()) {
+        sb.append("<example type=\"incorrect\">");
+        sb.append(StringTools.escapeXML(example.getExample()));
+        sb.append("</example>\n");
+      }
+    }
+    if (rule.getCorrectExamples() != null) {
+      for (String example : rule.getCorrectExamples()) {
+        sb.append("<example type=\"correct\">");
+        sb.append(StringTools.escapeXML(example));
+        sb.append("</example>\n");
+      }
+    }
+    sb.append("</rule>");
+    return sb.toString();
+  }
+
+}

Added: 
trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleXmlCreatorTest.java
===================================================================
--- 
trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleXmlCreatorTest.java
                         (rev 0)
+++ 
trunk/JLanguageTool/src/test/org/languagetool/rules/patterns/PatternRuleXmlCreatorTest.java
 2012-04-01 10:46:03 UTC (rev 6675)
@@ -0,0 +1,28 @@
+package org.languagetool.rules.patterns;
+
+import junit.framework.TestCase;
+import org.languagetool.Language;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PatternRuleXmlCreatorTest extends TestCase {
+
+  public void testToXML() throws Exception {
+    final PatternRuleXmlCreator xmlCreator = new PatternRuleXmlCreator();
+    final List<Element> elements = new ArrayList<Element>();
+    elements.add(new Element("der", false, false, false));
+    elements.add(new Element("Haus", true, true, true));
+    final PatternRule rule = new PatternRule("myId", Language.GERMAN, 
elements, "My Description", "My Message", "My short Message");
+    final String xml = xmlCreator.toXML(rule);
+    // NOTE: this tests the current state, which is not complete:
+    assertEquals("<rule id=\"myId\" name=\"My Description\">\n" +
+            "<pattern mark_from=\"0\" mark_to=\"0\">\n" +
+            "<token>der</token>\n" +
+            "<token regexp=\"yes\" inflected=\"yes\">Haus</token>\n" +
+            "</pattern>\n" +
+            "<message>My Message</message>\n" +
+            "</rule>", xml);
+  }
+  
+}

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


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Languagetool-cvs mailing list
Languagetool-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/languagetool-cvs

Reply via email to