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
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-cvs