00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 package org.objectweb.cjdbc.console.wizard;
00026
00027 import java.util.ArrayList;
00028 import java.util.Enumeration;
00029 import java.util.Hashtable;
00030 import java.util.Iterator;
00031 import java.util.List;
00032
00033 import javax.swing.JComboBox;
00034 import javax.swing.JTabbedPane;
00035
00036 import org.dom4j.Document;
00037 import org.dom4j.DocumentFactory;
00038 import org.dom4j.DocumentType;
00039 import org.dom4j.Element;
00040 import org.dom4j.Node;
00041 import org.objectweb.cjdbc.common.i18n.WizardTranslate;
00042 import org.objectweb.cjdbc.common.xml.DatabasesXmlTags;
00043 import org.objectweb.cjdbc.console.wizard.listeners.WizardListener;
00044 import org.objectweb.cjdbc.console.wizard.objects.Backend;
00045 import org.objectweb.cjdbc.console.wizard.objects.ConnectionInfo;
00046 import org.objectweb.cjdbc.console.wizard.objects.ConnectionTypeInfo;
00047 import org.objectweb.cjdbc.console.wizard.objects.User;
00048 import org.objectweb.cjdbc.console.wizard.tab.AuthenticationTab;
00049 import org.objectweb.cjdbc.console.wizard.tab.BackendTab;
00050 import org.objectweb.cjdbc.console.wizard.tab.CachingTab;
00051 import org.objectweb.cjdbc.console.wizard.tab.DistributionTab;
00052 import org.objectweb.cjdbc.console.wizard.tab.RecoveryTab;
00053 import org.objectweb.cjdbc.console.wizard.tab.RequestManagerTab;
00054 import org.objectweb.cjdbc.console.wizard.tab.VirtualDatabaseTab;
00055
00056
00057
00058
00059
00060
00061
00062
00063 public class WizardTabs extends JTabbedPane implements WizardListener
00064 {
00065
00066 private VirtualDatabaseTab virtualDatabaseTab;
00067 private DistributionTab distributionTab;
00068 private AuthenticationTab authenticationTab;
00069 private BackendTab backendsTab;
00070 private RequestManagerTab requestManagerTab;
00071 private ArrayList tabs;
00072 private CachingTab cachingTab;
00073 private RecoveryTab recoveryTab;
00074
00075 public WizardTabs()
00076 {
00077 this.setVisible(true);
00078 tabs = new ArrayList();
00079
00080 virtualDatabaseTab = (VirtualDatabaseTab) this
00081 .addTab(new VirtualDatabaseTab(this));
00082 authenticationTab = (AuthenticationTab) this.addTab(new AuthenticationTab(
00083 this));
00084 backendsTab = (BackendTab) this.addTab(new BackendTab(this));
00085 requestManagerTab = (RequestManagerTab) this.addTab(new RequestManagerTab(
00086 this));
00087
00088 distributionTab = new DistributionTab(this);
00089 cachingTab = new CachingTab(this);
00090 recoveryTab = new RecoveryTab(this);
00091 tabs.add(distributionTab);
00092 }
00093
00094 public WizardTab addTab(WizardTab tab)
00095 {
00096 this.addTab(tab.getName(), tab);
00097 tabs.add(tab);
00098 return tab;
00099 }
00100
00101 public void setTabEnabled(String tab, boolean enabled)
00102 {
00103 String translatedTab = WizardTranslate.get(tab);
00104 int index = 0;
00105 WizardTab componentTab;
00106 if (tab.equalsIgnoreCase(WizardConstants.TAB_DISTRIBUTION))
00107 {
00108 index = 1;
00109 componentTab = distributionTab;
00110 }
00111 else if (tab.equalsIgnoreCase(WizardConstants.TAB_CACHING))
00112 {
00113 index = this.getTabCount();
00114 componentTab = cachingTab;
00115 }
00116 else if (tab.equalsIgnoreCase(WizardConstants.TAB_RECOVERY))
00117 {
00118 index = this.getTabCount();
00119 componentTab = recoveryTab;
00120 }
00121 else
00122 return;
00123
00124 if (enabled)
00125 this.insertTab(translatedTab, null, componentTab, translatedTab, index);
00126 else
00127 this.remove(componentTab);
00128 }
00129
00130 public ArrayList getUsers()
00131 {
00132 return ((AuthenticationTab) authenticationTab).getUsers();
00133 }
00134
00135 public ArrayList getBackends()
00136 {
00137 return ((BackendTab) backendsTab).getBackends();
00138 }
00139
00140 public boolean isDistributedDatabase()
00141 {
00142 return ((VirtualDatabaseTab) virtualDatabaseTab).isDistributedDB();
00143 }
00144
00145
00146
00147
00148 public void backendListChanged()
00149 {
00150 for (int i = 0; i < tabs.size(); i++)
00151 ((WizardListener) tabs.get(i)).backendListChanged();
00152 }
00153
00154
00155
00156
00157 public void distributionChanged()
00158 {
00159 setTabEnabled(WizardConstants.TAB_DISTRIBUTION, isDistributedDatabase());
00160
00161 for (int i = 0; i < tabs.size(); i++)
00162 ((WizardListener) tabs.get(i)).distributionChanged();
00163 }
00164
00165
00166
00167
00168 public void usersChanged()
00169 {
00170 for (int i = 0; i < tabs.size(); i++)
00171 ((WizardListener) tabs.get(i)).usersChanged();
00172 }
00173
00174
00175
00176
00177
00178
00179
00180
00181 public void importDocumentFromXml(Document doc)
00182 {
00183
00184
00185
00186 Element root = doc.getRootElement();
00187 Node virtualDabase = doc.selectSingleNode("//" + DatabasesXmlTags.ELT_CJDBC
00188 + "/" + DatabasesXmlTags.ELT_VirtualDatabase);
00189 virtualDatabaseTab.vdbName.setText(virtualDabase.valueOf("@"
00190 + DatabasesXmlTags.ATT_name));
00191 virtualDatabaseTab.maxNbOfConnections.setValue(Integer
00192 .parseInt(virtualDabase.valueOf("@"
00193 + DatabasesXmlTags.ATT_maxNbOfConnections)));
00194
00195 String pool = virtualDabase.valueOf("@" + DatabasesXmlTags.ATT_poolThreads);
00196 if (!Boolean.valueOf(pool).booleanValue())
00197 virtualDatabaseTab.pool.doClick();
00198 virtualDatabaseTab.minNbOfThreads.setValue(Integer.parseInt(virtualDabase
00199 .valueOf("@" + DatabasesXmlTags.ATT_minNbOfThreads)));
00200 virtualDatabaseTab.maxNbOfThreads.setValue(Integer.parseInt(virtualDabase
00201 .valueOf("@" + DatabasesXmlTags.ATT_maxNbOfThreads)));
00202 virtualDatabaseTab.maxThreadIdleTime.setValue(Integer
00203 .parseInt(virtualDabase.valueOf("@"
00204 + DatabasesXmlTags.ATT_maxThreadIdleTime)));
00205 virtualDatabaseTab.sqlDumpLength.setValue(Integer.parseInt(virtualDabase
00206 .valueOf("@" + DatabasesXmlTags.ATT_sqlDumpLength)));
00207 virtualDatabaseTab.blob.setSelectedItem((virtualDabase.valueOf("@"
00208 + DatabasesXmlTags.ATT_blobEncodingMethod)));
00209
00210
00211
00212
00213 Node distribution = virtualDabase
00214 .selectSingleNode(DatabasesXmlTags.ELT_Distribution);
00215 if (distribution != null)
00216 {
00217 virtualDatabaseTab.distributed.doClick();
00218 distributionTab.groupName.setText(distribution.valueOf("@"
00219 + DatabasesXmlTags.ATT_groupName));
00220 distributionTab.macroClock.setSelectedItem(distribution.valueOf("@"
00221 + DatabasesXmlTags.ATT_macroClock));
00222 distributionTab.castTimeout.setValue(Integer.parseInt(distribution
00223 .valueOf("@" + DatabasesXmlTags.ATT_castTimeout)));
00224 }
00225
00226
00227
00228
00229 Node authentication = virtualDabase
00230 .selectSingleNode(DatabasesXmlTags.ELT_AuthenticationManager);
00231 Node userNode;
00232 User user;
00233 Iterator iter;
00234
00235 List admins = authentication.selectNodes(DatabasesXmlTags.ELT_Admin + "/"
00236 + DatabasesXmlTags.ELT_User);
00237 iter = admins.iterator();
00238 while (iter.hasNext())
00239 {
00240 userNode = (Node) iter.next();
00241 user = new User();
00242 user.setUsername(userNode.valueOf("@" + DatabasesXmlTags.ATT_username));
00243 user.setPassword(userNode.valueOf("@" + DatabasesXmlTags.ATT_password));
00244 authenticationTab.admin.getUsersCombo().addItem(user);
00245 }
00246
00247 List users = authentication.selectNodes(DatabasesXmlTags.ELT_VirtualUsers
00248 + "/" + DatabasesXmlTags.ELT_VirtualLogin);
00249 iter = users.iterator();
00250 while (iter.hasNext())
00251 {
00252 userNode = (Node) iter.next();
00253 user = new User();
00254 user.setUsername(userNode.valueOf("@" + DatabasesXmlTags.ATT_vLogin));
00255 user.setPassword(userNode.valueOf("@" + DatabasesXmlTags.ATT_vPassword));
00256 authenticationTab.users.getUsersCombo().addItem(user);
00257 }
00258 this.usersChanged();
00259
00260
00261
00262
00263 List backends = virtualDabase
00264 .selectNodes(DatabasesXmlTags.ELT_DatabaseBackend);
00265 iter = backends.iterator();
00266 JComboBox backendsCombo = backendsTab.backendsCombo;
00267 Node backendNode;
00268 Node schemaNode;
00269 while (iter.hasNext())
00270 {
00271 backendNode = (Node) iter.next();
00272 schemaNode = backendNode
00273 .selectSingleNode(DatabasesXmlTags.ELT_DatabaseSchema);
00274 Backend backend = new Backend();
00275 backend.setName(backendNode.valueOf("@" + DatabasesXmlTags.ATT_name));
00276 backend.setDriver(backendNode.valueOf("@" + DatabasesXmlTags.ATT_driver));
00277 backend.setDriverPath(backendNode.valueOf("@"
00278 + DatabasesXmlTags.ATT_driverPath));
00279 backend.setUrl(backendNode.valueOf("@" + DatabasesXmlTags.ATT_url));
00280 backend.setConnectionTestStatement(backendNode.valueOf("@"
00281 + DatabasesXmlTags.ATT_connectionTestStatement));
00282 if (schemaNode != null)
00283 {
00284 backend.setGatherSystemTables(schemaNode.valueOf("@"
00285 + DatabasesXmlTags.ATT_gatherSystemTables));
00286 backend.setDynamicPrecision(schemaNode.valueOf("@"
00287 + DatabasesXmlTags.ATT_dynamicPrecision));
00288 }
00289
00290
00291
00292 Hashtable managers = new Hashtable();
00293 backend.setConnectionManagers(managers);
00294 List connectionManagers = backendNode
00295 .selectNodes(DatabasesXmlTags.ELT_ConnectionManager);
00296 Iterator iterator = connectionManagers.iterator();
00297 while (iterator.hasNext())
00298 {
00299 Node connect = (Node) iterator.next();
00300 User user2 = getUser(connect.valueOf("@" + DatabasesXmlTags.ATT_vLogin));
00301 if (user2 != null)
00302 {
00303 ConnectionInfo info = new ConnectionInfo();
00304 info.setRLogin(connect.valueOf("@" + DatabasesXmlTags.ATT_rLogin));
00305 info.setRPassword(connect.valueOf("@"
00306 + DatabasesXmlTags.ATT_rPassword));
00307 info.setUrlParameters(connect.valueOf("@"
00308 + DatabasesXmlTags.ATT_urlParameters));
00309 ConnectionTypeInfo cti = new ConnectionTypeInfo();
00310 ArrayList values = new ArrayList();
00311
00312 Node simple = connect
00313 .selectSingleNode(DatabasesXmlTags.ELT_SimpleConnectionManager);
00314 if (simple != null)
00315 {
00316 cti.setType(WizardConstants.CONNECTION_MANAGERS[0]);
00317 }
00318 Node failfast = connect
00319 .selectSingleNode(DatabasesXmlTags.ELT_FailFastPoolConnectionManager);
00320 if (failfast != null)
00321 {
00322 cti.setType(WizardConstants.CONNECTION_MANAGERS[1]);
00323 values.add(failfast.valueOf("@" + DatabasesXmlTags.ATT_poolSize));
00324 }
00325 Node random = connect
00326 .selectSingleNode(DatabasesXmlTags.ELT_RandomWaitPoolConnectionManager);
00327 if (random != null)
00328 {
00329 cti.setType(WizardConstants.CONNECTION_MANAGERS[2]);
00330 values.add(random.valueOf("@" + DatabasesXmlTags.ATT_poolSize));
00331 values.add(random.valueOf("@" + DatabasesXmlTags.ATT_timeout));
00332 }
00333 Node variable = connect
00334 .selectSingleNode(DatabasesXmlTags.ELT_VariablePoolConnectionManager);
00335 if (variable != null)
00336 {
00337 cti.setType(WizardConstants.CONNECTION_MANAGERS[3]);
00338 values.add(variable
00339 .valueOf("@" + DatabasesXmlTags.ATT_initPoolSize));
00340 values
00341 .add(variable.valueOf("@" + DatabasesXmlTags.ATT_minPoolSize));
00342 values
00343 .add(variable.valueOf("@" + DatabasesXmlTags.ATT_maxPoolSize));
00344 values
00345 .add(variable.valueOf("@" + DatabasesXmlTags.ATT_idleTimeout));
00346 values
00347 .add(variable.valueOf("@" + DatabasesXmlTags.ATT_waitTimeout));
00348 }
00349
00350 cti.setValues(values);
00351 info.setConnectionTypeInfo(cti);
00352 managers.put(user2, info);
00353 }
00354 }
00355 backendsCombo.addItem(backend);
00356 }
00357 backendsCombo.setSelectedIndex(0);
00358
00359
00360
00361
00362 Node requestManager = virtualDabase
00363 .selectSingleNode(DatabasesXmlTags.ELT_RequestManager);
00364
00365 if (requestManager.valueOf("@" + DatabasesXmlTags.ATT_caseSensitiveParsing)
00366 .equals("true"))
00367 requestManagerTab.caseSensitiveParsing.doClick();
00368 requestManagerTab.beginTimeout.setValue(Integer.parseInt(requestManager
00369 .valueOf("@" + DatabasesXmlTags.ATT_beginTimeout)));
00370 requestManagerTab.commitTimeout.setValue(Integer.parseInt(requestManager
00371 .valueOf("@" + DatabasesXmlTags.ATT_commitTimeout)));
00372 requestManagerTab.rollbackTimeout.setValue(Integer.parseInt(requestManager
00373 .valueOf("@" + DatabasesXmlTags.ATT_rollbackTimeout)));
00374
00375
00376
00377
00378 Element scheduler = (Element) requestManager
00379 .selectSingleNode(DatabasesXmlTags.ELT_RequestScheduler);
00380 Element schedulerElement = (Element) scheduler.elements().iterator().next();
00381 requestManagerTab.scheduler.setSelectedItem(schedulerElement.getName());
00382 requestManagerTab.schedulerLevel.setSelectedItem(schedulerElement
00383 .valueOf("@" + DatabasesXmlTags.ATT_level));
00384
00385
00386
00387
00388 Element loadbalancer = (Element) requestManager
00389 .selectSingleNode(DatabasesXmlTags.ELT_LoadBalancer);
00390 Element loadElement = (Element) loadbalancer.elements().iterator().next();
00391 String raidbLoad = loadElement.getName();
00392 if (raidbLoad.startsWith(DatabasesXmlTags.ELT_RAIDb_1)
00393 || raidbLoad.startsWith(DatabasesXmlTags.ELT_RAIDb_2))
00394 {
00395 Element wait = (Element) loadElement
00396 .selectSingleNode(DatabasesXmlTags.ELT_WaitForCompletion);
00397 if (wait != null)
00398 requestManagerTab.wait4completion.setSelectedItem(wait.valueOf("@"
00399 + DatabasesXmlTags.ATT_policy));
00400
00401 Iterator raidb = loadElement.elements().iterator();
00402 while (raidb.hasNext())
00403 {
00404 Element raid = (Element) raidb.next();
00405 String name = raid.getName();
00406 if (name.startsWith(DatabasesXmlTags.ELT_RAIDb_1)
00407 || name.startsWith(DatabasesXmlTags.ELT_RAIDb_2))
00408 {
00409 requestManagerTab.loadbalancer.setSelectedItem(name);
00410 }
00411 }
00412 }
00413 else
00414 requestManagerTab.loadbalancer.setSelectedItem(loadElement.getName());
00415
00416
00417
00418
00419 Element cache = (Element) requestManager
00420 .selectSingleNode(DatabasesXmlTags.ELT_RequestCache);
00421 if (cache != null)
00422 {
00423 requestManagerTab.usecaching.doClick();
00424
00425 List cacheElements = cache.elements();
00426 iter = cacheElements.iterator();
00427 while (iter.hasNext())
00428 {
00429 Element celem = (Element) iter.next();
00430 if (celem.getName()
00431 .equalsIgnoreCase(DatabasesXmlTags.ELT_MetadataCache))
00432 {
00433 cachingTab.metadataenable.doClick();
00434 cachingTab.maxNbOfMetadata.setValue(Integer.parseInt(celem
00435 .valueOf("@" + DatabasesXmlTags.ATT_maxNbOfMetadata)));
00436 cachingTab.maxNbOfField.setValue(Integer.parseInt(celem.valueOf("@"
00437 + DatabasesXmlTags.ATT_maxNbOfField)));
00438 }
00439 else if (celem.getName().equalsIgnoreCase(
00440 DatabasesXmlTags.ELT_ParsingCache))
00441 {
00442 cachingTab.parsingenable.doClick();
00443 boolean background = Boolean.valueOf(
00444 celem.valueOf("@" + DatabasesXmlTags.ATT_backgroundParsing))
00445 .booleanValue();
00446 if (background)
00447 cachingTab.backgroundParsing.doClick();
00448 cachingTab.maxNbOfEntries.setValue(Integer.parseInt(celem.valueOf("@"
00449 + DatabasesXmlTags.ATT_maxNbOfEntries)));
00450 }
00451 else if (celem.getName().equalsIgnoreCase(
00452 DatabasesXmlTags.ELT_ResultCache))
00453 {
00454 cachingTab.resultenable.doClick();
00455 cachingTab.granularity.setSelectedItem(celem.valueOf("@"
00456 + DatabasesXmlTags.ATT_granularity));
00457 cachingTab.resultMaxNbOfEntries.setValue(Integer.parseInt(celem
00458 .valueOf("@" + DatabasesXmlTags.ATT_maxNbOfEntries)));
00459 cachingTab.pendingTimeout.setValue(Integer.parseInt(celem.valueOf("@"
00460 + DatabasesXmlTags.ATT_pendingTimeout)));
00461 }
00462 }
00463 }
00464
00465
00466
00467
00468 Node recovery = requestManager
00469 .selectSingleNode(DatabasesXmlTags.ELT_RecoveryLog);
00470 if (recovery != null)
00471 {
00472 Node jdbcRecovery = recovery
00473 .selectSingleNode(DatabasesXmlTags.ELT_JDBCRecoveryLog);
00474 requestManagerTab.userecoverylog.doClick();
00475 recoveryTab.driver.setText(jdbcRecovery.valueOf("@"
00476 + DatabasesXmlTags.ATT_driver));
00477 recoveryTab.driverPath.setText(jdbcRecovery.valueOf("@"
00478 + DatabasesXmlTags.ATT_driverPath));
00479 recoveryTab.url.setText(jdbcRecovery.valueOf("@"
00480 + DatabasesXmlTags.ATT_url));
00481 recoveryTab.login.setText(jdbcRecovery.valueOf("@"
00482 + DatabasesXmlTags.ATT_login));
00483 recoveryTab.password.setText(jdbcRecovery.valueOf("@"
00484 + DatabasesXmlTags.ATT_password));
00485 recoveryTab.requestTimeout.setValue(Integer.parseInt(jdbcRecovery
00486 .valueOf("@" + DatabasesXmlTags.ATT_requestTimeout)));
00487 }
00488
00489 this.validate();
00490 this.repaint();
00491 }
00492
00493 private User getUser(String userName)
00494 {
00495 JComboBox box = authenticationTab.users.getUsersCombo();
00496 int count = box.getItemCount();
00497 for (int i = 0; i < count; i++)
00498 {
00499 User user = (User) box.getItemAt(i);
00500 if (user.getUsername().equals(userName))
00501 return user;
00502 }
00503 return null;
00504 }
00505
00506
00507
00508
00509
00510
00511
00512 public Document exportDocumentToXml()
00513 {
00514
00515
00516
00517
00518
00519
00520
00521 DocumentType doctype = DocumentFactory.getInstance().createDocType(
00522 DatabasesXmlTags.ELT_CJDBC, "-//ObjectWeb//DTD C-JDBC 1.1//EN",
00523 "http://c-jdbc.objectweb.org/dtds/c-jdbc-1.1.dtd");
00524 Document document = DocumentFactory.getInstance().createDocument();
00525 document.setDocType(doctype);
00526 Element root = document.addElement(DatabasesXmlTags.ELT_CJDBC);
00527
00528
00529
00530
00531
00532 Element virtualDatabase = root
00533 .addElement(DatabasesXmlTags.ELT_VirtualDatabase);
00534 virtualDatabase.addAttribute(DatabasesXmlTags.ATT_name,
00535 virtualDatabaseTab.vdbName.getText());
00536 virtualDatabase.addAttribute(DatabasesXmlTags.ATT_maxNbOfConnections, ""
00537 + virtualDatabaseTab.maxNbOfConnections.getValue());
00538 virtualDatabase.addAttribute(DatabasesXmlTags.ATT_poolThreads, ""
00539 + (virtualDatabaseTab.pool.getSelectedObjects() != null));
00540 virtualDatabase.addAttribute(DatabasesXmlTags.ATT_minNbOfThreads, ""
00541 + virtualDatabaseTab.minNbOfThreads.getValue());
00542 virtualDatabase.addAttribute(DatabasesXmlTags.ATT_maxNbOfThreads, ""
00543 + virtualDatabaseTab.maxNbOfThreads.getValue());
00544 virtualDatabase.addAttribute(DatabasesXmlTags.ATT_maxThreadIdleTime, ""
00545 + virtualDatabaseTab.maxThreadIdleTime.getValue());
00546 virtualDatabase.addAttribute(DatabasesXmlTags.ATT_sqlDumpLength, ""
00547 + virtualDatabaseTab.sqlDumpLength.getValue());
00548 virtualDatabase.addAttribute(DatabasesXmlTags.ATT_blobEncodingMethod, ""
00549 + virtualDatabaseTab.blob.getSelectedItem());
00550
00551
00552
00553
00554 if (isDistributedDatabase())
00555 {
00556 Element Distribution = virtualDatabase
00557 .addElement(DatabasesXmlTags.ELT_Distribution);
00558 Distribution.addAttribute(DatabasesXmlTags.ATT_groupName,
00559 distributionTab.groupName.getText());
00560 Distribution.addAttribute(DatabasesXmlTags.ATT_macroClock,
00561 distributionTab.macroClock.getSelectedItem().toString());
00562 Distribution.addAttribute(DatabasesXmlTags.ATT_castTimeout, ""
00563 + distributionTab.castTimeout.getValue());
00564 }
00565
00566
00567
00568
00569 Element authentication = virtualDatabase
00570 .addElement(DatabasesXmlTags.ELT_AuthenticationManager);
00571 Element admin = authentication.addElement(DatabasesXmlTags.ELT_Admin);
00572 JComboBox adminBox = authenticationTab.admin.getUsersCombo();
00573 int count = adminBox.getItemCount();
00574 for (int i = 0; i < count; i++)
00575 {
00576 User user = (User) adminBox.getItemAt(i);
00577 admin.addElement(DatabasesXmlTags.ELT_User).addAttribute(
00578 DatabasesXmlTags.ATT_username, user.getUsername()).addAttribute(
00579 DatabasesXmlTags.ATT_password, user.getPassword());
00580 }
00581
00582 Element users = authentication
00583 .addElement(DatabasesXmlTags.ELT_VirtualUsers);
00584 JComboBox virtualBox = authenticationTab.users.getUsersCombo();
00585 count = virtualBox.getItemCount();
00586 for (int i = 0; i < count; i++)
00587 {
00588 User user = (User) virtualBox.getItemAt(i);
00589 users.addElement(DatabasesXmlTags.ELT_VirtualLogin).addAttribute(
00590 DatabasesXmlTags.ATT_vLogin, user.getUsername()).addAttribute(
00591 DatabasesXmlTags.ATT_vPassword, user.getPassword());
00592 }
00593
00594
00595
00596
00597 JComboBox backends = backendsTab.backendsCombo;
00598 int backcount = backends.getItemCount();
00599 for (int i = 0; i < backcount; i++)
00600 {
00601 Backend backend = (Backend) backends.getItemAt(i);
00602 Element backende = virtualDatabase
00603 .addElement(DatabasesXmlTags.ELT_DatabaseBackend);
00604 backende.addAttribute(DatabasesXmlTags.ATT_name, backend.getName());
00605 backende.addAttribute(DatabasesXmlTags.ATT_driver, backend.getDriver());
00606 backende.addAttribute(DatabasesXmlTags.ATT_driverPath, backend
00607 .getDriverPath());
00608 backende.addAttribute(DatabasesXmlTags.ATT_url, backend.getUrl());
00609 backende.addAttribute(DatabasesXmlTags.ATT_connectionTestStatement,
00610 backend.getConnectionTestStatement());
00611
00612 Element schema = backende.addElement(DatabasesXmlTags.ELT_DatabaseSchema);
00613 schema.addAttribute(DatabasesXmlTags.ATT_dynamicPrecision, backend
00614 .getDynamicPrecision());
00615 if (Boolean.valueOf(backend.getGatherSystemTables()).booleanValue())
00616 schema.addAttribute(DatabasesXmlTags.ATT_gatherSystemTables, backend
00617 .getGatherSystemTables());
00618
00619
00620
00621
00622 Hashtable managers = backend.getConnectionManagers();
00623 Enumeration keys = managers.keys();
00624 while (keys.hasMoreElements())
00625 {
00626 User user = (User) keys.nextElement();
00627 ConnectionInfo info = (ConnectionInfo) managers.get(user);
00628 Element connection = backende
00629 .addElement(DatabasesXmlTags.ELT_ConnectionManager);
00630 connection
00631 .addAttribute(DatabasesXmlTags.ATT_vLogin, user.getUsername());
00632 connection.addAttribute(DatabasesXmlTags.ATT_rLogin, info.getRLogin());
00633 connection.addAttribute(DatabasesXmlTags.ATT_rPassword, info
00634 .getRPassword());
00635 connection.addAttribute(DatabasesXmlTags.ATT_urlParameters, info
00636 .getUrlParameters());
00637 ConnectionTypeInfo cti = info.getConnectionTypeInfo();
00638
00639 String type = cti.getType();
00640 if (type == WizardConstants.CONNECTION_MANAGERS[0])
00641 connection.addElement(DatabasesXmlTags.ELT_SimpleConnectionManager);
00642 else if (type == WizardConstants.CONNECTION_MANAGERS[1])
00643 {
00644 Element manager = connection
00645 .addElement(DatabasesXmlTags.ELT_FailFastPoolConnectionManager);
00646 manager.addAttribute(DatabasesXmlTags.ATT_poolSize, ""
00647 + cti.getValue(0));
00648 }
00649 else if (type == WizardConstants.CONNECTION_MANAGERS[2])
00650 {
00651 Element manager = connection
00652 .addElement(DatabasesXmlTags.ELT_RandomWaitPoolConnectionManager);
00653 manager.addAttribute(DatabasesXmlTags.ATT_poolSize, ""
00654 + cti.getValue(0));
00655 manager.addAttribute(DatabasesXmlTags.ATT_timeout, ""
00656 + cti.getValue(1));
00657 }
00658 else if (type == WizardConstants.CONNECTION_MANAGERS[3])
00659 {
00660 Element manager = connection
00661 .addElement(DatabasesXmlTags.ELT_VariablePoolConnectionManager);
00662 manager.addAttribute(DatabasesXmlTags.ATT_initPoolSize, ""
00663 + cti.getValue(0));
00664 manager.addAttribute(DatabasesXmlTags.ATT_minPoolSize, ""
00665 + cti.getValue(1));
00666 manager.addAttribute(DatabasesXmlTags.ATT_maxPoolSize, ""
00667 + cti.getValue(2));
00668 manager.addAttribute(DatabasesXmlTags.ATT_idleTimeout, ""
00669 + cti.getValue(3));
00670 manager.addAttribute(DatabasesXmlTags.ATT_waitTimeout, ""
00671 + cti.getValue(4));
00672 }
00673 }
00674 }
00675
00676
00677
00678
00679 Element requestManager = virtualDatabase
00680 .addElement(DatabasesXmlTags.ELT_RequestManager);
00681
00682 requestManager.addAttribute(DatabasesXmlTags.ATT_caseSensitiveParsing,
00683 Boolean.toString(requestManagerTab.caseSensitiveParsing
00684 .getSelectedObjects() != null));
00685 requestManager.addAttribute(DatabasesXmlTags.ATT_beginTimeout,
00686 requestManagerTab.beginTimeout.getValue() + "");
00687 requestManager.addAttribute(DatabasesXmlTags.ATT_commitTimeout,
00688 requestManagerTab.commitTimeout.getValue() + "");
00689 requestManager.addAttribute(DatabasesXmlTags.ATT_rollbackTimeout,
00690 requestManagerTab.rollbackTimeout.getValue() + "");
00691
00692
00693
00694
00695 Element scheduler = requestManager
00696 .addElement(DatabasesXmlTags.ELT_RequestScheduler);
00697 int ischeduler = requestManagerTab.scheduler.getSelectedIndex();
00698 String level = (String) requestManagerTab.schedulerLevel.getSelectedItem();
00699 switch (ischeduler)
00700 {
00701 case 0 :
00702 scheduler.addElement(DatabasesXmlTags.ELT_SingleDBScheduler)
00703 .addAttribute(DatabasesXmlTags.ATT_level, level);
00704 break;
00705 case 1 :
00706 scheduler.addElement(DatabasesXmlTags.ELT_RAIDb0Scheduler)
00707 .addAttribute(DatabasesXmlTags.ATT_level, level);
00708 break;
00709 case 2 :
00710 scheduler.addElement(DatabasesXmlTags.ELT_RAIDb1Scheduler)
00711 .addAttribute(DatabasesXmlTags.ATT_level, level);
00712 break;
00713 case 3 :
00714 scheduler.addElement(DatabasesXmlTags.ELT_RAIDb2Scheduler)
00715 .addAttribute(DatabasesXmlTags.ATT_level, level);
00716 break;
00717 default :
00718 break;
00719 }
00720
00721
00722
00723
00724 if (requestManagerTab.usecaching.getSelectedObjects() != null)
00725 {
00726 Element cache = requestManager
00727 .addElement(DatabasesXmlTags.ELT_RequestCache);
00728 if (cachingTab.metadataenable.getSelectedObjects() != null)
00729 {
00730 Element metadata = cache.addElement(DatabasesXmlTags.ELT_MetadataCache);
00731 metadata.addAttribute(DatabasesXmlTags.ATT_maxNbOfMetadata, ""
00732 + cachingTab.maxNbOfMetadata.getValue());
00733 metadata.addAttribute(DatabasesXmlTags.ATT_maxNbOfField, ""
00734 + cachingTab.maxNbOfField.getValue());
00735 }
00736 if (cachingTab.parsingenable.getSelectedObjects() != null)
00737 {
00738 Element parsing = cache.addElement(DatabasesXmlTags.ELT_ParsingCache);
00739 parsing
00740 .addAttribute(DatabasesXmlTags.ATT_backgroundParsing,
00741 Boolean.toString(cachingTab.backgroundParsing
00742 .getSelectedObjects() != null));
00743 parsing.addAttribute(DatabasesXmlTags.ATT_maxNbOfEntries, ""
00744 + cachingTab.maxNbOfEntries.getValue());
00745 }
00746 if (cachingTab.resultenable.getSelectedObjects() != null)
00747 {
00748 Element result = cache.addElement(DatabasesXmlTags.ELT_ResultCache);
00749 result.addAttribute(DatabasesXmlTags.ATT_granularity, ""
00750 + cachingTab.granularity.getSelectedItem());
00751 result.addAttribute(DatabasesXmlTags.ATT_maxNbOfEntries, ""
00752 + cachingTab.resultMaxNbOfEntries.getValue());
00753 result.addAttribute(DatabasesXmlTags.ATT_pendingTimeout, ""
00754 + cachingTab.pendingTimeout.getValue());
00755 result.addComment(WizardTranslate.get("not.supported.caching.rules"));
00756 }
00757 }
00758
00759
00760
00761
00762 Element loadbalancer = requestManager
00763 .addElement(DatabasesXmlTags.ELT_LoadBalancer);
00764 String loadElement = (String) requestManagerTab.loadbalancer
00765 .getSelectedItem();
00766
00767 Element currentLoadbalancer = loadbalancer;
00768
00769 if (loadElement.startsWith(DatabasesXmlTags.ELT_RAIDb_0))
00770 currentLoadbalancer = loadbalancer
00771 .addElement(DatabasesXmlTags.ELT_RAIDb_0);
00772 if (loadElement.startsWith(DatabasesXmlTags.ELT_RAIDb_1))
00773 {
00774 currentLoadbalancer = loadbalancer
00775 .addElement(DatabasesXmlTags.ELT_RAIDb_1);
00776 currentLoadbalancer.addElement(DatabasesXmlTags.ELT_WaitForCompletion)
00777 .addAttribute(DatabasesXmlTags.ATT_policy,
00778 (String) requestManagerTab.wait4completion.getSelectedItem());
00779 }
00780 if (loadElement.startsWith(DatabasesXmlTags.ELT_RAIDb_2))
00781 {
00782 currentLoadbalancer = loadbalancer
00783 .addElement(DatabasesXmlTags.ELT_RAIDb_2);
00784 currentLoadbalancer.addElement(DatabasesXmlTags.ELT_WaitForCompletion)
00785 .addAttribute(DatabasesXmlTags.ATT_policy,
00786 (String) requestManagerTab.wait4completion.getSelectedItem());
00787 }
00788 if (loadElement.startsWith(DatabasesXmlTags.ELT_ParallelDB))
00789 currentLoadbalancer = loadbalancer
00790 .addElement(DatabasesXmlTags.ELT_ParallelDB);
00791
00792 currentLoadbalancer.addElement(loadElement);
00793 currentLoadbalancer.addComment(WizardTranslate
00794 .get("not.supported.macro.handling"));
00795 currentLoadbalancer.addComment(WizardTranslate
00796 .get("not.supported.create.policy"));
00797
00798
00799
00800
00801 if (requestManagerTab.userecoverylog.getSelectedObjects() != null)
00802 {
00803 Element recovery = requestManager
00804 .addElement(DatabasesXmlTags.ELT_RecoveryLog);
00805 Element jdbc = recovery.addElement(DatabasesXmlTags.ELT_JDBCRecoveryLog);
00806 jdbc.addAttribute(DatabasesXmlTags.ATT_driver, recoveryTab.driver
00807 .getText());
00808 jdbc.addAttribute(DatabasesXmlTags.ATT_driverPath, recoveryTab.driverPath
00809 .getText());
00810 jdbc.addAttribute(DatabasesXmlTags.ATT_url, recoveryTab.url.getText());
00811 jdbc
00812 .addAttribute(DatabasesXmlTags.ATT_login, recoveryTab.login.getText());
00813 jdbc.addAttribute(DatabasesXmlTags.ATT_password, recoveryTab.password
00814 .getText());
00815 jdbc.addAttribute(DatabasesXmlTags.ATT_requestTimeout, ""
00816 + recoveryTab.requestTimeout.getValue());
00817
00818 jdbc.addElement(DatabasesXmlTags.ELT_RecoveryLogTable);
00819 jdbc.addElement(DatabasesXmlTags.ELT_CheckpointTable);
00820 jdbc.addElement(DatabasesXmlTags.ELT_BackendTable);
00821 }
00822
00823 return document;
00824 }
00825 }