01: package com.calipso.reportgenerator.common;
02:
03: import com.calipso.reportgenerator.common.ReportGeneratorConfiguration;
04: import com.calipso.reportgenerator.common.IReportManager;
05:
06: import javax.naming.Context;
07: import java.util.Hashtable;
08:
09: /**
10: * Clase abstracta que implementa IReportManager. Se crea a partir
11: * de una instancia de ReportManagerConfiguration.
12: */
13: public abstract class RemoteReportManager implements IReportManager {
14: private ReportGeneratorConfiguration reportGeneratorConfiguration;
15: protected String distributedHost;
16:
17: public RemoteReportManager(
18: ReportGeneratorConfiguration reportGeneratorConfiguration,
19: String distributedHost) {
20: this .reportGeneratorConfiguration = reportGeneratorConfiguration;
21: this .distributedHost = distributedHost;
22: }
23:
24: /**
25: * Crea un RemoteReportManagerStateful o RemoteReportManagerStateless dependiendo
26: * de la configuracion establecida en la instancia reportGeneratorConfiguration
27: * @param reportGeneratorConfiguration
28: * @param isStateFul determina trata de un EJB Stateful o Stateless
29: * @return los metodos que encapsulan aquellos del Bean correspondiente, y cuya invocacion
30: * permite la ejecucion de los mismos en el ReportManager
31: */
32: public static IReportManager newRemoteReportManager(
33: ReportGeneratorConfiguration reportGeneratorConfiguration,
34: boolean isStateFul, String distributedHost) {
35: if (isStateFul) {
36: return new RemoteReportManagerStateFul(
37: reportGeneratorConfiguration, distributedHost);
38: } else {
39: return new RemoteReportManagerStateLess(
40: reportGeneratorConfiguration, distributedHost);
41: }
42: }
43:
44: protected Hashtable getEnviroment() {
45: Hashtable env = new Hashtable();
46: env.put(Context.INITIAL_CONTEXT_FACTORY,
47: getReportGeneratorConfiguration()
48: .getINITIAL_CONTEXT_FACTORY());
49: env.put(Context.PROVIDER_URL, getHostName());
50: env.put("java.naming.factory.url.pkgs",
51: getReportGeneratorConfiguration()
52: .getJavaNamingFactoryUrlPkgs());
53: return env;
54: }
55:
56: /**
57: * Obtiene el host (nombre:puerto) de la máquina contra la cual
58: * se invocara el metodo determinado
59: * @return String que representa el host
60: */
61: protected String getHostName() {
62: String hostName = "";
63: if (distributedHost != null && !distributedHost.equals("")) {
64: hostName = distributedHost;
65: } else {
66: hostName = getReportGeneratorConfiguration()
67: .getDistributedHost();
68: }
69: if (getReportGeneratorConfiguration().getDistributedPort() != "") {
70: hostName = hostName
71: + ":"
72: + getReportGeneratorConfiguration()
73: .getDistributedPort();
74: }
75: return hostName;
76: }
77:
78: /**
79: * Obtiene un ReportManagerConfiguration
80: * @return el ReportManagerConfiguration determinado de la instancia
81: */
82: public ReportGeneratorConfiguration getReportGeneratorConfiguration() {
83: return reportGeneratorConfiguration;
84: }
85:
86: }
|