Ignore:
Timestamp:
2018-03-19T00:48:34+01:00 (19 months ago)
Author:
Don-vip
Message:

fix recent Sonar issues

Location:
trunk/src/org/openstreetmap/josm/tools
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/tools/I18n.java

    r13509 r13544  
    379379            ZipFile zipFile = new ZipFile(source, StandardCharsets.UTF_8);
    380380            InputStream orig = zipFile.getInputStream(enfile);
    381             InputStream trans = zipFile.getInputStream(langfile);
     381            InputStream trans = zipFile.getInputStream(langfile)
    382382        ) {
    383383            if (orig != null && trans != null)
  • trunk/src/org/openstreetmap/josm/tools/TextTagParser.java

    r13541 r13544  
    55import static org.openstreetmap.josm.tools.I18n.trn;
    66
    7 import java.util.Arrays;
    87import java.util.HashMap;
    98import java.util.Map;
     
    2726    private TextTagParser() {
    2827        // Hide default constructor for utils classes
    29     }
    30 
    31     /**
    32      * A helper class that analyzes the text and attempts to parse tags from it
    33      */
    34     public static class TextAnalyzer {
    35         private boolean quotesStarted;
    36         private boolean esc;
    37         private final StringBuilder s = new StringBuilder(200);
    38         private String valueStops = "\n\r\t";
    39         private int pos;
    40         private final String data;
    41         private final int n;
    42 
    43         /**
    44          * Create a new {@link TextAnalyzer}
    45          * @param text The text to parse
    46          */
    47         public TextAnalyzer(String text) {
    48             pos = 0;
    49             data = Utils.strip(text);
    50             n = data.length();
    51             // fix #1604: allow space characters as value stops for single-line input only
    52             if (data.indexOf('\r') == -1 && data.indexOf('\n') == -1) {
    53                 valueStops += " ";
    54             }
    55         }
    56 
    57         /**
    58          * Read tags from "Free format"
    59          * @return map of tags
    60          */
    61         private Map<String, String> getFreeParsedTags() {
    62             String k, v;
    63             Map<String, String> tags = new HashMap<>();
    64 
    65             while (true) {
    66                 skipEmpty();
    67                 if (pos == n) {
    68                     break;
    69                 }
    70                 k = parseString("\n\r\t= ");
    71                 if (pos == n) {
    72                     tags.clear();
    73                     break;
    74                 }
    75                 skipSign();
    76                 if (pos == n) {
    77                     tags.clear();
    78                     break;
    79                 }
    80                 v = parseString(valueStops);
    81                 tags.put(k, v);
    82             }
    83             return tags;
    84         }
    85 
    86         private String parseString(String stopChars) {
    87             char[] stop = stopChars.toCharArray();
    88             Arrays.sort(stop);
    89             char c;
    90             while (pos < n) {
    91                 c = data.charAt(pos);
    92                 if (esc) {
    93                     esc = false;
    94                     s.append(c); //  \" \\
    95                 } else if (c == '\\') {
    96                     esc = true;
    97                 } else if (c == '\"' && !quotesStarted) { // opening "
    98                     if (!s.toString().trim().isEmpty()) { // we had   ||some text"||
    99                         s.append(c); // just add ", not open
    100                     } else {
    101                         s.delete(0, s.length()); // forget that empty characthers and start reading "....
    102                         quotesStarted = true;
    103                     }
    104                 } else if (c == '\"' && quotesStarted) {  // closing "
    105                     quotesStarted = false;
    106                     pos++;
    107                     break;
    108                 } else if (!quotesStarted && (Arrays.binarySearch(stop, c) >= 0)) {
    109                     // stop-symbol found
    110                     pos++;
    111                     break;
    112                 } else {
    113                     // skip non-printable characters
    114                     if (c >= 32) s.append(c);
    115                 }
    116                 pos++;
    117             }
    118 
    119             String res = s.toString();
    120             s.delete(0, s.length());
    121             return res.trim();
    122         }
    123 
    124         private void skipSign() {
    125             char c;
    126             boolean signFound = false;
    127             while (pos < n) {
    128                 c = data.charAt(pos);
    129                 if (c == '\t' || c == '\n' || c == ' ') {
    130                     pos++;
    131                 } else if (c == '=') {
    132                     if (signFound) break; // a  =  =qwerty means "a"="=qwerty"
    133                     signFound = true;
    134                     pos++;
    135                 } else {
    136                     break;
    137                 }
    138             }
    139         }
    140 
    141         private void skipEmpty() {
    142             char c;
    143             while (pos < n) {
    144                 c = data.charAt(pos);
    145                 if (c == '\t' || c == '\n' || c == '\r' || c == ' ') {
    146                     pos++;
    147                 } else {
    148                     break;
    149                 }
    150             }
    151         }
    15228    }
    15329
Note: See TracChangeset for help on using the changeset viewer.