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 {
this.nutritionColumnList.add(aNutritionColumn);
}
- NutritionColumnHolder(XMLConfiguration aConfig){
+ 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<NutritionColumn>();
- List<Object> names = aConfig.getList("cols.column.name");
- List<Object> dispNames = aConfig.getList("cols.column.disp_name");
- List<Object> aliases = aConfig.getList("cols.column.alias");
- List<Object> formats = aConfig.getList("cols.column.format");
- List<Object> units = aConfig.getList("cols.column.unit");
- List<Object> useRawValue = aConfig.getList("cols.column.use_raw_value");
- List<Object> useSum = aConfig.getList("cols.column.use_sum");
+ for (int index = 0; index < getRepetition(aConfig,"cols.column.no"); index++) {
+ final String colIndex = "cols.column(" + index + ").";
- for (Object aName : names) {
NutritionColumn nc = new NutritionColumn();
- nc.setName((String) aName);
- nc.setDispName((String) dispNames.get(names.indexOf(aName)));
- nc.setAlias((String) aliases.get(names.indexOf(aName)));
- nc.setFormat((String) formats.get(names.indexOf(aName)));
- nc.setUnit((String) units.get(names.indexOf(aName)));
- nc.setUseRawValue(((String)useRawValue.get(names.indexOf(aName))).equalsIgnoreCase("true"));
- nc.setUseSum(((String)useSum.get(names.indexOf(aName))).equalsIgnoreCase("true"));
+ 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 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<String> getNutritionAliasList(){
+ List<String> retAliasList = new ArrayList<String>();
+
+ 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;
+ }
}
\ No newline at end of file