// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.core.domain.v0_6; import org.openstreetmap.osmosis.core.store.StoreClassRegister; import org.openstreetmap.osmosis.core.store.StoreReader; import org.openstreetmap.osmosis.core.store.StoreWriter; import org.openstreetmap.osmosis.core.store.Storeable; /** * A data class representing a single OSM tag. * * @author Brett Henderson */ public class Tag implements Comparable<Tag>, Storeable { /** * The key identifying the tag. */ private String key; /** * The value associated with the tag. */ private String value; /** * Creates a new instance. * * @param key * The key identifying the tag. * @param value * The value associated with the tag. */ public Tag(String key, String value) { this.key = key; this.value = value; } /** * Creates a new instance. * * @param sr * The store to read state from. * @param scr * Maintains the mapping between classes and their identifiers * within the store. */ public Tag(StoreReader sr, StoreClassRegister scr) { this(sr.readString(), sr.readString()); } /** * {@inheritDoc} */ public void store(StoreWriter sw, StoreClassRegister scr) { sw.writeString(key); sw.writeString(value); } /** * Compares this tag to the specified tag. The tag comparison is based on a * comparison of key and value in that order. * * @param tag * The tag to compare to. * @return 0 if equal, < 0 if considered "smaller", and > 0 if * considered "bigger". */ public int compareTo(Tag tag) { int keyResult; keyResult = this.key.compareTo(tag.key); if (keyResult != 0) { return keyResult; } return this.value.compareTo(tag.value); } /** * @return The key. */ public String getKey() { return key; } /** * @return The value. */ public String getValue() { return value; } /** * ${@inheritDoc}. */ @Override public String toString() { return "Tag('" + getKey() + "'='" + getValue() + "')"; } }