コード例 #1
0
        /// <summary>
        /// This object is passed to the OMS class to request data for the contained tables.
        /// </summary>
        /// <param name="beforeDate">The date on of before which the data is desired.</param>
        /// <param name="attributes">A unique list of Attribute Stores required to perform the simulation</param>
        public AssetRequestOMSDataStore(DateTime beforeDate, List <AttributeStore> attributes, OMSAssetConditionIndexStore conditionIndex)

        {
            _beforeDate     = beforeDate;
            _conditionIndex = conditionIndex;
            _tables         = new List <AssetRequestOMSTableStore>();
            if (attributes != null && attributes.Count > 0)
            {
                _assetTypeName = attributes[0].AssetType;

                foreach (AttributeStore attribute in attributes)
                {
                    if (!attribute.IsConditionCategory && attribute.AttributeField != "AGE")//Ignore AGE which is calculated in DecisionEngine and ConditionIndices which are got with different.
                    {
                        int index = Tables.FindIndex(delegate(AssetRequestOMSTableStore art) { return(art.TableName == attribute.OmsTable); });
                        if (index < 0)
                        {
                            string foreignKey               = null;
                            string primaryKey               = null;
                            string foreignKeyTable          = null;
                            AssetRequestOMSTableStore table = new AssetRequestOMSTableStore(attribute.OmsTable);
                            table.Columns.Add(new AssetRequestOMSColumnStore(attribute.AttributeField.ToString(), attribute.OmsObjectUserIDHierarchy.ToString(), attribute.AttributeField));
                            OMS.GetPrimaryKeyForLookups(attribute.OmsOIDHierarchy, out primaryKey, out foreignKey, out foreignKeyTable);
                            table.PrimaryKeyColumn = primaryKey;
                            table.ForeignKeyColumn = foreignKey;
                            table.ForeignKeyTable  = foreignKeyTable;
                            _tables.Add(table);
                        }
                        else
                        {
                            Tables[index].Columns.Add(new AssetRequestOMSColumnStore(attribute.AttributeField.ToString(), attribute.OmsObjectUserIDHierarchy.ToString(), attribute.AttributeField));
                        }
                    }
                }
            }
        }
コード例 #2
0
ファイル: ActivityStore.cs プロジェクト: jakedw7/iAM
        /// <summary>
        /// Parses a DecisionEngine WHERE clause into a display element.
        /// </summary>
        public void ParseCriteria(string criteria, List <ConsequenceStore> consequences)
        {
            if (criteria != null)
            {
                criteria     = RemoveDoubleWhiteSpace(criteria);
                _whereClause = criteria;

                List <string> listCriteria = new List <string>();//List of omsExpressions
                int           lastOpen     = -1;
                int           i            = 0;
                while (i < _whereClause.Length)//Find all expressions
                {
                    if (_whereClause[i] == '(')
                    {
                        lastOpen = i;
                    }
                    if (_whereClause[i] == ')' && lastOpen >= 0)
                    {
                        string expression = _whereClause.Substring(lastOpen, i - lastOpen + 1);
                        if (expression.Contains("["))
                        {
                            byte   numberExpressions = (byte)listCriteria.Count;
                            string placeHolder       = numberExpressions.ToString("x2");
                            listCriteria.Add(expression);
                            _whereClause = _whereClause.Replace(expression, placeHolder);
                            i            = 0;
                        }
                        lastOpen = -1;
                    }
                    else
                    {
                        i++;
                    }
                }

                OMSAssetConditionIndexStore oci = OMS.GetAssetConditionIndex(_assetName);
                _conditionIndexes = new List <ActivityConditionIndex>();
                foreach (OMSConditionIndexStore ci in oci.ConditionIndexes)
                {
                    List <string> conditionExpressions = new List <string>();
                    for (int j = 0; j < listCriteria.Count; j++)
                    {
                        string expression = listCriteria[j];
                        if (expression != null)
                        {
                            string attribute = "[__" + ci.AttributeDE + "]";
                            if (expression.Contains(attribute))
                            {
                                conditionExpressions.Add(expression);

                                //Remove expression from criteria to get non-condition index criteria
                                criteria = criteria.Replace("AND " + expression, "");
                                criteria = criteria.Replace(expression, "");

                                listCriteria[j] = null;
                            }
                        }
                    }
                    ActivityConditionIndex activityConditionIndex = new ActivityConditionIndex(ci, conditionExpressions, consequences);
                    _conditionIndexes.Add(activityConditionIndex);
                }

                //Pickup OverallConditionIndex
                List <string> OCIExpressions = new List <string>();
                for (int j = 0; j < listCriteria.Count; j++)
                {
                    string expression = listCriteria[j];
                    if (expression != null)
                    {
                        string attribute = "[OverallConditionIndex]";
                        if (expression.Contains(attribute))
                        {
                            OCIExpressions.Add(expression);

                            //Remove expression from criteria to get non-condition index criteria
                            criteria = criteria.Replace("AND " + expression, "");
                            criteria = criteria.Replace(expression, "");

                            listCriteria[j] = null;
                        }
                    }
                }
                ActivityConditionIndex activityOCI = new ActivityConditionIndex(OCIExpressions, consequences);
                _conditionIndexes.Add(activityOCI);


                _criteria = criteria.Trim();
                if (_criteria.Length > 3 && _criteria.Substring(0, 3) == "AND")
                {
                    _criteria = _criteria.Substring(3);
                }
            }
        }