package org.ariadne_eu.content.retrieve;
import java.util.Vector;
import javax.activation.DataHandler;
import org.apache.log4j.Logger;
import org.ariadne.config.PropertiesManager;
import org.ariadne_eu.utils.config.RepositoryConstants;
/**
* Created by ben
* Date: 11-sep-2007
* Time: 21:20:17
* To change this template use File | Settings | File Templates.
*/
public class RetrieveContentFactory {
private static Logger log = Logger.getLogger(RetrieveContentFactory.class);
private static Vector cachedImplementations = new Vector();
static {
initialize();
}
public static void initialize() {
cachedImplementations = new Vector();
for (int nb = -1; nb < 0; nb++) {
String implementation;
if (nb >= 0) {
implementation = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().CNT_RETREIVE_IMPLEMENTATION + "." + nb);
} else {
implementation = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().CNT_RETREIVE_IMPLEMENTATION);
}
if (implementation != null) {
try {
Class implClass = Class.forName(implementation);
RetrieveContentImpl retrieveContent = (RetrieveContentImpl) implClass.newInstance();
// insertContent.setNumber(nb);
retrieveContent.initialize();
cachedImplementations.add(retrieveContent);
} catch (Exception e) {
log.error("Error while initializing retrieveContent class", e);
}
}
}
}
public static RetrieveContentImpl[] getRetrieveImpl() {
return (RetrieveContentImpl[]) cachedImplementations.toArray(new RetrieveContentImpl[cachedImplementations.size()]);
}
public static DataHandler retrieveContent(String identifier) {
RetrieveContentImpl[] impls = getRetrieveImpl();
for (int i = 0; i < impls.length; i++) {
RetrieveContentImpl impl = impls[i];
return impl.retrieveContent(identifier);
}
return null;
}
public static String retrieveFileName(String identifier) {
RetrieveContentImpl[] impls = getRetrieveImpl();
for (int i = 0; i < impls.length; i++) {
RetrieveContentImpl impl = impls[i];
return impl.retrieveFileName(identifier);
}
return null;
}
public static String retrieveFileType(String identifier) {
RetrieveContentImpl[] impls = getRetrieveImpl();
for (int i = 0; i < impls.length; i++) {
RetrieveContentImpl impl = impls[i];
return impl.retrieveFileType(identifier);
}
return null;
}
}