/*
* RHQ Management Platform
* Copyright (C) 2005-2008 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
// -*- Mode: Java; indent-tabs-mode: nil; -*-
/*
* MetricsControlForm.java
*
*/
package org.rhq.enterprise.gui.legacy.action.resource.common.monitor.visibility;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.ImageButtonBean;
import org.apache.struts.util.LabelValueBean;
import org.rhq.enterprise.gui.legacy.Constants;
/**
* Represents the common set of controls on various pages that display metrics.
*/
public class MetricsControlForm extends MetricDisplayRangeForm {
private static int[] RN_OPTS = { 4, 8, 12, 24, 30, 48, 60, 90, 120 };
//-------------------------------------instance variables
// switches to advanced metric display range
private ImageButtonBean advanced;
// links to metric display range edit page
private ImageButtonBean editRange;
// changes (simple) metric display range
private ImageButtonBean range;
private Boolean readOnly;
// range display: begin and end times
private Long rb;
private Long re;
// switches to simple metric display range
private ImageButtonBean simple;
public MetricsControlForm() {
super();
setDefaults();
}
//-------------------------------------public methods
@Override
public String toString() {
StringBuffer s = new StringBuffer(super.toString());
s.append(" id=").append(this.getId());
s.append(" type=").append(this.getCategory());
s.append(" ctype=").append(this.getCtype());
s.append(" advanced=").append(advanced);
s.append(" editRange=").append(editRange);
s.append(" range=").append(range);
s.append(" readOnly=").append(readOnly);
s.append(" rb=").append(rb);
s.append(" re=").append(re);
s.append(" rn=").append(this.getRn());
s.append(" ru=").append(this.getRu());
s.append(" simple=").append(simple);
return s.toString();
}
//-------------------------------------public accessors
public ImageButtonBean getAdvanced() {
return advanced;
}
public void setAdvanced(ImageButtonBean b) {
advanced = b;
}
public ImageButtonBean getEditRange() {
return editRange;
}
public void setEditRange(ImageButtonBean b) {
editRange = b;
}
public ImageButtonBean getRange() {
return range;
}
public void setRange(ImageButtonBean b) {
range = b;
}
public Boolean getReadOnly() {
return readOnly;
}
public void setReadOnly(Boolean b) {
readOnly = b;
}
// range begin
public Long getRb() {
return rb;
}
public void setRb(Long l) {
rb = l;
}
// range end
public Long getRe() {
return re;
}
public void setRe(Long l) {
re = l;
}
public ImageButtonBean getSimple() {
return simple;
}
public void setSimple(ImageButtonBean b) {
simple = b;
}
public boolean isAdvancedClicked() {
return getAdvanced().isSelected();
}
public boolean isEditRangeClicked() {
return getEditRange().isSelected();
}
public boolean isRangeClicked() {
return getRange().isSelected();
}
public boolean isSimpleClicked() {
return getSimple().isSelected();
}
public boolean isAnythingClicked() {
return isAdvancedClicked() || isEditRangeClicked() || isRangeClicked() || isSimpleClicked();
}
public Date getRbDate() {
if (getRb() == null) {
return null;
}
return new Date(getRb());
}
public Date getReDate() {
if (getRe() == null) {
return null;
}
return new Date(getRe());
}
public List getRnMenu() {
List items = new ArrayList();
// if no rn is selected, don't bother checking if we need to
// put it in the menu
boolean found = getRn() == null;
String v = null;
for (int i = 0; i < RN_OPTS.length; i++) {
if (!found) {
if (getRn() == RN_OPTS[i]) {
// the selected rn is one of the preset options
found = true;
} else if (getRn() < RN_OPTS[i]) {
// the selected rn is between two of the preset
// options
v = getRn().toString();
items.add(new LabelValueBean(v, v));
found = true;
}
}
v = Integer.toString(RN_OPTS[i]);
items.add(new LabelValueBean(v, v));
}
// one final check to see if the selected rn is bigger than
// any of the preset options
if (!found && (getRn() != null)) {
v = getRn().toString();
items.add(new LabelValueBean(v, v));
}
return items;
}
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
super.reset(mapping, request);
setDefaults();
}
public Map getForwardParams() {
Map forwardParams = new HashMap(2);
forwardParams.put(Constants.RESOURCE_ID_PARAM, this.getId());
if (this.getCtype() != null) {
forwardParams.put(Constants.CHILD_RESOURCE_TYPE_ID_PARAM, this.getCtype());
}
return forwardParams;
}
//-------------------------------------private methods
@Override
protected void setDefaults() {
super.setDefaults();
advanced = new ImageButtonBean();
editRange = new ImageButtonBean();
range = new ImageButtonBean();
rb = null;
re = null;
readOnly = null;
simple = new ImageButtonBean();
}
}