001: /**
002: * Copyright 2005 Sun Microsystems, Inc. All
003: * rights reserved. Use of this product is subject
004: * to license terms. Federal Acquisitions:
005: * Commercial Software -- Government Users
006: * Subject to Standard License Terms and
007: * Conditions.
008: *
009: * Sun, Sun Microsystems, the Sun logo, and Sun ONE
010: * are trademarks or registered trademarks of Sun Microsystems,
011: * Inc. in the United States and other countries.
012: */package com.sun.portal.admin.console.search;
013:
014: import java.util.*;
015: import java.util.logging.Level;
016: import java.io.*;
017:
018: import javax.faces.context.FacesContext;
019: import javax.faces.application.FacesMessage;
020: import javax.faces.component.UIComponent;
021: import javax.faces.event.*;
022: import javax.faces.validator.*;
023: import javax.faces.el.ValueBinding;
024: import javax.servlet.http.HttpServletRequest;
025: import javax.management.*;
026:
027: import com.sun.web.ui.model.*;
028: import com.sun.web.ui.event.*;
029: import com.sun.web.ui.component.*;
030:
031: import com.sun.data.provider.*;
032: import com.sun.data.provider.impl.ObjectListDataProvider;
033:
034: import com.sun.cacao.agent.JmxClient;
035:
036: import com.sun.portal.admin.common.AttrOptionConstants;
037: import com.sun.portal.admin.common.util.*;
038: import com.sun.portal.admin.console.common.PSBaseBean;
039:
040: public class SchedulingImportAgentsBean extends SchedulingBaseBean {
041:
042: private String host = null;
043: private String startCommand = null;
044: private TableRowGroup tableRowGroup = null;
045: private TableSelectPhaseListener tspl = null;
046:
047: public SchedulingImportAgentsBean() {
048: retrieveSearchServerHost();
049: retrieveStartCommand();
050:
051: ObjectListDataProvider startSchedules = (ObjectListDataProvider) getSessionAttribute("search.schedulingimportagents.startschedules");
052: if (startSchedules == null) {
053: retrieveStartSchedules();
054: }
055:
056: tspl = new TableSelectPhaseListener();
057: }
058:
059: public ObjectListDataProvider getStartSchedules() {
060: return (ObjectListDataProvider) getSessionAttribute("search.schedulingimportagents.startschedules");
061: }
062:
063: public void setStartSchedules(ObjectListDataProvider startSchedules) {
064: setSessionAttribute(
065: "search.schedulingimportagents.startschedules",
066: startSchedules);
067: }
068:
069: public TableRowGroup getTableRowGroup() {
070: return tableRowGroup;
071: }
072:
073: public void setTableRowGroup(TableRowGroup tableRowGroup) {
074: this .tableRowGroup = tableRowGroup;
075: }
076:
077: public Object getSelected() {
078: return tspl.getSelected(getTableRow());
079: }
080:
081: public void setSelected(Object object) {
082: tspl.setSelected(getTableRow(), object);
083: }
084:
085: public String createStart() {
086: ObjectListDataProvider startSchedules = (ObjectListDataProvider) getSessionAttribute("search.schedulingimportagents.startschedules");
087: if (startSchedules == null) {
088: retrieveStartSchedules();
089: }
090:
091: if (startSchedules.canAppendRow()) {
092: startSchedules.appendRow();
093: startSchedules.commitChanges();
094: setSessionAttribute(
095: "search.schedulingimportagents.startschedules",
096: startSchedules);
097: }
098:
099: return null;
100: }
101:
102: public String deleteStart() {
103: ObjectListDataProvider startSchedules = (ObjectListDataProvider) getSessionAttribute("search.schedulingimportagents.startschedules");
104: if (startSchedules == null) {
105: retrieveStartSchedules();
106: }
107:
108: RowKey[] rowKeys = tableRowGroup.getRenderedRowKeys();
109: if (rowKeys != null) {
110: for (int index = 0; index < rowKeys.length; index++) {
111: RowKey rowKey = rowKeys[index];
112: if (tspl.isSelected(rowKey)
113: && startSchedules.isRowAvailable(rowKey)
114: && startSchedules.canRemoveRow(rowKey)) {
115: startSchedules.removeRow(rowKey);
116: }
117: }
118: startSchedules.commitChanges();
119: setSessionAttribute(
120: "search.schedulingimportagents.startschedules",
121: startSchedules);
122: tableRowGroup.setFirst(0);
123: tspl.clear();
124: }
125:
126: return null;
127: }
128:
129: public String save() {
130: ArrayList originalSchedules = new ArrayList();
131: try {
132: LinkedList path = new LinkedList();
133: path.addFirst(AdminClientUtil.DEFAULT_DOMAIN);
134: path.addFirst("scheduler");
135: ObjectName on = AdminClientUtil.getResourceMBeanObjectName(
136: AdminClientUtil.SCHEDULER_MBEAN_TYPE, path);
137:
138: Object[] params = { host, startCommand };
139: String[] signatures = { "java.lang.String",
140: "java.lang.String" };
141: ArrayList data = (ArrayList) getMBeanServerConnection()
142: .invoke(on, "getSchedules", params, signatures);
143: for (int index = 0; index < data.size(); index++) {
144: String string = (String) data.get(index);
145: originalSchedules.add(string);
146: }
147: } catch (Exception e) {
148: log(Level.SEVERE,
149: "SchedulingImportAgentsBean.save() : Exception ", e);
150: }
151:
152: ArrayList newSchedules = new ArrayList();
153: ObjectListDataProvider startSchedules = (ObjectListDataProvider) getSessionAttribute("search.schedulingimportagents.startschedules");
154: if (startSchedules == null) {
155: retrieveStartSchedules();
156: }
157: startSchedules.commitChanges();
158: List l = startSchedules.getList();
159: for (int index = 0; index < l.size(); index++) {
160: ScheduleBean sb = (ScheduleBean) l.get(index);
161: if (sb.initialized()) {
162: newSchedules.add(sb.getSchedule(startCommand));
163: }
164: }
165:
166: try {
167: LinkedList path = new LinkedList();
168: path.addFirst(AdminClientUtil.DEFAULT_DOMAIN);
169: path.addFirst("scheduler");
170: ObjectName on = AdminClientUtil.getResourceMBeanObjectName(
171: AdminClientUtil.SCHEDULER_MBEAN_TYPE, path);
172:
173: if (originalSchedules.size() > 0) {
174: Object[] params = { host, originalSchedules };
175: String[] signatures = { "java.lang.String",
176: "java.util.List" };
177: getMBeanServerConnection().invoke(on, "unschedule",
178: params, signatures);
179: }
180: if (newSchedules.size() > 0) {
181: Object[] params = { host, newSchedules };
182: String[] signatures = { "java.lang.String",
183: "java.util.List" };
184: getMBeanServerConnection().invoke(on, "schedule",
185: params, signatures);
186: }
187: } catch (Exception e) {
188: log(Level.SEVERE,
189: "SchedulingImportAgentsBean.save() : Exception ", e);
190: }
191:
192: return null;
193: }
194:
195: public String reset() {
196: retrieveStartSchedules();
197: return null;
198: }
199:
200: private void retrieveSearchServerHost() {
201: try {
202: LinkedList path = new LinkedList();
203: path.addFirst(AdminClientUtil.DEFAULT_DOMAIN);
204: path
205: .addFirst((String) getSessionAttribute("search.server.selected"));
206: ObjectName on = AdminClientUtil.getResourceMBeanObjectName(
207: AdminClientUtil.SEARCHSERVER_MBEAN_TYPE, path);
208: host = (String) getMBeanServerConnection().getAttribute(on,
209: "Host");
210: } catch (Exception e) {
211: log(
212: Level.SEVERE,
213: "SchedulingImportAgentsBean.retrieveSearchServerHost() : Exception ",
214: e);
215: }
216: }
217:
218: private void retrieveStartCommand() {
219: try {
220: LinkedList path = new LinkedList();
221: path.addFirst(AdminClientUtil.DEFAULT_DOMAIN);
222: path
223: .addFirst((String) getSessionAttribute("search.server.selected"));
224: ObjectName on = AdminClientUtil.getResourceMBeanObjectName(
225: AdminClientUtil.SEARCHSERVER_MBEAN_TYPE, path);
226: Object[] params = {};
227: String[] signatures = {};
228: startCommand = (String) getMBeanServerConnection().invoke(
229: on, "retrieveStartImportAgentCommand", params,
230: signatures);
231: } catch (Exception e) {
232: log(
233: Level.SEVERE,
234: "SchedulingImportAgentsBean.retrieveStartCommand() : Exception ",
235: e);
236: }
237: }
238:
239: private void retrieveStartSchedules() {
240: ArrayList al = new ArrayList();
241: try {
242: LinkedList path = new LinkedList();
243: path.addFirst(AdminClientUtil.DEFAULT_DOMAIN);
244: path.addFirst("scheduler");
245: ObjectName on = AdminClientUtil.getResourceMBeanObjectName(
246: AdminClientUtil.SCHEDULER_MBEAN_TYPE, path);
247:
248: Object[] params = { host, startCommand };
249: String[] signatures = { "java.lang.String",
250: "java.lang.String" };
251: ArrayList data = (ArrayList) getMBeanServerConnection()
252: .invoke(on, "getSchedules", params, signatures);
253: for (int index = 0; index < data.size(); index++) {
254: String string = (String) data.get(index);
255: String[] strings = string.split("\\|");
256:
257: ScheduleBean sb = new ScheduleBean();
258: sb.initialize(strings[1].trim());
259: al.add(sb);
260: }
261: } catch (Exception e) {
262: log(
263: Level.SEVERE,
264: "SchedulingImportAgentsBean.retrieveStartSchedules() : Exception ",
265: e);
266: }
267: ObjectListDataProvider startSchedules = new ObjectListDataProvider(
268: al);
269: startSchedules.setObjectType(ScheduleBean.class);
270:
271: setSessionAttribute(
272: "search.schedulingimportagents.startschedules",
273: startSchedules);
274: }
275:
276: private RowKey getTableRow() {
277: FacesContext fc = FacesContext.getCurrentInstance();
278: ValueBinding vb = fc.getApplication().createValueBinding(
279: "#{startSchedule.tableRow}");
280: return (RowKey) vb.getValue(fc);
281: }
282:
283: }
|