// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.opendata.core.io; import java.util.regex.Pattern; import org.openstreetmap.josm.data.projection.Projection; import org.openstreetmap.josm.plugins.opendata.core.OdConstants; public class ProjectionPatterns { private final Pattern xPattern; private final Pattern yPattern; private final Pattern xyPattern; private final Projection projection; public ProjectionPatterns(Pattern xPattern, Pattern yPattern, Pattern xyPattern, Projection projection) { this.xPattern = xPattern; this.yPattern = yPattern; this.xyPattern = xyPattern; this.projection = projection; OdConstants.PROJECTIONS.add(this); } public ProjectionPatterns(String proj, Projection projection) { this(getCoordinatePattern(OdConstants.X_STRING, proj), getCoordinatePattern(OdConstants.Y_STRING, proj), getCoordinatePattern(OdConstants.XY_STRING, proj), projection); } public ProjectionPatterns(String proj) { this(proj, null); } public final Pattern getXPattern() { return xPattern; } public final Pattern getYPattern() { return yPattern; } public final Pattern getXYPattern() { return xyPattern; } public Projection getProjection(String xFieldName, String yFieldName) { return getProjection(); } public final Projection getProjection() { return projection; } public static final Pattern getCoordinatePattern(String coor, String proj) { if (proj != null && !proj.isEmpty()) { return Pattern.compile("(?:.*(?:"+coor+").*(?:"+proj+").*)|(?:.*("+proj+").*(?:"+coor+").*)", Pattern.CASE_INSENSITIVE); } else { return Pattern.compile(coor, Pattern.CASE_INSENSITIVE); } } @Override public String toString() { return "[xPattern=" + xPattern + ", yPattern=" + yPattern + ", xyPattern=" + xyPattern + ", projection=" + projection + ']'; } }