/// <summary> /// If an update has taken place, we must flush the caches for all associated matrixes (because the contact details are part of the matrix) /// </summary> /// <param name="Ado"></param> /// <param name="dto"></param> private void FlushAssociatedMatrixes(ADO Ado, Group_DTO_Update dto) { Matrix_ADO mAdo = new Matrix_ADO(Ado); //Get all the matrixes for Group var readGroupAccess = mAdo.ReadByGroup(dto.GrpCodeOld, Configuration_BSO.GetCustomConfig(ConfigType.global, "language.iso.code")); if (!readGroupAccess.hasData) { return; } //look maybe at ensuring there are no dupes (or maybe a switch to first return only live data..) foreach (var matrix in readGroupAccess.data) { //if (matrix.IsLive) //{ MemCacheD.CasRepositoryFlush(Resources.Constants.C_CAS_DATA_CUBE_READ_DATASET + matrix.MtrCode); MemCacheD.CasRepositoryFlush(Resources.Constants.C_CAS_DATA_CUBE_READ_METADATA + matrix.MtrCode); // } } //foreach (var matrix in readGroupAccess.data) //{ // MemCacheD.CasRepositoryFlush(Resources.Constants.C_CAS_DATA_CUBE_READ_PRE_DATASET + matrix.RlsCode); // MemCacheD.CasRepositoryFlush(Resources.Constants.C_CAS_DATA_CUBE_READ_PRE_METADATA + matrix.RlsCode); //} }
internal void UpdateIndexes(ADO ado) { ADO adoBatch = new ADO("msdbConnection"); Matrix_ADO m = new Matrix_ADO(ado); string dbName = m.getDbName(); string processName = "DataMatrixUpdateIndexes_" + dbName; var inputParams = new List <ADO_inputParams>() { new ADO_inputParams() { name = "@job_name", value = processName } }; var returnParam = new ADO_returnParam() { name = "@ReturnVal", value = 0 }; if (!m.IsProcessRunning(processName)) { try { adoBatch.ExecuteNonQueryProcedure("sp_start_job", inputParams, ref returnParam); } catch (Exception ex) { throw ex; } finally { adoBatch.CloseConnection(); adoBatch.Dispose(); } } }
/// <summary> /// constructor /// </summary> /// <param name="request"></param> internal Build_BSO_Validate(JSONRPC_API request) : base(request, new Build_Validate_VLD()) { matrixAdo = new Matrix_ADO(Ado); }
/// <summary> /// Create a keyword release /// </summary> /// <param name="Ado"></param> /// <param name="releaseId"></param> /// <param name="userName"></param> internal void Create(ADO Ado, int releaseId, string userName) { Release_ADO rAdo = new Data.Release_ADO(Ado); var latestRelease = Release_ADO.GetReleaseDTO(rAdo.ReadID(releaseId, userName)); if (latestRelease == null) return; rAdo.DeleteKeywords(latestRelease.RlsCode, userName); //Create the table that will be bulk inserted DataTable dt = new DataTable(); dt.Columns.Add("KRL_VALUE", typeof(string)); dt.Columns.Add("KRL_RLS_ID", typeof(int)); dt.Columns.Add("KRL_MANDATORY_FLAG", typeof(bool)); dt.Columns.Add("KRL_SINGULARISED_FLAG", typeof(bool)); Keyword_Release_ADO adoKeywordCreate = new Keyword_Release_ADO(); //Get the matrices for the RlsCode - There may be more than one e.g. if multiple languages are used in the same release Matrix_ADO mAdo = new Matrix_ADO(Ado); IList<dynamic> matrixList; matrixList = mAdo.ReadAllForRelease(latestRelease.RlsCode, userName); //Create the table rows foreach (dynamic item in matrixList) { //Get a Keyword Extractor - the particular version returned will depend on the language Keyword_BSO_Extract kbe = new Keyword_BSO_Extract(item.LngIsoCode); // IKeywordExtractor ext = kbe.GetExtractor(); //Add the keywords and other data to the output table AddToTable(ref dt, kbe.ExtractSplitSingular(item.MtrTitle), item.RlsID); //Add the MtrCode to the keyword list without any transformations AddToTable(ref dt, new List<string>() { item.MtrCode }, item.RlsID, false); //Add the Copyright Code AddToTable(ref dt, kbe.ExtractSplit(item.CprCode), item.RlsID, false); //Add the Copyright Value AddToTable(ref dt, kbe.ExtractSplit(item.CprValue), item.RlsID, false); //Add the Language AddToTable(ref dt, kbe.ExtractSplit(item.LngIsoName), item.RlsID, false); //Add the Frequency Code //AddToTable(ref dt, ext.ExtractSplit(item.FrqCode), item.RlsID); //Add the Frequency Value AddToTable(ref dt, kbe.ExtractSplitSingular(item.FrqValue), item.RlsID); //Get the keywords from Statistic IList<dynamic> statList = mAdo.ReadStatisticByRelease(latestRelease.RlsCode, item.LngIsoCode); foreach (dynamic statItem in statList) { AddToTable(ref dt, kbe.ExtractSplit(statItem.SttCode), item.RlsID, false); AddToTable(ref dt, kbe.ExtractSplitSingular(statItem.SttValue), item.RlsID); AddToTable(ref dt, kbe.ExtractSplitSingular(statItem.SttUnit), item.RlsID); } //Get the keywords from Classification IList<dynamic> classificationList = mAdo.ReadClassificationByRelease(latestRelease.RlsCode, item.LngIsoCode); foreach (dynamic classItem in classificationList) { AddToTable(ref dt, kbe.ExtractSplit(classItem.ClsCode), item.RlsID, false); AddToTable(ref dt, kbe.ExtractSplitSingular(classItem.ClsValue), item.RlsID); //Get the keywords from Variables IList<dynamic> variableList = mAdo.ReadVariableByRelease(latestRelease.RlsCode, item.LngIsoCode, classItem.ClsCode); foreach (dynamic variableItem in variableList) { AddToTable(ref dt, kbe.ExtractSplit(variableItem.VrbCode), item.RlsID, false); AddToTable(ref dt, kbe.ExtractSplitSingular(variableItem.VrbValue), item.RlsID); } } //Get the keywords from Period IList<dynamic> periodList = mAdo.ReadPeriodByRelease(latestRelease.RlsCode, item.LngIsoCode, item.FrqCode); foreach (dynamic periodItem in periodList) { AddToTable(ref dt, kbe.ExtractSplit(periodItem.PrdCode), item.RlsID, false); AddToTable(ref dt, kbe.ExtractSplitSingular(periodItem.PrdValue), item.RlsID); } } //Final check to make sure there are no duplicates adoKeywordCreate.Create(Ado, dt.DefaultView.ToTable(true, new string[4] { "KRL_VALUE", "KRL_RLS_ID", "KRL_MANDATORY_FLAG", "KRL_SINGULARISED_FLAG" })); }