/*
You may freely copy, distribute, modify and use this class as long
as the original author attribution remains intact. See message
below.
Copyright (C) 2003 Christian Pesch. All Rights Reserved.
*/
package slash.metamusic.coverdb;
import slash.metamusic.util.Files;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Logger;
/**
* Abstract super class for all filesystem based cover clients.
*
* @author Christian Pesch
* @version $Id: FileSystemCoverClient.java 797 2008-04-03 06:28:05Z cpesch $
*/
abstract class FileSystemCoverClient {
/**
* Logging output
*/
protected static Logger log = Logger.getLogger(FileSystemCoverClient.class.getName());
protected static final String ALBUM_ART_FILE_NAME_EXTENSION = ".jpg";
protected void storeCover(File parent, String fileName, byte[] cover) {
File folderJpg = new File(parent, fileName);
if (folderJpg.exists() && folderJpg.length() >= cover.length)
return;
if (folderJpg.exists()) {
try {
File tempFile = File.createTempFile(Files.removeExtension(folderJpg.getName()),
"." + Files.getExtension(folderJpg.getName()));
log.warning("The file '" + folderJpg + "' exists, moving it to tmp '" + tempFile + "'");
folderJpg.renameTo(tempFile);
} catch (IOException e) {
log.severe("Cannot delete " + folderJpg.getAbsolutePath() + ": " + e.getMessage());
}
}
try {
FileOutputStream fos = new FileOutputStream(folderJpg);
fos.write(cover);
fos.close();
} catch (IOException e) {
log.severe("Cannot write " + folderJpg.getAbsolutePath() + ": " + e.getMessage());
}
}
protected void removeFile(File remove) {
if (!remove.exists())
return;
if (!remove.delete())
LastFmCoverClient.log.severe("Failed to remove " + remove);
else
LastFmCoverClient.log.info("Removed " + remove.getAbsolutePath());
}
}