private void AddEntityInsertStatement(IChild child, EntityInfo childInfo, DateTime timeStamp)
        {
            var builder   = new ComplexCommandBuilder();
            var statement = new InsertStatement(childInfo.Name);

            foreach (var element in childInfo.Elements)
            {
                var value     = element.Name == "TimeStamp" ? timeStamp : element.GetValue(child);
                var parameter = value.ToParameter();
                statement.Add(element.Name, parameter.Name);

                builder.AddParameter(parameter);
            }

            foreach (var dataType in childInfo.DataTypes)
            {
                foreach (var element in dataType.Elements)
                {
                    var value     = dataType.GetValue(element, child);
                    var parameter = value.ToParameter();
                    statement.Add(element.Name, parameter.Name);
                    builder.AddParameter(parameter);
                }
            }

            builder.AddStatement(statement);
            Add(builder);

            AddSaveStatements(child, childInfo, timeStamp);

            child.Save(timeStamp);
        }
Esempio n. 2
0
        private void AddChildStatements(IComplexCommandBuilder parentBuilder, EntityInfo entityInfo, IFilter filter)
        {
            foreach (var childInfo in entityInfo.Children)
            {
                var childBuilder = new ComplexCommandBuilder(childInfo.Name, childInfo.Type);
                childBuilder.AddStatement(new SelectStatement(childInfo, filter));
                foreach (var parameter in filter.Parameters)
                {
                    childBuilder.AddParameter(parameter);
                    //logger.Debug("  parameter name=" + parameter.Name + "value=" + parameter.Value.ToString());
                }

                parentBuilder.AddChild(childBuilder);

                AddChildStatements(childBuilder, childInfo, filter);
            }

            foreach (var valueInfo in entityInfo.Values)
            {
                var valueBuilder = new ComplexCommandBuilder(valueInfo.Name, valueInfo.Type);
                valueBuilder.AddStatement(new SelectStatement(valueInfo, filter));
                foreach (var parameter in filter.Parameters)
                {
                    valueBuilder.AddParameter(parameter);
                    //logger.Debug("  parameter name=" + parameter.Name + "value=" + parameter.Value.ToString());
                }

                parentBuilder.AddChild(valueBuilder);
            }
        }
Esempio n. 3
0
        public ReverseQuery(IFactory factory, IFilter filter, Expression <Func <TParent, object> > property)
        {
            var parent    = new EntityInfo(typeof(TParent));
            var valueType = typeof(TValue);
            var valueInfo = new ValueInfo(parent, property.ToPropertyInfo(), valueType);

            //this.logger = logger;
            this.factory      = factory;
            this.valueBuilder = new ComplexCommandBuilder(valueInfo.Name, valueInfo.Type);

            rootName = "T_" + Guid.NewGuid().ToString().Replace("-", string.Empty);
            var selectStatement      = new SelectStatement(valueInfo, filter, parent, rootIdAlias);
            var createTableStatement = new CreateTableStatement(rootName, selectStatement);

            valueBuilder.AddStatement(createTableStatement);
            foreach (var parameter in filter.Parameters)
            {
                valueBuilder.AddParameter(parameter);
            }

            builder = new ComplexCommandBuilder(parent.Name, parent.Type);
            builder.AddStatement(new SelectStatement(parent, rootName, rootIdAlias));

            AddChildStatements(builder, parent);
        }
        private void AddDeleteStatements(IEntity entity, EntityInfo entityInfo)
        {
            foreach (var valueInfo in entityInfo.Values)
            {
                foreach (var value in entity.GetValues(valueInfo))
                {
                    var builder     = new ComplexCommandBuilder();
                    var idParameter = value.Id.ToParameter();
                    builder.AddParameter(idParameter);
                    var whereClause = string.Format("{0}.{1} = {2}", valueInfo.Name, valueInfo.Identifer.Name, idParameter.Name);
                    var statement   = new DeleteStatement(valueInfo.Name, whereClause);
                    builder.AddStatement(statement);
                    Add(builder);
                }
            }

            foreach (var childInfo in entityInfo.Children)
            {
                foreach (var child in entity.GetChildren(childInfo))
                {
                    var builder     = new ComplexCommandBuilder();
                    var idParameter = child.Id.ToParameter();
                    builder.AddParameter(idParameter);
                    var whereClause = string.Format("{0}.{1} = {2}", childInfo.Name, childInfo.Identifier.Name, idParameter.Name);
                    var statement   = new DeleteStatement(childInfo.Name, whereClause);
                    builder.AddStatement(statement);

                    AddDeleteStatements(child, childInfo);
                    Add(builder);
                }
            }
        }
        private void AddEntityInsertStatement(IEntity entity, EntityInfo entityInfo, DateTime timeStamp)
        {
            var builder   = new ComplexCommandBuilder();
            var statement = new InsertStatement(entityInfo.Name);

            foreach (var element in entityInfo.Elements)
            {
                var value     = element.IsTimeStamp ? timeStamp : element.GetValue(entity);
                var parameter = value.ToParameter();
                statement.Add(element.Name, parameter.Name);
                builder.AddParameter(parameter);
            }

            foreach (var dataType in entityInfo.DataTypes)
            {
                foreach (var element in dataType.Elements)
                {
                    var value     = dataType.GetValue(element, entity);
                    var parameter = value.ToParameter();
                    statement.Add(element.Name, parameter.Name);
                    builder.AddParameter(parameter);
                }
            }

            builder.AddStatement(statement);
            Add(builder);

            AddSaveStatements(entity, entityInfo, timeStamp);

            entity.Save(timeStamp);
        }
        private void AddRootCommandBuilder(EntityInfo entityInfo)
        {
            var builder = new ComplexCommandBuilder();

            builder.AddStatement(new CreateTableStatement(entityInfo));

            Add(builder);
        }
 private void AddSearchIndices(IEnumerable <ISearch> searches)
 {
     foreach (var search in searches)
     {
         var builder = new ComplexCommandBuilder();
         //var tableName = new EntityInfo(search.BaseType).Name;
         //var indexName = string.Format("{0}_{1}", tableName, search.Name);
         //builder.AddStatement(new CreateIndexStatement(search.SourceName, search.Name, false, search.Columns));
         builder.AddStatement(new CreateIndexStatement(search));
         Add(builder);
     }
 }
 private void AddLookupIndices(IEnumerable <ILookup> lookups)
 {
     foreach (var lookup in lookups)
     {
         var builder = new ComplexCommandBuilder();
         //var tableName = new EntityInfo(lookup.BaseType).Name;
         //var indexName = string.Format("{0}_{1}", tableName, lookup.Name);
         //builder.AddStatement(new CreateIndexStatement(tableName, indexName, true, lookup.Columns));
         builder.AddStatement(new CreateIndexStatement(lookup));
         Add(builder);
     }
 }
        protected void AddValueDeleteStatement(IValue value, ValueInfo valueInfo)
        {
            var builder = new ComplexCommandBuilder();

            var idParameter = value.Id.ToParameter();

            builder.AddParameter(idParameter);
            var whereClause = string.Format("{0}.{1} = {2}", valueInfo.Name, valueInfo.Identifer.Name, idParameter.Name);
            var statement   = new DeleteStatement(valueInfo.Name, whereClause);

            builder.AddStatement(statement);
            Add(builder);
        }
        protected void AddEntityDeleteStatement(IChild child, EntityInfo childInfo)
        {
            var builder = new ComplexCommandBuilder();

            var idParameter = child.Id.ToParameter();

            builder.AddParameter(idParameter);
            var whereClause = string.Format("{0}.{1} = {2}", childInfo.Name, childInfo.Identifier.Name, idParameter.Name);
            var statement   = new DeleteStatement(childInfo.Name, whereClause);

            builder.AddStatement(statement);
            Add(builder);

            AddDeleteStatements(child, childInfo);
        }
        private void AddValueInsertStatement(IValue value, ValueInfo valueInfo)
        {
            var builder   = new ComplexCommandBuilder();
            var statement = new InsertStatement(valueInfo.Name);

            foreach (var element in valueInfo.Elements)
            {
                var result    = element.GetValue(value);
                var parameter = result.ToParameter();
                statement.Add(element.Name, parameter.Name);
                builder.AddParameter(parameter);
            }

            builder.AddStatement(statement);
            Add(builder);

            value.Save();
        }
Esempio n. 12
0
        private void AddChildStatements(IComplexCommandBuilder parentBuilder, EntityInfo entityInfo)
        {
            foreach (var childInfo in entityInfo.Children)
            {
                var childBuilder = new ComplexCommandBuilder(childInfo.Name, childInfo.Type);
                childBuilder.AddStatement(new SelectStatement(childInfo, rootName, rootIdAlias));

                parentBuilder.AddChild(childBuilder);

                AddChildStatements(childBuilder, childInfo);
            }

            foreach (var valueInfo in entityInfo.Values)
            {
                var valueBuilder = new ComplexCommandBuilder(valueInfo.Name, valueInfo.Type);
                valueBuilder.AddStatement(new SelectStatement(valueInfo, rootName, rootIdAlias));

                parentBuilder.AddChild(valueBuilder);
            }
        }
        private void AddCommandBuilders(EntityInfo entityInfo)
        {
            foreach (var valueInfo in entityInfo.Values)
            {
                var builder = new ComplexCommandBuilder();
                builder.AddStatement(new CreateTableStatement(valueInfo));

                Add(builder);
            }

            foreach (var childInfo in entityInfo.Children)
            {
                var builder = new ComplexCommandBuilder();
                builder.AddStatement(new CreateTableStatement(childInfo));

                Add(builder);

                AddCommandBuilders(childInfo);
            }
        }
        private void AddEntityUpdateStatement(IChild child, EntityInfo childInfo, DateTime timeStamp)
        {
            var builder = new ComplexCommandBuilder();

            var idParameter = child.Id.ToParameter();

            builder.AddParameter(idParameter);
            var whereClause = string.Format("{0}.{1} = {2}", childInfo.Name, childInfo.Identifier.Name, idParameter.Name);
            var statement   = new UpdateStatement(childInfo.Name, whereClause);

            var timeStampParameter = timeStamp.ToParameter();

            statement.Set(childInfo.TimeStamp.Name, timeStampParameter.Name);
            builder.AddParameter(timeStampParameter);

            foreach (var element in childInfo.Elements.Where(x => !x.IsReadOnly))
            {
                var value     = element.GetValue(child);
                var parameter = value.ToParameter();
                statement.Set(element.Name, parameter.Name);
                builder.AddParameter(parameter);
            }

            foreach (var dataType in childInfo.DataTypes)
            {
                foreach (var element in dataType.Elements)
                {
                    var value     = dataType.GetValue(element, child);
                    var parameter = value.ToParameter();
                    statement.Set(element.Name, parameter.Name);
                    builder.AddParameter(parameter);
                }
            }

            builder.AddStatement(statement);
            Add(builder);

            AddSaveStatements(child, childInfo, timeStamp);

            child.Save(timeStamp);
        }
        private void AddValueMoveStatement(IValue value, ValueInfo valueInfo)
        {
            var builder = new ComplexCommandBuilder();

            var idParameter = value.Id.ToParameter();

            builder.AddParameter(idParameter);
            var whereClause = string.Format("{0}.{1} = {2}", valueInfo.Name, valueInfo.Identifer.Name, idParameter.Name);
            var statement   = new UpdateStatement(valueInfo.Name, whereClause);

            var seq = valueInfo.Sequence.GetValue(value);
            var sequenceParameter = seq.ToParameter();

            statement.Set(valueInfo.Sequence.Name, sequenceParameter.Name);
            builder.AddParameter(sequenceParameter);

            builder.AddStatement(statement);
            Add(builder);

            value.Save();
        }