// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.turnlanes.model;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.util.Arrays;
public final class UnexpectedDataException extends RuntimeException {
private static final long serialVersionUID = 7430280313889494242L;
public enum Kind {
NO_MEMBER("No member with role \"{0}\".", 1),
MULTIPLE_MEMBERS("More than one member with role \"{0}\".", 1),
WRONG_MEMBER_TYPE("A member with role \"{0}\" is a {1} and not a {2} as expected.", 3),
INVALID_TAG_FORMAT("The tag \"{0}\" has an invalid format: {1}", 2),
MISSING_TAG("The tag \"{0}\" is missing.", 1);
private final String message;
private final int params;
Kind(String message, int params) {
this.message = message;
this.params = params;
}
public UnexpectedDataException chuck(Object... args) {
throw new UnexpectedDataException(this, format(args));
}
public String format(Object... args) {
if (args.length != params) {
throw new IllegalArgumentException("Wrong argument count for " + this + ": " + Arrays.toString(args));
}
return tr(message, args);
}
}
private final Kind kind;
public UnexpectedDataException(Kind kind, String message) {
super(message);
this.kind = kind;
}
public Kind getKind() {
return kind;
}
}