* and collects their results.
* Forwarding is done sequentially, one AFTER the other.
*/
public MigrationResult migrate(byte[] data, String toolID, String params) {
MigrationResult result = new MigrationResult();
StringBuffer report = new StringBuffer();
for (IMigrationEngine engine: engines) {
// execute tool on all migration engines (ideally in parallel)
report.append("migrating with engine "+engine.getName()+":\n");
MigrationResult r = engine.migrate(data, toolID, params);
report.append(r.getReport()).append("\n------------------- ------------\n");
// get all performance data and put them together in the order the engines are defined
for (Measure measure : engine.getMeasures()) {
result.getMeasurements().put(measure.getUri(),r.getMeasurements().get(measure.getUri()));
}
for (Measurement m : r.getMeasurements().values()) {
if (m.getMeasureId().contains(":normalised")) {
result.getMeasurements().put(m.getMeasureId(),m);
}
}// TODO define proper models and IDs for these measurements
// Let's be nice for now - we can still get more defensive later on
// and check consistency, i.e. identity of the produced byte arrays, etc.
if (r.isSuccessful()) {
result.setMigratedObject(r.getMigratedObject());
result.setTargetFormat(r.getTargetFormat());
result.setSuccessful(true);
}
}
normaliseMeasurements(result, toolID);
result.setReport(report.toString());