package org.rhq.enterprise.gui.measurement.schedule.resource; import javax.faces.application.FacesMessage; import javax.faces.model.DataModel; import org.rhq.core.domain.common.EntityContext; import org.rhq.core.domain.measurement.composite.MeasurementScheduleComposite; import org.rhq.core.domain.util.PageControl; import org.rhq.core.domain.util.PageList; import org.rhq.core.gui.util.FacesContextUtility; import org.rhq.core.gui.util.StringUtility; import org.rhq.enterprise.gui.common.framework.PagedDataTableUIBean; import org.rhq.enterprise.gui.common.paging.PageControlView; import org.rhq.enterprise.gui.common.paging.PagedListDataModel; import org.rhq.enterprise.gui.common.time.DurationComponent; import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerLocal; import org.rhq.enterprise.server.util.LookupUtil; public class ListResourceMeasurementScheduleUIBean extends PagedDataTableUIBean { public static final String MANAGED_BEAN_NAME = "ListResourceMeasurementScheduleUIBean"; private MeasurementScheduleManagerLocal measurementScheduleManager = LookupUtil.getMeasurementScheduleManager(); private DurationComponent duration; public DurationComponent getDuration() { return duration; } public void setDuration(DurationComponent duration) { this.duration = duration; } public String disableSelected() { int resourceId = FacesContextUtility.getRequiredRequestParameter("id", Integer.class); int[] measurementDefinitionIds = getSelectedResourceScheduleList(); try { measurementScheduleManager.disableSchedulesForResource(getSubject(), resourceId, measurementDefinitionIds); FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Disabled " + measurementDefinitionIds.length + " schedules."); } catch (Exception e) { FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed to disable selected schedules.", e); } return "success"; } public String enableSelected() { int resourceId = FacesContextUtility.getRequiredRequestParameter("id", Integer.class); int[] measurementDefinitionIds = getSelectedResourceScheduleList(); try { measurementScheduleManager.enableSchedulesForResource(getSubject(), resourceId, measurementDefinitionIds); FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Enabled " + measurementDefinitionIds.length + " schedules."); } catch (Exception e) { FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed to enable selected schedules.", e); } return "success"; } public String enableAndSetSelected() { long collectionInterval = duration.getMillis(); int resourceId = FacesContextUtility.getRequiredRequestParameter("id", Integer.class); int[] measurementDefinitionIds = getSelectedResourceScheduleList(); try { measurementScheduleManager.updateSchedulesForResource(getSubject(), resourceId, measurementDefinitionIds, collectionInterval); FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Enabled and set " + measurementDefinitionIds.length + " schedules."); } catch (Exception e) { FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed to enabled and set selected schedules.", e); } return "success"; } @Override public DataModel getDataModel() { if (dataModel == null) { dataModel = new A(PageControlView.ResourceMeasurementScheduleList, MANAGED_BEAN_NAME); } return dataModel; } // intentially short class for win path issues. This whole class is soon going away with portal war private class A extends PagedListDataModel<MeasurementScheduleComposite> { public A(PageControlView view, String beanName) { super(view, beanName); } @Override public PageList<MeasurementScheduleComposite> fetchPage(PageControl pc) { int resourceId = FacesContextUtility.getRequiredRequestParameter("id", Integer.class); return measurementScheduleManager.getMeasurementScheduleCompositesByContext(getSubject(), EntityContext .forResource(resourceId), pc); } } private int[] getSelectedResourceScheduleList() { String[] resourceSchedules = FacesContextUtility.getRequest().getParameterValues("selectedResourceSchedules"); return StringUtility.getIntArray(resourceSchedules); } }