package fr.openwide.core.wicket.more.css.scss.model; import java.io.IOException; import java.io.Serializable; import java.util.Collection; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; import com.google.common.collect.Lists; public class ScssStylesheetInformation implements Serializable { private static final long serialVersionUID = 5751644157529838224L; private static final Logger LOGGER = LoggerFactory.getLogger(ScssStylesheetInformation.class); private final String path; private String source; private long lastModifiedTime; private Collection<String> referencedResources = Lists.newArrayList(); public ScssStylesheetInformation(String path, String newSource) { this.path = path; this.source = newSource; } public ScssStylesheetInformation(String path, long lastModifiedTime) { this.path = path; this.referencedResources.add(path); this.lastModifiedTime = lastModifiedTime; } public String getPath() { return path; } public String getSource() { return source; } public void setSource(String source) { this.source = source; } public void addImportedStylesheet(ScssStylesheetInformation importedStylesheet) { if (importedStylesheet.lastModifiedTime > this.lastModifiedTime) { this.lastModifiedTime = importedStylesheet.lastModifiedTime; } this.referencedResources.addAll(importedStylesheet.referencedResources); } public long getLastModifiedTime() { return lastModifiedTime; } public boolean isUpToDate() { for (String referencedResource : referencedResources) { if (!isUpToDate(referencedResource)) { return false; } } return true; } private boolean isUpToDate(String path) { ClassPathResource resource = new ClassPathResource(path); try { return resource.lastModified() <= lastModifiedTime; } catch (IOException e) { LOGGER.error("Error while trying to determine if resource " + path + " is up to date. Assuming it is outdated.", e); return false; } } }