Exemple #1
0
        /// <summary>
        /// Build a <see cref="DbCommand"/> from <paramref name="buildFrom"/>
        /// </summary>
        /// <param name="buildFrom">
        /// The build from.
        /// </param>
        /// <param name="allowedDataflows">
        /// The allowed dataflows.
        /// </param>
        /// <returns>
        /// The <see cref="DbCommand"/>.
        /// </returns>
        /// <remarks>
        /// It expects the input SQL query to have 7 format parameters.
        ///     1. <c>CL_ID</c>
        ///     2. <c>Dataflow ID</c>
        ///     3. <c>Dataflow Agency</c>
        ///     4. <c>Dataflow Version1</c>
        ///     5. <c>Dataflow Version2</c>
        ///     6. <c>Dataflow Version3</c>
        ///     7. <c>Concept ID</c>
        /// </remarks>
        public DbCommand Build(PartialCodesSqlQuery buildFrom, IList <IMaintainableRefObject> allowedDataflows)
        {
            string paramId          = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.IdParameter);
            string dataflowId       = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.DataflowIdParameter);
            string dataflowAgency   = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.AgencyParameter);
            string dataflowVersion1 = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.VersionParameter1);
            string dataflowVersion2 = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.VersionParameter2);
            string dataflowVersion3 = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.VersionParameter3);
            string conceptId        = this._mappingStoreDb.BuildParameterName(ParameterNameConstants.ConceptIdParameter);

            var query              = new StringBuilder();
            var securityCriteria   = new StringBuilder();
            var securityParameters = new List <DbParameter>();

            SecurityHelper.AddWhereClauses(buildFrom.DataflowReference, this._mappingStoreDb, securityCriteria, securityParameters, allowedDataflows, WhereState.And);

            query.AppendFormat(CultureInfo.InvariantCulture, buildFrom.QueryInfo.ToString(), paramId, dataflowId, dataflowAgency, dataflowVersion1, dataflowVersion2, dataflowVersion3, conceptId, securityCriteria);

            var version    = buildFrom.DataflowReference.SplitVersion(3);
            var parameters = new List <DbParameter>
            {
                this._mappingStoreDb.CreateInParameter(ParameterNameConstants.IdParameter, DbType.Int64, buildFrom.ParentSysId),
                this._mappingStoreDb.CreateInParameter(ParameterNameConstants.DataflowIdParameter, DbType.AnsiString, buildFrom.DataflowReference.MaintainableId),
                this._mappingStoreDb.CreateInParameter(ParameterNameConstants.AgencyParameter, DbType.AnsiString, buildFrom.DataflowReference.AgencyId),
                this._mappingStoreDb.CreateInParameter(ParameterNameConstants.VersionParameter1, DbType.Int64, version[0].ToDbValue()),
                this._mappingStoreDb.CreateInParameter(ParameterNameConstants.VersionParameter2, DbType.Int64, version[1].ToDbValue(0)),
                this._mappingStoreDb.CreateInParameter(ParameterNameConstants.VersionParameter3, DbType.Int64, version[2].ToDbValue()),
                this._mappingStoreDb.CreateInParameter(ParameterNameConstants.ConceptIdParameter, DbType.AnsiString, buildFrom.ConceptId)
            };

            parameters.AddRange(securityParameters);
            return(this._mappingStoreDb.GetSqlStringCommand(query.ToString(), parameters));
        }
Exemple #2
0
        /// <summary>
        /// Create the WHERE clause from the <paramref name="maintainableRef"/>  and write it to <paramref name="sqlCommand"/>
        /// </summary>
        /// <param name="maintainableRef">
        /// The maintainable Ref.
        /// </param>
        /// <param name="sqlCommand">
        /// The output string buffer
        /// </param>
        /// <param name="whereState">
        /// the current state of the WHERE clause in <paramref name="sqlCommand"/>
        /// </param>
        /// <param name="allowedDataflows">
        /// The allowed Dataflows.
        /// </param>
        /// <returns>
        /// The list of <see cref="DbParameter"/>
        /// </returns>
        protected override IList <DbParameter> CreateArtefactWhereClause(IMaintainableRefObject maintainableRef, StringBuilder sqlCommand, WhereState whereState, IList <IMaintainableRefObject> allowedDataflows)
        {
            IList <DbParameter> parameters = this.CreateArtefactWhereClause(maintainableRef, sqlCommand, whereState);

            if (parameters.Count > 0)
            {
                whereState = WhereState.And;
            }

            if (this._filter == DataflowFilter.Production)
            {
                SqlHelper.AddWhereClause(sqlCommand, whereState, DataflowConstant.ProductionWhereClause);
                whereState = WhereState.And;
            }

            return(SecurityHelper.AddWhereClauses(maintainableRef, this.MappingStoreDB, sqlCommand, parameters, allowedDataflows, whereState));
        }
Exemple #3
0
        /// <summary>
        /// Build a <see cref="DbCommand"/> from <paramref name="buildFrom"/>
        /// </summary>
        /// <param name="buildFrom">
        /// The <see cref="SqlQueryBase"/> based class to build from.
        /// </param>
        /// <param name="allowedDataflows">
        /// The allowed Dataflows.
        /// </param>
        /// <returns>
        /// The <see cref="DbCommand"/>.
        /// </returns>
        public DbCommand Build(ReferenceSqlQuery buildFrom, IList <IMaintainableRefObject> allowedDataflows)
        {
            IList <DbParameter> parameters = new List <DbParameter>();
            var sqlCommand = new StringBuilder();
            var whereState = WhereState.Nothing;

            if (this._filter == DataflowFilter.Production)
            {
                SqlHelper.AddWhereClause(sqlCommand, whereState, CategorisationConstant.ProductionWhereClause);
                whereState = WhereState.And;
            }

            SecurityHelper.AddWhereClauses(null, this._mappingStoreDb, sqlCommand, parameters, allowedDataflows, whereState);

            var sqlQuery = string.Format(CultureInfo.InvariantCulture, buildFrom.QueryInfo.QueryFormat, sqlCommand);

            return(this._mappingStoreDb.GetSqlStringCommand(sqlQuery, parameters));
        }