package seeurrenamer.main.util.positionalrenaming; import java.nio.file.Path; import java.nio.file.Paths; import java.util.function.Function; import seeurrenamer.main.util.PathsRenamer; import seeurrenamer.main.util.RenamerDirection; /** * This class is a child class of {@link PositionalRenamer}, it can be used to * insert newString to path with particular {@link RenamerDirection} and * particular position, this class can be used individually or it can be used as * an argument for method {@link PathsRenamer#rename(java.util.List, Function)} * * @author moch deden * */ public class InsertionPositionalRenamer extends PositionalRenamer { public InsertionPositionalRenamer() { super(); } public InsertionPositionalRenamer(RenamerDirection direction, int position, String newString) { super(direction, position, newString); } @Override protected Path renameRight() { int bound = getPathString().length() - getPosition(); return Paths.get(insert(string -> string.substring(0, bound), string -> string.substring(bound, getPathString().length()))); } @Override protected Path renameLeft() { return Paths.get(insert((string) -> string.substring(0, getPosition()), (string) -> string.substring(getPosition()))); } private String insert(Function<String, String> leftSideExtractor, Function<String, String> rightSideExtractor) { return leftSideExtractor.apply(getPathString()) + getNewString() + rightSideExtractor.apply(getPathString()); } @Override public String toString() { return "insert"; } }