今、家族情報を取得させるようなシステムを大学でやっているのですが
処理を行ってスキップフラグが立ってない場合に以下の処理を行うようにしています。
getOyakoDouiの戻り値の型はList<ECDENna0301CsvKoBean>になっています。
今、getOyakoDoui内でやっている処理とは別の条件で同じ項目を取得させる内容を追加するようにする予定です。
この場合、戻り値の型は変えないようにして作りたいと考えています。ほかでも使用しているので影響がでかいため。
ここに追加するとしたら、どのような実装が一番よいでしょうか?
また、新しい条件の処理で取得した結果は前の条件で取得したものと子供のIDがかぶらない場合に最初の条件で取得したListまたは別でMapを使えるのでしたらそちらを宣言しMapに最初のListと次のListの値を追加するようにしたいと思っています。
if(skipF==0){
// 処理結果をCSV出力リストに追加
csvList = nna03Bl.getOyakoDoui(csvList,errorList);
if(csvList.isEmpty()) {
// スキップフラグを立てる skipF=1; iResult=ECDEZzcParamConst.EC_WARNING; } }
getOyakoDouiの中身
// 検索に使用する値を格納
List<String> condList = new ArrayList<String>();
//子供のID取得 for(ECDENna0301CsvKoBean record:csvList){ condList.add(record.getChildEcId()); } // SQL文の整形(検索条件と結合) String sqlPath = ECDEZzcOpeEnvAccess.getSqlFileRootPath() + ECDENna0301Const.SQLFILE_PATH + ECDENna0301Const.SQLFILE_SELECT_OYAKO_DOUI; // SQL文の整形(inの中身を整形("?"の数を揃える)) String strSql = FormatSql(condList,sqlPath); // 検索 List<Map<String, String>> list = this.selectWrapperListMap(strSql, condList);
//取得件数が0件なら戻す
if(list.size()==0){
// 0の場合の処理 csvList = sqlSizeZero(csvList,ECDENna0301Const.SQLFILE_SELECT_OYAKO_DOUI,errorList,ERROR_LIST_SCHOSA_OYAKODOUI); return csvList; } // 対象者分繰り返す for(int cntCsv=0;cntCsv<csvList.size();cntCsv++){ ECDENna0301CsvKoBean koBean = csvList.get(cntCsv); // 検索結果分繰り返す for(int cnt=0;cnt<list.size();cnt++){ Map<String, String> mapOyako = list.get(cnt); // 対象者のIDと取得したIDを比較 if(koBean.getChildEcId().equals(mapOyako.get(ECDENna0301Const.DOUI_KO_ECID))){ List<ECDENna0301CsvOyaBean> listOyaBean = koBean.getListOyaInfo(); ECDENna0301CsvOyaBean oyaBean = new ECDENna0301CsvOyaBean(); //子供ID の取得 oyaBean.setKoEcId(mapOyako.get(ECDENna0301Const.DOUI_KO_ECID)); //母ID の取得 oyaBean.setOyaEcId(mapOyako.get(ECDENna0301Const.DOUI_OYA_ECID)); //母ID(エンティティ) の取得 oyaBean.setOyaEcIdEntity(mapOyako.get(ECDENna0301Const.DOUI_OYA_ENTITY_ECID)); listOyaBean.add(oyaBean); koBean.setListOyaInfo(listOyaBean); // 格納完了したので、検索結果から削除 list.remove(cnt--); } } // 親子関係情報が取得できなかった子どものレコードは、削除 if(null==koBean.getListOyaInfo() || 0==koBean.getListOyaInfo().size()){ csvList.remove(cntCsv--); //エラーファイルに出力 putErrorMap(errorList,koBean.getChildEcId(),koBean.getSchosa_UniqId(),ERROR_LIST_SCHOSA_OYAKODOUI); //ログ logger.warn(ECDEZzcMessageEnum.WARNING_MESSAGE.NA03_MSG_WRN02, koBean.getChildEcId(),"HD37"); } }
すべてを教えてもらっては自分の身にもならないので、こうするといいかもというヒントなどを頂けたらと思っています。