public FirewallRule(NameParameter name, DirectionParameter direction, ActionParameter action)
        {
            if (name == null) throw new ArgumentNullException(nameof(name));
            if (direction == null) throw new ArgumentNullException(nameof(direction));
            if (action == null) throw new ArgumentNullException(nameof(action));

            Name = name;
            Direction = direction;
            Action = action;
        }
Exemple #2
0
        /// <summary>
        /// Recupera os dados do objeto submetido tendo como base os valores
        /// da chave contidos no objeto submetido.
        /// </summary>
        /// <param name="session">Sess�o utilizada para a execu��o do comando.</param>
        /// <param name="objData">Objeto contendo os dados das chaves.</param>
        /// <returns>Model com os dados recuperados.</returns>
        public Model RecoverData(GDASession session, Model objData)
        {
            string        sqlParam   = "";
            StringBuilder buf        = new StringBuilder("SELECT ");
            List <Mapper> properties = Keys;

            if (properties.Count == 0)
            {
                throw new GDAException("In model {0} not found keys for to recover data.", objData.GetType().FullName);
            }
            DirectionParameter[] dp = new DirectionParameter[] {
                DirectionParameter.Input,
                DirectionParameter.InputOutput,
                DirectionParameter.OutputOnlyInsert
            };
            List <Mapper> columns = MappingManager.GetMappers <Model>(null, dp);

            foreach (Mapper column in columns)
            {
                buf.Append(UserProvider.QuoteExpression(column.Name)).Append(",");
            }
            buf.Remove(buf.Length - 1, 1);
            buf.Append(" FROM ").Append(SystemTableName).Append(" ");
            GDAParameter[] parameters = new GDAParameter[properties.Count];
            int            i          = 0;

            foreach (Mapper mapper in properties)
            {
                if (sqlParam != "")
                {
                    sqlParam += " AND ";
                }
                parameters[i] = new GDAParameter(UserProvider.ParameterPrefix + mapper.Name + UserProvider.ParameterSuffix, typeof(Model).GetProperty(mapper.PropertyMapper.Name).GetValue(objData, null));
                sqlParam     += UserProvider.QuoteExpression(mapper.Name) + "=" + parameters[i].ParameterName;
                i++;
            }
            buf.Append("WHERE ").Append(sqlParam);
            return(RecoverData(session, objData, buf.ToString(), parameters));
        }
        /// <summary>
        /// Recupera as propriedades de persistencia que são usadas pela ação de atualização.
        /// </summary>
        /// <param name="instanceType"></param>
        /// <param name="propertyNames"></param>
        /// <param name="direction"></param>
        /// <param name="typeMetadata"></param>
        /// <param name="isConditional"></param>
        /// <returns></returns>
        private IEnumerable <System.Reflection.PropertyInfo> GetUpdatePersistenceProperties(Type instanceType, string[] propertyNames, DirectionPropertiesName direction, ITypeMetadata typeMetadata, bool isConditional)
        {
            var parameterTypes = new PersistenceParameterType[] {
                PersistenceParameterType.Field
            };
            var directions = new DirectionParameter[] {
                DirectionParameter.Output,
                DirectionParameter.InputOptionalOutput,
                DirectionParameter.InputOutput
            };
            var mapping = typeMetadata.Where(f => directions.Contains(f.Direction) && parameterTypes.Contains(f.ParameterType)).ToList();

            FilterMapping(propertyNames, direction, mapping, typeMetadata, PersistenceActionType.Update);
            if (isConditional)
            {
                return(mapping.Select(f => instanceType.GetProperty(f.Name)).Where(f => f != null));
            }
            else
            {
                return(mapping.Union(typeMetadata.GetKeyProperties(), PropertyMetadataEqualityComparer.Instance).Select(f => instanceType.GetProperty(f.Name)).Where(f => f != null));
            }
        }
Exemple #4
0
        public void TestDirectionParameter()
        {
            var generator = new TestFactoryBuilder()
                            .Build();

            var accessor = generator.Create <IDirectionParameterAccessor>();

            var con = new MockDbConnection();

            con.SetupCommand(cmd =>
            {
                cmd.Executing = c =>
                {
                    Assert.Equal("PROC", c.CommandText);
                    Assert.Equal("1", c.Parameters[nameof(DirectionParameter.InParam)].Value);
                    Assert.Equal(2, c.Parameters[nameof(DirectionParameter.InOutParam)].Value);

                    c.Parameters[nameof(DirectionParameter.InOutParam)].Value = 3;
                    c.Parameters[nameof(DirectionParameter.OutParam)].Value   = 4;
                    c.Parameters.OfType <MockDbParameter>().First(x => x.Direction == ParameterDirection.ReturnValue).Value = 5;
                };
                cmd.SetupResult(100);
            });

            var parameter = new DirectionParameter
            {
                InParam    = "1",
                InOutParam = 2
            };

            accessor.Call(con, parameter);

            Assert.Equal(3, parameter.InOutParam);
            Assert.Equal(4, parameter.OutParam);
            Assert.Equal(5, parameter.Result);
        }
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="propertyCode">Código da propriedade.</param>
 /// <param name="name">Nome da propriedade.</param>
 /// <param name="columnName">Nome da coluna associada.</param>
 /// <param name="propertyType">Nome do tipo associado com a propriedade.</param>
 /// <param name="foreignKeyTypeCode">Código de um tipo cuja propriedade é foreign key.</param>
 /// <param name="isCacheIndexed">Identifica se está no cache.</param>
 /// <param name="direction">Direção de persistencia da propriedade.</param>
 /// <param name="isVolatile">Define se o campo deve ser sempre recuperado do banco de dados</param>
 /// <param name="parameterType">Tipo de parametro que a propriedade representa.</param>
 /// <param name="isForeignMember">Boleano que define se a propriedade é referência alguma tabela.</param>
 public PropertyMetadata(int propertyCode, string name, string columnName, string propertyType, int?foreignKeyTypeCode = null, bool isCacheIndexed = true, DirectionParameter direction = DirectionParameter.InputOutput, bool isVolatile = false, PersistenceParameterType parameterType = PersistenceParameterType.Field, bool isForeignMember = false)
 {
     _propertyCode       = propertyCode;
     _name               = name;
     _columnName         = columnName;
     _propertyType       = propertyType;
     _foreignKeyTypeCode = foreignKeyTypeCode;
     _isCacheIndexed     = isCacheIndexed;
     _direction          = direction;
     _parameterType      = parameterType;
     _isForeignKey       = isForeignMember;
     _isVolatile         = isVolatile;
 }
Exemple #6
0
        /// <summary>
        /// Captura os attributes PersistenceProperty das propriedades da classe refenciada.
        /// </summary>
        /// <param name="typeModel">Tipo do modelo de onde será recuperado o mapeamento.</param>
        /// <param name="typesParam">Tipos de parametros a serem filtrados. null para não se aplicar nenhum filtro.</param>
        /// <param name="directions">Sentido dos atributos a serem filtrados. Default Input, InputOutput</param>
        /// <param name="returnFirstFound">True para retorna o primeiro valor encontrado.</param>
        /// <returns>Lista com todas os atributos, obedecendo o filtro.</returns>
        public static List <Mapper> GetMappers(Type typeModel, PersistenceParameterType[] typesParam, DirectionParameter[] directions, bool returnFirstFound)
        {
            var           persistencePropertyAttributes = MappingManager.LoadPersistencePropertyAttributes(typeModel);
            List <Mapper> result           = new List <Mapper>();
            var           propertiesMapped = persistencePropertyAttributes.Mappers;

            if (directions == null)
            {
                directions = new DirectionParameter[] {
                    DirectionParameter.Input,
                    DirectionParameter.InputOptionalOutput,
                    DirectionParameter.InputOutput,
                    DirectionParameter.OutputOnlyInsert,
                    DirectionParameter.InputOptional,
                    DirectionParameter.InputOptionalOutput
                }
            }
            ;
            bool itemFound;

            if (propertiesMapped != null)
            {
                foreach (Mapper mapper in propertiesMapped)
                {
                    if (mapper == null)
                    {
                        continue;
                    }
                    if (typesParam != null)
                    {
                        itemFound = false;
                        foreach (PersistenceParameterType ppt in typesParam)
                        {
                            if (ppt == mapper.ParameterType)
                            {
                                itemFound = true;
                                break;
                            }
                        }
                        if (!itemFound)
                        {
                            continue;
                        }
                    }
                    if (directions != null)
                    {
                        itemFound = false;
                        foreach (DirectionParameter dp in directions)
                        {
                            if (dp == mapper.Direction)
                            {
                                itemFound = true;
                                break;
                            }
                        }
                        if (!itemFound)
                        {
                            continue;
                        }
                    }
                    result.Add(mapper);
                    if (returnFirstFound)
                    {
                        break;
                    }
                }
            }
            return(result);
        }
        /// <summary>
        /// Adiciona a propriedade para o mapeamento.
        /// </summary>
        /// <param name="propertiesSelector"></param>
        /// <param name="column"></param>
        /// <returns></returns>
        public PropertyMappingBuilder <T> Add(Expression <Func <T, object> > propertySelector, string column, DirectionParameter direction)
        {
            if (propertySelector == null)
            {
                throw new ArgumentNullException("propertySelector");
            }

            _properties.Add(new PropertyMapping(GDA.Extensions.GetMember(propertySelector).Name, column, PersistenceParameterType.Field, 0, false, false, direction, null, null, null, null));

            return(this);
        }
Exemple #8
0
 public ParameterSP(string nome, object valore, int dim, DirectionParameter direzione, System.Data.DbType t) :
     this(nome, valore, dim, direzione)
 {
     this.Tipo = t;
 }
Exemple #9
0
 public ParameterSP(string nome, object valore, DirectionParameter direzione) :
     this(nome, valore, 0, direzione)
 {
 }
 /// <summary>
 /// Construtor.
 /// </summary>
 /// <param name="name">Nome que o campo representa no BD.</param>
 /// <param name="size">Tamanho que o campo.</param>
 /// <param name="direction">Dire��o em que os dados devem ser tratados.</param>
 public PersistencePropertyAttribute(string name, int size, DirectionParameter direction)
 {
     m_Name      = name;
     m_Size      = size;
     m_Direction = direction;
 }
 /// <summary>
 /// Construtor.
 /// </summary>
 /// <param name="name">Nome que o campo representa no BD.</param>
 /// <param name="parameterType">Tipo do campo no BD.</param>
 /// <param name="size">Tamanho que o campo.</param>
 /// <param name="direction">Dire��o em que os dados devem ser tratados.</param>
 public PersistencePropertyAttribute(string name, PersistenceParameterType parameterType, int size, DirectionParameter direction) : this(name, parameterType, direction)
 {
     m_Size = size;
 }
 /// <summary>
 /// Construtor.
 /// </summary>
 /// <param name="name">Nome que o campo representa no BD.</param>
 /// <param name="parameterType">Tipo do campo no BD.</param>
 /// <param name="direction">Dire��o em que os dados devem ser tratados.</param>
 public PersistencePropertyAttribute(string name, PersistenceParameterType parameterType, DirectionParameter direction) : this(name, parameterType)
 {
     m_Direction = direction;
 }
Exemple #13
0
        /// <summary>
        /// Funzione per la creazione di un parametro da passare ad una store
        /// </summary>
        /// <param name="parameterName">Nome del parametro</param>
        /// <param name="initializationValue">Valore da utilizzare per inizializzare il parametro</param>
        /// <param name="parameterDirection">Direzione del parametro</param>
        /// <param name="parameterLength">Lunghezza del campo</param>
        /// <param name="parameterType">Tipo di parametro</param>
        /// <returns>Parametro da inviare alla store</returns>
        private ParameterSP CreateParameter(String parameterName, Object initializationValue, DirectionParameter parameterDirection, int parameterLength, DbType parameterType)
        {
            // Creazione e restituzione del parametro
            ParameterSP parameter;

            parameter      = new ParameterSP(parameterName, initializationValue, parameterDirection);
            parameter.Size = parameterLength;
            parameter.Tipo = parameterType;

            return(parameter);
        }
Exemple #14
0
 /// <summary>
 /// Constrói uma instancia do mapeamento da propriedade.
 /// </summary>
 /// <param name="name">Nome da propriedade</param>
 /// <param name="column">Nome da coluna relacionada com a propriedade.</param>
 /// <param name="parameterType">Tipo do parametro do mapeamento.</param>
 /// <param name="size">Tamanho da coluna.</param>
 /// <param name="isNotPersists">Identifica se a propriedade não para ser persistida.</param>
 /// <param name="isNotNull">Identifica se a propriedade aceita valores nulos.</param>
 /// <param name="direction">Direção do mapeamento da propriedade.</param>
 /// <param name="generatorKeyName">Nome do gerador de chave usado pela propriedade.</param>
 /// <param name="foreignKey">Dados da chave estrangeira relacionada.</param>
 /// <param name="foreignMember">Dados do membro estrangeiro relacionado.</param>
 /// <param name="validators">Validadores aplicados a propriedade.</param>
 public PropertyMapping(string name, string column, PersistenceParameterType parameterType, int size, bool isNotPersists, bool isNotNull, DirectionParameter direction, string generatorKeyName, ForeignKeyMapping foreignKey, ForeignMemberMapping foreignMember, IEnumerable <ValidatorMapping> validators)
 {
     if (string.IsNullOrEmpty(name))
     {
         throw new ArgumentNullException("name");
     }
     this.Name             = name;
     this.Column           = string.IsNullOrEmpty(column) ? name : column;
     this.ParameterType    = parameterType;
     this.Size             = size;
     this.IsNotPersists    = isNotPersists;
     this.IsNotNull        = isNotNull;
     this.Direction        = direction;
     this.GeneratorKeyName = generatorKeyName;
     this.ForeignKey       = foreignKey;
     this.ForeignMember    = foreignMember;
     Validators            = new List <ValidatorMapping>();
     if (validators != null)
     {
         foreach (var i in validators)
         {
             if (!Validators.Exists(f => f.Name == i.Name))
             {
                 Validators.Add(i);
             }
         }
     }
 }