Esempio n. 1
0
        /// <summary>
        /// Initialize the mappings using the configuration and
        /// the list of types
        /// </summary>
        public static void Initialize(IConfigurationSource source, params Type[] types)
        {
            lock (lockConfig)
            {
                if (isInitialized)
                {
                    throw new ActiveRecordInitializationException("You can't invoke ActiveRecordStarter.Initialize more than once");
                }

                if (source == null)
                {
                    throw new ArgumentNullException("source");
                }

                if (types == null)
                {
                    throw new ArgumentNullException("types");
                }

                foreach (Type type in types)
                {
                    registeredAssemblies.Add(type.Assembly);
                }

                registeredTypes = new Dictionary <Type, string>();

                configSource = source;

                // First initialization
                ISessionFactoryHolder holder = CreateSessionFactoryHolderImplementation(source);

                holder.ThreadScopeInfo = CreateThreadScopeInfoImplementation(source);

                RaiseSessionFactoryHolderCreated(holder);

                ActiveRecordBase.holder = holder;
                ActiveRecordModel.type2Model.Clear();
                ActiveRecordModel.isDebug             = source.Debug;
                ActiveRecordModel.isLazyByDefault     = source.IsLazyByDefault;
                ActiveRecordModel.pluralizeTableNames = source.PluralizeTableNames;

                RegisterEventListeners(types);

                if (configSource.Searchable)
                {
                    contributors.Add(new NHSearchContributor());
                }

                // Sets up base configuration
                SetUpConfiguration(source, typeof(ActiveRecordBase), holder);

                RegisterTypes(holder, source, types, true);

                // If the configuration uses the AR ByteCode, do not autoinitialize proxies.
                AutoinitializeProxy = !UseARByteCode(configSource, types);

                isInitialized = true;
            }
        }
 /// <summary>
 /// Добавить этап в конец списка (применяется только для системных этапов)
 /// </summary>
 /// <param name="stage"></param>
 public virtual void AddStage(ProductionOrderBatchLifeCycleTemplateStage stage)
 {
     RecalculateOrdinalNumbers();
     stages.Add(stage);
     stage.Template      = this;
     stage.OrdinalNumber = (short)StageCount;
     CheckStageOrder();
 }
Esempio n. 3
0
 public Owner(Language language, Badge badge) : this()
 {
     if (badge == null)
     {
         throw new ArgumentNullException("badge");
     }
     _language = language;
     _badges.Add(badge);
     badge.SetOwner(this);
 }
Esempio n. 4
0
        /// <summary>
        /// Установка нового вида распространения и добавление в список одного места хранения
        /// </summary>
        public virtual void AddStorage(Storage storage)
        {
            ValidationUtils.NotNull(storage, "Место хранения не указано.");

            CheckPossibilityToAddStorage();

            if (storages.Contains(storage))
            {
                throw new Exception("Место хранения уже имеется в списке.");
            }

            storages.Add(storage);
        }
Esempio n. 5
0
        /// <summary>
        /// Добавление квоты по сделке
        /// </summary>
        /// <param name="quota">Квота по сделке</param>
        public virtual void AddQuota(DealQuota quota)
        {
            CheckPossibilityToAddQuota();

            ValidationUtils.Assert(quota.IsActive, "Невозможно добавить недействующую квоту.");
            quotas.Add(quota);
        }
Esempio n. 6
0
        /// <summary>
        /// Добавление пользователя в аккаунт клиента
        /// </summary>
        /// <param name="clientUser"></param>
        public virtual void AddUser(ClientUser clientUser)
        {
            ValidationUtils.Assert(!Users.Any(x => x.Login == clientUser.Login), "Пользователь с данным логином уже принадлежит аккаунту клиента.");

            users.Add(clientUser);
            clientUser.Client = this;
        }
Esempio n. 7
0
 public virtual void addTakmicenjeDescription(RezultatskoTakmicenjeDescription desc)
 {
     if (TakmicenjeDescriptions.Add(desc))
     {
         desc.RedBroj = (byte)(TakmicenjeDescriptions.Count - 1);
     }
 }
        /// <summary>
        /// Добавление оплаты
        /// </summary>
        /// <param name="payment">Оплата</param>
        public virtual void AddPayment(ProductionOrderPayment payment)
        {
            ValidationUtils.NotNull(payment, "Необходимо указать платеж.");
            ValidationUtils.Assert(!payments.Contains(payment), "Данная оплата уже связана с этим транспортным листом.");

            payment.ProductionOrderPlannedPayment = this;
            payments.Add(payment);
        }
Esempio n. 9
0
        public IDbCommand Generate(string commandText, CommandType type, DbParameter[] parameters)
        {
            IDbCommand cmd = factory.ConnectionProvider.Driver.GenerateCommand(commandText, type, parameters);

            LogOpenPreparedCommand();
            commandsToClose.Add(cmd);
            return(cmd);
        }
Esempio n. 10
0
        /// <summary>
        /// Добавление связанной фабрики-изготовителя
        /// </summary>
        /// <param name="manufacturer"></param>
        public virtual void AddManufacturer(Manufacturer manufacturer)
        {
            if (manufacturers.Contains(manufacturer))
            {
                throw new Exception(String.Format("Фабрика-изготовитель «{0}» уже связана с данным производителем.", manufacturer.Name));
            }

            manufacturers.Add(manufacturer);
        }
        /// <summary>
        /// Добавление оплаты
        /// </summary>
        /// <param name="payment">Оплата</param>
        protected internal virtual void AddPayment(ProductionOrderCustomsDeclarationPayment payment)
        {
            if (payments.Contains(payment))
            {
                throw new Exception("Данная оплата уже связана с этим таможенным листом.");
            }

            payments.Add(payment);
        }
Esempio n. 12
0
 public virtual void initPoredakSpravaFinaleKupa(Gimnastika gimnastika)
 {
     foreach (Sprava s in Sprave.getSprave(gimnastika))
     {
         PoredakSpravaFinaleKupa poredak = new PoredakSpravaFinaleKupa();
         poredak.Sprava = s;
         _poredakSpravaFinaleKupa.Add(poredak);
     }
 }
Esempio n. 13
0
        /// <summary>
        /// Добавление заказа на производство в команду
        /// </summary>
        /// <param name="deal">Заказ на производство</param>
        public virtual void AddProductionOrder(ProductionOrder order)
        {
            if (productionOrders.Any(x => x.Id == order.Id))
            {
                throw new Exception("Заказ на производство уже входит в область видимости данной команды.");
            }

            productionOrders.Add(order);
        }
Esempio n. 14
0
        /// <summary>
        /// Добавление места хранения в команду
        /// </summary>
        /// <param name="deal">Место хранения</param>
        public virtual void AddStorage(Storage storage)
        {
            if (storages.Any(x => x.Id == storage.Id))
            {
                throw new Exception("Место хранения уже входит в область видимости данной команды.");
            }

            storages.Add(storage);
        }
Esempio n. 15
0
        /// <summary>
        /// Добавление сделки в команду
        /// </summary>
        /// <param name="deal">Сделка</param>
        public virtual void AddDeal(Deal deal)
        {
            if (deals.Any(x => x.Id == deal.Id))
            {
                throw new Exception("Сделка уже входит в область видимости данной команды.");
            }

            deals.Add(deal);
        }
Esempio n. 16
0
        /// <summary>
        /// Добавление планируемой оплаты
        /// </summary>
        /// <param name="payment">Оплата</param>
        protected internal virtual void AddPlannedPayment(ProductionOrderPlannedPayment payment)
        {
            if (plannedPayments.Contains(payment))
            {
                throw new Exception("Данная оплата уже связана с этим заказом.");
            }

            plannedPayments.Add(payment);
        }
        /// <summary>
        /// Добавление оплаты
        /// </summary>
        /// <param name="payment">Оплата</param>
        protected internal virtual void AddPayment(ProductionOrderExtraExpensesSheetPayment payment)
        {
            if (payments.Contains(payment))
            {
                throw new Exception("Данная оплата уже связана с этим листом дополнительных расходов.");
            }

            payments.Add(payment);
        }
Esempio n. 18
0
        protected internal virtual void AddContractor(Contractor contractor)
        {
            if (contractors.Contains(contractor))
            {
                throw new Exception("Данный контрагент уже связан с этим договором.");
            }

            contractors.Add(contractor);
        }
        /// <summary>
        /// Добавление оплаты
        /// </summary>
        /// <param name="payment">Оплата</param>
        protected internal virtual void AddPayment(ProductionOrderTransportSheetPayment payment)
        {
            if (payments.Contains(payment))
            {
                throw new Exception("Данная оплата уже связана с этим транспортным листом.");
            }

            payments.Add(payment);
        }
Esempio n. 20
0
        protected internal virtual void AddContract(Contract contract)
        {
            if (contracts.Contains(contract))
            {
                throw new Exception("Данный договор уже связан с этой организацией.");
            }

            contracts.Add(contract);
        }
Esempio n. 21
0
 // NOTE: Metodi addKategorija i removeKategorija upravljaju dvosmernom
 // asocijacijom izmedju Takmicenja i TakmicarskeKategorije
 public virtual bool addKategorija(TakmicarskaKategorija kat)
 {
     if (Kategorije.Add(kat))
     {
         kat.setTakmicenjeInternal(this);
         kat.RedBroj = (byte)(Kategorije.Count - 1);
         return(true);
     }
     return(false);
 }
Esempio n. 22
0
        /// <summary>
        /// Добавление позиции РЦ
        /// </summary>
        public virtual void AddArticleAccountingPrice(ArticleAccountingPrice price)
        {
            if (IsAlreadyAddedArticle(price))
            {
                throw new Exception("Товар уже имеется в списке.");
            }

            articlePrices.Add(price);
            price.AccountingPriceList = this;
        }
Esempio n. 23
0
        /// <summary>
        /// Добавление договора
        /// </summary>
        /// <param name="newContract">Добавляемый договор</param>
        public virtual void AddContract(Contract contract)
        {
            if (contracts.Contains(contract))
            {
                throw new Exception("Данный договор уже связан с этой организацией.");
            }

            contracts.Add(contract);
            contract.AccountOrganization = this;
        }
Esempio n. 24
0
        public virtual void AddModelo(Modelo modelo)
        {
            if (modelo.Marca != null && !Equals(modelo.Marca, this))
            {
                modelo.Marca.RemoveModelo(modelo);
            }

            modelo.Marca = this;
            _modelos.Add(modelo);
        }
Esempio n. 25
0
        /// <summary>
        /// Добавление распространения права роли
        /// </summary>
        public virtual void AddPermissionDistribution(PermissionDistribution permissionDistribution)
        {
            if (PermissionDistributions.Any(x => x.Permission == permissionDistribution.Permission))
            {
                throw new Exception(String.Format("Роль «{0}» уже обладает правом «{1}».", Name, permissionDistribution.Permission.GetDisplayName()));
            }

            permissionDistributions.Add(permissionDistribution);
            permissionDistribution.Role = this;
        }
Esempio n. 26
0
        /// <summary>
        /// Добавление новой услуги в набор
        /// </summary>
        /// <param name="service"></param>
        public virtual void AddNewService(DateTime currentDateTime)
        {
            ValidationUtils.Assert(IsCurrent, "Невозможно добавить услугу не в текущий набор.");
            ValidationUtils.Assert(!Services.Any(x => x.IsCurrent), "Невозможно добавить услугу в набор, в котором уже есть активная услуга.");

            var service = new Service(currentDateTime);

            services.Add(service);
            service.ServiceSet = this;
        }
Esempio n. 27
0
 // NOTE: Za takmicenja sa vise kola ne proveravam kod, zato sto se cesto desi situacija da se npr imena ekipa
 // ne poklapaju (npr. razlikuju se u par slova), a kodovi su isti, pa onda prijavljuje gresku.
 public virtual bool addEkipa(Ekipa ekipa, bool proveriKod)
 {
     if (proveriKod && existsEkipaKod(ekipa.Kod))
     {
         string msg = "Ekipa sa datim kodom vec postoji.\n\n";
         msg += "Ekipa: " + ekipa.Naziv;
         msg += "\nKod: " + ekipa.Kod;
         throw new BusinessException("Kod", msg);
     }
     return(Ekipe.Add(ekipa));
 }
Esempio n. 28
0
 public Takmicenje3(Gimnastika gimnastika)
 {
     foreach (Sprava s in Sprave.getSprave(gimnastika))
     {
         if (s != Sprava.Preskok)
         {
             _poredak.Add(new PoredakSprava(DeoTakmicenjaKod.Takmicenje3, s));
         }
     }
     _poredakPreskok = new PoredakPreskok(DeoTakmicenjaKod.Takmicenje3);
 }
Esempio n. 29
0
        /// <summary>
        /// Добавление пользователя в команду
        /// </summary>
        /// <param name="team"></param>
        public virtual void AddTeam(Team team)
        {
            if (teams.Any(x => x.Id == team.Id))
            {
                throw new Exception("Пользователь уже входит в состав данной команды.");
            }

            teams.Add(team);
            if (!team.Users.Any(x => x.Id == Id))
            {
                team.AddUser(this);
            }
        }
Esempio n. 30
0
        /// <summary>
        /// Добавление роли пользователю
        /// </summary>
        /// <param name="role"></param>
        public virtual void AddRole(Role role)
        {
            if (roles.Any(x => x.Id == role.Id))
            {
                throw new Exception("Пользователь уже обладает данной ролью.");
            }

            roles.Add(role);
            if (!role.Users.Any(x => x.Id == Id))
            {
                role.AddUser(this);
            }
        }
Esempio n. 31
0
		protected AbstractEntityPersister(PersistentClass persistentClass, ICacheConcurrencyStrategy cache,
		                                  ISessionFactoryImplementor factory)
		{
			this.factory = factory;
			this.cache = cache;
			isLazyPropertiesCacheable = persistentClass.IsLazyPropertiesCacheable;
			cacheEntryStructure = factory.Settings.IsStructuredCacheEntriesEnabled
			                      	? (ICacheEntryStructure) new StructuredCacheEntry(this)
			                      	: (ICacheEntryStructure) new UnstructuredCacheEntry();

			entityMetamodel = new EntityMetamodel(persistentClass, factory);

			if (persistentClass.HasPocoRepresentation)
			{
				//TODO: this is currently specific to pojos, but need to be available for all entity-modes
				foreach (Subclass subclass in persistentClass.SubclassIterator)
				{
					entityNameBySubclass[subclass.MappedClass] = subclass.EntityName;
				}
			}
			int batch = persistentClass.BatchSize;
			if (batch == -1)
				batch = factory.Settings.DefaultBatchFetchSize;

			batchSize = batch;
			hasSubselectLoadableCollections = persistentClass.HasSubselectLoadableCollections;

			propertyMapping = new BasicEntityPropertyMapping(this);

			#region IDENTIFIER

			identifierColumnSpan = persistentClass.Identifier.ColumnSpan;
			rootTableKeyColumnNames = new string[identifierColumnSpan];
			identifierAliases = new string[identifierColumnSpan];

			rowIdName = persistentClass.RootTable.RowId;

			loaderName = persistentClass.LoaderName;

			// TODO NH: Not safe cast to Column
			int i = 0;
			foreach (Column col in persistentClass.Identifier.ColumnIterator)
			{
				rootTableKeyColumnNames[i] = col.GetQuotedName(factory.Dialect);
				identifierAliases[i] = col.GetAlias(factory.Dialect, persistentClass.RootTable);
				i++;
			}

			#endregion

			#region VERSION

			if (persistentClass.IsVersioned)
			{
				foreach (Column col in persistentClass.Version.ColumnIterator)
				{
					versionColumnName = col.GetQuotedName(factory.Dialect);
					break; //only happens once
				}
			}
			else
			{
				versionColumnName = null;
			}

			#endregion

			#region WHERE STRING

			sqlWhereString = !string.IsNullOrEmpty(persistentClass.Where) ? "( " + persistentClass.Where + ") " : null;
			sqlWhereStringTemplate = sqlWhereString == null
			                         	? null
			                         	: Template.RenderWhereStringTemplate(sqlWhereString, factory.Dialect,
			                         	                                     factory.SQLFunctionRegistry);

			#endregion

			#region PROPERTIES

			bool lazyAvailable = IsInstrumented(EntityMode.Poco);

			int hydrateSpan = entityMetamodel.PropertySpan;
			propertyColumnSpans = new int[hydrateSpan];
			propertySubclassNames = new string[hydrateSpan];
			propertyColumnAliases = new string[hydrateSpan][];
			propertyColumnNames = new string[hydrateSpan][];
			propertyColumnFormulaTemplates = new string[hydrateSpan][];
			propertyUniqueness = new bool[hydrateSpan];
			propertySelectable = new bool[hydrateSpan];
			propertyColumnUpdateable = new bool[hydrateSpan][];
			propertyColumnInsertable = new bool[hydrateSpan][];
			ISet thisClassProperties = new HashedSet();

			lazyProperties = new HashedSet<string>();
			List<string> lazyNames = new List<string>();
			List<int> lazyNumbers = new List<int>();
			List<IType> lazyTypes = new List<IType>();
			List<string[]> lazyColAliases = new List<string[]>();

			i = 0;
			bool foundFormula = false;

			foreach (Property prop in persistentClass.PropertyClosureIterator)
			{
				thisClassProperties.Add(prop);

				int span = prop.ColumnSpan;
				propertyColumnSpans[i] = span;
				propertySubclassNames[i] = prop.PersistentClass.EntityName;
				string[] colNames = new string[span];
				string[] colAliases = new string[span];
				string[] templates = new string[span];
				int k = 0;
				foreach (ISelectable thing in prop.ColumnIterator)
				{
					colAliases[k] = thing.GetAlias(factory.Dialect, prop.Value.Table);
					if (thing.IsFormula)
					{
						foundFormula = true;
						templates[k] = thing.GetTemplate(factory.Dialect, factory.SQLFunctionRegistry);
					}
					else
					{
						colNames[k] = thing.GetTemplate(factory.Dialect, factory.SQLFunctionRegistry);
					}
					k++;
				}
				propertyColumnNames[i] = colNames;
				propertyColumnFormulaTemplates[i] = templates;
				propertyColumnAliases[i] = colAliases;

				if (lazyAvailable && prop.IsLazy)
				{
					lazyProperties.Add(prop.Name);
					lazyNames.Add(prop.Name);
					lazyNumbers.Add(i);
					lazyTypes.Add(prop.Value.Type);
					lazyColAliases.Add(colAliases);
				}

				propertyColumnUpdateable[i] = prop.Value.ColumnUpdateability;
				propertyColumnInsertable[i] = prop.Value.ColumnInsertability;

				propertySelectable[i] = prop.IsSelectable;

				propertyUniqueness[i] = prop.Value.IsAlternateUniqueKey;

				i++;
			}
			hasFormulaProperties = foundFormula;
			lazyPropertyColumnAliases = lazyColAliases.ToArray();
			lazyPropertyNames = lazyNames.ToArray();
			lazyPropertyNumbers = lazyNumbers.ToArray();
			lazyPropertyTypes = lazyTypes.ToArray();

			#endregion

			#region SUBCLASS PROPERTY CLOSURE

			List<string> columns = new List<string>();
			List<bool> columnsLazy = new List<bool>();
			List<string> aliases = new List<string>();
			List<string> formulas = new List<string>();
			List<string> formulaAliases = new List<string>();
			List<string> formulaTemplates = new List<string>();
			List<bool> formulasLazy = new List<bool>();
			List<IType> types = new List<IType>();
			List<string> names = new List<string>();
			List<string> classes = new List<string>();
			List<string[]> templates2 = new List<string[]>();
			List<string[]> propColumns = new List<string[]>();
			List<FetchMode> joinedFetchesList = new List<FetchMode>();
			List<CascadeStyle> cascades = new List<CascadeStyle>();
			List<bool> definedBySubclass = new List<bool>();
			List<int[]> propColumnNumbers = new List<int[]>();
			List<int[]> propFormulaNumbers = new List<int[]>();
			List<bool> columnSelectables = new List<bool>();
			List<bool> propNullables = new List<bool>();

			foreach (Property prop in persistentClass.SubclassPropertyClosureIterator)
			{
				names.Add(prop.Name);
				classes.Add(prop.PersistentClass.EntityName);
				bool isDefinedBySubclass = !thisClassProperties.Contains(prop);
				definedBySubclass.Add(isDefinedBySubclass);
				propNullables.Add(prop.IsOptional || isDefinedBySubclass); //TODO: is this completely correct?
				types.Add(prop.Type);

				string[] cols = new string[prop.ColumnSpan];
				string[] forms = new string[prop.ColumnSpan];
				int[] colnos = new int[prop.ColumnSpan];
				int[] formnos = new int[prop.ColumnSpan];
				int l = 0;
				bool lazy = prop.IsLazy && lazyAvailable;
				foreach (ISelectable thing in prop.ColumnIterator)
				{
					if (thing.IsFormula)
					{
						string template = thing.GetTemplate(factory.Dialect, factory.SQLFunctionRegistry);
						formnos[l] = formulaTemplates.Count;
						colnos[l] = -1;
						formulaTemplates.Add(template);
						forms[l] = template;
						formulas.Add(thing.GetText(factory.Dialect));
						formulaAliases.Add(thing.GetAlias(factory.Dialect));
						formulasLazy.Add(lazy);
					}
					else
					{
						string colName = thing.GetTemplate(factory.Dialect, factory.SQLFunctionRegistry);
						colnos[l] = columns.Count; //before add :-)
						formnos[l] = -1;
						columns.Add(colName);
						cols[l] = colName;
						aliases.Add(thing.GetAlias(factory.Dialect, prop.Value.Table));
						columnsLazy.Add(lazy);
						columnSelectables.Add(prop.IsSelectable);
					}
					l++;
				}
				propColumns.Add(cols);
				templates2.Add(forms);
				propColumnNumbers.Add(colnos);
				propFormulaNumbers.Add(formnos);

				joinedFetchesList.Add(prop.Value.FetchMode);
				cascades.Add(prop.CascadeStyle);
			}
			subclassColumnClosure = columns.ToArray();
			subclassColumnAliasClosure = aliases.ToArray();
			subclassColumnLazyClosure = columnsLazy.ToArray();
			subclassColumnSelectableClosure = columnSelectables.ToArray();

			subclassFormulaClosure = formulas.ToArray();
			subclassFormulaTemplateClosure = formulaTemplates.ToArray();
			subclassFormulaAliasClosure = formulaAliases.ToArray();
			subclassFormulaLazyClosure = formulasLazy.ToArray();

			subclassPropertyNameClosure = names.ToArray();
			subclassPropertySubclassNameClosure = classes.ToArray();
			subclassPropertyTypeClosure = types.ToArray();
			subclassPropertyNullabilityClosure = propNullables.ToArray();
			subclassPropertyFormulaTemplateClosure = templates2.ToArray();
			subclassPropertyColumnNameClosure = propColumns.ToArray();
			subclassPropertyColumnNumberClosure = propColumnNumbers.ToArray();
			subclassPropertyFormulaNumberClosure = propFormulaNumbers.ToArray();

			subclassPropertyCascadeStyleClosure = cascades.ToArray();
			subclassPropertyFetchModeClosure = joinedFetchesList.ToArray();

			propertyDefinedOnSubclass = definedBySubclass.ToArray();

			#endregion

			// Handle any filters applied to the class level
			filterHelper = new FilterHelper(persistentClass.FilterMap, factory.Dialect, factory.SQLFunctionRegistry);

			temporaryIdTableName = persistentClass.TemporaryIdTableName;
			temporaryIdTableDDL = persistentClass.TemporaryIdTableDDL;
		}
Esempio n. 32
0
		static PreprocessingParser()
		{
			operators = new HashedSet<string>();
			operators.Add("<=");
			operators.Add(">=");
			operators.Add("=>");
			operators.Add("=<");
			operators.Add("!=");
			operators.Add("<>");
			operators.Add("!#");
			operators.Add("!~");
			operators.Add("!<");
			operators.Add("!>");
			operators.Add("is not");
			operators.Add("not like");
			operators.Add("not in");
			operators.Add("not between");
			operators.Add("not exists");

			collectionProps = new Dictionary<string, string>();
			collectionProps.Add("elements", "elements");
			collectionProps.Add("indices", "indices");
			collectionProps.Add("size", "size");
			collectionProps.Add("maxindex", "maxIndex");
			collectionProps.Add("minindex", "minIndex");
			collectionProps.Add("maxelement", "maxElement");
			collectionProps.Add("minelement", "minElement");

			collectionProps.Add("index", "index");
		}