/**
*
*/
package org.ariadne_eu.content.insert;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.activation.DataHandler;
import org.apache.log4j.Logger;
import org.ariadne.config.PropertiesManager;
import org.ariadne_eu.utils.config.RepositoryConstants;
/**
* @author gonzalo
*
*/
public class InsertContentFSImpl extends InsertContentImpl {
private static Logger log = Logger.getLogger(InsertContentFSImpl.class);
private File baseFolder;
void initialize() {
super.initialize();
try {
String basePath = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().CNT_DR_BASEPATH);
if (basePath == null)
log.error("initialize failed: no " + RepositoryConstants.getInstance().CNT_DR_BASEPATH + " found");
else
baseFolder = new File(basePath);
} catch (Throwable t) {
log.error("initialize: ", t);
}
}
public synchronized void insertContent(String identifier, DataHandler dataHandler, String fileName, String fileType) {
try {
File file = getFileForID(identifier, fileName, fileType);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
FileOutputStream outputStream = new FileOutputStream(file);
dataHandler.writeTo(outputStream);
outputStream.flush();
outputStream.close();
dataHandler.getInputStream().close();
// return true;
log.info("insertContent:identifier:\"" + identifier + "\"");
} catch (IOException e) {
log.error("insertContent:identifier:\"" + identifier + "\" ", e);
// return false;
}
}
private synchronized File getFileForID(String identifier, String fileName, String fileType) {
String name = identifier.replaceAll(":", "_");
name = name.replaceAll("/", ".s.");
File idFolder = new File(baseFolder.getAbsolutePath() + File.separator + name + File.separator);
if (idFolder.exists()) {
File[] subFiles = idFolder.listFiles();
if (subFiles.length > 0) {
for (int i = 0; i < subFiles.length; i++) {
File file = subFiles[i];
file.delete();
}
}
} else {
idFolder.mkdir();
}
if (fileName.equalsIgnoreCase(""))
fileName = name;
return new File(baseFolder.getAbsolutePath() + File.separator + name + File.separator + fileName);
}
}