private int count;
@Override
public RevFeature apply(Feature feature) {
final RevFeature revFeature = RevFeatureBuilder.build(feature);
ObjectId id = revFeature.getId();
final Node node = insertHelper.put(id, feature);
if (insertedTarget != null) {
insertedTarget.add(node);
}
count++;
if (collectionSize == null) {
listener.setProgress(count);
} else {
listener.setProgress((float) (count * 100) / collectionSize.intValue());
}
return revFeature;
}
});
try {
listener.started();
indexDatabase.putAll(objects);
if (listener.isCanceled()) {
return;
}
listener.setDescription("Building trees for "
+ new TreeSet<String>(insertHelper.getTreeNames()));
Stopwatch sw = Stopwatch.createStarted();
Map<NodeRef, RevTree> trees = insertHelper.buildTrees();
listener.setDescription(String.format("Trees built in %s", sw.stop()));
for (Map.Entry<NodeRef, RevTree> treeEntry : trees.entrySet()) {
if (!listener.isCanceled()) {
NodeRef treeRef = treeEntry.getKey();
RevTree newFeatureTree = treeEntry.getValue();
String treePath = treeRef.path();
ObjectId newRootTree = context.command(WriteBack.class)
.setAncestor(getTreeSupplier()).setChildPath(treePath)
.setMetadataId(treeRef.getMetadataId()).setToIndex(true)
.setTree(newFeatureTree).call();
updateWorkHead(newRootTree);
}