
net.oneandone.maven.plugins.spritepacker.Utils Maven / Gradle / Ivy
package net.oneandone.maven.plugins.spritepacker;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Objects;
/**
* Utility methods that do not fit into specialized classes.
*
*
* @author ssiegler
*/
public class Utils {
/**
* Avoid instantiation of utility class
*/
private Utils() {}
/**
* Check if any input is newer than any output.
* If an input has the exact same modification time as an output the input is considered to be newer.
*
* @param inputs the list of input files, must not be null
* @param outputs the list of output files, must not be null
* @return whether any input file was newer than any output file
*/
public static boolean shouldWriteOutput(List inputs, List outputs) throws IOException {
Objects.requireNonNull(inputs);
Objects.requireNonNull(outputs);
boolean hasNoInput = true;
long newestInput = Long.MIN_VALUE;
for (Path input : inputs) {
if (input != null && Files.exists(input)) {
// Files.getLastModifiedTime(input) can be an implementation specific default when a time stamp to indicate the time of last modification is not supported by the file system
newestInput = Math.max(Files.getLastModifiedTime(input).toMillis(), newestInput);
hasNoInput = false;
}
}
if (hasNoInput) {
return false;
}
for (Path output : outputs) {
if (output != null && (Files.notExists(output) || Files.getLastModifiedTime(output).toMillis() <= newestInput)) {
return true;
}
}
return false;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy