public void ProcessScriptBase(IScriptBase scriptBase, XmlNode scriptBaseNode) { /* * <Name>Table1</Name> * <Description /> * <Enabled>False</Enabled> * <IsUserDefined>False</IsUserDefined> * <UID>00000000-0000-0000-0000-000000000000</UID> */ NodeProcessor proc = new NodeProcessor(scriptBaseNode); scriptBase.Name = proc.GetString("Name"); scriptBase.Schema = proc.GetString("Schema"); scriptBase.Description = proc.GetString("Description"); scriptBase.Enabled = proc.GetBool("Enabled"); scriptBase.IsUserDefined = proc.GetBool("IsUserDefined"); if (proc.Exists(VirtualPropertyDeserialiser.VirtualPropertiesNodeName)) { var deserialiser = new VirtualPropertyDeserialiser(); scriptBase.Ex = deserialiser.DeserialiseVirtualProperties( scriptBaseNode.SelectSingleNode(VirtualPropertyDeserialiser.VirtualPropertiesNodeName)); } }
public IIndex ProcessIndexNode(XmlNode node, ITable parent, IDatabase db) { IIndex index = new Index(); index.Parent = parent; ProcessScriptBase(index, node); /* * <IsUnique>True</IsUnique> * <IsClustered>False</IsClustered> * <Datatype>Unique</Datatype> * <Columns> * <ColumnName>ColumnT13</ColumnName> * </Columns> */ NodeProcessor proc = new NodeProcessor(node); index.IsUnique = proc.GetBool("IsUnique"); index.IsClustered = proc.GetBool("IsClustered"); index.IndexType = proc.GetEnum <DatabaseIndexType>("Datatype"); var columnNodeList = node.SelectNodes("Columns/ColumnName"); if (columnNodeList != null) { foreach (XmlNode columnRef in columnNodeList) { index.AddColumn(columnRef.InnerText); } } return(index); }
/// <summary> /// Creates a FunctionInfo object from the given XML. Because it /// has to resolve Type objects, this should only be done after /// all referenced assemblies are loaded into the current AppDomain. /// </summary> /// <param name="rootElement"></param> /// <returns></returns> public virtual FunctionInfo ReadFunction(XmlNode rootElement) { if (rootElement == null) { throw new DeserialisationException("Could not find Function node"); } CheckVersion(rootElement); NodeProcessor proc = new NodeProcessor(rootElement); var name = proc.GetString("Name"); bool isTemplateFunc = proc.GetBool("IsTemplateFunction"); bool isExtMethod = proc.GetBool("IsExtensionMethod"); var extendedType = proc.GetString("ExtendedType"); var scriptLang = proc.GetEnum <SyntaxEditorHelper.ScriptLanguageTypes>("ScriptLanguage"); var description = proc.GetString("Description"); var category = proc.GetString("Category"); var bodyText = proc.GetString("Body"); var returnType = GetTypeNamed(proc.GetString("ReturnType")); var templateReturnLang = proc.GetString("TemplateReturnLanguage"); FunctionInfo fi = new FunctionInfo(name, returnType, bodyText, isTemplateFunc, scriptLang, description, templateReturnLang, category, isExtMethod, extendedType); ProcessFunctionParameters(fi, rootElement); return(fi); }
public Discriminator DeserialiseDiscriminator(XmlNode discriminatorNode) { NodeProcessor processor = new NodeProcessor(discriminatorNode); Discriminator discriminator = new Discriminator(); discriminator.AllowNull = processor.GetBool("AllowNull"); discriminator.ColumnName = processor.GetString("ColumnName"); discriminator.DiscriminatorType = (Enums.DiscriminatorTypes)Enum.Parse(typeof(Enums.DiscriminatorTypes), processor.GetString("DiscriminatorType"), true); discriminator.Force = processor.GetBool("Force"); discriminator.Formula = processor.GetString("Formula"); discriminator.Insert = processor.GetBool("Insert"); return(discriminator); }
public IKey ProcessKeyNode(XmlNode node, ITable parent, IDatabase db) { IKey key = new Key(); key.Parent = parent; ProcessScriptBase(key, node); /* * <Keytype>Primary</Keytype> * <Columns> * <ColumnName>ColumnT11</ColumnName> * </Columns> * <ReferencedKey> * <KeyName>ForeignKey</KeyName> * <TableName>Table2</TableName> * </ReferencedKey> */ NodeProcessor proc = new NodeProcessor(node); key.Keytype = proc.GetEnum <DatabaseKeyType>("Keytype"); key.IsUnique = proc.GetBool("IsUnique"); var columnNodeList = node.SelectNodes("Columns/ColumnName"); if (columnNodeList != null) { foreach (XmlNode columnRef in columnNodeList) { key.AddColumn(columnRef.InnerText); } } return(key); }
public Property DeserialiseProperty(XmlNode propertyNode, EntityImpl parentEntity) { Property property = new PropertyImpl(); property.Entity = parentEntity; NodeProcessor processor = new NodeProcessor(propertyNode); if (processor.Exists("IsKey")) { property.IsKeyProperty = processor.GetBool("IsKey"); } property.Name = processor.GetString("Name"); property.ReadOnly = processor.GetBool("ReadOnly"); property.Type = processor.GetString("Type"); if (processor.Exists("NHibernateType")) { property.NHibernateType = processor.GetString("NHibernateType"); } if (processor.Exists("Validation")) { property.ValidationOptions = DeserialiseValidationOptions(propertyNode.SelectSingleNode("Validation")); } else { property.ValidationOptions = new ValidationOptions(); } if (processor.Exists("IsHiddenByAbstractParent")) { property.IsHiddenByAbstractParent = processor.GetBool("IsHiddenByAbstractParent"); } if (processor.Exists("IsPartOfHiddenKey")) { property.IsPartOfHiddenKey = processor.GetBool("IsPartOfHiddenKey"); } ProcessScriptBase(property, propertyNode); return(property); }
public Reference DeserialiseReference(XmlNode refNode, EntitySet set) { Reference reference = new ReferenceImpl(); NodeProcessor processor = new NodeProcessor(refNode); reference.Identifier = processor.Attributes.GetGuid("identifier"); reference.End1Name = processor.GetString("End1Name"); reference.End2Name = processor.GetString("End2Name"); reference.End1Enabled = processor.GetBool("End1Enabled"); reference.End2Enabled = processor.GetBool("End2Enabled"); reference.Entity1 = set.GetEntity(processor.GetString("Entity1")); reference.Entity2 = set.GetEntity(processor.GetString("Entity2")); reference.Cardinality1 = DeserialiseCardinality(refNode.SelectSingleNode("Cardinality1")); reference.Cardinality2 = DeserialiseCardinality(refNode.SelectSingleNode("Cardinality2")); if (Version >= 2) { reference.IncludeForeignKey = processor.GetBool("IncludeForeignKey"); } ProcessScriptBase(reference, refNode); // Fixup virtual properties of type PropertiesForThisEntity foreach (var uo in reference.Ex.Where(v => v.DataType == TypePropertiesForThisEntity)) { object obj = null; if (reference.Entity1 != null) { obj = reference.Entity1.Properties.SingleOrDefault(p => p.Name.Equals(uo.Value.ToString(), StringComparison.InvariantCultureIgnoreCase)); } if (obj == null && reference.Entity2 != null) { obj = reference.Entity2.Properties.SingleOrDefault(p => p.Name.Equals(uo.Value.ToString(), StringComparison.InvariantCultureIgnoreCase)); } uo.Value = obj; } return(reference); }
public virtual UserOption ReadUserOption(XmlNode rootElement) { if (rootElement == null) { throw new DeserialisationException("Could not find Option element"); } CheckVersion(rootElement); NodeProcessor proc = new NodeProcessor(rootElement); var varName = proc.GetString("VariableName"); var varType = GetTypeNamed(proc.GetString("Type")); var displayText = proc.GetString("DisplayText"); var descr = proc.GetString("Description"); var defaultValueBody = proc.GetString("DefaultValue"); var iteratorType = GetTypeNamed(proc.GetString("IteratorName")); var validatorBody = proc.GetString("ValidatorFunction"); var displayToUserBody = proc.GetString("DisplayToUserFunction"); bool resetPerSesion = proc.GetBool("ResetPerSession"); List <string> values = new List <string>(); XmlNodeList valueNodes = rootElement.SelectNodes("Values/Value"); if (valueNodes != null) { foreach (XmlNode valueNode in valueNodes) { values.Add(valueNode.Attributes["value"].Value); } } UserOption uo = new UserOption(varName, "", varType, displayText, descr, values, defaultValueBody, iteratorType, validatorBody, displayToUserBody, resetPerSesion); return(uo); }
public IColumn ProcessColumnNode(XmlNode node) { IColumn column = new Column(); ProcessScriptBase(column, node); /* * <Datatype>int</Datatype> * <Default /> * <InPrimaryKey>True</InPrimaryKey> * <IsCalculated>False</IsCalculated> * <IsComputed>False</IsComputed> * <IsIdentity>False</IsIdentity> * <IsNullable>False</IsNullable> * <IsReadOnly>False</IsReadOnly> * <IsUnique>True</IsUnique> * <OrdinalPosition>1</OrdinalPosition> * <Precision>10</Precision> * <Scale>0</Scale> * <Size>0</Size> */ NodeProcessor proc = new NodeProcessor(node); column.OriginalDataType = proc.GetString("Datatype"); column.Default = proc.GetString("Default"); column.InPrimaryKey = proc.GetBool("InPrimaryKey"); column.IsCalculated = proc.GetBool("IsCalculated"); column.IsComputed = proc.GetBool("IsComputed"); column.IsIdentity = proc.GetBool("IsIdentity"); column.IsNullable = proc.GetBool("IsNullable"); column.IsReadOnly = proc.GetBool("IsReadOnly"); column.IsUnique = proc.GetBool("IsUnique"); column.OrdinalPosition = proc.GetInt("OrdinalPosition"); column.Precision = proc.GetInt("Precision"); column.Scale = proc.GetInt("Scale"); column.Size = proc.GetLong("Size"); return(column); }
public void ProcessScriptBase(IScriptBase scriptBase, XmlNode scriptBaseNode) { /* <Name>Table1</Name> <Description /> <Enabled>False</Enabled> <IsUserDefined>False</IsUserDefined> <UID>00000000-0000-0000-0000-000000000000</UID> */ NodeProcessor proc = new NodeProcessor(scriptBaseNode); scriptBase.Name = proc.GetString("Name"); scriptBase.Schema = proc.GetString("Schema"); scriptBase.Description = proc.GetString("Description"); scriptBase.Enabled = proc.GetBool("Enabled"); scriptBase.IsUserDefined = proc.GetBool("IsUserDefined"); if (proc.Exists(VirtualPropertyDeserialiser.VirtualPropertiesNodeName)) { var deserialiser = new VirtualPropertyDeserialiser(); scriptBase.Ex = deserialiser.DeserialiseVirtualProperties( scriptBaseNode.SelectSingleNode(VirtualPropertyDeserialiser.VirtualPropertiesNodeName)); } }
/// <summary> /// Creates a FunctionInfo object from the given XML. Because it /// has to resolve Type objects, this should only be done after /// all referenced assemblies are loaded into the current AppDomain. /// </summary> /// <param name="rootElement"></param> /// <returns></returns> public virtual FunctionInfo ReadFunction(XmlNode rootElement) { if (rootElement == null) throw new DeserialisationException("Could not find Function node"); CheckVersion(rootElement); NodeProcessor proc = new NodeProcessor(rootElement); var name = proc.GetString("Name"); bool isTemplateFunc = proc.GetBool("IsTemplateFunction"); bool isExtMethod = proc.GetBool("IsExtensionMethod"); var extendedType = proc.GetString("ExtendedType"); var scriptLang = proc.GetEnum<SyntaxEditorHelper.ScriptLanguageTypes>("ScriptLanguage"); var description = proc.GetString("Description"); var category = proc.GetString("Category"); var bodyText = proc.GetString("Body"); var returnType = GetTypeNamed(proc.GetString("ReturnType")); var templateReturnLang = proc.GetString("TemplateReturnLanguage"); FunctionInfo fi = new FunctionInfo(name, returnType, bodyText, isTemplateFunc, scriptLang, description, templateReturnLang, category, isExtMethod, extendedType); ProcessFunctionParameters(fi, rootElement); return fi; }
private ConnectionStringHelper LoadGenericDatabaseData(XmlNode node, DatabaseTypes databaseType) { NodeProcessor proc = new NodeProcessor(node); var connectionHelper = new ConnectionStringHelper(); if (string.IsNullOrEmpty(connectionHelper.ServerName)) { switch (databaseType) { case DatabaseTypes.SQLCE: //case DatabaseTypes.SQLServer2000: case DatabaseTypes.SQLServer2005: connectionHelper.ServerName = Environment.MachineName; break; case DatabaseTypes.SQLServerExpress: connectionHelper.ServerName = Environment.MachineName + "\\SQLEXPRESS"; break; case DatabaseTypes.MySQL: connectionHelper.ServerName = "localhost"; break; case DatabaseTypes.Oracle: connectionHelper.ServerName = "localhost"; break; case DatabaseTypes.PostgreSQL: connectionHelper.ServerName = "localhost"; break; case DatabaseTypes.Firebird: connectionHelper.ServerName = "localhost"; break; case DatabaseTypes.SQLite: connectionHelper.ServerName = Environment.MachineName; break; default: throw new NotImplementedException("Database type not handled yet: " + databaseType.ToString()); } } connectionHelper.CurrentDbType = databaseType; if (proc.Exists("ServerName")) { connectionHelper.ServerName = proc.GetString("ServerName"); } if (proc.Exists("DatabaseName")) { connectionHelper.DatabaseName = proc.GetString("DatabaseName"); connectionHelper.UseFileName = false; } if (proc.Exists("FileName")) { connectionHelper.FileName = proc.GetString("FileName"); connectionHelper.UseFileName = true; } if (proc.Exists("UseIntegratedSecurity")) { connectionHelper.UseIntegratedSecurity = proc.GetBool("UseIntegratedSecurity"); } if (proc.Exists("UserName")) { connectionHelper.UserName = proc.GetString("UserName"); } if (proc.Exists("Password")) { string password = ""; try { password = proc.GetString("Password").Decrypt(); } catch { // Do nothing password = ""; } connectionHelper.Password = password; } if (proc.Exists("Port")) { connectionHelper.Port = proc.GetInt("Port"); } if (proc.Exists("ServiceName")) { connectionHelper.ServiceName = proc.GetString("ServiceName"); } if (proc.Exists("SchemaName")) { connectionHelper.ServiceName = proc.GetString("SchemaName"); } if (proc.Exists("UseDirectConnection")) { connectionHelper.UseDirectConnection = proc.GetBool("UseDirectConnection"); } else { connectionHelper.UseDirectConnection = false; } return(connectionHelper); }
public virtual UserOption ReadUserOption(XmlNode rootElement) { if (rootElement == null) throw new DeserialisationException("Could not find Option element"); CheckVersion(rootElement); NodeProcessor proc = new NodeProcessor(rootElement); var varName = proc.GetString("VariableName"); var varType = GetTypeNamed(proc.GetString("Type")); var displayText = proc.GetString("DisplayText"); var descr = proc.GetString("Description"); var defaultValueBody = proc.GetString("DefaultValue"); var iteratorType = GetTypeNamed(proc.GetString("IteratorName")); var validatorBody = proc.GetString("ValidatorFunction"); var displayToUserBody = proc.GetString("DisplayToUserFunction"); bool resetPerSesion = proc.GetBool("ResetPerSession"); List<string> values = new List<string>(); XmlNodeList valueNodes = rootElement.SelectNodes("Values/Value"); if (valueNodes != null) { foreach (XmlNode valueNode in valueNodes) { values.Add(valueNode.Attributes["value"].Value); } } UserOption uo = new UserOption(varName, "", varType, displayText, descr, values, defaultValueBody, iteratorType, validatorBody, displayToUserBody, resetPerSesion); return uo; }
public IColumn ProcessColumnNode(XmlNode node) { IColumn column = new Column(); ProcessScriptBase(column, node); /* <Datatype>int</Datatype> <Default /> <InPrimaryKey>True</InPrimaryKey> <IsCalculated>False</IsCalculated> <IsComputed>False</IsComputed> <IsIdentity>False</IsIdentity> <IsNullable>False</IsNullable> <IsReadOnly>False</IsReadOnly> <IsUnique>True</IsUnique> <OrdinalPosition>1</OrdinalPosition> <Precision>10</Precision> <Scale>0</Scale> <Size>0</Size> */ NodeProcessor proc = new NodeProcessor(node); column.OriginalDataType = proc.GetString("Datatype"); column.Default = proc.GetString("Default"); column.InPrimaryKey = proc.GetBool("InPrimaryKey"); column.IsCalculated = proc.GetBool("IsCalculated"); column.IsComputed = proc.GetBool("IsComputed"); column.IsIdentity = proc.GetBool("IsIdentity"); column.IsNullable = proc.GetBool("IsNullable"); column.IsReadOnly = proc.GetBool("IsReadOnly"); column.IsUnique = proc.GetBool("IsUnique"); column.OrdinalPosition = proc.GetInt("OrdinalPosition"); column.Precision = proc.GetInt("Precision"); column.Scale = proc.GetInt("Scale"); column.Size = proc.GetLong("Size"); return column; }
public IIndex ProcessIndexNode(XmlNode node, ITable parent, IDatabase db) { IIndex index = new Index(); index.Parent = parent; ProcessScriptBase(index, node); /* <IsUnique>True</IsUnique> <IsClustered>False</IsClustered> <Datatype>Unique</Datatype> <Columns> <ColumnName>ColumnT13</ColumnName> </Columns> */ NodeProcessor proc = new NodeProcessor(node); index.IsUnique = proc.GetBool("IsUnique"); index.IsClustered = proc.GetBool("IsClustered"); index.IndexType = proc.GetEnum<DatabaseIndexType>("Datatype"); var columnNodeList = node.SelectNodes("Columns/ColumnName"); if (columnNodeList != null) foreach (XmlNode columnRef in columnNodeList) index.AddColumn(columnRef.InnerText); return index; }
private ConnectionStringHelper LoadGenericDatabaseData(XmlNode node, DatabaseTypes databaseType) { NodeProcessor proc = new NodeProcessor(node); var connectionHelper = new ConnectionStringHelper(); if (string.IsNullOrEmpty(connectionHelper.ServerName)) { switch (databaseType) { case DatabaseTypes.SQLCE: //case DatabaseTypes.SQLServer2000: case DatabaseTypes.SQLServer2005: connectionHelper.ServerName = Environment.MachineName; break; case DatabaseTypes.SQLServerExpress: connectionHelper.ServerName = Environment.MachineName + "\\SQLEXPRESS"; break; case DatabaseTypes.MySQL: connectionHelper.ServerName = "localhost"; break; case DatabaseTypes.Oracle: connectionHelper.ServerName = "localhost"; break; case DatabaseTypes.PostgreSQL: connectionHelper.ServerName = "localhost"; break; case DatabaseTypes.Firebird: connectionHelper.ServerName = "localhost"; break; case DatabaseTypes.SQLite: connectionHelper.ServerName = Environment.MachineName; break; default: throw new NotImplementedException("Database type not handled yet: " + databaseType.ToString()); } } connectionHelper.CurrentDbType = databaseType; if (proc.Exists("ServerName")) connectionHelper.ServerName = proc.GetString("ServerName"); if (proc.Exists("DatabaseName")) { connectionHelper.DatabaseName = proc.GetString("DatabaseName"); connectionHelper.UseFileName = false; } if (proc.Exists("FileName")) { connectionHelper.FileName = proc.GetString("FileName"); connectionHelper.UseFileName = true; } if (proc.Exists("UseIntegratedSecurity")) connectionHelper.UseIntegratedSecurity = proc.GetBool("UseIntegratedSecurity"); if (proc.Exists("UserName")) connectionHelper.UserName = proc.GetString("UserName"); if (proc.Exists("Password")) { string password = ""; try { password = proc.GetString("Password").Decrypt(); } catch { // Do nothing password = ""; } connectionHelper.Password = password; } if (proc.Exists("Port")) connectionHelper.Port = proc.GetInt("Port"); if (proc.Exists("ServiceName")) connectionHelper.ServiceName = proc.GetString("ServiceName"); if (proc.Exists("SchemaName")) connectionHelper.ServiceName = proc.GetString("SchemaName"); if (proc.Exists("UseDirectConnection")) connectionHelper.UseDirectConnection = proc.GetBool("UseDirectConnection"); else connectionHelper.UseDirectConnection = false; return connectionHelper; }
public IKey ProcessKeyNode(XmlNode node, ITable parent, IDatabase db) { IKey key = new Key(); key.Parent = parent; ProcessScriptBase(key, node); /* <Keytype>Primary</Keytype> <Columns> <ColumnName>ColumnT11</ColumnName> </Columns> <ReferencedKey> <KeyName>ForeignKey</KeyName> <TableName>Table2</TableName> </ReferencedKey> */ NodeProcessor proc = new NodeProcessor(node); key.Keytype = proc.GetEnum<DatabaseKeyType>("Keytype"); key.IsUnique = proc.GetBool("IsUnique"); var columnNodeList = node.SelectNodes("Columns/ColumnName"); if (columnNodeList != null) { foreach (XmlNode columnRef in columnNodeList) { key.AddColumn(columnRef.InnerText); } } return key; }