Skip to content

Commit

Permalink
[LO extension] solves issues #2602 and #2594
Browse files Browse the repository at this point in the history
  • Loading branch information
FredKruse committed Mar 23, 2020
1 parent 0b81e71 commit f5d9b5a
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 57 deletions.
Expand Up @@ -689,6 +689,16 @@ public List<Integer> getNumMinToCheckParas() {
return sortedTextRules.minToCheckParagraph;
}

/**
* Test if sorted rules for index exist
*/
public boolean isSortedRuleForIndex(int index) {
if(index < 0 || index > 1 || sortedTextRules.textLevelRules.get(index).isEmpty()) {
return false;
}
return true;
}

/**
* activate all rules stored under a given index related to the list of getNumMinToCheckParas
* deactivate all other text level rules
Expand All @@ -715,17 +725,21 @@ class SortedTextRules {
SortedTextRules () {
minToCheckParagraph = new ArrayList<>();
textLevelRules = new ArrayList<>();
int numParasToCheck = config.getNumParasToCheck();
minToCheckParagraph.add(0);
textLevelRules.add(new ArrayList<>());
if(useQueue && config.getNumParasToCheck() != 0) {
minToCheckParagraph.add(config.getNumParasToCheck());
} else {
minToCheckParagraph.add(-1);
}
textLevelRules.add(new ArrayList<>());
List<Rule> rules = langTool.getAllActiveOfficeRules();
for(Rule rule : rules) {
if(rule instanceof TextLevelRule && !langTool.getDisabledRules().contains(rule.getId())
&& !disabledRulesUI.contains(rule.getId())) {
insertRule(((TextLevelRule) rule).minToCheckParagraph(), rule.getId(), numParasToCheck);
insertRule(((TextLevelRule) rule).minToCheckParagraph(), rule.getId());
}
}
if(useQueue && config.getNumParasToCheck() != 0) {
minToCheckParagraph.set(1, config.getNumParasToCheck());
}
if(debugMode) {
MessageHandler.printToLogFile("Number different minToCheckParagraph: " + minToCheckParagraph.size());
for( int i = 0; i < minToCheckParagraph.size(); i++) {
Expand All @@ -737,68 +751,25 @@ class SortedTextRules {
}
}

private void insertRule (int minPara, String ruleId, int nToCheck) {
private void insertRule (int minPara, String ruleId) {
if(useQueue) {
if(minPara == 0) {
int n = minToCheckParagraph.indexOf(nToCheck);
if( n == 0 || minToCheckParagraph.size() == 0) {
minToCheckParagraph.add(0, minPara);
textLevelRules.add(0, new ArrayList<>());
}
textLevelRules.get(0).add(ruleId);
} else {
int n = minToCheckParagraph.indexOf(nToCheck);
if( n < 0) {
minToCheckParagraph.add(nToCheck);
textLevelRules.add(new ArrayList<>());
}
textLevelRules.get(textLevelRules.size() - 1).add(ruleId);
textLevelRules.get(1).add(ruleId);
}
} else {
if(minPara < 0) {
int n = minToCheckParagraph.indexOf(minPara);
if( n < 0) {
minToCheckParagraph.add(minPara);
textLevelRules.add(new ArrayList<>());
}
textLevelRules.get(textLevelRules.size() - 1).add(ruleId);
textLevelRules.get(1).add(ruleId);
} else {
int n = minToCheckParagraph.indexOf(-1);
if( n == 0 || minToCheckParagraph.size() == 0) {
minToCheckParagraph.add(0, minPara);
textLevelRules.add(0, new ArrayList<>());
} else if(minPara > minToCheckParagraph.get(0)) {
if(minPara > minToCheckParagraph.get(0)) {
minToCheckParagraph.set(0, minPara);
}
textLevelRules.get(0).add(ruleId);
}
}
}

/*
* This rule was commented out for performance reasons and replaced by the same named rule before
*
private void insertRule (int minPara, String RuleId) {
int n = minToCheckParagraph.indexOf(minPara);
if( n >= 0) {
textLevelRules.get(n).add(new String(RuleId));
return;
} else {
if(minPara < 0) {
n = minToCheckParagraph.size();
} else {
for (n = 0; n < minToCheckParagraph.size(); n++) {
if(minPara < minToCheckParagraph.get(n) || minToCheckParagraph.get(n) < 0) {
break;
}
}
}
minToCheckParagraph.add(n, minPara);
textLevelRules.add(n, new ArrayList<String>());
textLevelRules.get(n).add(new String(RuleId));
}
}
*/
public List<Integer> getMinToCheckParas() {
return minToCheckParagraph;
}
Expand Down
Expand Up @@ -1038,9 +1038,11 @@ private void addChangedParas() {
* Add an new entry to text level queue
*/
public void addQueueEntry(int nPara, int nCache, int nCheck, String docId) {
int nStart = getStartOfParaCheck(nPara, nCheck, allParas, headings, textIsChanged);
int nEnd = getEndOfParaCheck(nPara, nCheck, allParas, headings, textIsChanged);
mDocHandler.getTextLevelCheckQueue().addQueueEntry(nStart, nEnd, nCache, nCheck, docId, resetCheck);
if(mDocHandler.isSortedRuleForIndex(nCache)) {
int nStart = getStartOfParaCheck(nPara, nCheck, allParas, headings, textIsChanged);
int nEnd = getEndOfParaCheck(nPara, nCheck, allParas, headings, textIsChanged);
mDocHandler.getTextLevelCheckQueue().addQueueEntry(nStart, nEnd, nCache, nCheck, docId, resetCheck);
}
}

/**
Expand Down Expand Up @@ -1123,7 +1125,11 @@ private SingleProofreadingError[] checkParaRules( String paraText, int paraNum,
// One paragraph check (set by options or proof of footnote, etc.)
if(paraNum < 0 || parasToCheck == 0) {
textToCheck = fixLinebreak(paraText);
paragraphMatches = langTool.check(textToCheck, true, JLanguageTool.ParagraphHandling.ONLYPARA);
if(mDocHandler.isSortedRuleForIndex(cacheNum)) {
paragraphMatches = langTool.check(textToCheck, true, JLanguageTool.ParagraphHandling.ONLYPARA);
} else {
paragraphMatches = null;
}
if(paragraphMatches == null || paragraphMatches.isEmpty()) {
if (paraNum < 0) {
singleParaCache.put(0, new SingleProofreadingError[0]);
Expand Down Expand Up @@ -1208,7 +1214,10 @@ private void addParaErrorsToCache(int paraNum, SwJLanguageTool langTool, int cac
}

String textToCheck = getDocAsString(paraNum, parasToCheck, allParas, headings, textIsChanged);
List<RuleMatch> paragraphMatches = langTool.check(textToCheck, true, JLanguageTool.ParagraphHandling.ONLYPARA);
List<RuleMatch> paragraphMatches = null;
if(mDocHandler.isSortedRuleForIndex(cacheNum)) {
paragraphMatches = langTool.check(textToCheck, true, JLanguageTool.ParagraphHandling.ONLYPARA);
}

int startPara = getStartOfParaCheck(paraNum, parasToCheck, allParas, headings, textIsChanged);
int endPara = getEndOfParaCheck(paraNum, parasToCheck, allParas, headings, textIsChanged);
Expand Down

0 comments on commit f5d9b5a

Please sign in to comment.