package nl.ipo.cds.etl.theme.productioninstallationpart;
import java.util.ArrayList;
import java.util.List;
import nl.idgis.commons.jobexecutor.JobLogger.LogLevel;
import nl.ipo.cds.etl.ValidatorMessageKey;
import nl.ipo.cds.validation.AttributeExpression;
import nl.ipo.cds.validation.Expression;
public enum Message implements ValidatorMessageKey<Message, Context> {
ATTRIBUTE_NULL,
ATTRIBUTE_EMPTY,
ATTRIBUTE_NOT_URL,
ATTRIBUTE_VALUE_NEGATIVE,
ATTRIBUTE_VALUE_TOO_LOW,
ATTRIBUTE_VALUE_TOO_HIGH,
ATTRIBUTE_CODE_CODESPACE_INVALID,
ATTRIBUTE_CODE_INVALID,
ATTRIBUTE_GROUP_INCONSISTENT,
GEOMETRY_EMPTY_MULTIGEOMETRY,
GEOMETRY_ONLY_POINT_OR_MULTIPOINT,
GEOMETRY_POINT_DUPLICATION(Integer.MAX_VALUE, true),
GEOMETRY_EXTERIOR_RING_CW(LogLevel.WARNING),
GEOMETRY_INTERIOR_RING_CCW(LogLevel.WARNING),
GEOMETRY_DISCONTINUITY(Integer.MAX_VALUE, true),
GEOMETRY_SELF_INTERSECTION(Integer.MAX_VALUE, true),
GEOMETRY_RING_NOT_CLOSED(Integer.MAX_VALUE, true),
GEOMETRY_RING_SELF_INTERSECTION(Integer.MAX_VALUE, true),
GEOMETRY_INTERIOR_RINGS_TOUCH(Integer.MAX_VALUE, true),
GEOMETRY_INTERIOR_RINGS_INTERSECT(Integer.MAX_VALUE, true),
GEOMETRY_INTERIOR_RINGS_WITHIN(Integer.MAX_VALUE, true),
GEOMETRY_INTERIOR_RING_TOUCHES_EXTERIOR(Integer.MAX_VALUE, true),
GEOMETRY_INTERIOR_RING_INTERSECTS_EXTERIOR(Integer.MAX_VALUE, true),
GEOMETRY_INTERIOR_RING_OUTSIDE_EXTERIOR(Integer.MAX_VALUE, true),
GEOMETRY_INTERIOR_DISCONNECTED(Integer.MAX_VALUE, true),
GEOMETRY_SRS_NULL,
GEOMETRY_SRS_NOT_RD("EPSG:28992"),
HAS_MORE_ERRORS(LogLevel.WARNING)
;
private final String[] params;
private final LogLevel logLevel;
private final int maxMessageLog;
private final boolean addToShapeFile;
private Message(LogLevel logLevel, Integer maxMessageLog, boolean addToShapeFile, String... params) {
this.maxMessageLog = maxMessageLog == null ? 10 : maxMessageLog;
this.logLevel = logLevel == null ? LogLevel.ERROR : logLevel;
this.addToShapeFile = addToShapeFile;
this.params = params;
}
private Message(LogLevel logLevel, Integer maxMessageLog, String... params) {
this(logLevel, maxMessageLog, false, params);
}
private Message(Integer maxMessageLog, boolean addToShapeFile, String... params) {
this(null, maxMessageLog, addToShapeFile, params);
}
private Message(LogLevel logLevel) {
this(logLevel, null, false);
}
private Message(String... params) {
this(null, null, false, params);
}
@Override
public boolean isBlocking() {
return getLogLevel ().equals (LogLevel.ERROR);
}
@Override
public List<Expression<Message, Context, ?>> getMessageParameters () {
final List<Expression<Message, Context, ?>> params = new ArrayList<> ();
// why twice???
params.add (new AttributeExpression<Message, Context, String> ("id", String.class));
params.add (new AttributeExpression<Message, Context, String> ("id", String.class));
params.add (new AttributeExpression<Message, Context, String> ("inspireIdLocalId", String.class));
return params;
}
@Override
public int getMaxMessageLog() {
return maxMessageLog;
}
@Override
public boolean isAddToShapeFile () {
return addToShapeFile;
}
@Override
public LogLevel getLogLevel() {
return logLevel;
}
@Override
public Message getMaxMessageKey() {
return HAS_MORE_ERRORS;
}
}