X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=utils%2FMessageBundleChecker.java;h=4489a9384a374ff71a51c61e1b7aaebb819cba6d;hb=1eda02547f8519e1dff46dac06734cba6c77b97f;hp=15e16cf3b154437ab90c4e3b129289308b20fe01;hpb=72da885aa401e932e73af4a554ea338cd5015efc;p=jalview.git diff --git a/utils/MessageBundleChecker.java b/utils/MessageBundleChecker.java index 15e16cf..4489a93 100644 --- a/utils/MessageBundleChecker.java +++ b/utils/MessageBundleChecker.java @@ -40,7 +40,7 @@ import java.util.regex.Pattern; * @author gmcarstairs * */ -public class MessageBundleChecker +public class MessageBundleChecker implements BufferedLineReader.LineCleaner { /* * regex ^"[^"]*"$ @@ -212,64 +212,37 @@ public class MessageBundleChecker return; } - String[] lines = new String[bufferSize]; BufferedReader br = new BufferedReader(new FileReader(f)); - for (int i = 0; i < bufferSize; i++) - { - String readLine = br.readLine(); - lines[i] = stripCommentsAndTrim(readLine); - } + BufferedLineReader blr = new BufferedLineReader(br, bufferSize, this); int lineNo = 0; - - while (lines[bufferSize - 1] != null) + String line = blr.read(); + while (line != null) { lineNo++; - inspectSourceLines(path, lineNo, lines); - - for (int i = 0; i < bufferSize - 1; i++) - { - lines[i] = lines[i + 1]; - } - lines[bufferSize - 1] = stripCommentsAndTrim(br.readLine()); + inspectSourceLines(path, lineNo, line); + line = blr.read(); } br.close(); } - /* - * removes anything after (and including) '//' - */ - private String stripCommentsAndTrim(String line) - { - if (line != null) - { - int pos = line.indexOf("//"); - if (pos != -1) - { - line = line.substring(0, pos); - } - line = line.replace("\t", " ").trim(); - } - return line; - } - /** * Look for calls to MessageManager methods, possibly split over two or more - * lines + * lines that have been concatenated while parsing the file * * @param path * @param lineNo - * @param lines + * @param line */ - private void inspectSourceLines(String path, int lineNo, String[] lines) + private void inspectSourceLines(String path, int lineNo, String line) { - String lineNos = String.format("%d-%d", lineNo, lineNo + lines.length + String lineNos = String + .format("%d-%d", lineNo, lineNo + bufferSize - 1); - String combined = combineLines(lines); for (String method : METHODS) { - int pos = combined.indexOf(method); + int pos = line.indexOf(method); if (pos == -1) { continue; @@ -278,7 +251,7 @@ public class MessageBundleChecker /* * extract what follows the opening bracket of the method call */ - String methodArgs = combined.substring(pos + method.length()).trim(); + String methodArgs = line.substring(pos + method.length()).trim(); if ("".equals(methodArgs)) { /* @@ -305,7 +278,7 @@ public class MessageBundleChecker if (METHOD3 == method) { System.out.println(String.format("Dynamic key at %s line %s %s", - path.substring(sourcePath.length()), lineNos, combined)); + path.substring(sourcePath.length()), lineNos, line)); continue; } @@ -313,14 +286,14 @@ public class MessageBundleChecker if (messageKey == null) { System.out.println(String.format("Trouble parsing %s line %s %s", - path.substring(sourcePath.length()), lineNos, combined)); + path.substring(sourcePath.length()), lineNos, line)); continue; } if (!(STRING_PATTERN.matcher(messageKey).matches())) { System.out.println(String.format("Dynamic key at %s line %s %s", - path.substring(sourcePath.length()), lineNos, combined)); + path.substring(sourcePath.length()), lineNos, line)); continue; } @@ -384,22 +357,6 @@ public class MessageBundleChecker return endPos == -1 ? null : key.substring(0, endPos); } - private String combineLines(String[] lines) - { - String combined = ""; - if (lines != null) - { - for (String line : lines) - { - if (line != null) - { - combined += line; - } - } - } - return combined; - } - /** * Loads properties from Message.properties * @@ -421,4 +378,22 @@ public class MessageBundleChecker } + /** + * Remove any trailing comments, change tabs to space, and trim + */ + @Override + public String cleanLine(String l) + { + if (l != null) + { + int pos = l.indexOf("//"); + if (pos != -1) + { + l = l.substring(0, pos); + } + l = l.replace("\t", " ").trim(); + } + return l; + } + }