private void prepareRule(final PatternRule rule) { rule.setStartPositionCorrection(startPositionCorrection); rule.setEndPositionCorrection(endPositionCorrection); startPositionCorrection = 0; endPositionCorrection = 0; rule.setCategory(category); if (inRuleGroup) rule.setSubId(Integer.toString(subId)); else rule.setSubId("1"); caseSensitive = false; if (defaultOff) { rule.setDefaultOff(); } if (category.isDefaultOff() && !defaultOn) { rule.setDefaultOff(); } }
@Override public void startElement( final String namespaceURI, final String lName, final String qName, final Attributes attrs) throws SAXException { if (qName.equals("category")) { final String catName = attrs.getValue("name"); final String priorityStr = attrs.getValue("priority"); // int prio = 0; if (priorityStr != null) { category = new Category(catName, Integer.parseInt(priorityStr)); } else { category = new Category(catName); } if ("off".equals(attrs.getValue(DEFAULT))) { category.setDefaultOff(); } } else if (qName.equals("rules")) { final String languageStr = attrs.getValue("targetLang"); language = Language.getLanguageForShortName(languageStr); if (language == null) { throw new SAXException("Unknown language '" + languageStr + "'"); } } else if (qName.equals("rule")) { id = attrs.getValue("id"); if (inRuleGroup) subId++; if (!(inRuleGroup && defaultOff)) { defaultOff = "off".equals(attrs.getValue(DEFAULT)); } if (!(inRuleGroup && defaultOn)) { defaultOn = "on".equals(attrs.getValue(DEFAULT)); } if (inRuleGroup && id == null) { id = ruleGroupId; } description = attrs.getValue("name"); if (inRuleGroup && description == null) { description = ruleGroupDescription; } correctExamples = new ArrayList<StringPair>(); incorrectExamples = new ArrayList<IncorrectBitextExample>(); if (suggestionMatches != null) { suggestionMatches.clear(); } } else if (PATTERN.equals(qName) || "target".equals(qName)) { startPattern(attrs); } else if (AND.equals(qName)) { inAndGroup = true; } else if (UNIFY.equals(qName)) { inUnification = true; uniNegation = YES.equals(attrs.getValue(NEGATE)); } else if (qName.equals("feature")) { uFeature = attrs.getValue("id"); } else if (qName.equals(TYPE)) { uType = attrs.getValue("id"); uTypeList.add(uType); } else if (qName.equals(TOKEN)) { setToken(attrs); } else if (qName.equals(EXCEPTION)) { setExceptions(attrs); } else if (qName.equals(EXAMPLE) && attrs.getValue(TYPE).equals("correct")) { inCorrectExample = true; correctExample = new StringBuilder(); } else if (EXAMPLE.equals(qName) && attrs.getValue(TYPE).equals("incorrect")) { inIncorrectExample = true; incorrectExample = new StringBuilder(); exampleCorrection = new StringBuilder(); if (attrs.getValue("correction") != null) { exampleCorrection.append(attrs.getValue("correction")); } } else if (MESSAGE.equals(qName)) { inMessage = true; message = new StringBuilder(); } else if (qName.equals("short")) { inShortMessage = true; shortMessage = new StringBuilder(); } else if (qName.equals(RULEGROUP)) { ruleGroupId = attrs.getValue("id"); ruleGroupDescription = attrs.getValue("name"); defaultOff = "off".equals(attrs.getValue(DEFAULT)); defaultOn = "on".equals(attrs.getValue(DEFAULT)); inRuleGroup = true; subId = 0; } else if (qName.equals("suggestion") && inMessage) { message.append("<suggestion>"); inSuggestion = true; } else if (qName.equals("match")) { setMatchElement(attrs); } else if (qName.equals(MARKER) && inCorrectExample) { correctExample.append("<marker>"); } else if (qName.equals(MARKER) && inIncorrectExample) { incorrectExample.append("<marker>"); } else if (qName.equals("unification")) { uFeature = attrs.getValue("feature"); inUnificationDef = true; } else if (qName.equals("equivalence")) { uType = attrs.getValue(TYPE); } else if (qName.equals("phrases")) { inPhrases = true; } else if (qName.equals("includephrases")) { phraseElementInit(); } else if (qName.equals("phrase") && inPhrases) { phraseId = attrs.getValue("id"); } else if (qName.equals("phraseref") && (attrs.getValue("idref") != null)) { preparePhrase(attrs); } else if (qName.equals("source")) { srcLang = Language.getLanguageForShortName(attrs.getValue("lang")); } }