001: /**
002: * $Id: ProducerManagerBean.java,v 1.7 2005/09/21 15:30:01 fo160993 Exp $
003: * Copyright 2005 Sun Microsystems, Inc. All
004: * rights reserved. Use of this product is subject
005: * to license terms. Federal Acquisitions:
006: * Commercial Software -- Government Users
007: * Subject to Standard License Terms and
008: * Conditions.
009: *
010: * Sun, Sun Microsystems, the Sun logo, and Sun ONE
011: * are trademarks or registered trademarks of Sun Microsystems,
012: * Inc. in the United States and other countries.
013: */package com.sun.portal.admin.console.wsrp.producer;
014:
015: import java.util.ArrayList;
016: import java.util.Collections;
017: import java.util.HashMap;
018: import java.util.HashSet;
019: import java.util.Iterator;
020: import java.util.List;
021: import java.util.Map;
022: import java.util.Set;
023: import java.util.logging.Level;
024:
025: import javax.management.ObjectName;
026:
027: import com.sun.data.provider.FieldKey;
028: import com.sun.data.provider.RowKey;
029: import com.sun.data.provider.impl.ObjectListDataProvider;
030: import com.sun.portal.admin.common.AttrOptionConstants;
031: import com.sun.portal.admin.common.util.AdminUtil;
032: import com.sun.web.ui.component.TableRowGroup;
033: import com.sun.web.ui.event.TableSelectPhaseListener;
034: import com.sun.web.ui.model.Option;
035:
036: public class ProducerManagerBean extends ProducerBaseBean {
037: public static final FieldKey ID = new FieldKey("id");
038: private Option[] statusOptions = null;
039: private String status = null;
040: private TableSelectPhaseListener tspl = null;
041: private TableRowGroup tableRowGroup = null;
042: private ObjectListDataProvider producers = null;
043:
044: public ProducerManagerBean() {
045: tspl = new TableSelectPhaseListener();
046:
047: NewProducerBean newProducerBean = (NewProducerBean) getSessionAttribute("NewProducerBean");
048:
049: if (newProducerBean != null) {
050: newProducerBean.clearData();
051: }
052: }
053:
054: public boolean isGlobal() {
055: return GLOBAL_LOCATION_DN.equals(getCurrentDN());
056: }
057:
058: public boolean isOrg() {
059: return isOrgDN((String) getCurrentDN());
060: }
061:
062: public boolean isAlert() {
063: if (!isGlobal() && !isOrg()) {
064: showAlert();
065: setAlertType(ERROR);
066: setAlertSummary(rb.getString("home.invalidDN.summary"));
067: setAlertDetail(rb.getString("home.invalidDN.detail"));
068: }
069:
070: return super .isAlert();
071: }
072:
073: public String getPageHelpText() {
074: if (isGlobal()) {
075: return rb.getString("home.global.help");
076: } else if (isOrg()) {
077: return rb.getString("home.org.help");
078: } else {
079: return "";
080: }
081: }
082:
083: public Option[] getStatusOptions() {
084: if (statusOptions == null) {
085: statusOptions = new Option[] {
086: new Option(TRUE, rb
087: .getString("home.label.allDisabled")),
088: new Option(FALSE, rb
089: .getString("home.label.notAllDisabled")) };
090: }
091:
092: return statusOptions;
093: }
094:
095: public String getStatus() {
096: if (isGlobal()) {
097: Map optionsMap = new HashMap();
098: optionsMap
099: .put(AttrOptionConstants.OPT_COMPONENT, COMPONENT);
100:
101: optionsMap.put(AttrOptionConstants.OPT_ATTR_NAME,
102: ProducerAttributes.ALL_DISABLED);
103:
104: String[] signature = { Map.class.getName() };
105: Object[] params = { optionsMap };
106:
107: try {
108: ObjectName objectName = AdminUtil
109: .getPortalMBeanObjectName(getDomain(), portalID);
110: List result = (List) getMBeanServerConnection().invoke(
111: objectName, "getAttribute", params, signature);
112:
113: status = (String) result.get(0);
114: } catch (Exception e) {
115: log(Level.SEVERE, "ProducerManagerBean.getStatus()", e);
116: showAlert();
117: setAlertType(ERROR);
118: setAlertSummary(rb
119: .getString("home.load.failed.summary"));
120: setAlertDetail(rb.getString("home.load.failed.detail"));
121: }
122: }
123:
124: return status;
125: }
126:
127: public void setStatus(String status) {
128: this .status = status;
129: }
130:
131: public void save() {
132: Map optionsMap = new HashMap();
133: optionsMap.put(AttrOptionConstants.OPT_COMPONENT, COMPONENT);
134:
135: optionsMap.put(AttrOptionConstants.OPT_ATTR_NAME,
136: ProducerAttributes.ALL_DISABLED);
137:
138: String[] signature = { List.class.getName(),
139: Map.class.getName() };
140: Object[] params = { Collections.singletonList(status),
141: optionsMap };
142:
143: try {
144: ObjectName objectName = AdminUtil.getPortalMBeanObjectName(
145: getDomain(), portalID);
146:
147: getMBeanServerConnection().invoke(objectName,
148: "setAttribute", params, signature);
149:
150: showAlert();
151: setAlertType(INFORMATION);
152: setAlertSummary(rb
153: .getString("generic.save.success.summary"));
154: setAlertDetail("");
155: } catch (Exception e) {
156: log(Level.SEVERE, "ProducerManagerBean.save()", e);
157: showAlert();
158: setAlertType(WARNING);
159: setAlertSummary(rb.getString("generic.save.failed.summary"));
160: setAlertDetail(rb.getString("generic.save.failed.detail"));
161: }
162: }
163:
164: public String reset() {
165: return "success";
166: }
167:
168: public TableRowGroup getTableRowGroup() {
169: return tableRowGroup;
170: }
171:
172: public void setTableRowGroup(TableRowGroup tableRowGroup) {
173: this .tableRowGroup = tableRowGroup;
174: }
175:
176: public Object getSelected() {
177: return tspl.getSelected(getTableRow());
178: }
179:
180: public void setSelected(Object object) {
181: RowKey rowKey = getTableRow();
182:
183: if (rowKey != null) {
184: tspl.setSelected(rowKey, object);
185: }
186: }
187:
188: public ObjectListDataProvider getProducers() {
189: List producersList = new ArrayList();
190:
191: if (isOrg()) {
192: loadProducers(producersList);
193: }
194:
195: producers = new ObjectListDataProvider(producersList);
196: producers.setObjectType(SimpleProducerBean.class);
197: return producers;
198: }
199:
200: private void loadProducers(List producersList) {
201: // MBean path of ProducerManager.
202: List path = getProducerManagerPath();
203:
204: try {
205: // Object name of ProducerManager.
206: ObjectName objectName = AdminUtil
207: .getResourceMBeanObjectName(PRODUCER_MANAGER_TYPE,
208: path);
209:
210: String[] signature = { String.class.getName() };
211: Object[] params = { getCurrentDN() };
212:
213: Set producerIDs = (Set) getMBeanServerConnection().invoke(
214: objectName, "listProducers", params, signature);
215:
216: Set names = new HashSet();
217: names.add(ENABLED);
218: names.add(ProducerAttributes.REGISTRATION_REQUIRED);
219: Map optionsMap = new HashMap();
220: optionsMap
221: .put(AttrOptionConstants.OPT_COMPONENT, COMPONENT);
222: optionsMap.put(AttrOptionConstants.OPT_ATTR_NAMES, names);
223: signature = new String[] { Map.class.getName() };
224: params = new Object[] { optionsMap };
225:
226: // Object name of Portal.
227: objectName = AdminUtil.getPortalMBeanObjectName(
228: getDomain(), portalID);
229:
230: for (Iterator i = producerIDs.iterator(); i.hasNext();) {
231: String producerID = (String) i.next();
232: optionsMap.put("producer", producerID);
233:
234: Map props = (Map) getMBeanServerConnection().invoke(
235: objectName, "getAttributes", params, signature);
236:
237: String enabledString = (String) ((List) props
238: .get(ENABLED)).get(0);
239: boolean enabled = Boolean.valueOf(enabledString)
240: .booleanValue();
241:
242: String status = enabled ? rb
243: .getString("generic.label.enabled") : rb
244: .getString("generic.label.disabled");
245:
246: String requiredString = (String) ((List) props
247: .get(ProducerAttributes.REGISTRATION_REQUIRED))
248: .get(0);
249: boolean required = Boolean.valueOf(requiredString)
250: .booleanValue();
251: String reg = required ? rb
252: .getString("generic.label.required") : rb
253: .getString("generic.label.notRequired");
254:
255: SimpleProducerBean producer = new SimpleProducerBean();
256: producer.setId(producerID);
257: producer.setStatus(status);
258: producer.setRegistration(reg);
259: producersList.add(producer);
260: }
261: } catch (Exception e) {
262: log(Level.SEVERE, "ProducerManagerBean.loadProducers()", e);
263: showAlert();
264: setAlertType(ERROR);
265: setAlertSummary(rb
266: .getString("home.loadProducers.failed.summary"));
267: setAlertDetail(rb
268: .getString("home.loadProducers.failed.detail"));
269: }
270: }
271:
272: public void setProducers(ObjectListDataProvider producers) {
273: this .producers = producers;
274: }
275:
276: public String deleteProducers() {
277: RowKey[] rowKeys = tableRowGroup.getRenderedRowKeys();
278:
279: if (rowKeys != null) {
280: List path = getProducerManagerPath();
281: String[] signature = { String.class.getName() };
282:
283: for (int i = 0; i < rowKeys.length; i++) {
284: RowKey rowKey = rowKeys[i];
285:
286: if (tspl.isSelected(rowKey)) {
287: String producerID = (String) producers.getValue(ID,
288: rowKey);
289: Object[] params = { producerID };
290:
291: try {
292: ObjectName objectName = AdminUtil
293: .getResourceMBeanObjectName(
294: PRODUCER_MANAGER_TYPE, path);
295:
296: getMBeanServerConnection().invoke(objectName,
297: "deleteProducer", params, signature);
298:
299: if (producers.isRowAvailable(rowKey)
300: && producers.canRemoveRow(rowKey)) {
301:
302: producers.removeRow(rowKey);
303: }
304: } catch (Exception e) {
305: log(
306: Level.SEVERE,
307: "ProducerManagerBean.deleteProducers()",
308: e);
309: showAlert();
310: setAlertType(WARNING);
311: setAlertSummary(rb
312: .getString("home.deletePs.failed.summary"));
313: setAlertDetail(rb
314: .getString("home.deletePs.failed.detail"));
315: }
316: }
317: }
318:
319: producers.commitChanges();
320: tableRowGroup.setFirst(0);
321: tspl.clear();
322: }
323:
324: return "success";
325: }
326:
327: public String editProducer() {
328: setRequestAttributeInSession(ATTR_SELECTED_PRODUCER);
329: removeFromSession(ATTR_RPDS);
330: return "editProducer";
331: }
332:
333: private RowKey getTableRow() {
334: return getTableRow("#{producer.tableRow}");
335: }
336: }
|