Esempio n. 1
0
        public static void ConditionCategoryWeights(SimulationStore simulation)
        {
            List <String> assets = new List <String>();

            assets.Add(simulation.Asset);
            ConditionCategoryWeights(simulation.SimulationID, assets);
        }
Esempio n. 2
0
        private static void Performance(SimulationStore simulation)
        {
            List <String> assets = new List <String>();

            assets.Add(simulation.Asset);
            PrepareAnalysis.Performance(simulation.SimulationID, assets);
        }
Esempio n. 3
0
        //Retreives OMS default files and adds them to the RoadCare database.
        private static void InsertOMSActivities(SimulationStore simulation)
        {
            List <OMSActivityStore> activities = OMS.GetActivities(simulation.Asset);

            foreach (OMSActivityStore activity in activities)
            {
                AddActivity(activity, simulation);
            }
            AddNoTreatment(simulation);
        }
Esempio n. 4
0
        private static void Priorities(SimulationStore simulation)
        {
            DeleteScenario.DeletePriority(simulation.SimulationID);

            int identity = 0;

            try
            {
                using (SqlConnection connection = new SqlConnection(DB.ConnectionString))
                {
                    connection.Open();
                    string insert = "INSERT INTO " + DB.TablePrefix + "PRIORITY " +
                                    "(SIMULATIONID,PRIORITYLEVEL)" +
                                    "VALUES('" + simulation.SimulationID + "','1')";

                    SqlCommand cmd = new SqlCommand(insert, connection);
                    cmd.ExecuteNonQuery();

                    string table          = DB.TablePrefix + "PRIORITY";
                    string selectIdentity = "SELECT IDENT_CURRENT ('" + table + "') FROM " + table;
                    cmd      = new SqlCommand(selectIdentity, connection);
                    identity = Convert.ToInt32(cmd.ExecuteScalar());
                }
            }
            catch (Exception ex)
            {
                identity = 0;
                Utility.ExceptionHandling.DataAccessExceptionHandler.HandleException(ex, false);
            }

            foreach (CategoryBudgetStore budget in simulation.CategoryBudgets)
            {
                try
                {
                    using (SqlConnection connection = new SqlConnection(DB.ConnectionString))
                    {
                        connection.Open();
                        string insert = "INSERT INTO " + DB.TablePrefix + "PRIORITYFUND " +
                                        "(PRIORITYID,BUDGET,FUNDING)" +
                                        "VALUES('" + identity + "','" + budget.Key + "','100')";

                        SqlCommand cmd = new SqlCommand(insert, connection);
                        cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception ex)
                {
                    identity = 0;
                    Utility.ExceptionHandling.DataAccessExceptionHandler.HandleException(ex, false);
                }
            }
        }
Esempio n. 5
0
 /// <summary>
 /// This function for testing purposes.   This should be filled by the interface.
 /// </summary>
 /// <param name="simulation"></param>
 private static void ActivityFeasibilityCostConsequences(SimulationStore simulation)
 {
     if (!IsTreamentsDefined(simulation.SimulationID))
     {
         List <OMSActivityStore> activities = OMS.GetActivities(simulation.Asset);
         if (activities != null)
         {
             foreach (OMSActivityStore activity in activities)
             {
                 CreateScenario.AddActivity(activity, simulation);
             }
         }
     }
 }
Esempio n. 6
0
        /// <summary>
        /// Fills the Targets and Deficients tables with values from SimulationStore
        /// </summary>
        /// <param name="simulation">SimulationStore for this scenario</param>
        public static void TargetAndDeficients(SimulationStore simulation)
        {
            string simulationID = simulation.SimulationID;

            //Delete previous Targets and deficient.  Recalculate from SimulationStore
            DeleteScenario.DeleteTargets(simulationID);
            //This function will only perform useful work if Deficients are added below.
            DeleteScenario.DeleteDeficients(simulationID);

            try
            {
                //If USE_TARGET then set analysis type to Until Targets and Deficients Met
                using (SqlConnection connection = new SqlConnection(DB.ConnectionString))
                {
                    connection.Open();
                    string insert = "INSERT INTO " + DB.TablePrefix + "TARGETS " +
                                    "(SIMULATIONID,ATTRIBUTE_,TARGETMEAN,TARGETNAME)" +
                                    "VALUES('" + simulationID + "','OverallConditionIndex','" + simulation.TargetOCI + "','OMS')";

                    SqlCommand cmd = new SqlCommand(insert, connection);
                    cmd.ExecuteNonQuery();

                    //Allow determination of OCI limit and possible separate OCI Remaining Life
                    insert = "INSERT INTO " + DB.TablePrefix + "DEFICIENTS " +
                             "(SIMULATIONID,ATTRIBUTE_,DEFICIENTNAME,DEFICIENT,PERCENTDEFICIENT)" +
                             "VALUES('" + simulationID + "','OverallConditionIndex','OCI Deficient','0','0')";
                    cmd = new SqlCommand(insert, connection);
                    cmd.ExecuteNonQuery();

                    //This is so remaining life can be calculated for each individiual condition index
                    OMSAssetConditionIndexStore oci = OMS.GetAssetConditionIndex(simulation.Asset);
                    foreach (OMSConditionIndexStore ci in oci.ConditionIndexes)
                    {
                        insert = "INSERT INTO " + DB.TablePrefix + "DEFICIENTS " +
                                 "(SIMULATIONID,ATTRIBUTE_,DEFICIENTNAME,DEFICIENT,PERCENTDEFICIENT)" +
                                 "VALUES('" + simulationID + "','" + ci.AttributeDE + "','" + ci.AttributeDE + " Deficient','0','0')";
                        cmd = new SqlCommand(insert, connection);
                        cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ex)
            {
                Utility.ExceptionHandling.DataAccessExceptionHandler.HandleException(ex, false);
            }
        }
Esempio n. 7
0
        private static void InsertSimulationOCITargets(SimulationStore simulation)
        {
            int startYear = simulation.StartDate.Year;

            for (int i = 0; i < simulation.Years; i++)
            {
                int year = startYear + i;
                using (SqlConnection connection = new SqlConnection(DB.ConnectionString))
                {
                    connection.Open();
                    string insert = "INSERT INTO " + DB.TablePrefix + "TARGETS " +
                                    "(SIMULATIONID,ATTRIBUTE_,YEARS,TARGETMEAN,TARGETNAME,IS_OMS_PRIORITY)" +
                                    "VALUES('" + simulation.SimulationID + "','OverallConditionIndex','" + year.ToString() + "','75','OCI TARGET','0')";
                    SqlCommand cmd = new SqlCommand(insert, connection);
                    cmd.ExecuteNonQuery();
                }
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Convert SimulationStore into necessary tables entries for RoadCare
        /// </summary>
        /// <param name="simulationID"></param>
        public static void Simulation(string simulationID)
        {
            SimulationStore             simulation = SelectScenario.GetSimulationStore(simulationID);
            OMSAssetConditionIndexStore oci        = OMS.GetAssetConditionIndex(simulation.Asset);

            PrepareAnalysis.Priorities(simulation);
            //PrepareAnalysis.TargetAndDeficients(simulation);
            PrepareAnalysis.ConditionCategoryWeights(simulation);
            //PrepareAnalysis.Performance(simulation);
            //PrepareAnalysis.RepeatedActivities(simulation);
            //PrepareAnalysis.ActivityFeasibilityCostConsequences(simulation);
            List <AttributeStore>    attributes   = PrepareAnalysis.Attributes(simulation);
            AssetRequestOMSDataStore assetRequest = new AssetRequestOMSDataStore(DateTime.Now, attributes, oci);
            Dictionary <string, AssetReplyOMSLookupTable> assetLookups = OMS.GetAssetLookupData(assetRequest);
            List <AssetReplyOMSDataStore> assets = OMS.GetAssetData(assetRequest);
            List <AssetReplyOMSDataStore> assetsWithCondition = assets.FindAll(delegate(AssetReplyOMSDataStore arods) { return(arods.ConditionIndices != null); });

            PrepareAnalysis.Assets(simulation, assetsWithCondition, attributes, assetRequest, assetLookups);
        }
Esempio n. 9
0
        /// <summary>
        /// Creates a new Decision Engine Simulation and initializes it.
        /// </summary>
        /// <param name="username">Login username who created simulation.</param>
        /// <param name="asset">Asset for which scenario is being created</param>
        /// <returns>Returns the SimulationStore created so user interface can be populated.</returns>
        public static SimulationStore CreateNewSimulationStore(string username, string asset)
        {
            SimulationStore simulation = null;

            if (!string.IsNullOrWhiteSpace(username) && !string.IsNullOrWhiteSpace(asset))
            {
                try
                {
                    using (SqlConnection connection = new SqlConnection(DB.ConnectionString))
                    {
                        connection.Open();
                        string insert = "INSERT INTO " + DB.TablePrefix + "SIMULATIONS " +
                                        "(SIMULATION,NETWORKID,DATECREATED,USERNAME,BENEFIT_VARIABLE,BENEFIT_LIMIT,ANALYSIS, BUDGET_CONSTRAINT,ASSET_TYPE,RUN_TIME,USE_TARGET,TARGET_OCI,SIMULATION_AREA)" +
                                        "VALUES('New Simulation',1,'" + DateTime.Now.ToString() + "',@username,'OCI',0,'Benefit/Cost','Budget Target',@asset,'0','false','" + DB.DefaultTargetOCI.ToString() + "','1')";
                        SqlCommand cmd = new SqlCommand(insert, connection);

                        cmd.Parameters.Add(new SqlParameter("username", username));
                        cmd.Parameters.Add(new SqlParameter("asset", asset));
                        cmd.ExecuteNonQuery();
                        string table          = DB.TablePrefix + "SIMULATIONS";
                        string selectIdentity = "SELECT IDENT_CURRENT ('" + table + "') FROM " + table;
                        cmd = new SqlCommand(selectIdentity, connection);
                        int identity = Convert.ToInt32(cmd.ExecuteScalar());
                        InsertNewInvestment(identity.ToString(), asset);
                        simulation = SelectScenario.GetSimulationStore(identity.ToString());
                        InsertOMSActivities(simulation);
                        InsertSimulationOCITargets(simulation);
                        LoadPerformanceCurvesToDecisionEngine(identity, asset);
                    }
                }
                catch (Exception ex)
                {
                    Utility.ExceptionHandling.DataAccessExceptionHandler.HandleException(ex, false);
                }
            }
            return(simulation);
        }
Esempio n. 10
0
 private static void Assets(SimulationStore simulation, List <AssetReplyOMSDataStore> assets, List <AttributeStore> attributes, AssetRequestOMSDataStore assetRequest, Dictionary <string, AssetReplyOMSLookupTable> assetLookups)
 {
     PrepareAnalysis.Assets(simulation.SimulationID, assets, attributes, assetRequest, assetLookups, true);
 }
Esempio n. 11
0
        private static List <AttributeStore> Attributes(SimulationStore simulation)
        {
            DeleteScenario.DeleteAttributes(simulation.SimulationID);

            List <AttributeStore> attributes = DecisionEngine.GetTreatmentAttributes(simulation.Asset, simulation.SimulationID);


            List <AttributeStore> attributePriority = DecisionEngine.GetPriorityAttributes(simulation.Asset, simulation.SimulationID);

            foreach (AttributeStore attribute in attributePriority)
            {
                if (!attributes.Contains(attribute))
                {
                    attributes.Add(attribute);
                }
            }

            List <AttributeStore> attributePerformance = DecisionEngine.GetPerformanceAttributes(simulation.Asset, simulation.SimulationID);

            foreach (AttributeStore attribute in attributePerformance)
            {
                if (!attributes.Contains(attribute))
                {
                    attributes.Add(attribute);
                }
            }

            List <AttributeStore> attributeArea = OMS.ParseAttributes(simulation.Asset, simulation.SimulationArea);

            foreach (AttributeStore attribute in attributeArea)
            {
                if (!attributes.Contains(attribute))
                {
                    attributes.Add(attribute);
                }
            }

            //Retrieve a list of attributes that are marked as condition categories.
            List <AttributeStore> conditionCategoryAttributes = OMS.GetAssetAttributes(simulation.Asset).FindAll(delegate(AttributeStore a) { return(a.IsConditionCategory == true); });

            foreach (AttributeStore attribute in conditionCategoryAttributes)
            {
                if (!attributes.Contains(attribute))
                {
                    attributes.Add(attribute);
                }
            }


            OMSAssetConditionIndexStore oci = OMS.GetAssetConditionIndex(simulation.Asset);

            for (int i = 0; i < oci.ConditionIndexes.Count; i++)
            {
                string criteria = oci.Weights[i].Criteria;
                if (criteria != null)
                {
                    List <AttributeStore> ociCriteriaAttributes = OMS.ParseAttributes(simulation.Asset, criteria);
                    foreach (AttributeStore attribute in ociCriteriaAttributes)
                    {
                        if (!attributes.Contains(attribute))
                        {
                            attributes.Add(attribute);
                        }
                    }
                }
            }


            //Adds attributes for JurisdictionFilter
            List <AttributeStore> jurisdictionAttributes = OMS.ParseAttributes(simulation.Asset, simulation.Jurisdiction);

            foreach (AttributeStore attribute in jurisdictionAttributes)
            {
                if (!attributes.Contains(attribute))
                {
                    attributes.Add(attribute);
                }
            }


            //Add street for output display
            AttributeStore attributeStreet = OMS.GetAssetAttributes(simulation.Asset).Find(delegate(AttributeStore a) { return(a.OmsObjectUserIDHierarchy == "Street"); });

            if (attributeStreet != null && !attributes.Contains(attributeStreet))
            {
                attributes.Add(attributeStreet);
            }

            //Add ID for output display
            AttributeStore attributeID = OMS.GetAssetAttributes(simulation.Asset).Find(delegate(AttributeStore a) { return(a.OmsObjectUserIDHierarchy == "ID"); });

            if (attributeID != null && !attributes.Contains(attributeID))
            {
                attributes.Add(attributeID);
            }

            //Add Installed for calculation of AGE
            AttributeStore attributeInstalled = OMS.GetAssetAttributes(simulation.Asset).Find(delegate(AttributeStore a) { return(a.OmsObjectUserIDHierarchy == "Installed"); });

            if (attributeInstalled != null && !attributes.Contains(attributeInstalled))
            {
                attributes.Add(attributeInstalled);
            }

            //Add Replaced for calculation of AGE
            AttributeStore attributeReplaced = OMS.GetAssetAttributes(simulation.Asset).Find(delegate(AttributeStore a) { return(a.OmsObjectUserIDHierarchy == "Replaced"); });

            if (attributeReplaced != null && !attributes.Contains(attributeReplaced))
            {
                attributes.Add(attributeReplaced);
            }

            //Add gis shape for output display
            AttributeStore attributecgShape = OMS.GetAssetAttributes(simulation.Asset).Find(delegate(AttributeStore a) { return(a.OmsObjectUserIDHierarchy == "cgShape"); });

            if (attributecgShape != null && !attributes.Contains(attributecgShape))
            {
                attributes.Add(attributecgShape);
            }


            foreach (AttributeStore attribute in attributes)
            {
                string simulationID = simulation.SimulationID;
                string attribute_   = attribute.OmsObjectUserIDHierarchy;
                if (attribute.IsConditionCategory && attribute_ != "OverallConditionIndex")
                {
                    attribute_ = "__" + attribute_.Replace(" ", "").Replace("/", "");
                }
                string type_               = attribute.FieldType;
                string default_value       = "";
                string maximum             = "";
                string minimum             = "";
                bool   ascending           = attribute.Ascending;
                string format              = "";
                string isConditionCategory = attribute.IsConditionCategory.ToString();;

                if (attribute.InitialValue != null)
                {
                    default_value = attribute.InitialValue;
                }
                if (!float.IsNaN(attribute.Minimum))
                {
                    minimum = attribute.Minimum.ToString();
                }
                if (!float.IsNaN(attribute.Maximum))
                {
                    maximum = attribute.Maximum.ToString();
                }
                if (attribute.Format != null)
                {
                    format = attribute.Format;
                }


                switch (type_)
                {
                case "Time":
                case "Date":
                case "DateTime":
                    type_ = "DATETIME";
                    break;

                case "YesNo":
                case "Text":
                case "Lookup":
                case "Quantity.unit":
                    type_ = "STRING";
                    break;

                case "Number":
                case "Integer":
                case "Quantity":
                case "Currency":
                    type_ = "NUMBER";
                    break;

                default:
                    break;
                }

                try
                {
                    using (SqlConnection connection = new SqlConnection(DB.ConnectionString))
                    {
                        connection.Open();
                        string insert = "INSERT INTO " + DB.TablePrefix + "OMS_ATTRIBUTES " +
                                        "(SIMULATIONID,ATTRIBUTE_,TYPE_,DEFAULT_VALUE,MINIMUM_,MAXIMUM,ASCENDING,FORMAT,IS_CONDITION_INDEX,ATTRIBUTE_OMS)" +
                                        "VALUES('" + simulationID + "','" + attribute_ + "','" + type_ + "','" + default_value + "','" + minimum + "','" + maximum + "','" + ascending.ToString() + "','" + format + "','" + isConditionCategory + "','" + attribute.OmsHierarchy + "')";

                        SqlCommand cmd = new SqlCommand(insert, connection);
                        cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception ex)
                {
                    Utility.ExceptionHandling.DataAccessExceptionHandler.HandleException(ex, false);
                }
            }
            return(attributes);
        }
Esempio n. 12
0
 private static void RepeatedActivities(SimulationStore simulation)
 {
     // Delete previous repeated activities
     DeleteScenario.DeleteRepeatedActivities(simulation.SimulationID);
     //Insert current repeated activities
 }
Esempio n. 13
0
 public static void AddNoTreatment(SimulationStore simulation)
 {
     AddNoTreatment(simulation.SimulationID);
 }
Esempio n. 14
0
        public static void AddActivity(OMSActivityStore activity, SimulationStore simulation)
        {
            //Insert activity in treatments
            //Get Identity
            string treatmentID = null;
            int    year        = DateTime.Now.Year + 1;

            using (SqlConnection connection = new SqlConnection(DB.ConnectionString))
            {
                connection.Open();
                string insert = "INSERT INTO " + DB.TablePrefix + "TREATMENTS (SIMULATIONID,TREATMENT,BEFOREANY,BEFORESAME,OMS_REPEAT_START, OMS_REPEAT_INTERVAL, OMS_OID, OMS_IS_SELECTED,OMS_IS_EXCLUSIVE, OMS_IS_REPEAT)"
                                + " VALUES ('" + simulation.SimulationID + "','" + activity.ActivityName + "','1','1','" + year + "','1','" + activity.ActivityOID + "','0','0','0')";
                try
                {
                    SqlCommand cmd = new SqlCommand(insert, connection);
                    cmd.ExecuteNonQuery();
                    string selectIdentity = "SELECT IDENT_CURRENT ('" + DB.TablePrefix + "TREATMENTS') FROM " + DB.TablePrefix + "TREATMENTS";
                    cmd         = new SqlCommand(selectIdentity, connection);
                    treatmentID = cmd.ExecuteScalar().ToString();
                }
                catch (Exception e)
                {
                    Utility.ExceptionHandling.DataAccessExceptionHandler.HandleException(e, false);
                }

                try
                {
                    double cost = 0;
                    if (activity.OmsCost.CostPerUnit != double.NaN)
                    {
                        cost = activity.OmsCost.CostPerUnit;
                        if (cost <= 0)
                        {
                            cost = 1;
                        }
                    }
                    else
                    {
                        cost = 1;
                    }
                    insert = "INSERT INTO " + DB.TablePrefix + "COSTS (TREATMENTID,COST_) VALUES ('" + treatmentID + "','" + cost.ToString() + "')";
                    SqlCommand cmd = new SqlCommand(insert, connection);
                    cmd.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    Utility.ExceptionHandling.DataAccessExceptionHandler.HandleException(e, false);
                }

                OMSAssetConditionIndexStore oci = OMS.GetAssetConditionIndex(simulation.Asset);

                foreach (OMSConsequenceStore consequence in activity.ConsequenceList)
                {
                    try
                    {
                        OMSConditionIndexStore condition = oci.ConditionIndexes.Find(delegate(OMSConditionIndexStore ci) { return(ci.ConditionCategory == consequence.ConditionCategory); });

                        if (condition != null)
                        {
                            insert = "INSERT INTO " + DB.TablePrefix + "CONSEQUENCES (TREATMENTID,ATTRIBUTE_,CHANGE_) VALUES ('" + treatmentID + "','__" + condition.AttributeDE + "','" + consequence.GetDecisionEngineConsequence() + "')";
                            SqlCommand cmd = new SqlCommand(insert, connection);
                            cmd.ExecuteNonQuery();
                        }
                    }
                    catch (Exception e)
                    {
                        Utility.ExceptionHandling.DataAccessExceptionHandler.HandleException(e, false);
                    }
                }

                try
                {
                    string conditionIndexCriteria = GetConditionIndexCriteria(activity.ConsequenceList);
                    insert = "INSERT INTO " + DB.TablePrefix + "FEASIBILITY (TREATMENTID,CRITERIA) VALUES ('" + treatmentID + "','" + conditionIndexCriteria + "')";
                    SqlCommand cmd = new SqlCommand(insert, connection);
                    cmd.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    Utility.ExceptionHandling.DataAccessExceptionHandler.HandleException(e, false);
                }
            }
        }