CsvLegacyMigrationPipeline.java
package com.designpatterns.behavioral.templatemethod.applied;
/**
* Legacy source: comma-separated "name,amountCents" records - a different legacy export format
* from the same era, going through the exact same read → validate → transform → write skeleton.
*/
public class CsvLegacyMigrationPipeline extends LegacyMigrationPipeline {
public CsvLegacyMigrationPipeline(MigrationSink sink) {
super(sink);
}
@Override
protected String read(String rawRecord) {
return rawRecord;
}
@Override
protected void validate(String parsed) {
if (!parsed.contains(",")) {
throw new IllegalStateException("malformed CSV record: " + parsed);
}
}
@Override
protected String transform(String parsed) {
String[] parts = parsed.split(",", -1);
return "{\"name\":\"" + parts[0].trim() + "\",\"amountCents\":" + parts[1].trim() + "}";
}
}