/** * Method to generate the new file path * * @throws IOException Gets thrown if the directory can't be made */ public static void generateNewFilePath(MusicFile file) throws IOException { MusicTag tag = file.getTag(); OrderingProperty orderingProperty = PropertiesUtils.getOrderingProperty(); if (!tag.getArtist().equals("") && !tag.getAlbum().equals("")) { if (orderingProperty == OrderingProperty.GAA && !tag.getGenre().equals("") || orderingProperty == OrderingProperty.AA || orderingProperty == OrderingProperty.AAA) { file.setNewFilePathIsSet(true); file.setNewFilePath(MusicFileUtils.makeFileDir(file)); } else { file.setNewFilePathIsSet(false); file.setNewFilePath(""); } } else { file.setNewFilePathIsSet(false); file.setNewFilePath(""); } }
/** * Checks for a certain file if there is already a music file in the library * * @param musicFile to be checked * @return boolean indicating whether there is a duplicate already */ public static boolean checkForDuplicates(MusicFile musicFile) throws CannotReadException, IOException, TagException, ReadOnlyFileException, InvalidAudioFrameException { // The Directories File firstLevelDir; File secondLevelDir; File thridLevelDir; // The direcotryPaths String firstLevelDir_path; String secondLevelDir_path; String thridLevelDir_path; // Clearing the readFiles list readFiles.clear(); // Reading the tag MusicTag tag = musicFile.getTag(); boolean duplicate = false; // Reading the path to the music library and ordering Mode String pathToLibrary = PropertiesUtils.getProperty(LibraryProperties.FILEPATH); OrderingProperty orderingMode = PropertiesUtils.getOrderingProperty(); // Cleaning the Strings String artist = MusicFileUtils.clearForbiddenCharacters(MusicFileUtils.cleanString(tag.getArtist())); String album = MusicFileUtils.clearForbiddenCharacters(MusicFileUtils.cleanString(tag.getAlbum())); String titlename = MusicFileUtils.clearForbiddenCharacters(MusicFileUtils.cleanString(tag.getTitlename())); String genre = MusicFileUtils.clearForbiddenCharacters(MusicFileUtils.cleanString(tag.getGenre())); if (orderingMode == OrderingProperty.AAA || orderingMode == OrderingProperty.GAA) { // Building the Directorystrings // Ordering: A - Artist - Album if (orderingMode == OrderingProperty.AAA) { firstLevelDir_path = pathToLibrary + "\\" + artist.substring(0, 1).toUpperCase(); secondLevelDir_path = firstLevelDir_path + "\\" + artist.substring(0, 1).toUpperCase() + artist.substring(1, artist.length()); thridLevelDir_path = secondLevelDir_path + "\\" + album.substring(0, 1).toUpperCase() + album.substring(1, album.length()); // Genre - Artist - Album } else { firstLevelDir_path = pathToLibrary + "\\" + genre.substring(0, 1).toUpperCase() + genre.substring(1, genre.length()).toUpperCase(); secondLevelDir_path = firstLevelDir_path + "\\" + artist.substring(0, 1).toUpperCase() + artist.substring(1, artist.length()); thridLevelDir_path = secondLevelDir_path + "\\" + album.substring(0, 1).toUpperCase() + album.substring(1, album.length()); } // First checking whether there is a Directory for the music file firstLevelDir = new File(firstLevelDir_path); secondLevelDir = new File(secondLevelDir_path); thridLevelDir = new File(thridLevelDir_path); // The artist subFolder exists if (firstLevelDir.exists()) { if (secondLevelDir.exists()) { if (thridLevelDir.exists()) { // Reading the files of the directory: addDirContent(thridLevelDir); // Checking for the similar file: for (File file : readFiles) { System.out.println(file.getAbsolutePath()); if (compareAcousticIds(new MusicFile(file.getAbsolutePath(), true), musicFile) >= 90.0) { musicFile.setPossibleDuplicate(true); duplicate = true; break; } else if (file.getAbsolutePath().contains(titlename)) { duplicate = true; break; } } } else { // Reading the files of the directory: addDirContent(secondLevelDir); // Checking for the similar file: for (File file : readFiles) { if (compareAcousticIds(new MusicFile(file.getAbsolutePath(), true), musicFile) >= 90.0) { musicFile.setPossibleDuplicate(true); duplicate = true; break; } else if (file.getAbsolutePath().contains(titlename)) { duplicate = true; break; } } } } else { duplicate = false; } } else { duplicate = false; } // Artist - Album } else { firstLevelDir_path = pathToLibrary + "\\" + artist.substring(0, 1).toUpperCase() + artist.substring(1, artist.length()); secondLevelDir_path = firstLevelDir_path + "\\" + album.substring(0, 1).toUpperCase() + album.substring(1, album.length()); // First checking whether there is a Directory for the music file firstLevelDir = new File(firstLevelDir_path); secondLevelDir = new File(secondLevelDir_path); // The artist subFolder exists if (firstLevelDir.exists()) { if (secondLevelDir.exists()) { // Reading the files of the directory: addDirContent(secondLevelDir); // Checking for the similar file: for (File file : readFiles) { // Compare the AcoustID's if (compareAcousticIds(new MusicFile(file.getAbsolutePath()), musicFile) >= 90.0) { musicFile.setPossibleDuplicate(true); duplicate = true; break; } else if (file.getAbsolutePath().contains(titlename)) { duplicate = true; break; } } } else { // Reading the files of the directory: addDirContent(firstLevelDir); // Checking for the similar file: for (File file : readFiles) { if (compareAcousticIds(new MusicFile(file.getAbsolutePath(), true), musicFile) >= 90.0) { musicFile.setPossibleDuplicate(true); duplicate = true; break; } else if (file.getAbsolutePath().contains(titlename)) { duplicate = true; break; } } } } else { duplicate = false; } } return duplicate; }