Tidigare idag fick jag tips från min kollega Mikael Elm om ramverket JSefa som de använder för att skapa fixed length records vid kommunikation med ett legacy-system.

JSefa är ett litet och smidigt ramverk för strömmande serialisering av javaobjekt till XML, CSV och FLR.

Nedanstående exempel visar FLR-användningen av JSefa

Objektet som ska serialiseras

@FlrDataType()
public class Person {
    @FlrField(pos = 1, length = 30)
    private String name;
 
    @FlrField(pos = 2, length = 10, format = "dd.MM.yyyy", align = Align.RIGHT)
    private Date birthDate;
}

Serialisering

Serializer serializer = FlrIOFactory.createFactory(Person.class).createSerializer();
StringWriter writer = new StringWriter();
serializer.open(writer);
 
// call serializer.write for every object to serialize...
 
serializer.close(true);

Resultatet blir då:

Erwin Schmidt                 23.05.1964
Thomas Stumm                  12.03.1979

Deserialisering

Deserializer deserializer = FlrIOFactory.createFactory(Person.class).createDeserializer();
StringReader reader = new StringReader(writer.toString());
deserializer.open(reader);
while (deserializer.hasNext()) {
    Person p = deserializer.next();
    // do something useful with it...
}
deserializer.close(true);

För att serialisera XML eller CSV används liknande konstruktioner med annotationer och Serializers/Deserializers.