}
source = Union.getInstance(source);
Union result = new Union();
for (Iterator iter = source.iterator(); iter.hasNext();) {
final Resource sr = (Resource) iter.next();
String srName = sr.getName();
srName = srName == null
? srName : srName.replace('/', File.separatorChar);
String[] targetnames = null;
try {
targetnames = mapper.mapFileName(srName);
} catch (Exception e) {
logTo.log("Caught " + e + " mapping resource " + sr,
Project.MSG_VERBOSE);
}
if (targetnames == null || targetnames.length == 0) {
logTo.log(sr + " skipped - don\'t know how to handle it",
Project.MSG_VERBOSE);
continue;
}
for (int i = 0; i < targetnames.length; i++) {
if (targetnames[i] == null) {
targetnames[i] = "(no name)";
}
}
Union targetColl = new Union();
for (int i = 0; i < targetnames.length; i++) {
targetColl.add(targets.getResource(
targetnames[i].replace(File.separatorChar, '/')));
}
//find the out-of-date targets:
Restrict r = new Restrict();
r.add(selector.getTargetSelectorForSource(sr));
r.add(targetColl);
if (r.size() > 0) {
result.add(sr);
Resource t = (Resource) (r.iterator().next());
logTo.log(sr.getName() + " added as " + t.getName()
+ (t.isExists() ? " is outdated." : " doesn\'t exist."),
Project.MSG_VERBOSE);
continue;
}
//log uptodateness of all targets:
logTo.log(sr.getName()