/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.broadcast.server.plugin;
import net.codjo.agent.AclMessage;
import net.codjo.agent.Agent;
import net.codjo.broadcast.common.Broadcaster;
import net.codjo.broadcast.common.ConnectionProvider;
import net.codjo.broadcast.common.Context;
import net.codjo.broadcast.common.PreferencesManager;
import net.codjo.broadcast.server.BroadcasterHome;
import net.codjo.sql.server.JdbcServiceUtil;
import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Date;
/**
*
*/
class DefaultJobConfig implements JobConfig {
private final PreferencesManager preferencesManager;
private final AgentConnectionProvider connectionProvider;
private BroadcasterHome broadcasterHome;
DefaultJobConfig(PreferencesManager preferencesManager,
JdbcServiceUtil jdbcServiceUtil) {
this.preferencesManager = preferencesManager;
connectionProvider = new AgentConnectionProvider(jdbcServiceUtil);
}
public void init(Agent anAgent, AclMessage aMessage) {
connectionProvider.init(anAgent, aMessage);
}
public Broadcaster[] getBroadcastersFor(String fileName, Context context)
throws SQLException {
return getBroadcasterHome().getAllBroadcasterByFileName(fileName, context);
}
public Context buildContext(final String user, final String fileName,
final Date generationDate, final Date broadcastDate, final File outFolder) {
return preferencesManager.buildContext(user, fileName, generationDate,
broadcastDate, outFolder);
}
BroadcasterHome getBroadcasterHome() throws SQLException {
if (broadcasterHome == null) {
broadcasterHome = new BroadcasterHome(connectionProvider, preferencesManager);
}
return broadcasterHome;
}
private static class AgentConnectionProvider implements ConnectionProvider {
private final JdbcServiceUtil jdbcServiceUtil;
private Agent agent;
private AclMessage message;
AgentConnectionProvider(JdbcServiceUtil jdbcServiceUtil) {
this.jdbcServiceUtil = jdbcServiceUtil;
}
public void init(Agent anAgent, AclMessage aMessage) {
agent = anAgent;
message = aMessage;
}
public Connection getConnection() throws SQLException {
return jdbcServiceUtil.getConnectionPool(agent, message).getConnection();
}
public void releaseConnection(Connection con)
throws SQLException {
jdbcServiceUtil.getConnectionPool(agent, message).releaseConnection(con);
}
}
}