private IDocumentFormatDefinition<State> GetDefinition()
{
// Possible Values are:
// Empty the state is not a member of the EU, leave property EU_MEMBER null
// 'N' the state is not a member of the EU, so leave the property Year empty
// 'J, seit yyyy' the state is a member of the EU, so set property Year accordingly
IDocumentFormatDefinition<State.MemberOfEU> memberOfEuColumnDefinition = new DocumentFormatDefinitionBuilder<State.MemberOfEU>(",", false)
.SetLineEndsWithColumnSeparator(false)
.AddColumn(x => x.IsMember, "J", "N")
.AddColumn(x => x.Year, builder => builder
.SetImportFunc(s =>
{
string year = s.Substring(5);
return Int32.Parse(year);
})
.SetExportFunc((x,i) => i.HasValue ? " seit " + i.Value : ""))
.Build();
IDocumentFormatDefinition<State> definition = new DocumentFormatDefinitionBuilder<State>(";", false)
.SetInstantiator(() => new State())
.SetExportHeaderLine(true)
.AddColumn(x => x.ISO_NUM)
.AddColumn(x => x.ISO_2)
.AddColumn(x => x.ISO_3)
.AddColumn(x => x.NAME_GER)
.AddColumn(x => x.NAME_GER_OFF)
.AddColumn(x => x.NAME_ENG)
.AddColumn(x => x.NAME_ENG_OFF)
.AddColumn(x => x.STATUS)
.AddColumn(x => x.ASSOCIATED)
.AddColumn(x => x.DOCUMENT)
.AddColumn(x => x.EU_MEMBER, builder => builder
.SetImportFunc(s => memberOfEuColumnDefinition.Import(new StringReader(s)).Single())
.SetExportFunc((item, m) => memberOfEuColumnDefinition.Export(new [] { m }).TrimEnd(',')))
.AddColumn(x => x.PART_OF_EU, "J", "N")
.AddColumn(x => x.CONTINENT)
.AddColumn(x => x.PREFIX)
.AddColumn(x => x.TLD)
.AddColumn(x => x.CAR_PLATE)
.AddColumn(x => x.DATE_OF_FORMATION)
.AddColumn(x => x.DATE_OF_RESOLUTION)
.AddColumn(x => x.EXIST_ADD)
.Build();
return definition;
}