package com.akjava.lib.common.functions; import com.akjava.lib.common.utils.FileNames; import com.google.common.base.Function; public class FileNamesFunctions { /** * TODO * @author aki * *filter extension *file only * *path to parentfolders for zip? */ public class PathToDirectoryNameFunction implements Function<String,String>{ private boolean isHandleNoExtensionFileAsDir; private FileNames fileNames; public PathToDirectoryNameFunction(char fileSeparator,boolean isHandleNoExtensionFileAsDir){ fileNames=FileNames.as(fileSeparator); this.isHandleNoExtensionFileAsDir=isHandleNoExtensionFileAsDir; } @Override public String apply(String input) { return fileNames.getDirectoryPath(input,isHandleNoExtensionFileAsDir); } } /** * not replace when no extension like ends with file separator or has no extension * @author aki * */ public class ChangeExtensionFunction implements Function<String,String>{ private String extension; private FileNames fileNames; public ChangeExtensionFunction(char fileSeparator,String extension){ fileNames=FileNames.as(fileSeparator); this.extension=extension; } @Override public String apply(String input) { return fileNames.getChangedExtensionName(input,extension); } } /** * replace no extension files too,but not replace a file must be folder(ends with fileSeparator) * @author aki * */ public class ChangeOrAddExtensionFunction implements Function<String,String>{ private String extension; private FileNames fileNames; public ChangeOrAddExtensionFunction(char fileSeparator,String extension){ fileNames=FileNames.as(fileSeparator); this.extension=extension; } @Override public String apply(String input) { if(fileNames.isEndsWithFileSeparator(input)){ return input; } if(fileNames.hasExtension(input)){ return fileNames.getChangedExtensionName(input,extension); }else{ return input+"."+extension; } } } }