/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.commons.cismap.io.converters; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import de.cismet.commons.converter.ConversionException; import de.cismet.commons.converter.Converter.MatchRating; /** * Creates a line string geometry from the provided coordinates. At least two coordinates are expected. * * @author martin.scholl@cismet.de * @version 1.0 */ @ServiceProvider(service = TextToGeometryConverter.class) public final class PolylineFromTextConverter extends AbstractGeometryFromTextConverter implements MatchRating<String> { //~ Methods ---------------------------------------------------------------- @Override protected Geometry createGeometry(final Coordinate[] coordinates, final GeometryFactory geomFactory) throws ConversionException { if (coordinates.length < 2) { throw new ConversionException("cannot create linestring lnfrom empty coordinate array"); // NOI18N } return geomFactory.createLineString(coordinates); } @Override public String getFormatName() { return "PolylineFromTextConverter"; // NOI18N } @Override public String getFormatDisplayName() { return NbBundle.getMessage( PolylineFromTextConverter.class, "PolylineFromTextConverter.getFormatDisplayName().returnValue"); // NOI18N } @Override public String getFormatHtmlName() { return null; } @Override public String getFormatDescription() { final String desc = NbBundle.getMessage( PointFromTextConverter.class, "PolylineFromTextConverter.getFormatDescription().returnValue"); // NOI18N final String superDesc = super.getFormatDescription(); return desc + "\n" + superDesc; } @Override public String getFormatHtmlDescription() { final String desc = NbBundle.getMessage( PointFromTextConverter.class, "PolylineFromTextConverter.getFormatHtmlDescription().returnValue") .replaceAll("<[/]?html>", ""); // NOI18N final String superDesc = super.getFormatHtmlDescription().replaceAll("<[/]?html>", ""); // NOI18N; return "<html>" + desc + "<br/>" + superDesc + "</html>"; // NOI18N } @Override public Object getFormatExample() { return NbBundle.getMessage( PointFromTextConverter.class, "PolylineFromTextConverter.getFormatExample().returnValue", getDecimalSeparator()); // NOI18N } @Override public int rate(final String from, final String... params) { final int superRating = super.rate(from, params); if (superRating == 0) { return 0; } final String[] tokens = from.split(getTokenRegex()); if (tokens.length < 6) { return 0; } else { if (tokens[0].equals(tokens[tokens.length - 2]) && tokens[1].equals(tokens[tokens.length - 1])) { // could be polygon return 80; } else { return 100; } } } }