View Javadoc
1   /*
2    * #%L
3    * wcm.io
4    * %%
5    * Copyright (C) 2022 wcm.io
6    * %%
7    * Licensed under the Apache License, Version 2.0 (the "License");
8    * you may not use this file except in compliance with the License.
9    * You may obtain a copy of the License at
10   *
11   *      http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   * #L%
19   */
20  package io.wcm.devops.conga.plugins.aem.maven;
21  
22  import java.nio.file.attribute.FileTime;
23  import java.time.Instant;
24  import java.util.Optional;
25  
26  import org.apache.maven.archiver.MavenArchiver;
27  import org.jetbrains.annotations.Nullable;
28  
29  /**
30   * Parse/convert ${project.build.outputTimestamp}.
31   */
32  public class BuildOutputTimestamp {
33  
34    private final Optional<Instant> instant;
35  
36    /**
37     * @param outputTimestamp Configured output timestamp
38     */
39    public BuildOutputTimestamp(@Nullable String outputTimestamp) {
40      this.instant = MavenArchiver.parseBuildOutputTimestamp(outputTimestamp);
41    }
42  
43    /**
44     * @return true if a valid timestamp is configured
45     */
46    public boolean isValid() {
47      return instant.isPresent();
48    }
49  
50    /**
51     * @return FileTime or null if not a valid date
52     */
53    @Nullable
54    public FileTime toFileTime() {
55      return instant
56          .map(Instant::toEpochMilli)
57          .map(FileTime::fromMillis)
58          .orElse(null);
59    }
60  
61  }