/**
* The contents of this file are subject to the OpenMRS Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* Copyright (C) OpenMRS, LLC. All Rights Reserved.
*/
package org.openmrs.module.reporting.dataset.definition;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.openmrs.module.reporting.dataset.DataSetColumn;
import org.openmrs.module.reporting.dataset.definition.evaluator.SimpleIndicatorDataSetEvaluator;
import org.openmrs.module.reporting.definition.configuration.ConfigurationProperty;
import org.openmrs.module.reporting.evaluation.parameter.Mapped;
import org.openmrs.module.reporting.indicator.Indicator;
/**
* This is a DataSet Definition type that supports indicators as columns
* @see SimpleIndicatorDataSetEvaluator
*/
public class SimpleIndicatorDataSetDefinition extends BaseDataSetDefinition {
public static final long serialVersionUID = 6405583324151111487L;
@ConfigurationProperty
List<SimpleIndicatorColumn> columns;
public SimpleIndicatorDataSetDefinition(){
super();
}
public List<SimpleIndicatorColumn> getColumns() {
if (this.columns == null)
columns = new ArrayList<SimpleIndicatorColumn>();
return columns;
}
public void setColumns(List<SimpleIndicatorColumn> columns) {
this.columns = columns;
}
public void addColumn(SimpleIndicatorColumn column){
getColumns().add(column);
}
public void addColumn(String name, String label, Mapped<? extends Indicator> indicator) {
getColumns().add(new SimpleIndicatorColumn(name, label, indicator));
}
public void removeColumn(String columnName) {
for (Iterator<SimpleIndicatorColumn> i = getColumns().iterator(); i.hasNext(); ) {
SimpleIndicatorColumn col = i.next();
if (col.getName() != null && col.getName().equals(columnName)) {
i.remove();
}
}
}
public class SimpleIndicatorColumn extends DataSetColumn implements Cloneable {
public static final long serialVersionUID = 1L;
//***** PROPERTIES *****
private Mapped<? extends Indicator> indicator;
//***** CONSTRUCTORS *****
public SimpleIndicatorColumn() {}
public SimpleIndicatorColumn(String name, String label, Mapped<? extends Indicator> indicator) {
super(name, label, Object.class);
this.indicator = indicator;
}
/**
* @see java.lang.Object#clone()
*/
@Override
public Object clone() throws CloneNotSupportedException {
SimpleIndicatorColumn c = new SimpleIndicatorColumn();
c.setName(this.getName());
c.setLabel(this.getLabel());
c.setDataType(this.getDataType());
c.setIndicator(this.getIndicator());
return c;
}
public Mapped<? extends Indicator> getIndicator() {
return indicator;
}
public void setIndicator(Mapped<? extends Indicator> indicator) {
this.indicator = indicator;
}
}
}