001: package org.enhydra.shark.swingclient.workflowadmin.application;
002:
003: import java.awt.Component;
004: import java.util.HashMap;
005: import java.util.List;
006: import java.util.Map;
007: import java.util.Vector;
008:
009: import javax.swing.Action;
010: import javax.swing.JTable;
011: import javax.swing.table.TableColumn;
012:
013: import org.enhydra.shark.api.client.wfmc.wapi.WMSessionHandle;
014: import org.enhydra.shark.api.client.wfservice.WMEntity;
015: import org.enhydra.shark.api.internal.appmappersistence.ApplicationMap;
016: import org.enhydra.shark.client.utilities.SharkInterfaceWrapper;
017: import org.enhydra.shark.swingclient.ResourceManager;
018: import org.enhydra.shark.swingclient.SharkClient;
019: import org.enhydra.shark.swingclient.TablePanel;
020: import org.enhydra.shark.swingclient.Utils;
021: import org.enhydra.shark.swingclient.WorkflowUtilities;
022: import org.enhydra.shark.swingclient.workflowadmin.SharkAdmin;
023: import org.enhydra.shark.utilities.WMEntityUtilities;
024:
025: /**
026: * Implements the user interface and program logic to manage the application mappings.
027: *
028: * @author Sasa Bojanic
029: * @version 1.0
030: */
031: public class ApplicationMappingManagementImpl extends
032: ApplicationMappingManagement {
033:
034: private TablePanel existingMappingsPanel;
035:
036: private Map applicationKeyToApplication = new HashMap();
037:
038: public ApplicationMappingManagementImpl(SharkAdmin wa) {
039: super (wa);
040: super .init();
041: }
042:
043: protected void createActions() {
044: List actions = Utils
045: .getActions(
046: "ApplicationMappingManagementButtons",
047: "org.enhydra.shark.swingclient.workflowadmin.application.actions",
048: ApplicationMappingManagement.class, this );
049: defaultActions = new Action[actions.size()];
050: actions.toArray(defaultActions);
051: }
052:
053: protected Component createCenterComponent() {
054: Vector columnNames = new Vector();
055: columnNames.add(ResourceManager
056: .getLanguageDependentString("PackageIdKey"));
057: columnNames.add(ResourceManager
058: .getLanguageDependentString("ProcessDefinitionIdKey"));
059: columnNames.add(ResourceManager
060: .getLanguageDependentString("ApplicationIdKey"));
061: columnNames.add(ResourceManager
062: .getLanguageDependentString("ApplicationNameKey"));
063: columnNames.add("-->");
064: columnNames.add(ResourceManager
065: .getLanguageDependentString("ToolAgentNameKey"));
066: columnNames.add(ResourceManager
067: .getLanguageDependentString("UsernameKey"));
068: columnNames.add(ResourceManager
069: .getLanguageDependentString("PasswordKey"));
070: columnNames.add(ResourceManager
071: .getLanguageDependentString("ApplicationNameKey"));
072: columnNames.add(ResourceManager
073: .getLanguageDependentString("ApplicationModeKey"));
074: existingMappingsPanel = new TablePanel(columnNames, true);
075: JTable t = existingMappingsPanel.getTable();
076: TableColumn column = t.getColumnModel().getColumn(4);
077: column.setMaxWidth(30);
078: column.setMinWidth(30);
079: column.setPreferredWidth(30);
080: column.setResizable(false);
081:
082: return existingMappingsPanel;
083: }
084:
085: public void clear() {
086: applicationKeyToApplication.clear();
087: existingMappingsPanel.removeAll();
088: }
089:
090: public synchronized void refresh(boolean mandatoryRefreshing) {
091: if (!(mandatoryRefreshing || isShowing()))
092: return;
093: ApplicationMap[] allMappings = null;
094:
095: try {
096: allMappings = SharkInterfaceWrapper
097: .getApplicationMappingsAdmin()
098: .getAllApplicationMappings();
099: } catch (Exception ex) {
100: System.out
101: .println("Something went wrong during retrieval of mappings from engine");
102: return;
103: }
104:
105: existingMappingsPanel.removeAll();
106: applicationKeyToApplication.clear();
107:
108: // add applications to the map
109: createApplicationsMap();
110:
111: // add newly added mappings to the table
112: for (int i = 0; i < allMappings.length; i++) {
113: ApplicationMap am = allMappings[i];
114: try {
115: Vector v = new Vector();
116: v.add(am.getPackageId());
117: v.add(am.getProcessDefinitionId());
118: v.add(am.getApplicationDefinitionId());
119: WMEntity app = ((WMEntity) applicationKeyToApplication
120: .get(WorkflowUtilities
121: .createParticipantOrApplicationKey(am
122: .getPackageId(), am
123: .getProcessDefinitionId(), am
124: .getApplicationDefinitionId())));
125: if (app != null) {
126: v.add(app.getName());
127: } else {
128: v.add("");
129: }
130: v.add("");
131: v.add(am.getToolAgentClassName());
132: v.add(am.getUsername());
133: v.add(am.getPassword());
134: v.add(am.getApplicationName());
135: v.add(am.getApplicationMode());
136: existingMappingsPanel.addElement(v);
137: } catch (Exception ex) {
138: System.out.println("Incorrect vector size");
139: }
140: }
141: }
142:
143: private void createApplicationsMap() {
144: try {
145: WMSessionHandle shandle = SharkClient.getSessionHandle();
146: WMEntity[] as = WMEntityUtilities.getAllApplications(
147: shandle, SharkInterfaceWrapper.getShark()
148: .getXPDLBrowser());
149: for (int i = 0; i < as.length; i++) {
150: WMEntity a = as[i];
151: String appKey = WorkflowUtilities
152: .createParticipantOrApplicationKey(
153: a.getPkgId(), a.getWpId(), a.getId());
154: applicationKeyToApplication.put(appKey, a);
155: }
156: } catch (Exception ex) {
157:
158: }
159: }
160:
161: public Map getApplicationKeyToApplication() {
162: return applicationKeyToApplication;
163: }
164:
165: public TablePanel getExistingMappingsPanel() {
166: return existingMappingsPanel;
167: }
168:
169: }
|