/// <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)); }
/// <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)); }
/// <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)); }