public static DataSourceData Parse(XPOReader reader) { DataSourceData data = new DataSourceData(); while (!reader.EndOfStream) { string line = reader.ReadLine().TrimStart(); if (line.StartsWith(KeyWords.ENDDATASOURCE)) { break; } else if (line.StartsWith(KeyWords.Name)) { data.Name = line.Substring(KeyWords.Name.Length).Trim().Substring(1); } else if (line.StartsWith(KeyWords.METHODS)) { List <MethodData> methods = ParseMethods(reader); foreach (MethodData m in methods) { data.AddMethod(m); } } else if (line.StartsWith(KeyWords.FIELDLIST)) { ParseFieldList(reader, data); } else if (line.StartsWith(KeyWords.ENDDATASOURCE)) { break; } } return(data); }
private static void ParseFieldList(XPOReader reader, DataSourceData data) { while (!reader.EndOfStream) { string line = reader.ReadLine().TrimStart(); if (line.StartsWith(KeyWords.DATAFIELD)) { data.AddDataField(DataFieldData.Parse(line, reader)); } else if (line.StartsWith(KeyWords.REFERENCEFIELD)) { data.AddReferenceField(ReferenceFieldData.Parse(line, reader)); } else if (line.StartsWith(KeyWords.ENDFIELDLIST)) { break; } } }
public override BaseObjectData MergeWith(BaseObjectData data) { DataSourceData dsData = (DataSourceData)data; // merge methods foreach (MethodData m in dsData.Methods.Values) { this.AddMethod(m); } // merge data fields foreach (DataFieldData field in dsData.DataFields.Values) { this.AddDataField(field); } // merge reference fields foreach (ReferenceFieldData field in dsData.ReferenceFields.Values) { this.AddReferenceField(field); } return(this); }