Пример #1
0
        public override IContext CreateContext(string contextName, ContextSchema schema)
        {
            if (string.IsNullOrEmpty(contextName))
            {
                throw new ArgumentNullException("contextName");
            }
            if (schema == null)
            {
                throw new ArgumentNullException("schema");
            }

            IContext context;

            lock (padlock) {
                if (ContextsContains(contextName))
                {
                    throw new ContextAlreadyExistsException("A context with the name [" + contextName + "] already exists.");
                }
                using (var transaction = TransactionFactory.BeginTransaction(CurrentDB)) {
                    CurrentDB.ExecuteNonQuery("dbo.USER_CreateContext",
                                              transaction,
                                              CurrentDB.CreateStringInputParameter("@chvContext", DbType.AnsiString, contextName));
                    foreach (var s in schema)
                    {
                        AddSchemaToContext(s, contextName, transaction);
                    }
                    context = new Context(contextName);
                    transaction.Commit();
                }

                contexts.Add(context);
            }

            return(context);
        }
Пример #2
0
        public override ContextSchema GetDefaultContextSchema()
        {
            if (this.defaultContextSchema != null)
            {
                return(this.defaultContextSchema);
            }

            var pdt = new List <PropertyDefinition>();

            DirectoryObject directoryObject = CurrentDS.CreateDirectoryObjectInstance();

            foreach (Property property in directoryObject.Properties)
            {
                string propertyName = property.Name;
                Type   propertyType = typeof(Property <string>);

                PropertyDefinition pd = new PropertyDefinition(propertyName, propertyType);
                pdt.Add(pd);
            }

            this.defaultContextSchema = new ContextSchema(pdt);
            return(this.defaultContextSchema);
        }
Пример #3
0
		public PropertyCollection(IList<IProperty> innerList, ContextSchema schema) {
			this.innerList = innerList ?? new List<IProperty>();
			this.schema = schema ?? new ContextSchema(new List<PropertyDefinition>());
		}
Пример #4
0
		public abstract IContext CreateContext(string contextName, ContextSchema schemaTable);
Пример #5
0
		public override IContext CreateContext(string contextName, ContextSchema schemaTable) {
			return this.repository.CreateContext(contextName, schemaTable);
		}
Пример #6
0
 public override IContext CreateContext(string contextName, ContextSchema schemaTable)
 {
     return(this.repository.CreateContext(contextName, schemaTable));
 }
Пример #7
0
        protected virtual ContextSchema GetContextSchema(string contextName, ITransaction transaction)
        {
            if (contextSchema.Keys.Contains(contextName))
            {
                return(contextSchema[contextName]);
            }

            lock (padlock) {
                if (contextSchema.Keys.Contains(contextName))
                {
                    return(contextSchema[contextName]);
                }

                var pdt = new List <PropertyDefinition>();

                IDataParameter[] prams =
                {
                    CurrentDB.CreateStringInputParameter("@chvContext", DbType.AnsiString, contextName, true)
                };

                DataSet dsUser;
                if (transaction == null)
                {
                    dsUser = CurrentDB.ExecuteDataSet("dbo.USER_GetPropertySchema", prams);
                }
                else
                {
                    dsUser = CurrentDB.ExecuteDataSet("dbo.USER_GetPropertySchema", transaction, prams);
                }

                // translate dataset
                if (dsUser.Tables.Count > 0)
                {
                    foreach (DataRow row in dsUser.Tables[0].Rows)
                    {
                        var propertyName = (string)row["PropertyName"];

                        Type propertyType;
                        if (!row.IsNull("AssemblyPath"))
                        {
                            var assembly = Assembly.LoadFrom((string)row["AssemblyPath"]);
                            propertyType = assembly.GetType((string)row["DataType"]);
                        }
                        else if (!row.IsNull("AssemblyName"))
                        {
                            var assembly = Assembly.Load((string)row["AssemblyName"]);
                            propertyType = assembly.GetType((string)row["DataType"]);
                        }
                        else
                        {
                            propertyType = Type.GetType((string)row["DataType"]);
                        }
                        if (propertyType == null)
                        {
                            throw new NotSupportedException(string.Format("The given property has a type {0} that can not be loaded.",
                                                                          row["DataType"]));
                        }
                        var pd = new PropertyDefinition(propertyName, propertyType);
                        pdt.Add(pd);
                    }
                }
                var schema = new ContextSchema(pdt);
                contextSchema.Add(contextName, schema);
                return(schema);
            }
        }
Пример #8
0
		public override ContextSchema GetDefaultContextSchema() {
			if(this.defaultContextSchema != null)
				return this.defaultContextSchema;

			var pdt = new List<PropertyDefinition>();

			DirectoryObject directoryObject = CurrentDS.CreateDirectoryObjectInstance();

			foreach(Property property in directoryObject.Properties) {
				string propertyName = property.Name;
				Type propertyType = typeof(Property<string>);

				PropertyDefinition pd = new PropertyDefinition(propertyName, propertyType);
				pdt.Add(pd);
			}

			this.defaultContextSchema = new ContextSchema(pdt);
			return this.defaultContextSchema;
		}
Пример #9
0
		public override IContext CreateContext(string contextName, ContextSchema schemaTable) {
			throw new NotImplementedException();
		}
Пример #10
0
 public override IContext CreateContext(string contextName, ContextSchema schemaTable)
 {
     throw new NotImplementedException();
 }
Пример #11
0
		protected virtual ContextSchema GetContextSchema(string contextName, ITransaction transaction) {
			if(contextSchema.Keys.Contains(contextName)) {
				return contextSchema[contextName];
			}

			lock(padlock) {
				if(contextSchema.Keys.Contains(contextName)) {
					return contextSchema[contextName];
				}

				var pdt = new List<PropertyDefinition>();

				IDataParameter[] prams = {
					CurrentDB.CreateStringInputParameter("@chvContext", DbType.AnsiString, contextName, true)
				};

				DataSet dsUser;
				if(transaction == null) {
					dsUser = CurrentDB.ExecuteDataSet("dbo.USER_GetPropertySchema", prams);
				} else {
					dsUser = CurrentDB.ExecuteDataSet("dbo.USER_GetPropertySchema", transaction, prams);
				}

				// translate dataset
				if(dsUser.Tables.Count > 0) {
					foreach(DataRow row in dsUser.Tables[0].Rows) {
						var propertyName = (string)row["PropertyName"];

						Type propertyType;
						if(!row.IsNull("AssemblyPath")) {
							var assembly = Assembly.LoadFrom((string)row["AssemblyPath"]);
							propertyType = assembly.GetType((string)row["DataType"]);
						} else if(!row.IsNull("AssemblyName")) {
							var assembly = Assembly.Load((string)row["AssemblyName"]);
							propertyType = assembly.GetType((string)row["DataType"]);
						} else {
							propertyType = Type.GetType((string)row["DataType"]);
						}
						if(propertyType == null) {
							throw new NotSupportedException(string.Format("The given property has a type {0} that can not be loaded.",
							                                              row["DataType"]));
						}
						var pd = new PropertyDefinition(propertyName, propertyType);
						pdt.Add(pd);
					}
				}
				var schema = new ContextSchema(pdt);
				contextSchema.Add(contextName, schema);
				return schema;
			}
		}
Пример #12
0
		public override IContext CreateContext(string contextName, ContextSchema schema) {
			if(string.IsNullOrEmpty(contextName)) {
				throw new ArgumentNullException("contextName");
			}
			if(schema == null) {
				throw new ArgumentNullException("schema");
			}

			IContext context;

			lock(padlock) {
				if(ContextsContains(contextName)) {
					throw new ContextAlreadyExistsException("A context with the name [" + contextName + "] already exists.");
				}
				using(var transaction = TransactionFactory.BeginTransaction(CurrentDB)) {
					CurrentDB.ExecuteNonQuery("dbo.USER_CreateContext",
					                          transaction,
					                          CurrentDB.CreateStringInputParameter("@chvContext", DbType.AnsiString, contextName));
					foreach(var s in schema) {
						AddSchemaToContext(s, contextName, transaction);
					}
					context = new Context(contextName);
					transaction.Commit();
				}

				contexts.Add(context);
			}

			return context;
		}