Exemplo n.º 1
0
        public override void StartScenario()
        {
            hbuilder       = scenario.hexBuilder;
            conditionQuest = new ConditionQuest(
                new SimpleCondition[3] {
                SimpleCondition.GetDummyCondition(null),    // colonists
                SimpleCondition.GetDummyCondition(null),    // energy
                SimpleCondition.GetDummyCondition(null)     // income
            },
                colony,
                false,
                QuestIcon.FoundationRouteIcon
                );
            conditionQuest.steps[0] = localizer.colonistsLabel;
            conditionQuest.steps[1] = localizer.islandStatsLabel;
            conditionQuest.steps[2] = localizer.lowerlandStatsLabel;

            scenario.StartQuest(conditionQuest);
            scenarioQuest.FillText(localizer.GetQuestData(FoundationScenarioStep.Finish));
            //
            conditionWindow = scenarioUI.ShowConditionPanel(0, conditionQuest, null);
            conditionWindow.SetMainIcon(UIController.iconsTexture, UIController.GetIconUVRect(Icons.FoundationRoute));
            //
            UIController.GetCurrent().updateEvent += this.Check;
            scenarioUI.ChangeAnnouncementText(localizer.GetAnnounceTitle(FoundationScenarioStep.Finish, WINDOW_INFO_0));
            scenarioUI.ShowAnnouncePanel();
            //
            colony.populationUpdateEvent += this.CitizensUpdate;
            //
            Check();
        }
Exemplo n.º 2
0
        public string Initialize([FromBody] RequestBody requestBody)
        {
            SimpleCondition condition = new SimpleCondition();
            //Need to parse query string using shunting yard algorithm and convert to ICondition.
            var token = _csvReader.Initialize(requestBody.ColumnNames, requestBody.csvName, condition);

            return(token);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 根据简单查询条件生成SQL语句与SQL参数
        /// </summary>
        /// <param name="context">用来生成SQL的上下文</param>
        /// <param name="simpleCondition">简单查询条件</param>
        /// <param name="outputParams">参数列表,在该列表中添加SQL参数</param>
        /// <returns>生成的SQL语句</returns>
        protected string BuildSimpleConditionSql(SqlBuildContext context, SimpleCondition simpleCondition, IList outputParams)
        {
            Column column = context.Table.GetColumn(simpleCondition.Property);

            if (column == null)
            {
                throw new Exception(String.Format("Property \"{0}\" does not exist in type \"{1}\".", simpleCondition.Property, context.Table.DefinitionType.FullName));
            }

            string tableAlias = context.TableAliasName;
            string columnName = tableAlias == null?column.FormattedExpression(this) : String.Format("[{0}].[{1}]", tableAlias, column.Name);

            string expression = columnName;
            object value      = simpleCondition.Value;

            string strOpposite = simpleCondition.Opposite ? "not" : null;

            if ((simpleCondition.Value == null || simpleCondition.Value == DBNull.Value) && simpleCondition.Operator == ConditionOperator.Equals)
            {
                return(string.Format("{0} is {1} null", expression, strOpposite));
            }

            ConditionOperator positiveOp = simpleCondition.Operator;

            if (positiveOp == ConditionOperator.Contains || positiveOp == ConditionOperator.EndsWith || positiveOp == ConditionOperator.StartsWith)
            {
                value = sqlLike.Replace(Convert.ToString(value), LikeEscapeChar + "$1");
            }
            switch (simpleCondition.Operator)
            {
            case ConditionOperator.Equals: return(String.Format(simpleCondition.Opposite ? "{0} <> {1}" : "{0} = {1}", expression, ToSqlParam(outputParams.Add(value).ToString())));

            case ConditionOperator.LargerThan: return(String.Format(simpleCondition.Opposite ? "{0} <= {1}" : "{0} > {1}", expression, ToSqlParam(outputParams.Add(value).ToString())));

            case ConditionOperator.SmallerThan: return(String.Format(simpleCondition.Opposite ? "{0} >= {1}" : "{0} < {1}", expression, ToSqlParam(outputParams.Add(value).ToString())));

            case ConditionOperator.Like: return(String.Format(@"{0} {1} like {2}", expression, strOpposite, ToSqlParam(outputParams.Add(value).ToString())));

            case ConditionOperator.StartsWith: return(String.Format(@"{0} {1} like {2} escape '{3}'", expression, strOpposite, ConcatSql(ToSqlParam(outputParams.Add(value).ToString()), "'%'"), LikeEscapeChar));

            case ConditionOperator.EndsWith: return(String.Format(@"{0} {1} like {2} escape '{3}'", expression, strOpposite, ConcatSql("'%'", ToSqlParam(outputParams.Add(value).ToString())), LikeEscapeChar));

            case ConditionOperator.Contains: return(String.Format(@"{0} {1} like {2} escape '{3}'", expression, strOpposite, ConcatSql("'%'", ToSqlParam(outputParams.Add(value).ToString()), "'%'"), LikeEscapeChar));

            case ConditionOperator.In:
                List <string> paramNames = new List <string>();
                foreach (object item in value as IEnumerable)
                {
                    paramNames.Add(ToSqlParam(outputParams.Add(item).ToString()));
                }
                return(String.Format("{0} {1} in ({2})", expression, strOpposite, String.Join(",", paramNames.ToArray())));

            default:
                return(string.Empty);
            }
        }
Exemplo n.º 4
0
        private void buttonSearch_Click(object sender, EventArgs e)
        {
            Condition condition = null;

            if (!String.IsNullOrEmpty(textBoxValue.Text))
            {
                condition = new SimpleCondition(SelectedProperty.Name, textBoxValue.Text);
            }
            dataGridView1.DataSource = ServiceUtil.GetEntityViewService(NorthwindFactory.ServiceFactory, SelectedType).Search(condition);
        }
Exemplo n.º 5
0
        public void ConditionsHoldsShouldReturnTrueWhenTheConditionIsTrue()
        {
            // Arrange
            var condition = new SimpleCondition(true);

            // Act
            var conditionHolds = condition.Holds(null);

            // Assert
            Assert.True(conditionHolds);
        }
Exemplo n.º 6
0
        public void ConditionsHoldsShouldReturnFalseWhenTheConditionIsFalse()
        {
            // Arrange
            var condition = new SimpleCondition(false);

            // Act
            var conditionHolds = condition.Holds(null);

            // Assert
            Assert.False(conditionHolds);
        }
Exemplo n.º 7
0
        protected override void OnApplicationTick(float dt)
        {
            try
            {
                if (!_ticker.Hit())
                {
                    return;
                }

                if (!_ticker.DoubleCheckHit(GetPosition2D()))
                {
                    return;
                }

                if (ModConfigs.GlobalModConfigs.DebugMode)
                {
                    if (MobileParty.MainParty != null && Campaign.Current != null &&
                        Campaign.Current.MapSceneWrapper != null)
                    {
                        string s = "[season:" + GetSeason() + " time:" + CampaignTime.Now.GetHourOfDay.ToString() +
                                   ":00 " + GetTimeStage() +
                                   " pos:(" + MobileParty.MainParty.Position2D.x
                                   + "," + MobileParty.MainParty.Position2D.y + ") Terrain:" + getTerrainType(
                            Campaign.Current.MapSceneWrapper.GetTerrainTypeAtPosition(MobileParty.MainParty
                                                                                      .Position2D)) + "]";
                        InformationManager.DisplayMessage(new InformationMessage(s));
                    }
                }

                if (Campaign.Current != null)
                {
                    if (Campaign.Current.MapSceneWrapper != null && Campaign.Current != null &&
                        Campaign.Current.MapSceneWrapper != null)
                    {
                        SimpleCondition simpleCondition = GetSimpleCondition();
                        Story           story           = _selector.SelectOne(_selector.SelectFromCondition(simpleCondition));
                        if (story != null)
                        {
                            Color color = new Color(story.Config.StoryColor.Red, story.Config.StoryColor.Green,
                                                    story.Config.StoryColor.Blue, story.Config.StoryColor.Alpha);
                            InformationManager.DisplayMessage(new InformationMessage(story.Content, color));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                if (ModConfigs.GlobalModConfigs.DebugMode)
                {
                    InformationManager.DisplayMessage(new InformationMessage("Error" + e));
                }
            }
        }
 public ConditionQuest(SimpleCondition i_condition, ColonyController i_colony, bool i_completeQuestWhenPossible, QuestIcon cqi) : base(QuestType.Condition, (byte)cqi)
 {
     colony = i_colony;
     needToCheckConditions     = true;
     completeQuestWhenPossible = i_completeQuestWhenPossible;
     iconType = cqi;
     INLINE_PrepareSteps(1);
     conditions = new SimpleCondition[1] {
         i_condition
     };
     INLINE_DefineStep(ref i_condition, 0);
     CheckQuestConditions();
 }
Exemplo n.º 9
0
 private string CompileCondition(SimpleCondition condition)
 {
     if(condition is ComparisonCondition) {
         return CompileCondition((ComparisonCondition)condition);
     } else if(condition is IsNullCondition) {
         return CompileCondition((IsNullCondition)condition);
     } else if(condition is NotIsNullCondition) {
         return CompileCondition((NotIsNullCondition)condition);
     } else if(condition is MultiValueCondition) {
         return CompileCondition((MultiValueCondition)condition);
     } else {
         throw new NotSupportedException();
     }
 }
Exemplo n.º 10
0
 public void PrepareSettling()
 {
     if (settleQuest != null)
     {
         return;
     }
     settleQuest = new ConditionQuest(new SimpleCondition[3]
     {
         SimpleCondition.GetDummyCondition(null),
         SimpleCondition.GetDummyCondition(null),
         SimpleCondition.GetResourceCondition(ResourceType.Supplies, COLONISTS_SEND_COST)
     },
                                      colony, false, QuestIcon.PeopleIcon);
     settleQuest.steps[0] = localizer.colonistArrivedLabel;
     settleQuest.steps[1] = localizer.livingSpaceLabel;
     UIController.GetCurrent().updateEvent += CheckSettlingConditions;
     settleWindow = scenarioUI.ShowConditionPanel(1, settleQuest, this.SendColonists);
     settleWindow.SetMainIcon(UIController.iconsTexture, UIController.GetIconUVRect(Icons.Citizen));
     settleWindow.SetButtonText(localizer.sendColonistsLabel);
 }
 public override void OKButton()
 {
     if (stage == 0)
     {
         stage++;
         scenarioUI.CloseAnnouncePanel();
         conditionQuest = new ConditionQuest(
             SimpleCondition.GetStoredEnergyCondition(ANCHOR_LAUNCH_ENERGYCOST),
             colony,
             false,
             ConditionQuest.ConditionQuestIcon.FoundationRouteIcon
             );
         scenario.StartQuest(conditionQuest);
         scenarioQuest.FillText(localizer.GetQuestData(FoundationScenarioStep.AnchorStart));
         scenarioUI.ChangeConditionButtonLabel(Localization.GetWord(LocalizedWord.Anchor_verb));
         scenarioUI.ChangeConditionIcon(UIController.iconsTexture, UIController.GetIconUVRect(Icons.FoundationRoute));
         conditionQuest.BindUIUpdateFunction(scenarioUI.UpdateConditionInfo);
         scenarioUI.ShowConditionPanel(scenarioQuest);
     }
 }
Exemplo n.º 12
0
        public override void OKButton()
        {
            if (stage == 0)
            {
                stage++;
                scenarioUI.CloseAnnouncePanel();
                conditionQuest = new ConditionQuest(
                    SimpleCondition.GetStoredEnergyCondition(ANCHOR_LAUNCH_ENERGYCOST),
                    colony,
                    false,
                    QuestIcon.FoundationRouteIcon
                    );
                scenario.StartQuest(conditionQuest);
                scenarioQuest.FillText(localizer.GetQuestData(FoundationScenarioStep.AnchorStart));

                conditionWindow = scenarioUI.ShowConditionPanel(0, conditionQuest, this.UIConditionProceedButton);
                conditionWindow.SetButtonText(Localization.GetWord(LocalizedWord.Anchor_verb));
                conditionWindow.SetMainIcon(UIController.iconsTexture, UIController.GetIconUVRect(Icons.PowerPlus));
                conditionQuest.BindUIUpdateFunction(conditionWindow.Refresh);
            }
        }
    private void INLINE_DefineStep(ref SimpleCondition sc, int i)
    {
        switch (sc.type)
        {
        case ConditionType.ResourceCountCheck: steps[i] = Localization.GetResourceName(sc.index); break;

        case ConditionType.MoneyCheck: steps[i] = Localization.GetPhrase(LocalizedPhrase.CrystalsCollected); break;

        case ConditionType.GearsCheck: steps[i] = Localization.GetWord(LocalizedWord.GearsLevel); break;

        case ConditionType.FreeWorkersCheck: steps[i] = Localization.GetWord(LocalizedWord.FreeWorkers); break;

        case ConditionType.StoredEnergyCondition: steps[i] = Localization.GetPhrase(LocalizedPhrase.EnergyStored); break;

        case ConditionType.CrewsCondition: steps[i] = Localization.ComposeCrewLevel((byte)sc.value) + ':'; break;

        case ConditionType.ShuttlesCount: steps[i] = Localization.GetWord(LocalizedWord.Shuttles) + ':'; break;

        case ConditionType.Dummy: steps[i] = string.Empty; break;
        }
    }
Exemplo n.º 14
0
 private string CompileCondition(SimpleCondition condition)
 {
     if (condition is ComparisonCondition)
     {
         return(CompileCondition((ComparisonCondition)condition));
     }
     else if (condition is IsNullCondition)
     {
         return(CompileCondition((IsNullCondition)condition));
     }
     else if (condition is NotIsNullCondition)
     {
         return(CompileCondition((NotIsNullCondition)condition));
     }
     else if (condition is MultiValueCondition)
     {
         return(CompileCondition((MultiValueCondition)condition));
     }
     else
     {
         throw new NotSupportedException();
     }
 }
Exemplo n.º 15
0
        internal void Create(string specificationPath, IHDDFileReaderWriter readerWriter)
        {
            // thickness specification 01:

            ICondition <double> thicknessAverageAbsCondition = new SimpleCondition()
            {
                Name = "Thickness Average Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessAverageAbsCondition.CalculationTypeHandler.Relativity = Relativity.Absolute;


            ICondition <double> thicknessAverageRelCondition = new SimpleCondition()
            {
                Name = "Thickness Average Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessAverageRelCondition.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> thicknessStdAbsCondition = new SimpleCondition()
            {
                Name = "Thickness Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessStdAbsCondition.CalculationTypeHandler.Relativity = Relativity.Absolute;


            ICondition <double> thicknessStdRelCondition = new SimpleCondition()
            {
                Name = "Thickness Std Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 0.5,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessStdRelCondition.CalculationTypeHandler.Relativity = Relativity.Relative;


            // ttv psecification:
            ICondition <double> ttvStdAbsCondition = new SimpleCondition()
            {
                Name = "TTV Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            ttvStdAbsCondition.CalculationTypeHandler.Relativity = Relativity.Absolute;


            // sawmark specification:
            ICondition <double> sawmarkStdAbsCondition = new SimpleCondition()
            {
                Name = "SawMark Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            sawmarkStdAbsCondition.CalculationTypeHandler.Relativity = Relativity.Absolute;


            // resisitivity conditions

            ICondition <double> resistivityAverageRelCondition = new SimpleCondition()
            {
                Name = "Resistivity Average Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 5,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            resistivityAverageRelCondition.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> resistivityStdRelCondition = new SimpleCondition()
            {
                Name = "Resistivity Std Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            resistivityStdRelCondition.CalculationTypeHandler.Relativity = Relativity.Relative;


            IQuantitySpecificationHandler thicknessQuantitySpecification = new QuantitySpecification();

            thicknessQuantitySpecification.Quantity   = new Quantity(Units.um, "Thickness Average");
            thicknessQuantitySpecification.Conditions = new List <ICondition> {
                thicknessAverageAbsCondition, thicknessAverageRelCondition, thicknessStdAbsCondition, thicknessStdRelCondition
            };

            IQuantitySpecificationHandler ttvQuantitySpecification = new QuantitySpecification();

            ttvQuantitySpecification.Quantity   = new Quantity(Units.um, "TTV");
            ttvQuantitySpecification.Conditions = new List <ICondition> {
                ttvStdAbsCondition
            };

            IQuantitySpecificationHandler sawmarkQuantitySpecification = new QuantitySpecification();

            sawmarkQuantitySpecification.Quantity   = new Quantity(Units.um, "Sawmark");
            sawmarkQuantitySpecification.Conditions = new List <ICondition> {
                sawmarkStdAbsCondition
            };

            IQuantitySpecificationHandler resistivityQuantitySpecification = new QuantitySpecification();

            resistivityQuantitySpecification.Quantity   = new Quantity(Units.um, "Resistivity Average");
            resistivityQuantitySpecification.Conditions = new List <ICondition> {
                resistivityAverageRelCondition, resistivityStdRelCondition
            };


            List <IQuantitySpecification> quanSpecList = new List <IQuantitySpecification>
            {
                thicknessQuantitySpecification,
                ttvQuantitySpecification,
                sawmarkQuantitySpecification,
                resistivityQuantitySpecification
            };


            IToolSpecificationHandler specificationHandler = new ToolSpecification
            {
                Name     = "TTR Compliant Specification",
                ToolName = ToolNames.TTR,
                QuantitySpecifications = quanSpecList
            };

            readerWriter.WriteToFile(specificationHandler, Path.Combine(specificationPath, $"TTR_Spec_01{_fileExtension}"));


            //-----------------------------------------------------------------------------------------------------------------------------------
            // thickness specification 02:

            ICondition <double> thicknessAverageAbsCondition2 = new SimpleCondition()
            {
                Name = "Thickness Average Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessAverageAbsCondition2.CalculationTypeHandler.Relativity = Relativity.Absolute;

            ICondition <double> thicknessAverageRelCondition2 = new SimpleCondition()
            {
                Name = "Thickness Average Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessAverageRelCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> thicknessStdAbsCondition2 = new SimpleCondition()
            {
                Name = "Thickness Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessStdAbsCondition2.CalculationTypeHandler.Relativity = Relativity.Absolute;

            ICondition <double> thicknessStdRelCondition2 = new SimpleCondition()
            {
                Name = "Thickness Std Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 0.5,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            thicknessStdRelCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> thicknessCpkCondition2 = new CpkCondition()
            {
                Name = "Thickness Cpk Condition",
                CalculationTypeHandler = CalculationTypeHandler.Cpk,
                LeftValue         = 1.33,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                HalfTolerance     = 1
            };

            thicknessCpkCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            // ttv psecification:
            ICondition <double> ttvStdAbsCondition2 = new SimpleCondition()
            {
                Name = "TTV Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            ttvStdAbsCondition2.CalculationTypeHandler.Relativity = Relativity.Absolute;


            ICondition <double> ttvCpkCondition2 = new CpkCondition()
            {
                Name = "TTV Cpk Condition",
                CalculationTypeHandler = CalculationTypeHandler.Cpk,
                LeftValue         = 1.33,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                HalfTolerance     = 2
            };

            ttvCpkCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            // sawmark psecification:
            ICondition <double> sawmarkStdAbsCondition2 = new SimpleCondition()
            {
                Name = "SawMark Std Abs Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 2,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            sawmarkStdAbsCondition2.CalculationTypeHandler.Relativity = Relativity.Absolute;


            ICondition <double> sawmarkCpkCondition2 = new CpkCondition()
            {
                Name = "SawMark Cpk Condition",
                CalculationTypeHandler = CalculationTypeHandler.Cpk,
                LeftValue         = 1.33,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                HalfTolerance     = 4
            };

            sawmarkCpkCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            // resistivity conditions
            ICondition <double> resistivityAverageRelCondition2 = new SimpleCondition()
            {
                Name = "Resistivity Average Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.Average,
                LeftValue         = 5,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            resistivityAverageRelCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> resistivityStdRelCondition2 = new SimpleCondition()
            {
                Name = "Resistivity Std Rel Condition",
                CalculationTypeHandler = CalculationTypeHandler.StandardDeviation,
                LeftValue         = 1,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                ValidIf           = RelationHandler.ALLWAYS,
                ValidIf_Value     = 0,
            };

            resistivityStdRelCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            ICondition <double> resistivityCpkCondition2 = new CpkCondition()
            {
                Name = "Resistivity Cpk Condition",
                CalculationTypeHandler = CalculationTypeHandler.Cpk,
                LeftValue         = 1.33,
                ConditionRelation = RelationHandler.LESSOREQUAL,
                Enabled           = true,
                HalfTolerance     = 2.5
            };

            resistivityCpkCondition2.CalculationTypeHandler.Relativity = Relativity.Relative;


            IQuantitySpecificationHandler thicknessQuantitySpecification2 = new QuantitySpecification();

            thicknessQuantitySpecification2.Quantity   = new Quantity(Units.um, "Thickness Average");
            thicknessQuantitySpecification2.Conditions = new List <ICondition> {
                thicknessAverageAbsCondition2, thicknessStdAbsCondition2, thicknessStdAbsCondition2, thicknessStdRelCondition2, thicknessCpkCondition2
            };

            IQuantitySpecificationHandler ttvQuantitySpecification2 = new QuantitySpecification();

            ttvQuantitySpecification2.Quantity   = new Quantity(Units.um, "TTV");
            ttvQuantitySpecification2.Conditions = new List <ICondition> {
                ttvStdAbsCondition2, ttvCpkCondition2
            };

            IQuantitySpecificationHandler sawmarkQuantitySpecification2 = new QuantitySpecification();

            sawmarkQuantitySpecification2.Quantity   = new Quantity(Units.um, "Sawmark");
            sawmarkQuantitySpecification2.Conditions = new List <ICondition> {
                sawmarkStdAbsCondition2, sawmarkCpkCondition2
            };


            IQuantitySpecificationHandler resistivityQuantitySpecification2 = new QuantitySpecification();

            resistivityQuantitySpecification2.Quantity   = new Quantity(Units.um, "Resistivity Average");
            resistivityQuantitySpecification2.Conditions = new List <ICondition> {
                resistivityAverageRelCondition2, resistivityStdRelCondition2, resistivityCpkCondition2
            };

            List <IQuantitySpecification> quanSpecList2 = new List <IQuantitySpecification>
            {
                thicknessQuantitySpecification2,
                ttvQuantitySpecification2,
                sawmarkQuantitySpecification2,
                resistivityQuantitySpecification2
            };


            IToolSpecificationHandler specificationHandler2 = new ToolSpecification
            {
                Name     = "TTR Strict Specification",
                ToolName = ToolNames.TTR,
                QuantitySpecifications = quanSpecList2
            };

            readerWriter.WriteToFile(specificationHandler2, Path.Combine(specificationPath, $"TTR_Spec_02{_fileExtension}"));
        }
Exemplo n.º 16
0
        protected void StartSectorBuildingQuest(byte ring, byte index, System.Action clickAction)
        {
            var conditions = new SimpleCondition[3];

            if (ring == 0) // INNER RING
            {
                switch (index)
                {
                case 0:
                    conditions[0] = SimpleCondition.GetResourceCondition(ResourceType.metal_K, 4100f);
                    conditions[1] = SimpleCondition.GetResourceCondition(ResourceType.metal_S, 1600f);
                    conditions[2] = SimpleCondition.GetMoneyCondition(2500f);
                    break;

                case 1:
                    conditions[0] = SimpleCondition.GetGearsCondition(4f);
                    conditions[1] = SimpleCondition.GetResourceCondition(ResourceType.metal_M, 2500f);
                    conditions[2] = SimpleCondition.GetResourceCondition(ResourceType.metal_E, 1200f);
                    break;

                case 2:
                    conditions[0] = SimpleCondition.GetMoneyCondition(2500f);
                    conditions[1] = SimpleCondition.GetResourceCondition(ResourceType.metal_P, 500f);
                    conditions[2] = SimpleCondition.GetResourceCondition(ResourceType.mineral_L, 2000f);
                    break;

                case 3:
                    conditions[0] = SimpleCondition.GetResourceCondition(ResourceType.metal_S, 1500f);
                    conditions[1] = SimpleCondition.GetResourceCondition(ResourceType.Concrete, 7530f);
                    conditions[2] = SimpleCondition.GetResourceCondition(ResourceType.Plastics, 7530f);
                    break;

                case 4:
                    conditions[0] = SimpleCondition.GetFreeWorkersCondition(500);
                    conditions[1] = SimpleCondition.GetMoneyCondition(1200f);
                    conditions[2] = SimpleCondition.GetResourceCondition(ResourceType.Food, 40000f);
                    break;

                case 5:
                    conditions[0] = SimpleCondition.GetFreeWorkersCondition(600);
                    conditions[1] = SimpleCondition.GetResourceCondition(ResourceType.metal_K, 1200f);
                    conditions[2] = SimpleCondition.GetMoneyCondition(1500f);
                    break;
                }
                conditionQuest = new ConditionQuest(conditions, colony, false, QuestIcon.FoundationRouteIcon);
            }
            else // OUTER RING
            {
                switch (index)
                {
                case 0:
                    conditions[0] = SimpleCondition.GetResourceCondition(ResourceType.Plastics, 6800f);
                    conditions[1] = SimpleCondition.GetResourceCondition(ResourceType.metal_K, 1200f);
                    conditions[2] = SimpleCondition.GetStoredEnergyCondition(6100f);
                    break;

                case 1:
                    conditions[0] = SimpleCondition.GetResourceCondition(ResourceType.Fuel, 250f);
                    conditions[1] = SimpleCondition.GetFreeWorkersCondition(700);
                    conditions[2] = SimpleCondition.GetMoneyCondition(1700f);
                    break;

                case 2:
                    conditions[0] = SimpleCondition.GetResourceCondition(ResourceType.Concrete, 8000f);
                    conditions[1] = SimpleCondition.GetResourceCondition(ResourceType.Plastics, 8000f);
                    conditions[2] = SimpleCondition.GetCrewsCondition(2, 3);
                    break;

                case 3:
                    conditions[0] = SimpleCondition.GetResourceCondition(ResourceType.metal_M, 5700f);
                    conditions[1] = SimpleCondition.GetShuttlesCondition(10);
                    conditions[2] = SimpleCondition.GetDummyCondition(true);
                    // 4 рейса с оборудованием
                    break;

                case 4:
                    conditions[0] = SimpleCondition.GetResourceCondition(ResourceType.Dirt, 12000f);
                    conditions[1] = SimpleCondition.GetResourceCondition(ResourceType.mineral_F, 2500f);
                    conditions[2] = SimpleCondition.GetResourceCondition(ResourceType.mineral_L, 1000f);
                    break;

                case 5:
                    conditions[0] = SimpleCondition.GetMoneyCondition(2000f);
                    conditions[1] = SimpleCondition.GetResourceCondition(ResourceType.Dirt, 1200f);
                    conditions[2] = SimpleCondition.GetGearsCondition(5f);
                    break;
                }
                //
                conditionQuest = new ConditionQuest(conditions, colony, false, QuestIcon.FoundationRouteIcon);
            }
            conditionQuest.CheckQuestConditions();
            conditionWindow = scenarioUI.ShowConditionPanel(0, conditionQuest, clickAction);
            conditionQuest.BindUIUpdateFunction(conditionWindow.Refresh);
            conditionQuest.SubscribeToUpdate(questUI);
        }
Exemplo n.º 17
0
        /// <summary>
        /// Evaluates a <see cref="SimpleCondition"/>
        /// </summary>
        /// <param name="condition">The <see cref="SimpleCondition"/> to evaluate</param>
        /// <returns></returns>
        private static bool EvaluateSimpleCondition(SimpleCondition condition)
        {
            // get mapped state of condition
            var mapID    = $"{condition.Resource}|{condition.State}";
            var mapState = Globals.Mapping[mapID];
            var result   = false;

            // evaluate if boolean
            if (mapState is bool bState)
            {
                try
                {   // evaluation depends on operator
                    switch (condition.CompareOperator)
                    {
                    case "==": result = bState == Convert.ToBoolean(condition.StateValue); break;

                    case "!=": result = bState != Convert.ToBoolean(condition.StateValue); break;

                    default:
                    {
                        Logger.LogToList($"The SimpleCondition ({mapID}) thats StateValue ({bState}) is to be set as boolean has" +
                                         $" an invalid compare operator ({condition.CompareOperator}) -> boolean only supports == and != ");
                        break;
                    }
                    }
                }
                catch (FormatException fex)
                {
                    Logger.LogToList($"The SimpleCondition ({mapID}) thats StateValue ({bState}) is o be set as boolean has" +
                                     $" an invalid ComparingStateValue ({condition.StateValue}).");
                    Logger.LogToList(fex.Message);
                }
            }
            // evaluate if double
            else if (mapState is double dState)
            {
                try
                {   // evaluation depends on operator
                    switch (condition.CompareOperator)
                    {
                    case "==": result = dState == Convert.ToDouble(condition.StateValue); break;

                    case "!=": result = dState != Convert.ToDouble(condition.StateValue); break;

                    case "<=": result = dState <= Convert.ToDouble(condition.StateValue); break;

                    case ">=": result = dState >= Convert.ToDouble(condition.StateValue); break;

                    case "<": result = dState < Convert.ToDouble(condition.StateValue); break;

                    case ">": result = dState > Convert.ToDouble(condition.StateValue); break;
                    }
                }
                catch (FormatException fex)
                {
                    Logger.LogToList($"The SimpleCondition ({mapID}) thats StateValue ({dState}) is to be set as double has" +
                                     $" an invalid ComparingStateValue ({condition.StateValue}).");
                    Logger.LogToList(fex.Message);
                }
            }

            return(result);
        }
Exemplo n.º 18
0
        // GET api/values
        public IEnumerable <DynamicEntity> Get(string csvTable, string conditionType = null, string selectType = null)
        {
            // condtions
            var conditionClauses = (conditionType == null) || (conditionType.Equals("0")) ? conditionInput : conditionType.Equals("1") ? conditionInput1 : conditionType;

            string[] select = ((selectType == null) || (selectType.Equals("0")))? selectInput : selectType.Equals("1") ? selectInput1 : selectType.Split();

            // Creating dynamic rows of Dynamic Class Entity DynamicObject
            List <DynamicEntity> dynRows       = new List <DynamicEntity>();
            List <DynamicEntity> dynRowsReturn = new List <DynamicEntity>();
            // find the file in a folder location inside App_Data
            var path = HttpContext.Current.Server.MapPath(@"~\App_Data\" + csvTable + ".csv");

            if (!File.Exists(path))
            {
                return(dynRowsReturn);
            }

            // helping methods are written in helper class
            QueryHelper helper = new QueryHelper();

            string[] conditionClause;
            string[] complexCondition = conditionClauses.Split(new string[] { "AND", "OR" }, StringSplitOptions.RemoveEmptyEntries);
            //complex condition keeps list of simple conditions
            ComplexCondition complex = new ComplexCondition();

            //may have more than one and or at one level
            complex.AndOrOr = new List <AndOrOr>();
            int count = 0;

            foreach (string s in conditionClauses.Split())
            {
                if (s.Equals("AND"))
                {
                    complex.AndOrOr.Add(AndOrOr.AND);
                }
                else if (s.Equals("OR"))
                {
                    complex.AndOrOr.Add(AndOrOr.OR);
                }
            }
            complex.condtions = new List <SimpleCondition>();

            // filling conditions to complex conditions
            foreach (string condition in complexCondition)
            {
                conditionClause = condition.Replace('(', ' ').Replace(')', ' ').Trim().Split();
                SimpleCondition simpleConditions = new SimpleCondition()
                {
                    colName = conditionClause[0],
                    opera   = conditionClause[1],
                    value   = conditionClause[2]
                };
                complex.condtions.Add(simpleConditions);
            }

            //simple condition check one by one
            foreach (var condition in complex.condtions)
            {
                List <DynamicEntity> dynRowsPerCondition = new List <DynamicEntity>();

                using (TextFieldParser csvParser = new TextFieldParser(path))
                {
                    string[] fields = helper.csvParserDefaultSet(csvParser);

                    while (!csvParser.EndOfData)
                    {
                        string[] returnRow = csvParser.ReadFields();

                        List <int> selectList = new List <int>();
                        foreach (var s in select)
                        {
                            selectList.Add(Array.IndexOf(fields, s));
                        }
                        var entry = helper.rowFinder(returnRow, fields, selectList, condition);

                        if (entry != null)
                        {
                            dynRowsPerCondition.Add(entry);
                        }
                    }
                }

                // only one condition
                if (complex.condtions.Count == 1)
                {
                    return(dynRowsPerCondition);
                }
                // one level of complex queries all or / all and

                if (dynRows.Count == 0)
                {
                    dynRows.AddRange(dynRowsPerCondition);
                }
                else if (complex.AndOrOr[count] == AndOrOr.OR)
                {
                    //LEFT JOIN
                    foreach (var a in dynRowsPerCondition)
                    {
                        if (helper.LookUpAlt(dynRows, "id", helper.LookUp(a, "id")) == 0)
                        {
                            dynRows.Add(a);
                        }
                    }
                    dynRowsReturn = dynRows;
                    count++;
                }
                else if (complex.AndOrOr[count] == AndOrOr.AND)
                {
                    // INNER EQUE JOIN

                    foreach (var a in dynRowsPerCondition)
                    {
                        if (helper.LookUpAlt(dynRows, "id", helper.LookUp(a, "id")) == 1 &&
                            helper.LookUpAlt(dynRowsReturn, "id", helper.LookUp(a, "id")) == 0)
                        {
                            dynRowsReturn.Add(a);
                        }
                    }
                    dynRows = dynRowsReturn;
                    count++;
                }
            }
            return(dynRowsReturn);
        }
Exemplo n.º 19
0
 internal SimpleBinding(Type type)
 {
     Precedence = 1;
     Target = type;
     Condition = new SimpleCondition(type);
 }
Exemplo n.º 20
0
        public DynamicEntity rowFinder(string[] row, string[] fields, List <int> selectIndex, SimpleCondition condition)
        {
            string[]      returnRow      = row;
            DynamicEntity dynReturn      = null;
            int           conditionIndex = Array.IndexOf(fields, condition.colName);
            string        whereClause    = condition.value;

            switch (condition.opera)
            {
            case "=":
            {
                if (whereClause.Equals(returnRow[conditionIndex]))
                {
                    dynReturn = conditionMatchRows(selectIndex, fields, returnRow);
                }
            }
            break;

            case "!=":
            {
                if (!whereClause.Equals(returnRow[conditionIndex]))
                {
                    dynReturn = conditionMatchRows(selectIndex, fields, returnRow);
                }
            }
            break;

            case "<":
            {
                if (int.TryParse(returnRow[conditionIndex], out int K) &&
                    int.TryParse(whereClause, out int J) &&
                    K < J)
                {
                    dynReturn = conditionMatchRows(selectIndex, fields, returnRow);
                }
            }
            break;

            case ">":
            {
                if (int.TryParse(returnRow[conditionIndex], out int K) &&
                    int.TryParse(whereClause, out int J) &&
                    K > J)
                {
                    dynReturn = conditionMatchRows(selectIndex, fields, returnRow);
                }
            }
            break;

            case ">=":
            {
                if (int.TryParse(returnRow[conditionIndex], out int K) &&
                    int.TryParse(whereClause, out int J) &&
                    K >= J)
                {
                    dynReturn = conditionMatchRows(selectIndex, fields, returnRow);
                }
            }
            break;

            case "<=":
            {
                if (int.TryParse(returnRow[conditionIndex], out int K) &&
                    int.TryParse(whereClause, out int J) &&
                    K <= J)
                {
                    dynReturn = conditionMatchRows(selectIndex, fields, returnRow);
                }
            }
            break;
            }
            return(dynReturn);
        }