This examples shows how a CSV file that is formatted with sequences, can be written using Meta from a Fielded Text Meta File. It uses this example Sequence Meta File.
The CSV File to be written is:
1,Misty,45
1,Oscar,35
2,Buddy,0.5,35,False
2,Charlie,2,35,True,John,35.0
2,Max,0.5,35,False
3,Bubbles,Orange,Wen
3,Flash,Yellow,Crucian
using Xilytix.FieldedText;
namespace WriteSequence
{
class Program
{
static void Main(string[] args)
{
// Name of file containing Meta
const string MetaFileName = "ExampleSequenceMeta.ftm";
// Name of file to be written
const string CsvFileName = "ExampleSequence.csv";
// Define Field Names
const string TypeFieldName = "Type";
const string NameFieldName = "Name";
const string RunningSpeedFieldName = "RunningSpeed";
const string WalkDistanceFieldName = "WalkDistance";
const string TrainingFieldName = "Training";
const string TrainerFieldName = "Trainer";
const string SessionCostFieldName = "SessionCost";
const string ColorFieldName = "Color";
const string ChineseClassificationFieldName = "ChineseClassification";
// Define Type values
const long CatType = 1;
const long DogType = 2;
const long GoldFishType = 3;
// Create Meta from file
FtMeta meta = FtMetaSerializer.Deserialize(MetaFileName);
// Create Writer
using (FtWriter writer = new FtWriter(meta, CsvFileName))
{
// When writing records with sequences, you must not set a field's
// value if its sequence has not yet been invoked by a redirect.
// When writing, whenever a sequence is invoked by a redirect, its
// field values are initialized to null
// Root Sequence is always automatically invoked
// Write 1st Record (1st table)
writer[TypeFieldName] = CatType; // Invoke Cat Sequence (after Root
// Sequence is finished)
writer[NameFieldName] = "Misty";
writer[RunningSpeedFieldName] = 45.0;
writer.Write();
// Write 2nd Record
writer[TypeFieldName] = CatType; // Invoke Cat Sequence (after Root
// Sequence is finished)
writer[NameFieldName] = "Oscar";
writer[RunningSpeedFieldName] = 35.0;
writer.Write();
// Write 3rd Record (2nd table)
writer[TypeFieldName] = DogType; // Invoke Dog Sequence (after Root
// Sequence is finished)
writer[NameFieldName] = "Buddy";
writer[WalkDistanceFieldName] = 0.5;
writer[RunningSpeedFieldName] = 35.0;
writer[TrainingFieldName] = false;
writer.Write();
// Write 4th Record (3rd table)
writer[TypeFieldName] = DogType; // Invoke Dog Sequence (after Root
// Sequence is finished)
writer[NameFieldName] = "Charlie";
writer[WalkDistanceFieldName] = 2.0;
writer[RunningSpeedFieldName] = 48.0;
writer[TrainingFieldName] = true; // Invoke Training Sequence
// (after this field)
writer[TrainerFieldName] = "John";
writer[SessionCostFieldName] = 32.0M;
writer.Write();
// Write 5th Record (4th table)
writer[TypeFieldName] = DogType; // Invoke Dog Sequence (after Root
// Sequence is finished)
writer[NameFieldName] = "Max";
writer[WalkDistanceFieldName] = 0.5;
writer[RunningSpeedFieldName] = 30.0;
writer[TrainingFieldName] = false;
writer.Write();
// Write 6th Record (5th table)
writer[TypeFieldName] = GoldFishType; // Invoke Gold Fish Sequence
// (after Root Sequence)
writer[NameFieldName] = "Bubbles";
writer[ColorFieldName] = "Orange";
writer[ChineseClassificationFieldName] = "Wen";
writer.Write();
// Write 7th Record
writer[TypeFieldName] = GoldFishType; // Invoke Gold Fish Sequence
// (after Root Sequence)
writer[NameFieldName] = "Flash";
writer[ColorFieldName] = "Yellow";
writer[ChineseClassificationFieldName] = "Crucian";
writer.Write();
}
}
}
}