/* Copyright (c) 2014 Boundless and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Distribution License v1.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/edl-v10.html
*
* Contributors:
* Gabriel Roldan (Boundless) - initial implementation
*/
package org.locationtech.geogig.osm.internal;
import java.io.Serializable;
import com.google.common.base.Preconditions;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.CoordinateSequenceFactory;
import com.vividsolutions.jts.geom.impl.CoordinateArraySequence;
/**
* A {@link CoordinateSequenceFactory} that produces packed sequences of coordinates as
* {@code int[]} as per {@link OSMCoordinateSequence}
*/
public class OSMCoordinateSequenceFactory implements CoordinateSequenceFactory, Serializable {
private static final long serialVersionUID = -1245500277641319804L;
private static final OSMCoordinateSequenceFactory INSTANCE = new OSMCoordinateSequenceFactory();
@Override
public OSMCoordinateSequence create(Coordinate[] coordinates) {
return new OSMCoordinateSequence(coordinates);
}
@Override
public CoordinateSequence create(CoordinateSequence coordSeq) {
return new CoordinateArraySequence(coordSeq);
}
@Override
public OSMCoordinateSequence create(int size, int dimension) {
Preconditions.checkArgument(dimension == 2);
return create(size);
}
public OSMCoordinateSequence create(int size) {
return new OSMCoordinateSequence(size);
}
public static OSMCoordinateSequenceFactory instance() {
return INSTANCE;
}
}