00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00019 package cast.configuration;
00020
00021 import java.util.ArrayList;
00022 import java.util.HashMap;
00023 import java.util.HashSet;
00024 import java.util.Map;
00025 import java.util.Set;
00026
00027 import cast.cdl.ComponentDescription;
00028 import cast.cdl.ComponentLanguage;
00029 import cast.cdl.SUBARCHIDKEY;
00030
00034 public class SubarchitectureConfiguration implements
00035 CASTConnectionConfiguration {
00036
00037 private ArrayList<ComponentDescription> m_unmanagedcomponents;
00038
00039 private ArrayList<ComponentDescription> m_managedcomponents;
00040
00041 private ComponentDescription m_taskManager;
00042
00043 private ComponentDescription m_workingMemory;
00044
00045 private String m_said;
00046
00047 private Map<String, String> m_subarchDefaults;
00048
00049 private String m_host;
00050
00051
00052 private final Set<String> m_hosts;
00053
00054
00055
00056 private String m_aJavaServer;
00057
00058 public String getAJavaServer() {
00059 return m_aJavaServer;
00060 }
00061
00067 public ArrayList<ComponentDescription> getDescriptions() {
00068 ArrayList<ComponentDescription> descr = new ArrayList<ComponentDescription>();
00069 descr.add(m_taskManager);
00070 descr.add(m_workingMemory);
00071 descr.addAll(m_unmanagedcomponents);
00072 descr.addAll(m_managedcomponents);
00073 return descr;
00074 }
00075
00079 public ComponentDescription getTaskManagerConfig() {
00080 return m_taskManager;
00081 }
00082
00086 public String getID() {
00087 return m_said;
00088 }
00089
00093 public SubarchitectureConfiguration(String _said) {
00094 this(_said, "no host");
00095 }
00096
00100 public SubarchitectureConfiguration(String _said, String _host) {
00101 m_said = _said;
00102 m_host = _host;
00103 m_managedcomponents = new ArrayList<ComponentDescription>(1);
00104 m_unmanagedcomponents = new ArrayList<ComponentDescription>(1);
00105
00106 m_subarchDefaults = new HashMap<String, String>();
00107 m_subarchDefaults.put(SUBARCHIDKEY.value, _said);
00108 m_hosts = new HashSet<String>();
00109 }
00110
00115 public void setWorkingMemory(String _workingMemoryClass,
00116 ComponentLanguage _lang, String _host) {
00117 setWorkingMemory(_workingMemoryClass, _lang, _host,
00118 new HashMap<String, String>());
00119 }
00120
00125 public void setWorkingMemory(String _workingMemoryClass,
00126 ComponentLanguage _lang, String _host, Map<String, String> _props) {
00127
00128 if (m_aJavaServer == null && _lang == ComponentLanguage.JAVA) {
00129 m_aJavaServer = _host;
00130 }
00131
00132 Map<String, String> props = new HashMap<String, String>(
00133 m_subarchDefaults);
00134 props.putAll(_props);
00135
00136 m_workingMemory = new ComponentDescription(m_said + "_wm",
00137 _workingMemoryClass, _lang, _host, props, false);
00138 if (m_aJavaServer == null && _lang == ComponentLanguage.JAVA) {
00139 m_aJavaServer = _host;
00140 }
00141
00142 addHost(_host);
00143
00144
00145 }
00146
00147 private void addHost(String _host) {
00148 m_hosts.add(_host);
00149 }
00150
00155 public void setTaskManager(String _taskManagerClass,
00156 ComponentLanguage _lang, String _host) {
00157 setTaskManager(_taskManagerClass, _lang, _host,
00158 new HashMap<String, String>());
00159 }
00160
00161 public void setTaskManager(String _taskManagerClass,
00162 ComponentLanguage _lang, String _host, Map<String, String> _props) {
00163
00164 if (m_aJavaServer == null && _lang == ComponentLanguage.JAVA) {
00165 m_aJavaServer = _host;
00166 }
00167
00168 Map<String, String> props = new HashMap<String, String>(
00169 m_subarchDefaults);
00170 props.putAll(_props);
00171
00172 m_taskManager = new ComponentDescription(m_said + "_tm",
00173 _taskManagerClass, _lang, _host, props, false);
00174
00175 addHost(_host);
00176
00177 }
00178
00182 public ArrayList<ComponentDescription> getUnmanagedComponents() {
00183 return m_unmanagedcomponents;
00184 }
00185
00189 public ArrayList<ComponentDescription> getManagedComponents() {
00190 return m_managedcomponents;
00191 }
00192
00193 public void addUnmanagedComponent(String _name, String _class,
00194 ComponentLanguage _lang, String _host) {
00195 addUnmanagedComponent(_name, _class, _lang, _host,
00196 new HashMap<String, String>());
00197 }
00198
00199 public void addUnmanagedComponent(String _name, String _class,
00200 ComponentLanguage _lang, String _host, Map<String, String> _props) {
00201
00202 if (m_aJavaServer == null && _lang == ComponentLanguage.JAVA) {
00203 m_aJavaServer = _host;
00204 }
00205
00206 Map<String, String> props = new HashMap<String, String>(
00207 m_subarchDefaults);
00208 props.putAll(_props);
00209
00210 m_unmanagedcomponents.add(new ComponentDescription(_name, _class,
00211 _lang, _host, props, false));
00212
00213 addHost(_host);
00214
00215 }
00216
00217 public void addManagedComponent(String _name, String _class,
00218 ComponentLanguage _lang, String _host) {
00219 addManagedComponent(_name, _class, _lang, _host,
00220 new HashMap<String, String>());
00221 }
00222
00223 public void addManagedComponent(String _name, String _class,
00224 ComponentLanguage _lang, String _host, Map<String, String> _props) {
00225
00226 if (m_aJavaServer == null && _lang == ComponentLanguage.JAVA) {
00227 m_aJavaServer = _host;
00228 }
00229
00230 Map<String, String> props = new HashMap<String, String>(
00231 m_subarchDefaults);
00232 props.putAll(_props);
00233
00234 m_managedcomponents.add(new ComponentDescription(_name, _class, _lang,
00235 _host, props, false));
00236 addHost(_host);
00237
00238 }
00239
00240 public ComponentDescription getWorkingMemoryConfig() {
00241 return m_workingMemory;
00242 }
00243
00244 public Set<String> getHosts() {
00245 return m_hosts;
00246 }
00247
00248
00249
00250
00251
00252
00253 @Override
00254 public String toString() {
00255 return "subarchitecture config: " + m_said;
00256 }
00257
00258 public String getHost() {
00259 return m_host;
00260 }
00261
00262 public void setHost(String _host) {
00263 m_host = _host;
00264 }
00265
00269 public String getName() {
00270 return m_said;
00271 }
00272
00273 private void addConfigurationInformation(Map<String, String> _props,
00274 ComponentDescription _desc) {
00275 _desc.configuration.putAll(_props);
00276 }
00277
00278 public void addConfigurationInformation(Map<String, String> _props) {
00279 addConfigurationInformation(_props, m_taskManager);
00280 addConfigurationInformation(_props, m_workingMemory);
00281 for (ComponentDescription desc : m_unmanagedcomponents) {
00282 addConfigurationInformation(_props, desc);
00283 }
00284 for (ComponentDescription desc : m_managedcomponents) {
00285 addConfigurationInformation(_props, desc);
00286 }
00287 }
00288
00289 }