use of sharpen.xobotos.config.LocationFilter in project XobotOS by xamarin.
the class AbstractLocationTemplate method print.
@Override
protected void print(StringBuilder sb) {
if (_locationFilters != null) {
for (final LocationFilter filter : _locationFilters) {
sb.append(':');
sb.append(filter);
}
}
super.print(sb);
}
use of sharpen.xobotos.config.LocationFilter in project XobotOS by xamarin.
the class XobotBuilder method checkFileList.
private void checkFileList() {
final IPath sourcePath = _sourceFolder.getLocation();
final IPath outputPath = _outputFolder.getLocation();
final URI outputURI = outputPath.toFile().toURI();
final SourceInfo sourceInfo = _configFile.getSourceInfo();
final List<LocationFilter> excludeFilters = sourceInfo.getLocationFilters();
ArrayList<String> extraCSharpSources = new ArrayList<String>();
for (final String dir : sourceInfo.getExtraCSharpSources()) {
File path = _project.getLocation().append(dir).toFile();
collectAllFiles(extraCSharpSources, path.toURI(), path, ".cs");
}
for (final Entry<ICompilationUnit, Boolean> entry : _sources.entrySet()) {
final ICompilationUnit unit = entry.getKey();
String unitName = getUnitName(unit);
String sourceName = unitName.replace('.', '/') + ".java";
File sourceFile = sourcePath.append(sourceName).toFile();
String outputName = unitName.replace('.', '/') + ".cs";
File outputFile = outputPath.append(outputName).toFile();
URI uri = outputURI.relativize(outputFile.toURI());
if (_api.compilationUnitDefinesBindings(unitName)) {
/*
* This CompilationUnit defines bindings. We
* must always parse it, but don't need to
* regenerate it if the output is up-to-date.
*/
_mustParse.put(unit, true);
}
if (extraCSharpSources.contains(uri.getPath())) {
entry.setValue(false);
continue;
}
if (outputFile.exists() && (outputFile.lastModified() >= sourceFile.lastModified())) {
entry.setValue(false);
continue;
}
/*
* Check location filters.
*/
Match match = Match.NO_MATCH;
for (final LocationFilter filter : excludeFilters) {
match = filter.matches(unitName);
if (match != Match.NO_MATCH)
break;
}
if (match != Match.NO_MATCH) {
entry.setValue(match == Match.POSITIVE);
continue;
}
/*
* Default to building.
*/
entry.setValue(true);
}
}
Aggregations