use of org.activityinfo.ui.client.component.importDialog.model.strategy.FieldImporter in project activityinfo by bedatadriven.
the class ValidateRowsImportCommand method doRowValidation.
private ValidatedRowTable doRowValidation() {
final List<ValidatedRow> rows = Lists.newArrayList();
final ImportModel model = commandExecutor.getImportModel();
// Row based validation
for (SourceRow row : model.getSource().getRows()) {
List<ValidationResult> results = Lists.newArrayList();
for (FieldImporter importer : commandExecutor.getImporters()) {
importer.validateInstance(row, results);
}
rows.add(new ValidatedRow(row, results));
}
ValidatedRowTable validatedRowTable = new ValidatedRowTable(commandExecutor.getColumns(), rows);
model.setValidatedRowTable(validatedRowTable);
return validatedRowTable;
}
use of org.activityinfo.ui.client.component.importDialog.model.strategy.FieldImporter in project activityinfo by bedatadriven.
the class ImportCommandExecutor method createImporters.
private List<FieldImporter> createImporters(final ImportModel model) {
final List<FieldImporter> importers = Lists.newArrayList();
for (Importer.TargetField field : fields) {
Map<TargetSiteId, ColumnAccessor> mappedColumns = model.getMappedColumns(field.node.getFieldId());
if (!mappedColumns.isEmpty()) {
System.out.println(field + " => " + mappedColumns);
FieldImporter importer = field.strategy.createImporter(field.node, mappedColumns, model);
importers.add(importer);
}
}
return importers;
}
use of org.activityinfo.ui.client.component.importDialog.model.strategy.FieldImporter in project activityinfo by bedatadriven.
the class PersistImportCommand method apply.
@Nullable
@Override
public Promise<Void> apply(Void input) {
final ImportModel model = commandExecutor.getImportModel();
final ResourceId formClassId = model.getFormTree().getRootFields().iterator().next().getDefiningFormClass().getId();
final List<FormInstance> toPersist = Lists.newArrayList();
final ValidatedRowTable validatedRowTable = model.getValidatedRowTable();
for (SourceRow row : model.getSource().getRows()) {
ValidatedRow validatedRow = validatedRowTable.getRow(row);
if (validatedRow.isValid()) {
// persist instance only if it's valid
// new instance per row
FormInstance newInstance = new FormInstance(CuidAdapter.newLegacyFormInstanceId(formClassId), formClassId);
for (FieldImporter importer : commandExecutor.getImporters()) {
importer.updateInstance(row, newInstance);
}
toPersist.add(newInstance);
}
}
SerialQueue queue = new SerialQueue(commandExecutor.getResourceLocator(), toPersist, monitor);
return queue.execute();
}
Aggregations