/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/author/CalculatedQuestionBean.java $
* $Id: CalculatedQuestionBean.java 124154 2013-05-16 14:04:00Z azeckoski@unicon.net $
***********************************************************************************
*
* Copyright (c) 2004, 2005, 2006, 2008, 2009 The Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.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://www.opensource.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package org.sakaiproject.tool.assessment.ui.bean.author;
import java.io.Serializable;
import org.apache.commons.collections.comparators.NullComparator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
public class CalculatedQuestionBean implements Serializable {
private static final long serialVersionUID = -5567978724454506570L;
private Map<String, CalculatedQuestionFormulaBean> formulas;
private Map<String, CalculatedQuestionVariableBean> variables;
private List<CalculatedQuestionCalculationBean> calculations;
public CalculatedQuestionBean() {
formulas = new HashMap<String, CalculatedQuestionFormulaBean>();
variables = new HashMap<String, CalculatedQuestionVariableBean>();
calculations = new Vector<CalculatedQuestionCalculationBean>();
}
public Map<String, CalculatedQuestionFormulaBean> getFormulas() {
return formulas;
}
/**
* getActiveVariables() returns a map of all variables that return getActive() of true
* @return a map of all variables that return getActive() of true. If no variables are active,
* the map will have zero elements.
*/
public Map<String, CalculatedQuestionFormulaBean> getActiveFormulas() {
Map<String, CalculatedQuestionFormulaBean> results = new HashMap<String, CalculatedQuestionFormulaBean>();
for (CalculatedQuestionFormulaBean formula : formulas.values()) {
if (formula.getActive()) {
results.put(formula.getName(), formula);
}
}
return results;
}
/**
* getFormulasList returns a List of all formulas, sorted by formula name
* @return
*/
public List<CalculatedQuestionFormulaBean> getFormulasList() {
List<CalculatedQuestionFormulaBean> beanList = new ArrayList<CalculatedQuestionFormulaBean>(formulas.values());
Collections.sort(beanList, new Comparator<CalculatedQuestionFormulaBean>() {
public int compare(CalculatedQuestionFormulaBean bean1, CalculatedQuestionFormulaBean bean2) {
return new NullComparator().compare(bean1.getName(), bean2.getName());
}
});
return beanList;
}
public void addFormula(CalculatedQuestionFormulaBean formula) {
formulas.put(formula.getName(), formula);
}
public CalculatedQuestionFormulaBean getFormula(String name) {
return formulas.get(name);
}
public void removeFormula(String name) {
formulas.remove(name);
}
public Map<String, CalculatedQuestionVariableBean> getVariables() {
return variables;
}
/**
* getActiveVariables() returns a map of all variables that return getActive() of true
* @return a map of all variables that return getActive() of true. If no variables are active,
* the map will have zero elements.
*/
public Map<String, CalculatedQuestionVariableBean> getActiveVariables() {
Map<String, CalculatedQuestionVariableBean> results = new HashMap<String, CalculatedQuestionVariableBean>();
for (CalculatedQuestionVariableBean variable : variables.values()) {
if (variable.getActive()) {
results.put(variable.getName(), variable);
}
}
return results;
}
/**
* getVariablesList returns a List of all variables, sorted by variable name
* @return
*/
public List<CalculatedQuestionVariableBean> getVariablesList() {
List<CalculatedQuestionVariableBean> beanList = new ArrayList<CalculatedQuestionVariableBean>(variables.values());
Collections.sort(beanList, new Comparator<CalculatedQuestionVariableBean>() {
public int compare(CalculatedQuestionVariableBean bean1, CalculatedQuestionVariableBean bean2) {
return new NullComparator().compare(bean1.getName(), bean2.getName());
}
});
return beanList;
}
public void addVariable(CalculatedQuestionVariableBean variable) {
variables.put(variable.getName(), variable);
}
public CalculatedQuestionVariableBean getVariable(String name) {
return variables.get(name);
}
public void removeVariable(String name) {
variables.remove(name);
}
// CALCULATIONS
public List<CalculatedQuestionCalculationBean> getCalculationsList() {
return this.calculations;
}
public boolean isHasCalculations() {
return !this.calculations.isEmpty();
}
public void addCalculation(CalculatedQuestionCalculationBean calc) {
this.calculations.add(calc);
}
public void clearCalculations() {
this.calculations.clear();
}
}