package seeurrenamer.main.util.positionalrenaming; import java.nio.file.Path; import java.nio.file.Paths; import java.util.function.Function; import seeurrenamer.main.util.RenamerDirection; /** * @author moch deden * */ public class OverwritingPositionalRenamer extends PositionalRenamer { public OverwritingPositionalRenamer() { } public OverwritingPositionalRenamer(RenamerDirection direction, int position, String newString) { super(direction, position, newString); } @Override public Path renameRight() { int lefSideEndIndex = (getPathString().length() - getPosition()) - 1; return Paths.get(overwrite(string -> string.substring(0, lefSideEndIndex), string -> string.substring(lefSideEndIndex, getPathString().length()))); } @Override public Path renameLeft() { return Paths.get(overwrite( string -> getPathString().substring(0, getPosition()), string -> string.substring(getPosition(), getPathString() .length()))); } private String overwrite(Function<String, String> leftSideExtractor, Function<String, String> rightSideExtractor) { String leftSide = leftSideExtractor.apply(getPathString()); StringBuilder rightSideStringBuilder = new StringBuilder( rightSideExtractor.apply(getPathString())); rightSideStringBuilder.replace(0, getNewString().length(), getNewString()); return leftSide + rightSideStringBuilder.toString(); } @Override public String toString() { return "overwrite"; } }