package seeurrenamer.main.util;
import java.nio.file.Path;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
import seeurrenamer.main.model.PairPath;
/**
* it is a class for renaming {@link List} of {@link PairPath} with any renaming
* method
*
* @author moch deden
*/
public class PathsRenamer {
private Path extractNewPath(PairPath pairPath, Path newPathName) {
return pairPath.getBeforeFullPath().getParent().resolve(newPathName);
}
/**
* return {@link List} of {@link PairPath} that is already renamed
*
* @param pairPathList
* {@link List} of {@link PairPath} to be renaming
* @param renamingMethod
* method for renaming pairPathList, this method implements
* {@link Function}
* @return {@link List} of {@link PairPath} that is already renamed
*/
public List<PairPath> rename(List<PairPath> pairPathList,
Function<Path, Path> renamingMethod) {
return pairPathList
.stream()
.map(pairPath -> {
Path newFullPath = extractNewPath(pairPath,
renamingMethod.apply(pairPath.getBeforeFileName()));
return new PairPath(pairPath.getBeforeFullPath(),
newFullPath);
}).collect(Collectors.toList());
}
}