ProjectAres/PGM/src/main/java/tc/oc/pgm/rotation/RemoveIndexTransformation.java

49 lines
1.2 KiB
Java

package tc.oc.pgm.rotation;
import java.util.List;
import javax.annotation.Nonnull;
import tc.oc.pgm.map.PGMMap;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
/**
* Transformation that removes the map at a specific index.
*/
public class RemoveIndexTransformation implements RotationTransformation {
public RemoveIndexTransformation(int index) {
Preconditions.checkArgument(index >= 0, "index must not be negative");
this.index = index;
}
public int getRemovedIndex() {
return this.index;
}
@Override
public @Nonnull RotationState apply(@Nonnull RotationState state) {
Preconditions.checkNotNull(state, "rotation state");
if(state.getMaps().size() > 1 && this.index < state.getMaps().size()) {
List<PGMMap> maps = Lists.newArrayList(state.getMaps());
maps.remove(this.index);
int nextId = state.getNextId();
if(nextId >= maps.size()) {
nextId = 0;
} else if (this.index < nextId) {
nextId--;
}
return new RotationState(maps, nextId);
}
return state;
}
protected final int index;
}