package com.revolsys.geometry.cs.projection; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ChainedCoordinatesOperation implements CoordinatesOperation { private final List<CoordinatesOperation> operations; public ChainedCoordinatesOperation(final CoordinatesOperation... operations) { this(Arrays.asList(operations)); } public ChainedCoordinatesOperation(final List<CoordinatesOperation> operations) { this.operations = new ArrayList<>(operations); } @Override public void perform(int sourceAxisCount, double[] sourceCoordinates, final int targetAxisCount, final double[] targetCoordinates) { for (final CoordinatesOperation operation : this.operations) { operation.perform(sourceAxisCount, sourceCoordinates, targetAxisCount, targetCoordinates); sourceAxisCount = targetAxisCount; sourceCoordinates = targetCoordinates; } } @Override public String toString() { return this.operations.toString(); } }