/*
* Indoorhelper is a JOSM plug-in to support users when creating their own indoor maps.
* Copyright (C) 2016 Erik Gruschka
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package model;
import java.util.ArrayList;
import java.util.List;
import org.openstreetmap.josm.data.osm.Tag;
/**
* Class to provide the indoor tagging catalog.
*
* @author egru
*
*/
public final class TagCatalog {
/**
* Function to get a specific tag-set out of the {@link TagCatalog}.
*
* @param o the object for which you want the tag-set
* @return a list of tags for the specified object
*/
public List<Tag> getTags(IndoorObject o) {
List<Tag> tagList = new ArrayList<Tag>();
switch(o) {
case CONCRETE_WALL:
tagList.add(new Tag("indoor:area", "wall"));
tagList.add(new Tag("indoor:wall:material", "concrete"));
return tagList;
case DOOR:
tagList.add(new Tag("indoor:door", "yes"));
return tagList;
case ELEVATOR:
tagList.add(new Tag("indoor:area", "elevator"));
return tagList;
case ENTRANCE:
tagList.add(new Tag("indoor:entrance", "yes"));
return tagList;
case TOILET_FEMALE:
tagList.add(new Tag("indoor:area", "room"));
tagList.add(new Tag("amenity", "toilets"));
tagList.add(new Tag("female", "yes"));
return tagList;
case GLASS_WALL:
tagList.add(new Tag("indoor:area", "wall"));
tagList.add(new Tag("indoor:wall:material", "glass"));
return tagList;
case TOILET_MALE:
tagList.add(new Tag("indoor:area", "room"));
tagList.add(new Tag("amenity", "toilets"));
tagList.add(new Tag("male", "yes"));
return tagList;
case ROOM:
tagList.add(new Tag("indoor:area", "room"));
return tagList;
case SHELL:
tagList.add(new Tag("indoor:area", "shell"));
return tagList;
case STAIRWAYS:
tagList.add(new Tag("indoor:area", "stairways"));
return tagList;
case STEPS:
tagList.add(new Tag("indoor:highway", "steps"));
return tagList;
default:
tagList = null;
return tagList;
}
}
/**
* {@link Enum} class for an easier access of elements in the {@link TagCatalog}
*
* @author egru
*
*/
public enum IndoorObject {
SHELL, CONCRETE_WALL, GLASS_WALL, ROOM, TOILET_MALE, TOILET_FEMALE, ELEVATOR, STAIRWAYS, STEPS, DOOR, ENTRANCE;
}
}