/* Generated by Together */
package multimonster.systemadministration;
import java.rmi.RemoteException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import multimonster.common.Action;
import multimonster.common.Format;
import multimonster.common.FormatId;
import multimonster.common.InputOption;
import multimonster.common.OutputOption;
import multimonster.common.ProtocolId;
import multimonster.common.SearchCriteria;
import multimonster.common.SearchResult;
import multimonster.common.UserIdentifier;
import multimonster.common.edit.FilterAction;
import multimonster.common.edit.FilterDetail;
import multimonster.common.media.MIIdentifier;
import multimonster.common.media.MOIdentifier;
import multimonster.common.media.MediaInstance;
import multimonster.common.media.MediaObject;
import multimonster.common.media.MetaData;
import multimonster.common.media.MetaDataAccess;
import multimonster.common.plugin.PlugInIdentifier;
import multimonster.common.plugin.PlugInInformation;
import multimonster.common.resource.Costs;
import multimonster.common.setting.Setting;
import multimonster.common.setting.SettingID;
import multimonster.common.setting.SettingValue;
import multimonster.exceptions.DBNotAvailableException;
import multimonster.exceptions.MultiMonsterException;
import multimonster.systemadministration.exceptions.SettingNotExistsException;
import multimonster.systemadministration.exceptions.SettingOutOfDomainException;
import multimonster.usermanager.interfaces.UserManagerImplHome;
import org.apache.log4j.Logger;
/**
*
* @ejb.bean name = "SystemAdministrationImpl" display-name =
* "SystemAdministrationFacade SessionBean" description = "The Facade of the
* SystemAdministration-Package of MultiMonster" view-type = "remote" jndi-name =
* "multimonster/systemadministration/SystemAdministrationFacade"
*
*/
public class SystemAdministrationImplBean
implements SessionBean, SystemAdministrationFacade {
private SessionContext ctx;
private Logger log;
private Context context;
private UserManagerImplHome userManagerHome;
//private RightsManager rightMan;
private SettingAdministration settingAdmin;
private CostCalculator costCal;
private MOManager moManager;
private PlugInManager plugInMngr;
private MOSearch searcher;
public void setSessionContext(SessionContext context)
throws RemoteException, EJBException {
ctx = context;
}
public void ejbActivate() throws EJBException {
}
public void ejbPassivate() throws EJBException {
}
public void ejbRemove() throws EJBException {
}
/**
* @ejb.create-method
*/
public void ejbCreate()
throws CreateException, EJBException, RemoteException {
try {
log = Logger.getLogger(this.getClass());
log.debug("ejbCreate()");
context = new InitialContext();
// Usermanager get Stub
Object ref = context.lookup(UserManagerImplHome.JNDI_NAME);
userManagerHome =
(UserManagerImplHome) PortableRemoteObject.narrow(
ref,
UserManagerImplHome.class);
// RightsManager
//rightMan = new RightsManager();
// SettingAdministration
settingAdmin = new SettingAdministration();
// CostCalculator
costCal = new CostCalculator();
// MOManager
moManager = new MOManager();
// PlugInManager
plugInMngr = new PlugInManager();
// MOSearch
searcher = new MOSearch();
} catch (NamingException e) {
e.printStackTrace();
}
}
/**
* @ejb.interface-method view-type = "remote"
*/
public String getSettingDescription(SettingID settingID) throws SettingNotExistsException {
log.debug("getSettingDescription() - delegate to Subcomponent");
return settingAdmin.getDescription(settingID);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void registerSetting(Setting setting) {
log.debug("registerSetting() - delegate to Subcomponent");
settingAdmin.registerSetting(setting);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void releaseSetting(SettingID settingId) {
log.debug("releaseSetting() - delegate to Subcomponent");
settingAdmin.releaseSetting(settingId);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void setSettingValue(SettingID settingID, SettingValue value) throws SettingNotExistsException, SettingOutOfDomainException {
log.debug("setSettingValue() - delegate to Subcomponent");
settingAdmin.setValue(settingID, value);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public SettingValue getSettingValue(SettingID settingID) throws SettingNotExistsException {
log.debug("getSettingValue() - delegate to Subcomponent");
return settingAdmin.getValue(settingID);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public Setting[] getAllSettings() {
return settingAdmin.getAllSettings();
}
/**
* @ejb.interface-method view-type = "remote"
*/
public MOIdentifier addMediaObject(
MediaObject mediaObject,
UserIdentifier user)
throws MultiMonsterException {
log.debug("addMediaObject() - delegate to Subcomponent");
return moManager.addMediaObject(mediaObject, user);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void modifyMediaObject(
MediaObject mediaObject,
UserIdentifier user) {
log.debug("modifyMediaObject() - delegate to Subcomponent");
moManager.modifyMediaObject(mediaObject, user);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public InputOption[] getInputOptions(UserIdentifier user) {
log.debug("getInputOptions() - delegate to Subcomponent");
return moManager.getInputOptions(user);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public OutputOption[] getOutputOptions(
UserIdentifier user,
MOIdentifier mediaObject) {
log.debug("getOutputOptions() - delegate to Subcomponent");
return moManager.getOutputOptions(user, mediaObject);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void getFilterOptions() {
log.debug("getFilterOptions() - delegate to Subcomponent");
moManager.getFilterOptions();
}
/**
* @ejb.interface-method view-type = "remote"
*/
public MetaDataAccess getMetaData(MOIdentifier mOId) {
log.debug("getMetaData() - delegate to Subcomponent");
return moManager.getMetaData(mOId);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void registerPlugin(PlugInInformation regInfo) {
log.debug("registerPlugin() - delegate to Subcomponent");
plugInMngr.registerPlugin(regInfo);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void releasePlugin(PlugInIdentifier pluginID) {
log.debug("releasePlugin() - delegate to Subcomponent");
plugInMngr.releasePlugin(pluginID);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void removePlugin(PlugInIdentifier pluginID) {
log.debug("removePlugin() - delegate to Subcomponent");
plugInMngr.removePlugin(pluginID);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public SearchResult[] search(SearchCriteria criteria)
throws DBNotAvailableException {
log.debug("search() - delegate to Subcomponent");
return searcher.search(criteria);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void addMediaInstance(MediaInstance instance, MetaData meta)
throws MultiMonsterException {
log.debug("addMediaInstance() - delegate to Subcomponent");
moManager.addMediaInstance(instance, meta);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void remMediaInstance(MIIdentifier id) {
log.debug("remMediaInstance() - delegate to Subcomponent");
moManager.remMediaInstance(id);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public MediaInstance getMediaInstance(MOIdentifier mOId, FormatId fId)
throws MultiMonsterException {
log.debug("getMediaInstance() - delegate to Subcomponent");
return moManager.getMediaInstance(mOId, fId);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public MIIdentifier getSourceMediaInstance(MOIdentifier mOId)
throws MultiMonsterException {
log.debug("getSourceMediaInstance() - delegate to Subcomponent");
return moManager.getSourceMediaInstance(mOId);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void remMediaObject(MOIdentifier id, UserIdentifier user)
throws MultiMonsterException {
log.debug("remMediaObject() - delegate to Subcomponent");
moManager.remMediaObject(id, user);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public Costs calculateCosts(MOIdentifier id, FilterAction[] actions) {
log.debug("calculateCosts() - delegate to Subcomponent");
return costCal.calculateCosts(id, actions);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public Costs calculateCosts(MOIdentifier mOId, FormatId formatId, ProtocolId protocolId, Action action){
log.debug("calculateCosts()");
return new Costs();
}
/**
* @ejb.interface-method view-type = "remote"
*/
public Costs calculateCosts(MOIdentifier mOId, ProtocolId protocolId, Action action){
log.debug("calculateCosts()");
return new Costs();
}
/**
* @ejb.interface-method view-type = "remote"
*/
public void realCosts(
MOIdentifier id,
FilterAction[] actions,
Costs realcosts) {
log.debug("realCosts() - delegate to Subcomponent");
costCal.realCosts(id, actions, realcosts);
}
/*
* (non-Javadoc)
*
* @see multimonster.systemadministration.SystemAdministrationFacade#getFormat(multimonster.common.FormatId)
*/
/**
* @ejb.interface-method view-type = "remote"
*/
public Format getFormat(FormatId fId) {
return moManager.getFormat(fId);
}
/**
* @ejb.interface-method view-type = "remote"
*/
public PlugInIdentifier getConverterPlugInId(Format input, Format output) {
String in_codec = input.getCodec().toString();
String in_struc = input.getStructure().toString();
String out_format = output.getFormatId().getId();
PlugInIdentifier pluginID = null;
QueryManager qmngr = new QueryManager();
int connNr = qmngr.reserveConnection();
String query = "select p.classname "
+ "from plugin_converter pc, plugin p "
+ "where p.pluginID = pc.pluginID"
+ " and pc.from_codec = '" + in_codec + "'"
+ " and pc.from_structure = '" + in_struc + "'"
+ " and pc.to_format = '" + out_format + "';";
ResultSet result = qmngr.dbOpExec(query, connNr);
log.debug("Statement for getConverterPlugInId: " + query);
if (result != null) {
try {
if (result.next()) {
String classname = result.getString("classname");
log.debug("Klassenname f�r Konverter-Plugin: " + classname);
pluginID = new PlugInIdentifier(classname);
}
result.close();
} catch (SQLException e) {
log.error("Fehler beim Auslesen des resultset in getConverterPlugInId!");
}
}
qmngr.bringBackConn(connNr);
return pluginID;
}
/**
* @ejb.interface-method view-type = "remote"
*/
public PlugInIdentifier getProxyPlugInId(ProtocolId protID, boolean isInput) {
String protocolID = protID.getId();
String iIsInput = "";
if (isInput) {
iIsInput = "1";
} else {
iIsInput = "0";
}
PlugInIdentifier pluginID = null;
QueryManager qmngr = new QueryManager();
int connNr = qmngr.reserveConnection();
String query = "select p.classname "
+ "from plugin_proxy pp, plugin p "
+ "where p.pluginID = pp.pluginID"
+ " and pp.protocolID = '" + protocolID + "'"
+ " and pp.isInput = '" + iIsInput + "';";
ResultSet result = qmngr.dbOpExec(query, connNr);
log.debug("Statement for getProxyPlugInId: " + query);
if (result != null) {
try {
if (result.next()) {
String classname = result.getString("classname");
log.debug("Klassenname f�r Proxy-Plugin: " + classname);
pluginID = new PlugInIdentifier(classname);
}
result.close();
} catch (SQLException e) {
log.error("Fehler beim Auslesen des resultset in getProxyPlugInId!");
}
}
qmngr.bringBackConn(connNr);
return pluginID;
}
/**
* @ejb.interface-method view-type = "remote"
*/
public PlugInIdentifier getTransporterPlugInId(ProtocolId protID, boolean isInput) {
String protocolID = protID.getId();
String iIsInput = "";
if (isInput) {
iIsInput = "1";
} else {
iIsInput = "0";
}
PlugInIdentifier pluginID = null;
QueryManager qmngr = new QueryManager();
int connNr = qmngr.reserveConnection();
String query = "select p.classname "
+ "from plugin_transporter pt, plugin p "
+ "where p.pluginID = pt.pluginID"
+ " and pt.protocolID = '" + protocolID + "'"
+ " and pt.isInput = '" + iIsInput + "';";
ResultSet result = qmngr.dbOpExec(query, connNr);
log.debug("Statement for getTransporterPlugInId: " + query);
if (result != null) {
try {
if (result.next()) {
String classname = result.getString("classname");
log.debug("Klassenname f�r Proxy-Plugin: " + classname);
pluginID = new PlugInIdentifier(classname);
}
result.close();
} catch (SQLException e) {
log.error("Fehler beim Auslesen des resultset in getTransporterPlugInId!");
}
}
qmngr.bringBackConn(connNr);
return pluginID;
}
/* (non-Javadoc)
* @see multimonster.systemadministration.SystemAdministrationFacade#getFilterOptions(multimonster.common.UserIdentifier, multimonster.common.media.MOIdentifier)
*/
public FilterDetail[] getFilterOptions(UserIdentifier uId, MOIdentifier mOId) {
return new FilterDetail[0];
}
}