1 package emissary.output.io;
2
3 import emissary.directory.EmissaryNode;
4 import emissary.util.TimeUtil;
5 import emissary.util.io.FileNameGenerator;
6
7 import org.apache.commons.lang3.StringUtils;
8
9 import java.time.Instant;
10 import java.time.format.DateTimeFormatter;
11
12
13
14
15 public class DateStampFilenameGenerator implements FileNameGenerator {
16
17
18 protected final DateTimeFormatter formatter;
19
20
21 protected final String identifier;
22
23
24 protected final String fileSuffix;
25
26
27 protected String lastFileName = "";
28
29
30 protected int seq = 0;
31
32 public DateStampFilenameGenerator() {
33 this("");
34 }
35
36 public DateStampFilenameGenerator(String fileSuffix) {
37 this(fileSuffix, System.getProperty(EmissaryNode.NODE_NAME_PROPERTY));
38 }
39
40 public DateStampFilenameGenerator(String fileSuffix, String identifier) {
41 this(fileSuffix, identifier, "yyyyMMddHHmm");
42 }
43
44 public DateStampFilenameGenerator(String fileSuffix, String identifier, String datePattern) {
45 this.fileSuffix = fileSuffix;
46 this.identifier = identifier;
47 this.formatter = DateTimeFormatter.ofPattern(datePattern).withZone(TimeUtil.getTimezone());
48 }
49
50 @Override
51 public String nextFileName() {
52 String dateFileName = formatter.format(Instant.now());
53 seq = StringUtils.startsWith(lastFileName, dateFileName) ? seq + 1 : 0;
54 lastFileName = dateFileName;
55 return dateFileName + String.format("%03d", seq) + identifier + fileSuffix;
56 }
57 }