「付加行」機能 実装(いちおう)完了。
authorsatomichan <git-miya.20210624@...>
Sat, 26 Jun 2021 05:37:50 +0000 (14:37 +0900)
committersatomichan <git-miya.20210624@...>
Sat, 26 Jun 2021 05:37:50 +0000 (14:37 +0900)
「食品群別摂取量」部分を、プログラムから設定ファイルに分離した。

nucalgen/group-sum.xml [new file with mode: 0644]
nucalgen/src/main/java/jp/satomichan/nucalgen/Nucalgen.java
nucalgen/src/main/java/jp/satomichan/nucalgen/addition/AcCell.java
nucalgen/src/main/java/jp/satomichan/nucalgen/addition/AcCellType.java [deleted file]
nucalgen/src/main/java/jp/satomichan/nucalgen/addition/AdditionUtil.java

diff --git a/nucalgen/group-sum.xml b/nucalgen/group-sum.xml
new file mode 100644 (file)
index 0000000..87db1cc
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<addition>
+       <row>
+               <cell />
+               <cell><value>食品群別摂取量</value></cell>
+       </row>
+       <row>
+               <cell />
+               <cell><value>食品群</value></cell>
+               <cell><value></value></cell>
+               <cell><value>摂取量(g)</value></cell>
+       </row>
+
+       <row><cell /><cell><value>1</value></cell><cell><value>穀類</value></cell><cell><formula>SUMIF(AREA_GROUP, 1, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>2</value></cell><cell><value>いも及びでん粉類</value></cell><cell><formula>SUMIF(AREA_GROUP, 2, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>3</value></cell><cell><value>砂糖及び甘味類</value></cell><cell><formula>SUMIF(AREA_GROUP, 3, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>4</value></cell><cell><value>豆類</value></cell><cell><formula>SUMIF(AREA_GROUP, 4, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>5</value></cell><cell><value>種実類</value></cell><cell><formula>SUMIF(AREA_GROUP, 5, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>6</value></cell><cell><value>野菜類</value></cell><cell><formula>SUMIF(AREA_GROUP, 6, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value></value></cell><cell><value>うち 緑黄色野菜</value></cell><cell><formula>SUMIF(AREA_BRIGHT_COLORED_VEGETABLE, 1, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>7</value></cell><cell><value>果実類</value></cell><cell><formula>SUMIF(AREA_GROUP, 7, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>8</value></cell><cell><value>きのこ類</value></cell><cell><formula>SUMIF(AREA_GROUP, 8, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>9</value></cell><cell><value>藻類</value></cell><cell><formula>SUMIF(AREA_GROUP, 9, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>10</value></cell><cell><value>魚介類</value></cell><cell><formula>SUMIF(AREA_GROUP, 10, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>11</value></cell><cell><value>肉類</value></cell><cell><formula>SUMIF(AREA_GROUP, 11, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>12</value></cell><cell><value>卵類</value></cell><cell><formula>SUMIF(AREA_GROUP, 12, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>13</value></cell><cell><value>乳類</value></cell><cell><formula>SUMIF(AREA_GROUP, 13, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>14</value></cell><cell><value>油脂類</value></cell><cell><formula>SUMIF(AREA_GROUP, 14, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>15</value></cell><cell><value>菓子類</value></cell><cell><formula>SUMIF(AREA_GROUP, 15, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>16</value></cell><cell><value>し好飲料類</value></cell><cell><formula>SUMIF(AREA_GROUP, 16, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>17</value></cell><cell><value>調味料及び香辛料類</value></cell><cell><formula>SUMIF(AREA_GROUP, 17, AREA_INTAKE)</formula></cell></row>
+       <row><cell /><cell><value>18</value></cell><cell><value>調理加工食品類</value></cell><cell><formula>SUMIF(AREA_GROUP, 18, AREA_INTAKE)</formula></cell></row>
+
+</addition>
index b6065c9262bb8df7a7656526906b157076dfbe3a..2cf039ed8b4619afadd7093d4c9785f84c8c3d10 100644 (file)
@@ -4,7 +4,6 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -25,7 +24,6 @@ import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.CellReference;
 
 import jp.satomichan.nucalgen.addition.AcCell;
-import jp.satomichan.nucalgen.addition.AcCellType;
 import jp.satomichan.nucalgen.addition.AcRow;
 import jp.satomichan.nucalgen.addition.AdditionConfig;
 import jp.satomichan.nucalgen.addition.AdditionUtil;
@@ -41,8 +39,6 @@ public class Nucalgen {
                options.addOption(Option.builder("o").required().hasArg().longOpt("output").build());
                options.addOption(Option.builder("l").required().hasArg().longOpt("lines").build());
                options.addOption(Option.builder("add").hasArgs().longOpt("addition").build());
-
-               options.addOption(Option.builder("groupsum").longOpt("with-group-sum").build());
                options.addOption(Option.builder("bright").hasArg().longOpt("bright-colored-vegetables-list").build());
                options.addOption(Option.builder("protect").longOpt("set-protect").build());
                options.addOption(Option.builder("processed").longOpt("use-processed-table").build());
@@ -164,7 +160,6 @@ public class Nucalgen {
                                        if(aColumn.isUseSum()) {
                                                String sumArea = new CellReference(rowIndex, colIndex, true, true).formatAsString();
                                                namedAreaMap.put("SUM_" + aColumn.getAlias(), sumArea);
-                                               //System.out.println("SUM_" + aColumn.getAlias() + " --- " +  sumArea);
                                        }
                                }
 
@@ -185,12 +180,6 @@ public class Nucalgen {
                                }
                        }
 
-                       //「食品群別摂取量」出力
-                       if(cmd.hasOption("with-group-sum")) {
-                               rowIndex += 3;
-                               rowIndex = generateGroupSum(calcSheet, csPool, rowIndex, namedAreaMap);
-                       }
-
 
                        //未使用表シート削除
                        for(int si = outputWorkbook.getNumberOfSheets() - 1 ; si >= 1 ; si--) {
@@ -221,52 +210,12 @@ public class Nucalgen {
        }
 
 
-        //群別摂取量
-       private static int generateGroupSum(Sheet calcSheet, CellStylePool csPool, int rowIndex, Map<String,String> _namedAreaMap) {
-
-               List<String> groupName = Arrays.asList("0", "穀類", "いも及びでん粉類", "砂糖及び甘味類", "豆類",
-                               "種実類", "野菜類", "果実類", "きのこ類", "藻類", "魚介類", "肉類", "卵類", "乳類",
-                               "油脂類", "菓子類", "し好飲料類", "調味料及び香辛料類", "調理加工食品類");
-
-
-
-               Row groupRow = calcSheet.createRow(rowIndex);
-               groupRow.createCell(1).setCellValue("食品群");
-               groupRow.createCell(3).setCellValue("摂取量(g)");
-               rowIndex++;
-
-               for(int i = 1; i <= 18; i++,rowIndex++) {
-                       Row thisRow = calcSheet.createRow(rowIndex);
-                       thisRow.createCell(1).setCellValue(i);
-                       thisRow.createCell(2).setCellValue(groupName.get(i));
-                       Cell cCell = thisRow.createCell(3);
-                       cCell.setCellStyle(csPool.getCellStyle(""));
-                       //cCell.setCellFormula("SUMIF(AREA_GROUP, " + i + ", AREA_INTAKE)");
-                       cCell.setCellFormula("SUMIF(" + _namedAreaMap.get("AREA_GROUP") + ", " + i + ", " + _namedAreaMap.get("AREA_INTAKE") + ")");
-
-                       if(i == 6) {
-                               rowIndex++;
-                               thisRow = calcSheet.createRow(rowIndex);
-                               thisRow.createCell(2).setCellValue("うち 緑黄色野菜");
-                               Cell bcvCell = thisRow.createCell(3);
-                               bcvCell.setCellStyle(csPool.getCellStyle("0"));
-                               //bcvCell.setCellFormula("SUMIF(AREA_BRIGHT_COLORED_VEGETABLE, 1, AREA_INTAKE)");
-                               bcvCell.setCellFormula("SUMIF(" + _namedAreaMap.get("AREA_BRIGHT_COLORED_VEGETABLE") + ", 1, " + _namedAreaMap.get("AREA_INTAKE") + ")");
-                       }
-
-
-               }
-
-               return rowIndex;
-       }
 
 
        //「付加行」生成
        private static int generateAddition(String fileName, Sheet calcSheet, CellStylePool csPool, int rowIndex,
                                                                                                                                                                Map<String,String> _namedAreaMap) {
 
-               System.out.println("ADDITION : " + fileName);
-
                AdditionConfig ac = AdditionUtil.additionFileReader(new File(fileName));
                for(AcRow acRow : ac.getRows()) { //行ごとのループ
                        Row thisRow = calcSheet.createRow(rowIndex);
@@ -280,8 +229,9 @@ public class Nucalgen {
                                        _namedAreaMap.put(acCell.getAlias(), new CellReference(rowIndex, colIndex, true, true).formatAsString());
                                }
                                
-                               if(acCell.getCellType() == AcCellType.FORMULA) {
-                                       String formula = "<" + acCell.getValue() + ">";
+                               //formula 計算式
+                               if(acCell.getFormula() != null){
+                                       String formula = "<" + acCell.getFormula() + ">";
                                        for(Entry<String, String> keyValue : _namedAreaMap.entrySet()) {
                                                String k = keyValue.getKey();
                                                String v = keyValue.getValue();
@@ -291,8 +241,14 @@ public class Nucalgen {
                                                formula = formula.replaceAll(">$", "");
                                        }
                                        thisCell.setCellFormula(formula);
-                               } else {
+                               
+                               //value そのままの値
+                               } else if(acCell.getValue() != null) {
                                        thisCell.setCellValue(acCell.getValue());
+                               
+                               //formula でも value でもない
+                               } else {
+                                       //
                                }
                        
                                
index b2d881d5f06878a1b61879884ed9f4b2a2b1e6aa..20a07dfcfca8b2ccc19444071a3b5b55629583ff 100644 (file)
@@ -2,11 +2,11 @@ package jp.satomichan.nucalgen.addition;
 
 public class AcCell {
        private String value;
-       private AcCellType type;
+       private String formula;
        private String alias;
        
        public AcCell(){
-               //System.out.println("Cell#Cell()");
+               //
        }
        
        public String getValue() {
@@ -16,28 +16,7 @@ public class AcCell {
        public void setValue(String value) {
                this.value = value;
        }
-       
-       
-       public AcCellType getCellType() {
-               return type;
-       }
-       
-       public String getType() {
-               return type.getId();
-       }
-       
-       public void setType(String type) {
-               AcCellType[] types = AcCellType.values();
-               for(AcCellType aType : types) {
-                       if(aType.getId().equals(type)){
-                               this.setType(aType);
-                       }
-               }
-       }
-       
-       private void setType(AcCellType type) {
-               this.type = type;
-       }
+
 
        public String getAlias() {
                return alias;
@@ -46,4 +25,12 @@ public class AcCell {
        public void setAlias(String alias) {
                this.alias = alias;
        }
+
+       public String getFormula() {
+               return formula;
+       }
+
+       public void setFormula(String formula) {
+               this.formula = formula;
+       }
 }
diff --git a/nucalgen/src/main/java/jp/satomichan/nucalgen/addition/AcCellType.java b/nucalgen/src/main/java/jp/satomichan/nucalgen/addition/AcCellType.java
deleted file mode 100644 (file)
index a3074e2..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-package jp.satomichan.nucalgen.addition;
-
-public enum AcCellType {
-       FORMULA("formula"),
-       STRING("string");
-
-       private String id;
-
-
-       private AcCellType(String  id) {
-               this.id = id;
-       }
-
-       public String getId() {
-               return id;
-       }
-}
index 8b0334670dd26c693e6b688f2d8dd09ae70859b5..ba1f489ebc260c9b84e5f038e0968a3fb1648b5e 100644 (file)
@@ -13,11 +13,6 @@ import org.xml.sax.SAXException;
 
 public class AdditionUtil {
 
-       public static void main(String[] args) {
-               AdditionConfig add = additionFileReader(new File("C:\\Users\\h520s\\Desktop\\pfc-balance.xml"));
-       }
-
-
        public static AdditionConfig additionFileReader(File reportXmlFile){
                SAXParserFactory factory = SAXParserFactory.newInstance();
                javax.xml.parsers.SAXParser parser = null;
@@ -37,7 +32,7 @@ public class AdditionUtil {
                        digester.addObjectCreate("addition/row/cell", AcCell.class);
 
                        digester.addSetNext("addition/row/cell", "addCell");
-                       digester.addBeanPropertySetter("addition/row/cell/type");
+                       digester.addBeanPropertySetter("addition/row/cell/formula");
                        digester.addBeanPropertySetter("addition/row/cell/value");
                        digester.addBeanPropertySetter("addition/row/cell/alias");
 
@@ -54,6 +49,6 @@ public class AdditionUtil {
                }
 
                return addition;
-
        }
+       
 }