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(); }
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); }
/// <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); } }
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); }
public void ConditionsHoldsShouldReturnTrueWhenTheConditionIsTrue() { // Arrange var condition = new SimpleCondition(true); // Act var conditionHolds = condition.Holds(null); // Assert Assert.True(conditionHolds); }
public void ConditionsHoldsShouldReturnFalseWhenTheConditionIsFalse() { // Arrange var condition = new SimpleCondition(false); // Act var conditionHolds = condition.Holds(null); // Assert Assert.False(conditionHolds); }
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(); }
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(); } }
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); } }
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; } }
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(); } }
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}")); }
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); }
/// <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); }
// 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); }
internal SimpleBinding(Type type) { Precedence = 1; Target = type; Condition = new SimpleCondition(type); }
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); }