package jackrabbit.util; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.filefilter.FileFilterUtils; public class PathTransformer { /** * repo directory path * @param repoPath * @return */ public static String[] transform(String repoPath) { if (repoPath.isEmpty()) return new String[] {}; String parent=""; if (repoPath.endsWith("/*")) { parent=repoPath.substring(0, Math.max(1, repoPath.length()-2)); } if (parent.isEmpty()) return new String[]{repoPath}; File dir=new File(parent); if (!dir.exists()) return new String[] {}; List<String> files=new ArrayList<String>(); for (String f:dir.list(FileFilterUtils.directoryFileFilter())) { files.add(parent+"/"+f); } return files.toArray(new String[0]); } public static String[] transform(String repoPath, FilenameFilter filter) { File dir=new File(repoPath); if (!dir.exists()) return new String[] {}; if (filter==null) return new String[]{repoPath}; return dir.list(filter); } /** * Modify node path with regular expression * @param nodePath * @param regex * @param replacement * @return */ public static String transform(String nodePath, String regex, String replacement) { return nodePath.replaceAll(regex, replacement); } /** * Modify node path with a user-defined modifier * @param nodePath * @param modifier * @return */ public static String transform(String nodePath, NodePathModifier modifier) { return modifier.modify(nodePath); } }