package jp.satomichan.nucalgen; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.XMLConfiguration; public class NutritionColumnHolder { private List nutritionColumnList; List getNutritionColumnList() { return this.nutritionColumnList; } void addNutritionColumn(NutritionColumn aNutritionColumn) { this.nutritionColumnList.add(aNutritionColumn); } NutritionColumnHolder(String columnsXmlFileName){ XMLConfiguration aConfig = new XMLConfiguration(); aConfig.setDelimiterParsingDisabled(true); try { aConfig.load(columnsXmlFileName); } catch (ConfigurationException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } this.nutritionColumnList = new ArrayList(); for (int index = 0; index < getRepetition(aConfig,"cols.column.no"); index++) { final String colIndex = "cols.column(" + index + ")."; NutritionColumn nc = new NutritionColumn(); nc.setName(aConfig.getString(colIndex + "name", "")); nc.setTable(aConfig.getString(colIndex + "table", "")); nc.setDispName(aConfig.getString(colIndex + "disp_name", "")); nc.setAlias(aConfig.getString(colIndex + "alias", "")); nc.setFormula(aConfig.getString(colIndex + "formula", "")); nc.setFormat(aConfig.getString(colIndex + "format", "")); nc.setUnit(aConfig.getString(colIndex + "unit")); nc.setUseRawValue(aConfig.getString(colIndex + "use_raw_value", "").equalsIgnoreCase("true")); nc.setUseSum(aConfig.getString(colIndex + "use_sum", "").equalsIgnoreCase("true")); this.addNutritionColumn(nc); } } public String toString() { String ret = ""; for(NutritionColumn aColumn : this.getNutritionColumnList()) { ret += aColumn + "\n"; } return ret; } public int indexOf(String alias) { for(int i = 0; i <= this.nutritionColumnList.size(); i++) { if(this.nutritionColumnList.get(i).getAlias().equals(alias)) { return i; } } return -1; } public List getNutritionAliasList(){ List retAliasList = new ArrayList(); for(NutritionColumn aColumn : this.getNutritionColumnList()) { if(aColumn.getAlias().length() > 0) { retAliasList.add(aColumn.getAlias()); } } return retAliasList; } private static int getRepetition( final XMLConfiguration config, final String path) { Object obj = config.getProperty(path); if (obj == null) { return 0; } else if (obj instanceof Collection) { return ((Collection) obj).size(); } return 1; } }