001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.tools;
003
004 import java.text.MessageFormat;
005
006 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
007 import org.openstreetmap.josm.data.osm.PrimitiveId;
008
009 /**
010 * This utility class provides a collection of static helper methods for checking
011 * parameters at run-time.
012 *
013 */
014 public class CheckParameterUtil {
015
016 private CheckParameterUtil(){}
017
018 public static void ensureValidPrimitiveId(PrimitiveId id, String parameterName) throws IllegalArgumentException {
019 ensureParameterNotNull(id, parameterName);
020 if (id.getUniqueId() <= 0)
021 throw new IllegalArgumentException(MessageFormat.format("Expected unique id > 0 for primitive ''{1}'', got {0}", id.getUniqueId(), parameterName));
022 }
023
024 public static void ensureValidVersion(long version, String parameterName) throws IllegalArgumentException {
025 if (version < 0)
026 throw new IllegalArgumentException(MessageFormat.format("Expected value of type long > 0 for parameter ''{0}'', got {1}", parameterName, version));
027 }
028
029 public static void ensureParameterNotNull(Object value, String parameterName) {
030 if (value == null)
031 throw new IllegalArgumentException(MessageFormat.format("Parameter ''{0}'' must not be null", parameterName));
032 }
033
034 /**
035 * can find line number in the stack trace, so parameter name is optional
036 */
037 public static void ensureParameterNotNull(Object value) {
038 if (value == null)
039 throw new IllegalArgumentException("Parameter must not be null");
040 }
041
042 /**
043 * Ensures that <code>id</code> is non-null primitive id of type {@link OsmPrimitiveType#NODE}
044 *
045 * @param id the primitive id
046 * @param parameterName the name of the parameter to be checked
047 * @throws IllegalArgumentException thrown if id is null
048 * @throws IllegalArgumentException thrown if id.getType() != NODE
049 */
050 public static void ensureValidNodeId(PrimitiveId id, String parameterName) throws IllegalArgumentException {
051 ensureParameterNotNull(id, parameterName);
052 if (! id.getType().equals(OsmPrimitiveType.NODE))
053 throw new IllegalArgumentException(MessageFormat.format("Parameter ''{0}'' of type node expected, got ''{1}''", parameterName, id.getType().getAPIName()));
054 }
055 }