package com.yoursway.utils.filespec; import static com.google.common.collect.Lists.newArrayListWithCapacity; import static com.yoursway.utils.YsStrings.sortedToString; import java.io.Serializable; import java.util.Collection; import java.util.Set; import com.google.common.collect.Sets; import com.yoursway.utils.fileset.FileSet; import com.yoursway.utils.relativepath.RelativePath; public class ConcreteFilesSpec implements FileSetSpec, Serializable { private static final long serialVersionUID = 1L; private final Set<RelativePath> files; public ConcreteFilesSpec(Collection<RelativePath> files) { this.files = Sets.newHashSet(files); } public boolean contains(RelativePath file) { return files.contains(file); } @Override public String toString() { return sortedToString(files); } public boolean isKnownToBeEmpty() { return files.isEmpty(); } public FileSet resolve(FileSet allFiles) { Collection<RelativePath> validPathes = newArrayListWithCapacity(files.size()); for (RelativePath file : files) if (allFiles.contains(file)) validPathes.add(file); return new FileSet(validPathes); } }