私は、次のDomain
モデルファイルが必要であれば配信されるようにしている考える:読むファイルパスのセクションでは、モデル化する
public class Report {
private String reportId;
private String reportName;
private String client;
private String format;
private Date cobDate;
private String filePath;
}
public enum ReportType {
PNL_REPORT("11", "pnlreport"),
BALANCE_SHEET("20", "balance"),
private final String reportId;
private final String name;
private ReportType(String reportId, String name) {
this.reportId = reportId;
this.name = name;
}
}
を、私は以下のService
実装持って与えられた:
@Service
public class FileService {
@Autowired
private FileRepository fileRepository;
public List<Report> getReport(String filePattern, String format) {
List<Report> reportDeliverables = new ArrayList<>();
List<File> filesToSend = fileRepository.getFilesToSend(sourcePath, filePattern, format);
\\C:\pathToReports\ClientABC\COB28Sep2017\pnlreport.pdf
\\return list of report objects, initialised.
}
}
IをJava 8を使用していて、リストfilesToSend
〜Report
の各フィールドにあるFile
オブジェクトを効率的に変換する方法を知りたい場合は、
reportID - >(接尾辞なし名一致のファイル名)のIDを見て列挙型から派生
REPORTNAME - > pnlreport.pdf
クライアント - > clientABC
cobDate-> 28-SEP-2017
フォーマット - > PDF
filePathに - > C:\ pathToReports \ ClientABC \ COB28Sep2017 \ pnlreport.pdf
パスには常にクライアント、cobの日付、レポートファイルの名前が続きます。
reportIDの作成方法はわかりません。他の情報は、ファイルパスからregexグループで抽出することができます。 https://docs.oracle.com/javase/tutorial/essential/regex/groups.html –
ルックアップから 'name'に退避された' ReportType' enum 'reportID'へのマッピングです。 – user2781389