Exemplo n.º 1
0
 public static void CheckPropertyNotARelation(AuditConfiguration verCfg, String entityName,
                                              String propertyName){
     if (verCfg.EntCfg[entityName].IsRelation(propertyName)) {
         throw new AuditException("This criterion cannot be used on a property that is " +
                 "a relation to another property.");
     }
 }
        public void MapToEntityFromMap(AuditConfiguration verCfg, Object obj, IDictionary<String, Object> data, Object primaryKey, IAuditReaderImplementor versionsReader, long revision)
        {
            //TODO in implementing second phase/////////////
            throw new NotImplementedException("Not Implemented!");

            //if (obj == null) {
            //    return;
            //}Not implememented

            //System.Type entityClass = ReflectionTools.loadClass(owningEntityName);

            //Object value;

            //try {
            //    value = versionsReader.CreateQuery().ForEntitiesAtRevision(entityClass, revision)
            //            //.Add( (AuditEntity.relatedId(owningReferencePropertyName).eq(primaryKey)).GetSingleResult();
            //} catch (NoResultException e) {
            //    value = null;
            //} catch (NonUniqueResultException e) {
            //    throw new AuditException("Many versions results for one-to-one relationship: (" + owningEntityName +
            //            ", " + owningReferencePropertyName + ")");
            //}

            //ISetter setter = ReflectionTools.getSetter(obj.getClass(), propertyData);
            //Catalina: la portare se foloseste PropertyInfo. Exemple in MultiPropertyMapper si SinglePropertyMapper
            //setter.set(obj, value, null);
        }
        protected AbstractAuditWorkUnit(ISessionImplementor sessionImplementor, String entityName, AuditConfiguration verCfg,
									    Object id) {
		    this.sessionImplementor = sessionImplementor;
            this.verCfg = verCfg;
            this.EntityId = id;
            this.EntityName = entityName;
        }
Exemplo n.º 4
0
        public void MapToEntityFromMap(NHibernate.Envers.Configuration.AuditConfiguration verCfg, object obj, IDictionary <object, object> data, object primaryKey, NHibernate.Envers.Reader.IAuditReaderImplementor versionsReader, long revision)
        {
            // //TODO in implementing second phase/////////////
            //if (obj == null) {
            //     return;
            // }

            ////System.Type entityClass = ReflectionTools.loadClass(owningEntityName);
            // System.Runtime.Remoting.ObjectHandle hdl = Activator.CreateInstance(owningEntityName);
            // System.Type entityClass = hdl.GetType();
            // Object value;

            // try {
            //     value = versionsReader.CreateQuery().ForEntitiesAtRevision(entityClass, revision)
            //             .Add(AuditEntity.relatedId(owningReferencePropertyName).eq(primaryKey)).GetSingleResult();
            // } catch (NoResultException e) {
            //     value = null;
            // } catch (NonUniqueResultException e) {
            //     throw new AuditException("Many versions results for one-to-one relationship: (" + owningEntityName +
            //             ", " + owningReferencePropertyName + ")");
            // }

            // Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyData);
            // setter.set(obj, value, null);
        }
        public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters)
        {
            String propertyName = propertyNameGetter.Get(auditCfg);

            CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, propertyName);

            // This will be the aggregated query, containing all the specified conditions
            QueryBuilder subQb = qb.NewSubQueryBuilder();

            // Adding all specified conditions both to the main query, as well as to the
            // aggregated one.
            foreach (IAuditCriterion versionsCriteria in criterions) {
                versionsCriteria.AddToQuery(auditCfg, entityName, qb, parameters);
                versionsCriteria.AddToQuery(auditCfg, entityName, subQb, subQb.RootParameters);
            }

            // Setting the desired projection of the aggregated query
            switch (mode) {
                case AggregatedMode.MIN:
                    subQb.AddProjection("min", propertyName, false);
                    break;
                case AggregatedMode.MAX:
                    subQb.AddProjection("max", propertyName, false);
                    break;
            }

            // Adding the constrain on the result of the aggregated criteria
            parameters.AddWhere(propertyName, "=", subQb);
        }
 public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters)
 {
     String propertyName = propertyNameGetter.Get(auditCfg);
     CriteriaTools.CheckPropertyNotARelation(auditCfg, entityName, propertyName);
     parameters.AddWhereWithParam(propertyName, ">=", lo);
     parameters.AddWhereWithParam(propertyName, "<=", hi);
 }
 public EntitiesAtRevisionQuery(AuditConfiguration verCfg,
     IAuditReaderImplementor versionsReader, System.Type cls,
     long revision)
     : base(verCfg, versionsReader, cls)
 {
     this.revision = revision;
 }
        public void MapToEntityFromMap(AuditConfiguration verCfg, object obj, IDictionary data,
									   object primaryKey, IAuditReaderImplementor versionsReader, long revision)
        {
            if (data == null || obj == null)
            {
                return;
            }

            var setter = ReflectionTools.GetSetter(obj.GetType(), _propertyData);

            // If all properties are null and single, then the component has to be null also.
            var allNullAndSingle = true;
            foreach (var property in _delegate.Properties)
            {
                if (data[property.Key.Name] != null || !(property.Value is SinglePropertyMapper))
                {
                    allNullAndSingle = false;
                    break;
                }
            }

            // And we don't have to set anything on the object - the default value is null
            if (!allNullAndSingle)
            {
                var subObj = new Dictionary<string, object>();
                foreach (var propertyData in _delegate.Properties.Keys)
                {
                    subObj[propertyData.BeanName] = data[propertyData.Name];
                }
                setter.Set(obj, subObj);
            }
        }
Exemplo n.º 9
0
 public DelWorkUnit(ISessionImplementor sessionImplementor, String entityName, AuditConfiguration verCfg,
     Object id, IEntityPersister entityPersister, Object[] state)
     : base(sessionImplementor, entityName, verCfg, id)
 {
     this.state = state;
     this.propertyNames = entityPersister.PropertyNames;
 }
        public void AddToQuery(AuditConfiguration verCfg, String entityName, QueryBuilder qb, Parameters parameters)
        {
            Parameters opParameters = parameters.AddSubParameters(op);

            lhs.AddToQuery(verCfg, entityName, qb, opParameters.AddSubParameters("and"));
            rhs.AddToQuery(verCfg, entityName, qb, opParameters.AddSubParameters("and"));
        }
        public void MapToEntityFromMap(AuditConfiguration verCfg, Object obj, IDictionary<String, Object> data, 
                                       Object primaryKey, IAuditReaderImplementor versionsReader, long revision)
        {
            if (data == null || obj == null) {
                return;
            }

            //ORIG: Setter setter = ReflectionTools.getSetter(obj.getClass(), propertyData);
            PropertyInfo propInfo = obj.GetType().GetProperty(propertyData.Name);

		    // If all properties are null and single, then the component has to be null also.
		    bool allNullAndSingle = true;
		    foreach (KeyValuePair<PropertyData, IPropertyMapper> property in _delegate.Properties) {
			    if (data[property.Key.Name] != null || !(property.Value is SinglePropertyMapper)) {
				    allNullAndSingle = false;
				    break;
			    }
		    }

		    // And we don't have to set anything on the object - the default value is null
		    if (!allNullAndSingle) {
			    try {
                    //ORIG: Object subObj = ReflectHelper.getDefaultConstructor(
                    //        Thread.currentThread().getContextClassLoader().loadClass(componentClassName)).newInstance();
                    //setter.set(obj, subObj, null);
                    object subObj = Activator.CreateInstance(Toolz.ResolveDotnetType(componentClassName));
                    propInfo.SetValue(obj, subObj, null);

				    _delegate.MapToEntityFromMap(verCfg, subObj, data, primaryKey, versionsReader, revision);
			    } catch (Exception e) {
				    throw new AuditException(e);
			    }
		    }
        }
Exemplo n.º 12
0
        public void MapToEntityFromMap(AuditConfiguration verCfg, Object obj, IDictionary<String, Object> data, Object primaryKey,
            IAuditReaderImplementor versionsReader, long revision)
        {
            if (obj == null)
            {
                return;
            }

            Object entityId = delegat.MapToIdFromMap(DictionaryWrapper<String, Object>.Wrap((IDictionary)data[propertyData.Name]));
            Object value;
            if (entityId == null)
            {
                value = null;
            }
            else
            {
                if (versionsReader.FirstLevelCache.Contains(referencedEntityName, revision, entityId))
                {
                    value = versionsReader.FirstLevelCache[referencedEntityName, revision, entityId];
                }
                else
                {
                    //java: Class<?> entityClass = ReflectionTools.loadClass(referencedEntityName);
                    value = versionsReader.SessionImplementor.Factory.GetEntityPersister(referencedEntityName).CreateProxy(
                        entityId, new ToOneDelegateSessionImplementor(versionsReader, Toolz.ResolveDotnetType(referencedEntityName), entityId, revision, verCfg));
                }
            }
            PropertyInfo propInfo = obj.GetType().GetProperty(propertyData.Name);
            propInfo.SetValue(obj, value, null);
        }
Exemplo n.º 13
0
 public AddWorkUnit(ISessionImplementor sessionImplementor, String entityName, AuditConfiguration verCfg,
     Object id, IEntityPersister entityPersister, Object[] state)
     : base(sessionImplementor, entityName, verCfg, id)
 {
     data = new Dictionary<String, Object>();
     verCfg.EntCfg[EntityName].PropertyMapper.Map(sessionImplementor, data,
         entityPersister.PropertyNames, state, null);
 }
Exemplo n.º 14
0
        public DelWorkUnit(ISessionImplementor sessionImplementor, string entityName, AuditConfiguration verCfg,
						   object id, IEntityPersister entityPersister, object[] state)
            : base(sessionImplementor, entityName, verCfg, id, RevisionType.Deleted)
        {
            this.state = state;
            propertyNames = entityPersister.PropertyNames;
            this.entityPersister = entityPersister;
        }
Exemplo n.º 15
0
        public ModWorkUnit(ISessionImplementor sessionImplementor, string entityName, AuditConfiguration verCfg, 
						   object id, IEntityPersister entityPersister, object[] newState, object[] oldState)
            : base(sessionImplementor, entityName, verCfg, id, RevisionType.Modified)
        {
            Data = new Dictionary<string, object>();
            changes = verCfg.EntCfg[EntityName].PropertyMapper.Map(sessionImplementor, Data,
                    entityPersister.PropertyNames, newState, oldState);
        }
Exemplo n.º 16
0
 public ModWorkUnit(ISessionImplementor sessionImplementor, String entityName, AuditConfiguration verCfg, 
     Object id, IEntityPersister entityPersister, Object[] newState, Object[] oldState)
     : base(sessionImplementor, entityName, verCfg, id)
 {
     data = new Dictionary<String, Object>();
     changes = verCfg.EntCfg[EntityName].PropertyMapper.Map(sessionImplementor, data,
             entityPersister.PropertyNames, newState, oldState);
 }
Exemplo n.º 17
0
        public EntitiesAtRevisionQuery(AuditConfiguration verCfg,
										IAuditReaderImplementor versionsReader,
										string entityName,
										long revision)
            : base(verCfg, versionsReader, entityName)
        {
            _revision = revision;
        }
 public PersistentCollectionChangeWorkUnit(ISessionImplementor sessionImplementor, String entityName,
     AuditConfiguration verCfg, Object id,
     IList<PersistentCollectionChangeData> collectionChanges,
     String referencingPropertyName)
     : base(sessionImplementor, entityName, verCfg, id)
 {
     this.collectionChanges = collectionChanges;
     this.ReferencingPropertyName = referencingPropertyName;
 }
 public RevisionsOfEntityQuery(AuditConfiguration verCfg,
     IAuditReaderImplementor versionsReader,
     System.Type cls, bool selectEntitiesOnly,
     bool selectDeletedEntities)
     : base(verCfg, versionsReader, cls)
 {
     this.selectEntitiesOnly = selectEntitiesOnly;
     this.selectDeletedEntities = selectDeletedEntities;
 }
        public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters) {
            String propertyName = propertyNameGetter.Get(auditCfg);
            RelationDescription relatedEntity = CriteriaTools.GetRelatedEntity(auditCfg, entityName, propertyName);

            if (relatedEntity == null) {
                parameters.AddWhereWithParam(propertyName, "<>", null);
            } else {
                relatedEntity.IdMapper.AddIdEqualsToQuery(parameters, null, propertyName, false);
            }
        }
Exemplo n.º 21
0
        public RevisionsOfEntityQuery(AuditConfiguration verCfg,
							IAuditReaderImplementor versionsReader,
							string entityName,
							bool selectEntitiesOnly,
							bool selectDeletedEntities)
            : base(verCfg, versionsReader, entityName)
        {
            this.selectEntitiesOnly = selectEntitiesOnly;
            this.selectDeletedEntities = selectDeletedEntities;
        }
        public ToOneDelegateSessionImplementor(IAuditReaderImplementor versionsReader,
											   object entityId, long revision, 
											   AuditConfiguration verCfg)
            : base(versionsReader.SessionImplementor)
        {
            this.versionsReader = versionsReader;
            this.entityId = entityId;
            this.revision = revision;
            entCfg = verCfg.EntCfg;
        }
        public void AddToQuery(AuditConfiguration verCfg, String entityName, QueryBuilder qb, Parameters parameters) {
            Parameters andParameters = parameters.AddSubParameters(Parameters.AND);

            if (criterions.Count == 0) {
                andParameters.AddWhere("1", false, "=", "1", false);
            } else {
                foreach (IAuditCriterion criterion in criterions) {
                    criterion.AddToQuery(verCfg, entityName, qb, andParameters);
                }
            }
        }
        private PersistentCollectionChangeWorkUnit(ISessionImplementor sessionImplementor, 
												string entityName,
												AuditConfiguration verCfg, 
												object id,
												IList<PersistentCollectionChangeData> collectionChanges,
												string referencingPropertyName)
            : base(sessionImplementor, entityName, verCfg, id, RevisionType.Modified)
        {
            this.collectionChanges = collectionChanges;
            this.referencingPropertyName = referencingPropertyName;
        }
        public void AddToQuery(AuditConfiguration auditCfg, String entityName, QueryBuilder qb, Parameters parameters) {
            String propertyName = propertyNameGetter.Get(auditCfg);
            
            RelationDescription relatedEntity = CriteriaTools.GetRelatedEntity(auditCfg, entityName, propertyName);

            if (relatedEntity == null) {
                throw new AuditException("This criterion can only be used on a property that is " +
                        "a relation to another property.");
            } else {
                relatedEntity.IdMapper.AddIdEqualsToQuery(parameters, id, propertyName, equals);
            }
        }
        public PersistentCollectionChangeWorkUnit(ISessionImplementor sessionImplementor, String entityName,
            AuditConfiguration auditCfg, IPersistentCollection collection,
            CollectionEntry collectionEntry, Object snapshot, Object id,
            String referencingPropertyName)
            : base(sessionImplementor, entityName, auditCfg, 
                    new PersistentCollectionChangeWorkUnitId(id, collectionEntry.Role))
        {
            this.ReferencingPropertyName = referencingPropertyName;

            collectionChanges = auditCfg.EntCfg[EntityName].PropertyMapper
                    .MapCollectionChanges(referencingPropertyName, collection, snapshot, id);
        }
        public static AuditConfiguration getFor(Cfg.Configuration cfg) {
            AuditConfiguration verCfg = null;
            if(cfgs.Keys.Contains(cfg))
                verCfg = cfgs[cfg];
            else{
                verCfg = new AuditConfiguration(cfg);
                cfgs.Add(cfg, verCfg);
                
                cfg.BuildMappings();
            }

            return verCfg;
        }
 public ToOneDelegateSessionImplementor(IAuditReaderImplementor versionsReader,
     System.Type entityClass,
     Object entityId, long revision,
     AuditConfiguration verCfg)
     : base(versionsReader.SessionImplementor)
 {
     this.versionsReader = versionsReader;
     this.entityClass = entityClass;
     this.entityId = entityId;
     this.revision = revision;
     EntitiesConfigurations entCfg = verCfg.EntCfg;
     notVersionedEntityConfiguration = entCfg.GetNotVersionEntityConfiguration(entityClass.FullName);
 }
Exemplo n.º 29
0
        public void AddToQuery(AuditConfiguration auditCfg, string entityName, QueryBuilder qb, Parameters parameters)
        {
            var propertyName = propertyNameGetter.Get(auditCfg);
            var relatedEntity = CriteriaTools.GetRelatedEntity(auditCfg, entityName, propertyName);

            if (relatedEntity == null)
            {
                parameters.AddNullRestriction(propertyName, true);
            }
            else
            {
                relatedEntity.IdMapper.AddIdEqualsToQuery(parameters, null, propertyName, true);
            }
        }
        public FakeBidirectionalRelationWorkUnit(ISessionImplementor sessionImplementor, String entityName,
            AuditConfiguration verCfg, Object id,
            String referencingPropertyName, Object owningEntity,
            RelationDescription rd, RevisionType revisionType,
            Object index,
            IAuditWorkUnit nestedWorkUnit)
            : base(sessionImplementor, entityName, verCfg, id)
        {
            this.nestedWorkUnit = nestedWorkUnit;

            // Adding the change for the relation.
            fakeRelationChanges = new Dictionary<String, FakeRelationChange>();
            fakeRelationChanges.Add(referencingPropertyName, new FakeRelationChange(owningEntity, rd, revisionType, index));
        }
        protected AbstractAuditQuery(AuditConfiguration verCfg, IAuditReaderImplementor versionsReader,
                                        System.Type cls) {
            this.verCfg = verCfg;
            this.versionsReader = versionsReader;

            criterions = new List<IAuditCriterion>();
            entityInstantiator = new EntityInstantiator(verCfg, versionsReader);

            entityName = cls.FullName;
            
            versionsEntityName = verCfg.AuditEntCfg.GetAuditEntityName(entityName);

            qb = new QueryBuilder(versionsEntityName, "e");
        }
Exemplo n.º 32
0
        public static AuditConfiguration GetFor(Cfg.Configuration cfg)
        {
            if (!configurations.TryGetValue(cfg, out var verCfg))
            {
                cfg.SetEnversProperty(ConfigurationKey.UniqueConfigurationName, Guid.NewGuid().ToString());
                cfg.BuildMappings();                 // force secondpass for mappings added by users
                if (!configurationMetadataProvider.TryGetValue(cfg, out var metas))
                {
                    metas = new AttributeConfiguration();
                }
                verCfg = new AuditConfiguration(cfg, metas);
                configurations.Add(cfg, verCfg);
            }

            return(verCfg);
        }
Exemplo n.º 33
0
 public GlobalConfiguration(AuditConfiguration auditConfiguration, IDictionary <string, string> properties)
 {
     GenerateRevisionsForCollections  = ConfigurationKey.RevisionOnCollectionChange.ToBool(properties);
     DoNotAuditOptimisticLockingField = ConfigurationKey.DoNotAuditOptimisticLockingField.ToBool(properties);
     StoreDataAtDelete = ConfigurationKey.StoreDataAtDelete.ToBool(properties);
     IsTrackEntitiesChangedInRevisionEnabled = ConfigurationKey.TrackEntitiesChangedInRevision.ToBool(properties);
     DefaultSchemaName          = ConfigurationKey.DefaultSchema.ToString(properties);
     DefaultCatalogName         = ConfigurationKey.DefaultCatalog.ToString(properties);
     CollectionMapperFactory    = ConfigurationKey.CollectionMapperFactory.ToInstance <ICollectionMapperFactory>(properties);
     CorrelatedSubqueryOperator = "=";
     IsGlobalWithModifiedFlag   = ConfigurationKey.GlobalWithModifiedFlag.ToBool(properties);
     ModifiedFlagSuffix         = ConfigurationKey.ModifiedFlagSuffix.ToString(properties);
     PostInstantiationListener  = ConfigurationKey.PostInstantiationListener.ToInstance <IPostInstantiationListener>(properties);
     AuditStrategy = ConfigurationKey.AuditStrategy.ToInstance <IAuditStrategy>(properties);
     AuditStrategy.Initialize(auditConfiguration);
     AllowIdentifierReuse = ConfigurationKey.AllowIdentifierReuse.ToBool(properties);
 }
Exemplo n.º 34
0
        public static AuditConfiguration getFor(Cfg.Configuration cfg)
        {
            AuditConfiguration verCfg = null;

            if (cfgs.Keys.Contains(cfg))
            {
                verCfg = cfgs[cfg];
            }
            else
            {
                verCfg = new AuditConfiguration(cfg);
                cfgs.Add(cfg, verCfg);

                cfg.BuildMappings();
            }

            return(verCfg);
        }