All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.backendless.persistence.LineString Maven / Gradle / Ivy

The newest version!
package com.backendless.persistence;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;


public class LineString extends Geometry
{
  public static final String GEOJSON_TYPE = "LineString";
  public static final String WKT_TYPE = GEOJSON_TYPE.toUpperCase();

  private final ArrayList points;


  public LineString( List points )
  {
    this( points, SpatialReferenceSystemEnum.DEFAULT );
  }

  public LineString( List points, SpatialReferenceSystemEnum srs )
  {
    super( srs );
    this.points = new ArrayList<>( points );
  }

  public List getPoints()
  {
    return (List) this.points.clone();
  }

  public LineString setPoints( List points )
  {
    this.points.clear();
    this.points.addAll( points );
    return this;
  }

  @Override
  public String getGeojsonType()
  {
    return LineString.GEOJSON_TYPE;
  }

  @Override
  public String getWktType()
  {
    return LineString.WKT_TYPE;
  }

  @Override
  String jsonCoordinatePairs()
  {
    StringBuilder sb = new StringBuilder();
    sb.append( '[' );

    for( Point p : this.getPoints() )
      sb.append( p.jsonCoordinatePairs() ).append( ',' );

    sb.setCharAt( sb.length() - 1, ']' );
    return sb.toString();
  }

  @Override
  String wktCoordinatePairs()
  {
    StringBuilder sb = new StringBuilder();
    for( Point p : this.getPoints() )
      sb.append( p.wktCoordinatePairs() ).append( ',' );

    sb.deleteCharAt( sb.length() - 1 );
    return sb.toString();
  }

  @Override
  public boolean equals( Object o )
  {
    if( this == o )
      return true;
    if( !(o instanceof LineString) )
      return false;
    LineString that = (LineString) o;
    return Objects.equals( points, that.points ) && srs == that.srs;
  }

  @Override
  public int hashCode()
  {
    return Objects.hash( points, srs );
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy