change
-------------------------------------------------
public class FileExportService {
private FileExportProperty fileExportProperty;
private OyaTable oyaTable;
public FileExportService(FileExportProperty fileExportProperty, OyaTable oyaTable) {
this.fileExportProperty = fileExportProperty;
this.oyaTable = oyaTable;
}
public void run() {
//SqlSession取得
CsvDirs dirs = null;
try {
String yyyyMMddhhmmss = null;
SimpleDateFormat df = new SimpleDateFormat("yyyymmddhhmmssSSS");
yyyyMMddhhmmss = df.format(new Date());
dirs = new CsvDirs(fileExportProperty, oyaTable, yyyyMMddhhmmss);
//IbsTr001取得
List<IbsTr001> list001 = new ArrayList<>();
IbsTr001 ibsTr001 = new IbsTr001("100111", "100111名前", "090-1111-0001", "住所111", "1988/03/01");
list001.add(ibsTr001);
IbsTr001 ibsTr002 = new IbsTr001("100112", "100112名前", "090-1111-0002", "住所112", "1988/05/01");
list001.add(ibsTr002);
IbsTr001 ibsTr003 = new IbsTr001("100113", "100113名前", "090-1111-0003", "住所113", "1988/07/01");
list001.add(ibsTr003);
if (list001.isEmpty()) {
if (!dirs.isIryoFileExists()) {
dirs.deleteIryoDir();
System.out.println("dirs.deleteIryoDir() " + yyyyMMddhhmmss);
}
System.out.println("[XXX]XXX001データがありませんでした");
} else {
//String dir = String.join(File.separator, fileExportProperty.getIryoDir(), "TEST_DATA", yyyyMMddhhmmss);
//mkdirs(dir);
writeIbsTr001Csv(list001, dirs.getIryoDir());
//IbsTr001更新
System.out.println("[XXX]XXX001データがあり" + yyyyMMddhhmmss);
}
if (true) throw new RuntimeException("xxx");
if (dirs.isIryoFileExists()) {
writeEnd(dirs.getIryoDir(), oyaTable.getCode_id(), "I" + yyyyMMddhhmmss);
System.out.println("[XXX]XXX001医療費のENDファイルを作成しました" + yyyyMMddhhmmss);
}else {
dirs.deleteIryoDir();
System.out.println("[XXX]XXX001医療費データを削除しました" + yyyyMMddhhmmss);
}
if (dirs.isKensinFileExists()) {
writeEnd(dirs.getKensinDir(), oyaTable.getCode_id(), "I" + yyyyMMddhhmmss);
System.out.println("[XXX]XXX001検診結果のENDファイルを作成しました" + yyyyMMddhhmmss);
}else {
dirs.deleteKensinDir();
System.out.println("[XXX]XXX001検診結果データを削除しました" + yyyyMMddhhmmss);
}
//commit
} catch (Exception ex) {
ex.printStackTrace();
//rollbacks
System.out.println("onFailure");
System.out.println("onFailure " + ex.toString());
System.out.println("log3j " + getStackTrace(ex));
onFailure(dirs);
}
}
private String getStackTrace(Exception e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
return sw.toString();
}
//IbsTr001用CSV出力
private void writeIbsTr001Csv(List<IbsTr001> list, File dir) throws Exception {
// mkdirs(dir);
// if (!new File(dir).exists()) {
// new File(dir).mkdirs();
// }
File file = new File(dir, "IbsTr001.csv");
try {
writeCsv(file, list, IbsTr001.FIELDS);
System.out.println("[XXX]XXX001作成に成功しました");
} catch (Exception e) {
System.out.println("異常終了[XXX]XXX001作成に失敗しました");
throw e;
}
}
private void writeEnd(File dir, String contents, String filename) throws IOException {
File file = new File(dir, filename);
try (PrintWriter pw = getWriter(file)) {
pw.println(contents);
}
}
//CSVファイル出力
private int writeCsv(File file, List<?> list, String[] fields) throws IOException {
try (PrintWriter pw = getWriter(file)) {
pw.println(String.join(",", getHeader(fields)));
for (Object row : list) {
pw.println(String.join(",", getValues(fields, row)));
}
}
return list.size();
}
//ライター取得
private PrintWriter getWriter(File file) throws IOException {
FileOutputStream fos = new FileOutputStream(file);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos, "UTF-8"));
PrintWriter pw = new PrintWriter(bw);
return pw;
}
//ヘッダ行を取得する
private String[] getHeader(String[] fields) {
return Arrays.stream(fields).map(String::toUpperCase).toArray(String[]::new);
}
//指定フィールド値を取得する
private String[] getValues(String[] fields, Object obj) {
Class<?> clazz = obj.getClass();
List<String> values = new ArrayList<>();
for (String field : fields) {
try {
Field f = clazz.getDeclaredField(field.toLowerCase());
f.setAccessible(true);
values.add(Objects.toString(f.get(obj), ""));
} catch (Exception e) {
e.printStackTrace();
}
}
return values.toArray(new String[values.size()]);
}
private void onFailure(CsvDirs dirs) {
if (dirs != null) {
dirs.deleteDirs();
}
}
private static class CsvDirs {
private File iryoDir;
private File kensinDir;
private CsvDirs(FileExportProperty fileExportProperty, OyaTable oyaTable, String yyyyMMddhhmmss) {
this.iryoDir = getDir(fileExportProperty.getIryoDir(), oyaTable, yyyyMMddhhmmss);
this.kensinDir = getDir(fileExportProperty.getKensinDir(), oyaTable, yyyyMMddhhmmss);
}
private File getDir(String baseDir, OyaTable oyaTable, String yyyyMMddhhmmss) {
return mkdirs(String.join(File.separator, baseDir, "TEST_DATA", oyaTable.getBunrui(), yyyyMMddhhmmss));
}
public File getIryoDir() {
return iryoDir;
}
public File getKensinDir() {
return kensinDir;
}
public boolean isIryoFileExists() {
return iryoDir.listFiles().length > 0;
}
public boolean isKensinFileExists() {
return kensinDir.listFiles().length > 0;
}
public void deleteDirs() {
deleteIryoDir();
deleteKensinDir();
}
public void deleteIryoDir() {
deleteDir(this.iryoDir);
}
public void deleteKensinDir() {
deleteDir(this.kensinDir);
}
private void deleteDir(File dir) {
for (File file : dir.listFiles()) {
if (file.isDirectory()) {
deleteDir(file);
}
file.delete();
}
dir.delete();
}
private File mkdirs(String strDir) {
File dir = new File(strDir);
if (!dir.exists())
dir.mkdirs();
return dir;
}
}
-------------------------------------------------