private void CheckItemName(string firstItemName, string secondItemName) { if (string.IsNullOrWhiteSpace(firstItemName) || string.IsNullOrWhiteSpace(secondItemName)) { return; } SyntheticItem item = SyntheticTable.syntheticItems.SingleOrDefault(obj => obj.firstItemName.Equals(firstItemName) && obj.secondItemName.Equals(secondItemName)); // 彈開 if (item == null) { var rb = GameObject.Find(secondItemName).GetComponent <Rigidbody2D>(); var xSpeed = Input.GetAxis("Mouse X"); var ySpeed = Input.GetAxis("Mouse Y"); rb.velocity = new Vector2(xSpeed, ySpeed) * 2; } // 觸發事件 else { if (item.itemEvents != null) { item.itemEvents.Invoke(); } if (item.generateItemNames != null) { foreach (string generateItemName in item.generateItemNames) { GenerateItem(generateItemName); } } if (item.disappearItemNames != null) { foreach (var disappearItemName in item.disappearItemNames) { DisableItem(disappearItemName); } } } }
//Method that populates an existing synthetic field item private void PopulateExistingSyntheticField(string[] meta) { int i = 0; SyntheticItem si = new SyntheticItem(); //meta should always be a 6, but add check to avoid error while (i < meta.Length && (i % 6 == 0)) { si.SyntheticAlias = meta[i++]; si.SyntheticType = meta[i++]; string[] sFields = meta[i++].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); si.SyntheticFields = sFields.ToList <string>(); string[] sTables = meta[i++].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); si.SyntheticTables = sTables.ToList <string>(); si.SyntheticX = meta[i++]; si.SyntheticY = meta[i++]; } SelectedSynthItem = si; //Check the appropriate radio button based on the SyntheticType switch (SelectedSynthItem.SyntheticType) { case "ADDITION": rbMathAdd.Checked = true; break; case "DIVISION": rbMathDivide.Checked = true; break; case "MULTIPLICATION": rbMathMultiply.Checked = true; break; case "SUBTRACTION": rbMathSubtract.Checked = true; break; case "DATEPART - DAY OF YEAR": rbDatePartDayOfYear.Checked = true; break; case "DATEPART - DAY": rbDatePartDays.Checked = true; break; case "DATEPART - MONTH": rbDatePartMonths.Checked = true; break; case "DATEPART - QUARTER": rbDatePartMonths.Checked = true; break; case "DATEPART - WEEK": rbDatePartWeekOfYear.Checked = true; break; case "DATEPART - YEAR": rbDatePartYears.Checked = true; break; case "DATEDIFF - FROM NOW": rbDatePartCalcAge.Checked = true; break; case "DATEDIFF - FROM TWO DATES": rbCalAgeBetween2Dates.Checked = true; break; case "TO LOWER CASE": rbToLowerCase.Checked = true; break; case "TO UPPER CASE": rbToUpperCase.Checked = true; break; case "LEFT": rbPullXLeft.Checked = true; break; case "RIGHT": rbPullXRight.Checked = true; break; case "SUBSTRING": rbPullXAtY.Checked = true; break; } //Set the alias, x, and y values txtAlias.Text = si.SyntheticAlias; txtX.Text = si.SyntheticX; txtY.Text = si.SyntheticY; //Select all grid rows (needed for an iteration through the rows) taig.SelectAllRows(); //Get a list of the fields (with table) used for the synthetic items construction List <string> fieldsWithTable = si.GetFieldsWithTable(); System.Collections.ArrayList selectedRowIDs = new System.Collections.ArrayList(); //Loop through the selected grid rows to determine if the row contains the table.field used for the synthetic items construction foreach (int rowID in taig.SelectedRows) { string field = taig.get_item(rowID, "COLUMN_NAME"); string table = GetLookupTableFromBaseTable(taig.get_item(rowID, "TABLE_NAME")); if (fieldsWithTable.Contains(table + "." + field)) { selectedRowIDs.Add(rowID); } } //Now, deselect all grid rows & select only the rows that contained a match taig.DeSelectAllRows(); taig.SelectRows(selectedRowIDs); //Generate the query clause GenerateSynthClause(); }
private void GenerateSynthClause() { SyntheticItem si = new SyntheticItem(); si.SyntheticFields = new List <string>(); si.SyntheticTables = new List <string>(); string synth = ""; if (rbMathAdd.Checked || rbMathDivide.Checked || rbMathMultiply.Checked || rbMathSubtract.Checked || rbConCat.Checked) { synth = "("; string op = ""; if (rbMathAdd.Checked || rbConCat.Checked) { si.SyntheticType = "ADDITION"; op = "+"; } if (rbMathDivide.Checked) { si.SyntheticType = "DIVISION"; op = @"\"; } if (rbMathMultiply.Checked) { si.SyntheticType = "MULTIPLICATION"; op = "*"; } if (rbMathSubtract.Checked) { si.SyntheticType = "SUBTRACTION"; op = "-"; } foreach (object o in taig.SelectedRows) { int row = (int)o; si.SyntheticFields.Add(taig.get_item(row, "COLUMN_NAME")); si.SyntheticTables.Add(GetLookupTableFromBaseTable(taig.get_item(row, "TABLE_NAME"))); synth += GetLookupTableFromBaseTable(taig.get_item(row, "TABLE_NAME")) + "." + Program.BraketizeKeywords(taig.get_item(row, "COLUMN_NAME")) + op; } // strip off the trailing op if (synth.EndsWith(op)) { synth = synth.Substring(0, synth.Length - 1); } synth += ") AS '" + txtAlias.Text + "'"; si.SyntheticAlias = txtAlias.Text; } if (rbDatePartDayOfYear.Checked || rbDatePartDays.Checked || rbDatePartMonths.Checked || rbDatePartQuarter.Checked || rbDatePartWeekOfYear.Checked || rbDatePartYears.Checked || rbDatePartCalcAge.Checked || rbCalAgeBetween2Dates.Checked) { string field = GetLookupTableFromBaseTable(taig.get_item(taig.SelectedRow, "TABLE_NAME")) + "." + Program.BraketizeKeywords(taig.get_item(taig.SelectedRow, "COLUMN_NAME")); si.SyntheticFields.Add(taig.get_item(taig.SelectedRow, "COLUMN_NAME")); si.SyntheticTables.Add(GetLookupTableFromBaseTable(taig.get_item(taig.SelectedRow, "TABLE_NAME"))); if (rbDatePartDayOfYear.Checked) { si.SyntheticType = "DATEPART - DAY OF YEAR"; synth = "DATEPART(DAYOFYEAR," + field + ") AS '" + txtAlias.Text + "'"; } if (rbDatePartDays.Checked) { si.SyntheticType = "DATEPART - DAY"; synth = "DATEPART(DAY," + field + ") AS '" + txtAlias.Text + "'"; } if (rbDatePartMonths.Checked) { si.SyntheticType = "DATEPART - MONTH"; synth = "DATEPART(MONTH," + field + ") AS '" + txtAlias.Text + "'"; } if (rbDatePartQuarter.Checked) { si.SyntheticType = "DATEPART - QUARTER"; synth = "DATEPART(QUARTER," + field + ") AS '" + txtAlias.Text + "'"; } if (rbDatePartWeekOfYear.Checked) { si.SyntheticType = "DATEPART - WEEK"; synth = "DATEPART(WEEK," + field + ") AS '" + txtAlias.Text + "'"; } if (rbDatePartYears.Checked) { si.SyntheticType = "DATEPART - YEAR"; synth = "DATEPART(YEAR," + field + ") AS '" + txtAlias.Text + "'"; } if (rbDatePartCalcAge.Checked) { si.SyntheticType = "DATEDIFF - FROM NOW"; synth = "FLOOR(DATEDIFF(day, " + field + ", GETDATE()) / 365.25) AS '" + txtAlias.Text + "'"; } if (rbCalAgeBetween2Dates.Checked && taig.SelectedRows.Count > 1) { field = GetLookupTableFromBaseTable(taig.get_item((int)taig.SelectedRows[0], "TABLE_NAME")) + "." + Program.BraketizeKeywords(taig.get_item((int)taig.SelectedRows[0], "COLUMN_NAME")); si.SyntheticFields.Add(taig.get_item((int)taig.SelectedRows[0], "COLUMN_NAME")); si.SyntheticTables.Add(GetLookupTableFromBaseTable(taig.get_item((int)taig.SelectedRows[0], "TABLE_NAME"))); string field2 = Program.BraketizeKeywords(taig.get_item((int)taig.SelectedRows[1], "COLUMN_NAME")); si.SyntheticFields.Add(taig.get_item((int)taig.SelectedRows[1], "COLUMN_NAME")); si.SyntheticTables.Add(GetLookupTableFromBaseTable(taig.get_item((int)taig.SelectedRows[1], "TABLE_NAME"))); si.SyntheticType = "DATEDIFF - FROM TWO DATES"; synth = "FLOOR(DATEDIFF(day, " + field + "," + field2 + ") / 365.25) AS '" + txtAlias.Text + "'"; } si.SyntheticAlias = txtAlias.Text; } if (rbToLowerCase.Checked || rbToUpperCase.Checked || rbPullXAtY.Checked || rbPullXLeft.Checked || rbPullXRight.Checked) { string field = GetLookupTableFromBaseTable(taig.get_item(taig.SelectedRow, "TABLE_NAME")) + "." + Program.BraketizeKeywords(taig.get_item(taig.SelectedRow, "COLUMN_NAME")); si.SyntheticFields.Add(taig.get_item(taig.SelectedRow, "COLUMN_NAME")); si.SyntheticTables.Add(GetLookupTableFromBaseTable(taig.get_item(taig.SelectedRow, "TABLE_NAME"))); if (rbToLowerCase.Checked) { si.SyntheticType = "TO LOWER CASE"; synth = "LOWER(" + field + ") AS '" + txtAlias.Text + "'"; } if (rbToUpperCase.Checked) { si.SyntheticType = "TO UPPER CASE"; synth = "UPPER(" + field + ") AS '" + txtAlias.Text + "'"; } if (rbPullXLeft.Checked) { si.SyntheticType = "LEFT"; synth = "LEFT(" + field + "," + txtX.Text + ") AS '" + txtAlias.Text + "'"; } if (rbPullXRight.Checked) { si.SyntheticType = "RIGHT"; synth = "RIGHT(" + field + "," + txtX.Text + ") AS '" + txtAlias.Text + "'"; } if (rbPullXAtY.Checked) { si.SyntheticType = "SUBSTRING"; synth = "SUBSTRING(" + field + "," + txtY.Text + "," + txtX.Text + ") AS '" + txtAlias.Text + "'"; } si.SyntheticAlias = txtAlias.Text; } si.SyntheticX = txtX.Text; si.SyntheticY = txtY.Text; SelectedSynthItem = si; txtCalc.Text = synth; }