package de.zigapeda.flowspring.controller; import java.io.File; import de.zigapeda.flowspring.data.Title; public class Rename { private static final String[] INVALID = new String[Character.MAX_VALUE]; static { for(int i=Character.MIN_VALUE;i<Character.MAX_VALUE;i++) { INVALID[i] = Character.toString((char) i); } if(System.getProperty("os.name").toLowerCase().contains("windows")) { INVALID['\\'] = "_"; INVALID['/'] = "_"; INVALID[':'] = "_"; INVALID['*'] = "_"; INVALID['?'] = "_"; INVALID['"'] = "_"; INVALID['<'] = "_"; INVALID['>'] = "_"; INVALID['|'] = "_"; } else if(System.getProperty("os.name").toLowerCase().contains("mac")) { INVALID['/'] = "_"; INVALID[':'] = "_"; } else { INVALID['/'] = "_"; } } private static String musicdir; private static String dirstructure; private static String filestructure; public static boolean isFile(String path) { File f = new File(path); if(f.exists() == true) { if(f.isFile() == true) { return true; } } return false; } public static String createPath(Title t) { String path = getMusicDirectory() + getDirectoryStructure() + getFileStructure(); int pos = t.getPath().lastIndexOf('.'); if(pos != -1) { path = path + t.getPath().substring(pos).toLowerCase(); } String artist = replaceInvalids(t.getArtist()); String album = replaceInvalids(t.getAlbum()); String title = replaceInvalids(t.getName()); String track = replaceInvalids(t.getTrack()); path = path.replaceAll("<interpret>", artist); path = path.replaceAll("<album>", album); path = path.replaceAll("<title>", title); path = path.replaceAll("<track>", track); return path; } public static String getMusicDirectory() { if(Rename.musicdir == null) { Rename.musicdir = Settings.loadSettings("defaultdir"); } return Rename.musicdir; } public static String getDirectoryStructure() { if(Rename.dirstructure == null) { Rename.dirstructure = Settings.loadSettings("dirstructure"); } return Rename.dirstructure; } public static String getFileStructure() { if(Rename.filestructure == null) { Rename.filestructure = Settings.loadSettings("filestructure"); } return Rename.filestructure; } public static String replaceInvalids(String string) { if(string != null) { StringBuilder sb = new StringBuilder(string.length()); for(int i=0;i<string.length();i++) sb.append(INVALID[string.charAt(i)]); return sb.toString(); } return null; } public static boolean isRenameAvailable() { if(getMusicDirectory() != null && getDirectoryStructure() != null && getFileStructure() != null) { return true; } return false; } }