Changeset 5155 in josm for trunk/src/org/openstreetmap/josm/tools/TaggingPresetNameTemplateList.java
- Timestamp:
- 2012-04-01T19:48:01+02:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/tools/TaggingPresetNameTemplateList.java
r4968 r5155 2 2 package org.openstreetmap.josm.tools; 3 3 4 import java.util.ArrayList; 4 import java.util.EnumSet; 5 import java.util.LinkedList; 5 6 import java.util.List; 6 7 7 8 import org.openstreetmap.josm.data.osm.OsmPrimitive; 8 import org.openstreetmap.josm.data.osm.Way;9 9 import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference; 10 10 import org.openstreetmap.josm.gui.tagging.TaggingPreset; 11 import org.openstreetmap.josm.gui.tagging.TaggingPreset.Check;12 import org.openstreetmap.josm.gui.tagging.TaggingPreset.Combo;13 11 import org.openstreetmap.josm.gui.tagging.TaggingPreset.PresetType; 14 import org.openstreetmap.josm.gui.tagging.TaggingPreset.Text;15 12 16 13 /** … … 27 24 return instance; 28 25 } 29 30 private final List<TaggingPreset> presetsWithPattern = new ArrayList<TaggingPreset>(); 26 private final List<TaggingPreset> presetsWithPattern = new LinkedList<TaggingPreset>(); 31 27 32 28 private TaggingPresetNameTemplateList() { 33 29 if (TaggingPresetPreference.taggingPresets != null) { 34 for (TaggingPreset tp : TaggingPresetPreference.taggingPresets) {30 for (TaggingPreset tp : TaggingPresetPreference.taggingPresets) { 35 31 if (tp.nameTemplate != null) { 36 32 presetsWithPattern.add(tp); … … 42 38 public TaggingPreset findPresetTemplate(OsmPrimitive primitive) { 43 39 44 PresetType presetType; 45 switch (primitive.getType()) { 46 case NODE: 47 presetType = PresetType.NODE; 48 break; 49 case WAY: 50 if (((Way) primitive).isClosed()) { 51 presetType = PresetType.CLOSEDWAY; 52 } else { 53 presetType = PresetType.WAY; 54 } 55 break; 56 case RELATION: 57 presetType = PresetType.RELATION; 58 break; 59 default: 60 throw new AssertionError(); 61 } 62 63 for(TaggingPreset t : presetsWithPattern) { 64 65 66 if ( t.types == null 67 || t.types.contains(presetType) 68 || (presetType == PresetType.CLOSEDWAY && t.types.contains(PresetType.WAY))) { 69 int found = 0; 70 71 if (t.nameTemplateFilter != null) { 72 if (t.nameTemplateFilter.match(primitive)) 73 return t; 74 else { 75 continue; 76 } 77 } 78 79 for(TaggingPreset.Item i : t.data) { 80 if(i instanceof TaggingPreset.Key) { 81 String val = ((TaggingPreset.Key)i).value; 82 String key = ((TaggingPreset.Key)i).key; 83 // we subtract 100 if not found and add 1 if found 84 if (val != null && val.equals(primitive.get(key))) { 85 found+=1; 86 } else { 87 found-=100; 88 } 89 } else { 90 String key = null; 91 if ((i instanceof Text) && ((Text)i).required) { 92 key = ((Text)i).key; 93 } else if ((i instanceof Combo) && ((Combo)i).required) { 94 key = ((Combo)i).key; 95 } else if ((i instanceof Check) && ((Check)i).required) { 96 key = ((Check)i).key; 97 } 98 if (key != null) { 99 if (primitive.get(key) != null) { 100 found += 1; 101 } else { 102 found -= 100; 103 } 104 } 105 } 106 } 107 108 if(found > 0) 109 return t; // First matching preset wins 40 for (TaggingPreset t : presetsWithPattern) { 41 if (t.matches(EnumSet.of(PresetType.forPrimitive(primitive)), primitive.getKeys())) { 42 return t; 110 43 } 111 44 } 112 113 45 return null; 114 115 46 } 116 117 118 47 }
Note:
See TracChangeset
for help on using the changeset viewer.