Changeset 6289 in josm for trunk/src


Ignore:
Timestamp:
2013-10-03T03:41:25+02:00 (11 years ago)
Author:
Don-vip
Message:

Sonar/Findbugs - fix various problems

Location:
trunk/src/org/openstreetmap/josm
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java

    r6246 r6289  
    189189     */
    190190    protected Layer getFirstSelectedLayer() {
    191         if (LayerListDialog.getInstance() == null) return null;
    192191        List<Layer> layers = LayerListDialog.getInstance().getModel().getSelectedLayers();
    193192        if (layers.isEmpty()) return null;
  • trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java

    r6130 r6289  
    368368            }
    369369            if (wayWithSelectedNode == null) {
    370                 wayWithSelectedNode = parentWays.removeFirst();
     370                parentWays.removeFirst();
    371371            }
    372372            for (Way w : parentWays) {
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java

    r6248 r6289  
    11701170    @Override
    11711171    public String getModeHelpText() {
    1172         String rv = "";
     1172        StringBuilder rv;
    11731173        /*
    11741174         *  No modifiers: all (Connect, Node Re-Use, Auto-Weld)
     
    11931193        // list is empty we can assume that we won't do any joins
    11941194        if (ctrl || oldHighlights.isEmpty()) {
    1195             rv = tr("Create new node.");
     1195            rv = new StringBuilder(tr("Create new node."));
    11961196        } else {
    11971197            // oldHighlights may store a node or way, check if it's a node
    11981198            OsmPrimitive x = oldHighlights.iterator().next();
    11991199            if (x instanceof Node) {
    1200                 rv = tr("Select node under cursor.");
     1200                rv = new StringBuilder(tr("Select node under cursor."));
    12011201            } else {
    1202                 rv = trn("Insert new node into way.", "Insert new node into {0} ways.",
    1203                         oldHighlights.size(), oldHighlights.size());
     1202                rv = new StringBuilder(trn("Insert new node into way.", "Insert new node into {0} ways.",
     1203                        oldHighlights.size(), oldHighlights.size()));
    12041204            }
    12051205        }
     
    12101210        if (currentBaseNode != null && !wayIsFinished) {
    12111211            if (alt) {
    1212                 rv += " " + tr("Start new way from last node.");
     1212                rv.append(" ").append(tr("Start new way from last node."));
    12131213            } else {
    1214                 rv += " " + tr("Continue way from last node.");
     1214                rv.append(" ").append(tr("Continue way from last node."));
    12151215            }
    12161216            if (snapHelper.isSnapOn()) {
    1217                 rv += " "+ tr("Angle snapping active.");
     1217                rv.append(" ").append(tr("Angle snapping active."));
    12181218            }
    12191219        }
     
    12251225        if (n != null && getCurrentDataSet() != null && getCurrentDataSet().getSelectedNodes().contains(n)) {
    12261226            if (wayIsFinished) {
    1227                 rv = tr("Select node under cursor.");
     1227                rv = new StringBuilder(tr("Select node under cursor."));
    12281228            } else {
    1229                 rv = tr("Finish drawing.");
     1229                rv = new StringBuilder(tr("Finish drawing."));
    12301230            }
    12311231        }
     
    12381238            for (Node m : w.getNodes()) {
    12391239                if (m.equals(mouseOnExistingNode) || mouseOnExistingWays.contains(w)) {
    1240                     rv += " " + tr("Finish drawing.");
     1240                    rv.append(" ").append(tr("Finish drawing."));
    12411241                    break;
    12421242                }
    12431243            }
    12441244        }
    1245         return rv;
     1245        return rv.toString();
    12461246    }
    12471247
  • trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java

    r6266 r6289  
    7676        public List<Shape> getShapes() {
    7777            return shapes;
     78        }
     79
     80        @Override
     81        public int hashCode() {
     82            final int prime = 31;
     83            int result = super.hashCode();
     84            result = prime * result + ((shapes == null) ? 0 : shapes.hashCode());
     85            return result;
     86        }
     87
     88        @Override
     89        public boolean equals(Object obj) {
     90            if (this == obj)
     91                return true;
     92            if (!super.equals(obj))
     93                return false;
     94            if (getClass() != obj.getClass())
     95                return false;
     96            ImageryBounds other = (ImageryBounds) obj;
     97            if (shapes == null) {
     98                if (other.shapes != null)
     99                    return false;
     100            } else if (!shapes.equals(other.shapes))
     101                return false;
     102            return true;
    78103        }
    79104    }
  • trunk/src/org/openstreetmap/josm/data/osm/Filter.java

    r5926 r6289  
    2020    public boolean inverted = false;
    2121
     22    /**
     23     * Constructs a new {@code Filter}.
     24     */
    2225    public Filter() {
    2326        super("", SearchMode.add, false, false, false);
    2427    }
     28   
    2529    public Filter(String text, SearchMode mode, boolean caseSensitive,
    2630            boolean regexSearch, boolean allElements) {
  • trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java

    r6268 r6289  
    203203    public static Map<String, Test> getAllTestsMap() {
    204204        Map<String, Test> tests = new HashMap<String, Test>();
    205         for (Class<Test> testClass : getAllAvailableTests()) {
     205        for (Class<Test> testClass : allAvailableTests) {
    206206            try {
    207207                Test test = testClass.newInstance();
     
    258258     */
    259259    public static Class<Test>[] getAllAvailableTests() {
    260         return allAvailableTests;
     260        return Arrays.copyOf(allAvailableTests, allAvailableTests.length);
    261261    }
    262262
  • trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java

    r6268 r6289  
    534534                BufferedOutputStream bos = null;
    535535                try {
    536                     bis = new BufferedInputStream(s.getSourceInputStream());
    537                     bos = new BufferedOutputStream(new FileOutputStream(file));
    538                     byte[] buffer = new byte[4096];
    539                     int length;
    540                     while ((length = bis.read(buffer)) > -1 && !canceled) {
    541                         bos.write(buffer, 0, length);
     536                    InputStream in = s.getSourceInputStream();
     537                    try {
     538                        bis = new BufferedInputStream(in);
     539                        bos = new BufferedOutputStream(new FileOutputStream(file));
     540                        byte[] buffer = new byte[4096];
     541                        int length;
     542                        while ((length = bis.read(buffer)) > -1 && !canceled) {
     543                            bos.write(buffer, 0, length);
     544                        }
     545                    } finally {
     546                        s.closeSourceInputStream(in);
    542547                    }
    543548                } catch (IOException e) {
     
    666671            p.add(new JScrollPane(txtSource), GBC.std().fill());
    667672
    668             InputStream is = null;
    669673            try {
    670                 is = s.getSourceInputStream();
    671                 BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    672                 String line;
    673                 while ((line = reader.readLine()) != null) {
    674                     txtSource.append(line + "\n");
     674                InputStream is = s.getSourceInputStream();
     675                try {
     676                    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
     677                    try {
     678                        String line;
     679                        while ((line = reader.readLine()) != null) {
     680                            txtSource.append(line + "\n");
     681                        }
     682                    } finally {
     683                        reader.close();
     684                    }
     685                } finally {
     686                    s.closeSourceInputStream(is);
    675687                }
    676                 reader.close();
    677688            } catch (IOException ex) {
    678689                txtSource.append("<ERROR: failed to read file!>");
    679             } finally {
    680                 Utils.close(is);
    681690            }
    682691        }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java

    r6286 r6289  
    4141            final RelationMember m = members.get(i);
    4242            if (!m.isWay() || m.getWay() == null || m.getWay().isIncomplete()) {
    43                 if(i > 0) {
     43                if (i > 0) {
    4444                    makeLoopIfNeeded(con, i-1);
    4545                }
     
    5353            wct.direction = NONE;
    5454
    55             if(RelationSortUtils.isOneway(m)){
    56                 if(lastWct != null && lastWct.isOnewayTail) {
     55            if (RelationSortUtils.isOneway(m)){
     56                if (lastWct != null && lastWct.isOnewayTail) {
    5757                    wct.isOnewayHead = true;
    5858                }
    59                 if(lastBackwardWay == UNCONNECTED && lastForwardWay == UNCONNECTED){ //Beginning of new oneway
     59                if (lastBackwardWay == UNCONNECTED && lastForwardWay == UNCONNECTED){ //Beginning of new oneway
    6060                    wct.isOnewayHead = true;
    6161                    lastForwardWay = i-1;
     
    6666
    6767            if (wct.linkPrev) {
    68                 if(lastBackwardWay != UNCONNECTED && lastForwardWay != UNCONNECTED) {
     68                if (lastBackwardWay != UNCONNECTED && lastForwardWay != UNCONNECTED) {
    6969                    wct = determineOnewayConnectionType(con, m, i, wct);
    70                     if(!wct.linkPrev) {
     70                    if (!wct.linkPrev) {
    7171                        firstGroupIdx = i;
    7272                    }
    7373                }
    7474
    75                 if(!RelationSortUtils.isOneway(m)) {
     75                if (!RelationSortUtils.isOneway(m)) {
    7676                    wct.direction = determineDirection(i-1, lastWct.direction, i);
    7777                    wct.linkPrev = (wct.direction != NONE);
     
    8181            if (!wct.linkPrev) {
    8282                wct.direction = determineDirectionOfFirst(i, m);
    83                 if(RelationSortUtils.isOneway(m)){
     83                if (RelationSortUtils.isOneway(m)){
    8484                    wct.isOnewayLoopForwardPart = true;
    8585                    lastForwardWay = i;
     
    8888
    8989            wct.linkNext = false;
    90             if(lastWct != null) {
     90            if (lastWct != null) {
    9191                lastWct.linkNext = wct.linkPrev;
    9292            }
     
    9494            lastWct = wct;
    9595
    96             if(!wct.linkPrev) {
    97                 if(i > 0) {
     96            if (!wct.linkPrev) {
     97                if (i > 0) {
    9898                    makeLoopIfNeeded(con, i-1);
    9999                }
     
    127127
    128128        if (RelationSortUtils.isOneway(m)){
    129             if(RelationSortUtils.isBackward(m)) return BACKWARD;
     129            if (RelationSortUtils.isBackward(m)) return BACKWARD;
    130130            else return FORWARD;
    131131        } else { /** guess the direction and see if it fits with the next member */
    132             if(determineDirection(i, FORWARD, i+1) != NONE) return FORWARD;
    133             if(determineDirection(i, BACKWARD, i+1) != NONE) return BACKWARD;
     132            if (determineDirection(i, FORWARD, i+1) != NONE) return FORWARD;
     133            if (determineDirection(i, BACKWARD, i+1) != NONE) return BACKWARD;
    134134        }
    135135        return NONE;
     
    142142        Direction dirFW = determineDirection(lastForwardWay, con.get(lastForwardWay).direction, i);
    143143        Direction dirBW = NONE;
    144         if(onewayBeginning) {
    145             if(lastBackwardWay < 0) {
     144        if (onewayBeginning) {
     145            if (lastBackwardWay < 0) {
    146146                dirBW = determineDirection(firstGroupIdx, reverse(con.get(firstGroupIdx).direction), i, true);
    147147            } else {
     
    149149            }
    150150
    151             if(dirBW != NONE) {
     151            if (dirBW != NONE) {
    152152                onewayBeginning = false;
    153153            }
     
    156156        }
    157157
    158         if(RelationSortUtils.isOneway(m)) {
    159             if(dirBW != NONE){
     158        if (RelationSortUtils.isOneway(m)) {
     159            if (dirBW != NONE){
    160160                wct.direction = dirBW;
    161161                lastBackwardWay = i;
    162162                wct.isOnewayLoopBackwardPart = true;
    163163            }
    164             if(dirFW != NONE){
     164            if (dirFW != NONE){
    165165                wct.direction = dirFW;
    166166                lastForwardWay = i;
    167167                wct.isOnewayLoopForwardPart = true;
    168168            }
    169             if(dirFW == NONE && dirBW == NONE) { //Not connected to previous
     169            if (dirFW == NONE && dirBW == NONE) { //Not connected to previous
    170170                //                        unconnectPreviousLink(con, i, true);
    171171                //                        unconnectPreviousLink(con, i, false);
    172172                wct.linkPrev = false;
    173                 if(RelationSortUtils.isOneway(m)){
     173                if (RelationSortUtils.isOneway(m)){
    174174                    wct.isOnewayHead = true;
    175175                    lastForwardWay = i-1;
     
    182182            }
    183183
    184             if(dirFW != NONE && dirBW != NONE) { //End of oneway loop
    185                 if(i+1<members.size() && determineDirection(i, dirFW, i+1) != NONE) {
     184            if (dirFW != NONE && dirBW != NONE) { //End of oneway loop
     185                if (i+1<members.size() && determineDirection(i, dirFW, i+1) != NONE) {
    186186                    wct.isOnewayLoopBackwardPart = false;
    187                     dirBW = NONE;
    188187                    wct.direction = dirFW;
    189188                } else {
    190189                    wct.isOnewayLoopForwardPart = false;
    191                     dirFW = NONE;
    192190                    wct.direction = dirBW;
    193191                }
     
    199197            lastForwardWay = UNCONNECTED;
    200198            lastBackwardWay = UNCONNECTED;
    201             if(dirFW == NONE || dirBW == NONE) {
     199            if (dirFW == NONE || dirBW == NONE) {
    202200                wct.linkPrev = false;
    203201            }
     
    207205
    208206    private static Direction reverse(final Direction dir){
    209         if(dir == FORWARD) return BACKWARD;
    210         if(dir == BACKWARD) return FORWARD;
     207        if (dir == FORWARD) return BACKWARD;
     208        if (dir == BACKWARD) return FORWARD;
    211209        return dir;
    212210    }
     
    273271                        return RelationSortUtils.roundaboutType(members.get(k));
    274272                }
    275             } else if(RelationSortUtils.isOneway(m)) {
     273            } else if (RelationSortUtils.isOneway(m)) {
    276274                if (n == RelationNodeMap.firstOnewayNode(m) && !reversed) {
    277                     if(RelationSortUtils.isBackward(m))
     275                    if (RelationSortUtils.isBackward(m))
    278276                        return BACKWARD;
    279277                    else
     
    281279                }
    282280                if (n == RelationNodeMap.lastOnewayNode(m) && reversed) {
    283                     if(RelationSortUtils.isBackward(m))
     281                    if (RelationSortUtils.isBackward(m))
    284282                        return FORWARD;
    285283                    else
     
    295293        return NONE;
    296294    }
    297 
    298295}
  • trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java

    r6267 r6289  
    736736    }
    737737
    738 
    739738    public static class ChangeResolutionAction extends AbstractAction implements LayerAction {
     739       
     740        /**
     741         * Constructs a new {@code ChangeResolutionAction}
     742         */
    740743        public ChangeResolutionAction() {
    741744            super(tr("Change resolution"));
     
    744747        @Override
    745748        public void actionPerformed(ActionEvent ev) {
    746 
    747             if (LayerListDialog.getInstance() == null)
    748                 return;
    749 
    750749            List<Layer> layers = LayerListDialog.getInstance().getModel().getSelectedLayers();
    751750            for (Layer l: layers) {
  • trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java

    r6248 r6289  
    4242    private static ElemStyles styles = new ElemStyles();
    4343
    44     public static ElemStyles getStyles()
    45     {
     44    public static ElemStyles getStyles() {
    4645        return styles;
    4746    }
     
    5756    public static class TagKeyReference {
    5857        public final String key;
    59         public TagKeyReference(String key){
     58        public TagKeyReference(String key) {
    6059            this.key = key;
    6160        }
     
    226225            else {
    227226                InputStreamReader reader = new InputStreamReader(in);
    228                 WHILE: while (true) {
    229                     int c = reader.read();
    230                     switch (c) {
    231                         case -1:
    232                             break WHILE;
    233                         case ' ':
    234                         case '\t':
    235                         case '\n':
    236                         case '\r':
    237                             continue;
    238                         case '<':
    239                             return new XmlStyleSource(entry);
    240                         default:
    241                             return new MapCSSStyleSource(entry);
     227                try {
     228                    WHILE: while (true) {
     229                        int c = reader.read();
     230                        switch (c) {
     231                            case -1:
     232                                break WHILE;
     233                            case ' ':
     234                            case '\t':
     235                            case '\n':
     236                            case '\r':
     237                                continue;
     238                            case '<':
     239                                return new XmlStyleSource(entry);
     240                            default:
     241                                return new MapCSSStyleSource(entry);
     242                        }
    242243                    }
     244                } finally {
     245                    reader.close();
    243246                }
    244247                Main.warn("Could not detect style type. Using default (xml).");
  • trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSource.java

    r6148 r6289  
    1919import org.openstreetmap.josm.gui.preferences.SourceEntry;
    2020import org.openstreetmap.josm.tools.ImageProvider;
     21import org.openstreetmap.josm.tools.Utils;
    2122
    2223abstract public class StyleSource extends SourceEntry {
     
    4748    abstract public void loadStyleSource();
    4849
     50    /**
     51     * Returns a new {@code InputStream} to the style source. When finished, {@link #closeSourceInputStream(InputStream)} must be called.
     52     * @return A new {@code InputStream} to the style source that must be closed by the caller
     53     * @throws IOException if any I/O error occurs.
     54     * @see #closeSourceInputStream(InputStream)
     55     */
    4956    abstract public InputStream getSourceInputStream() throws IOException;
     57
     58    /**
     59     * Closes the source input stream previously returned by {@link #getSourceInputStream()} and other linked resources, if applicable.
     60     * @param is The source input stream that must be closed
     61     * @since 6289
     62     * @see #getSourceInputStream()
     63     */
     64    public void closeSourceInputStream(InputStream is) {
     65        Utils.close(is);
     66    }
    5067
    5168    public void logError(Throwable e) {
  • trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java

    r6248 r6289  
    3737    private Color backgroundColorOverride;
    3838    private String css = null;
     39    private ZipFile zipFile;
    3940
    4041    public MapCSSStyleSource(String url, String name, String shortdescription) {
     
    6768        rules.clear();
    6869        try {
    69             MapCSSParser parser = new MapCSSParser(getSourceInputStream(), "UTF-8");
    70             parser.sheet(this);
    71             loadMeta();
    72             loadCanvas();
     70            InputStream in = getSourceInputStream();
     71            try {
     72                MapCSSParser parser = new MapCSSParser(in, "UTF-8");
     73                parser.sheet(this);
     74                loadMeta();
     75                loadCanvas();
     76            } finally {
     77                closeSourceInputStream(in);
     78            }
    7379        } catch (IOException e) {
    7480            Main.warn(tr("Failed to load Mappaint styles from ''{0}''. Exception was: {1}", url, e.toString()));
     
    8894    @Override
    8995    public InputStream getSourceInputStream() throws IOException {
    90         if (css != null)
     96        if (css != null) {
    9197            return new ByteArrayInputStream(css.getBytes("UTF-8"));
    92 
     98        }
    9399        MirroredInputStream in = new MirroredInputStream(url);
    94100        if (isZip) {
    95101            File file = in.getFile();
    96102            Utils.close(in);
    97             ZipFile zipFile = new ZipFile(file);
     103            zipFile = new ZipFile(file);
    98104            zipIcons = file;
    99105            ZipEntry zipEntry = zipFile.getEntry(zipEntryPath);
    100106            return zipFile.getInputStream(zipEntry);
    101107        } else {
     108            zipFile = null;
    102109            zipIcons = null;
    103110            return in;
     111        }
     112    }
     113
     114    @Override
     115    public void closeSourceInputStream(InputStream is) {
     116        super.closeSourceInputStream(is);
     117        if (isZip) {
     118            Utils.close(zipFile);
    104119        }
    105120    }
  • trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSource.java

    r6248 r6289  
    6868        init();
    6969        try {
    70             InputStreamReader reader = new InputStreamReader(getSourceInputStream());
    71             XmlObjectParser parser = new XmlObjectParser(new XmlStyleSourceHandler(this));
    72             parser.startWithValidation(reader,
    73                     Main.JOSM_WEBSITE+"/mappaint-style-1.0",
    74                     "resource://data/mappaint-style.xsd");
    75             while(parser.hasNext()) {
     70            InputStream in = getSourceInputStream();
     71            try {
     72                InputStreamReader reader = new InputStreamReader(in);
     73                XmlObjectParser parser = new XmlObjectParser(new XmlStyleSourceHandler(this));
     74                parser.startWithValidation(reader,
     75                        Main.JOSM_WEBSITE+"/mappaint-style-1.0",
     76                        "resource://data/mappaint-style.xsd");
     77                while (parser.hasNext()) {
     78                }
     79            } finally {
     80                closeSourceInputStream(in);
    7681            }
    7782
  • trunk/src/org/openstreetmap/josm/io/OsmBzip2Exporter.java

    r5361 r6289  
    99
    1010import org.apache.tools.bzip2.CBZip2OutputStream;
     11import org.openstreetmap.josm.tools.Utils;
     12
    1113public class OsmBzip2Exporter extends OsmExporter {
    1214
     15    /**
     16     * Constructs a new {@code OsmBzip2Exporter}.
     17     */
    1318    public OsmBzip2Exporter() {
    1419        super(OsmBzip2Importer.FILE_FILTER);
     
    1823    protected OutputStream getOutputStream(File file) throws FileNotFoundException, IOException {
    1924        OutputStream out = new FileOutputStream(file);
    20         out.write('B');
    21         out.write('Z');
    22         out = new CBZip2OutputStream(out);
    23         return out;
     25        try {
     26            out.write('B');
     27            out.write('Z');
     28            return new CBZip2OutputStream(out);
     29        } catch (IOException e) {
     30            Utils.close(out);
     31            throw e;
     32        }
    2433    }
    2534}
  • trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java

    r6268 r6289  
    228228        for (Element child : crsChildren) {
    229229            String crs = (String) getContent(child);
    230             if (crs != null) {
     230            if (!crs.isEmpty()) {
    231231                String upperCase = crs.trim().toUpperCase();
    232232                crsList.add(upperCase);
     
    280280        else {
    281281            String content = (String) getContent(child);
    282             return (content != null) ? content : empty;
     282            return (!content.isEmpty()) ? content : empty;
    283283        }
    284284    }
Note: See TracChangeset for help on using the changeset viewer.