package com.digiarea.closurefx.build.compiler; import java.io.File; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import com.digiarea.closure.core.IPathResolver; import com.digiarea.closure.model.Buildpath; import com.digiarea.closure.model.Source; import com.digiarea.closure.model.SourceEntity; import com.digiarea.closurefx.IConstants; public class GSSBuildpathContainerResolver { private Buildpath container; private LinkedHashSet<File> externs = new LinkedHashSet<File>(); private LinkedHashSet<File> sources = new LinkedHashSet<File>(); private IPathResolver resolver; public GSSBuildpathContainerResolver(Buildpath container, IPathResolver resolver) { this.container = container; this.resolver = resolver; } public LinkedHashSet<File> getSources() { return sources; } public LinkedHashSet<File> getExterns() { return externs; } public void resolve() { for (Source entry : container.getSource()) { File file = new File( resolver.toRealPath(entry.getPath().toString())); if (!entry.isExtern()) { sources.addAll(readEntry(file, SourceEntity.GSS)); } else { externs.addAll(readEntry(file, SourceEntity.GSS)); } } } private List<File> readEntry(File file, SourceEntity kind) { List<File> files = new ArrayList<File>(); if (file.isDirectory()) { String entries[] = file.list(); if (entries != null) { for (String entry : entries) { files.addAll(readEntry(new File(file, entry), kind)); } } } else { if (kind == SourceEntity.GSS) { if (file.getName().endsWith(IConstants.EXTENSION_CSS) || file.getName().endsWith(IConstants.EXTENSION_GSS)) { files.add(file); } } } return files; } }