Ignore:
Timestamp:
2018-06-17T17:51:18+02:00 (7 years ago)
Author:
donvip
Message:

fix #josm16385 - handle multi values in repeat_on tag

Location:
applications/editors/josm/plugins/indoorhelper
Files:
2 added
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/indoorhelper/src/controller/IndoorHelperController.java

    r34179 r34309  
    5757
    5858import model.IndoorHelperModel;
     59import model.IndoorLevel;
    5960import model.TagCatalog.IndoorObject;
    6061import views.LevelSelectorView;
     
    264265   static class ToolHelpButtonListener implements ActionListener {
    265266
    266            @Override
    267            public void actionPerformed(ActionEvent e) {
    268                    String topic = "Plugin/IndoorHelper";
    269                    //Open HelpBrowser for short description about the plugin
    270                    HelpBrowser.setUrlForHelpTopic(Optional.ofNullable(topic).orElse("/"));
    271            }
     267       @Override
     268       public void actionPerformed(ActionEvent e) {
     269           String topic = "Plugin/IndoorHelper";
     270           //Open HelpBrowser for short description about the plugin
     271           HelpBrowser.setUrlForHelpTopic(Optional.ofNullable(topic).orElse("/"));
     272       }
    272273   }
    273274
     
    565566    * specific tag (key). Just unsets the disabled state if object has a tag-value which is part of the
    566567    * current working level.
    567     * 
     568    *
    568569    * @author rebsc
    569570    * @param key sepcific key to unset hidden objects which contains it
     
    572573
    573574     Collection<OsmPrimitive> p = Main.main.getEditDataSet().allPrimitives();
    574      Map<String, String> tags = new HashMap<>();
    575      Integer level = Integer.parseInt(levelValue);
    576      Integer firstVal, secVal;
     575     int level = Integer.parseInt(levelValue);
    577576
    578577     //Find all primitives with the specific tag and check if value is part of the current
     
    580579     for (OsmPrimitive osm: p) {
    581580         if ((osm.isDisabledAndHidden() || osm.isDisabled()) && osm.hasKey(key)) {
    582 
    583              tags = osm.getInterestingTags();
    584 
    585              for (Map.Entry<String, String> e: tags.entrySet()) {
     581             for (Map.Entry<String, String> e: osm.getInterestingTags().entrySet()) {
    586582                if (e.getKey().equals(key)) {
    587                     String val = e.getValue();
    588 
    589                     //Extract values
    590                     if (val.indexOf("-") == 0) {
    591                         firstVal = (Integer.parseInt(val.split("-", 2)[1].split("-", 2)[0]))*-1;
    592                         secVal = Integer.parseInt(val.split("-", 2)[1].split("-", 2)[1]);
    593                     } else {
    594                         firstVal = Integer.parseInt(val.split("-")[0]);
    595                         secVal = Integer.parseInt(val.split("-")[1]);
    596                     }
    597 
    598583                    //Compare values to current working level
    599                     if (level >= ((firstVal)-1) && level <= secVal) {
     584                    if (IndoorLevel.isPartOfWorkingLevel(e.getValue(), level)) {
    600585                        osm.unsetDisabledState();
    601586                    } else {
  • applications/editors/josm/plugins/indoorhelper/src/model/IndoorLevel.java

    r32637 r34309  
    115115        }
    116116    }
     117
     118    public static boolean isPartOfWorkingLevel(String vals, int level) {
     119        for (String val : vals.split(";")) {
     120            int firstVal, secVal;
     121
     122            //Extract values
     123            if (val.indexOf("-") == 0) {
     124                firstVal = (Integer.parseInt(val.split("-", 2)[1].split("-", 2)[0]))*-1;
     125                secVal = Integer.parseInt(val.split("-", 2)[1].split("-", 2)[1]);
     126            } else if (val.contains("-")) {
     127                firstVal = Integer.parseInt(val.split("-")[0]);
     128                secVal = Integer.parseInt(val.split("-")[1]);
     129            } else {
     130                firstVal = Integer.parseInt(val);
     131                secVal = firstVal;
     132            }
     133
     134            // Compare values to current working level
     135            if (level >= firstVal && level <= secVal) {
     136                return true;
     137            }
     138        }
     139
     140        return false;
     141    }
    117142}
  • applications/editors/josm/plugins/indoorhelper/test/unit/model/PresetCounterTest.java

    r34308 r34309  
     1// License: GPL. For details, see LICENSE file.
     2package model;
     3
    14import static org.junit.Assert.assertEquals;
    25
     
    69import org.junit.Test;
    710
    8 import model.PresetCounter;
    911import model.TagCatalog.IndoorObject;
    1012
     13/**
     14 * Unit tests of {@link PresetCounter} class.
     15 */
    1116public class PresetCounterTest {
    1217
     
    3641        expectedList.add(IndoorObject.STEPS);
    3742
    38 
    3943        //assertion
    4044        assertEquals(expectedList.get(0), actualList.get(0));
     
    4246        assertEquals(expectedList.get(2), actualList.get(2));
    4347        assertEquals(expectedList.get(3), actualList.get(3));
    44 
    45 
    4648    }
    4749}
Note: See TracChangeset for help on using the changeset viewer.