Ejemplo n.º 1
0
        private bool SetupLinkedParameters(ref string error)
        {
            var linkedParameterList = this.LinkedParameters;

            if (linkedParameterList != null)
            {
                foreach (var lp in linkedParameterList)
                {
                    var newLp = new LinkedParameter(lp.Name);
                    if (!newLp.SetValue(lp.Value, ref error))
                    {
                        return(false);
                    }
                    foreach (var p in lp.Parameters)
                    {
                        var copiedParameter = GetCorrespondingParameter(p, this.Strucuture);
                        if (copiedParameter != null)
                        {
                            newLp.Add(copiedParameter, ref error);
                        }
                    }
                    this.GeneratedModelSystem.LinkedParameters.Add(newLp);
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
        public void DisplayExternalData(DataTable mainTable, DataGridView dataGridViewExt)
        {
            try
            {
                string tableName = mainTable.TableName;
                if (externalFields.ContainsKey(tableName) && sourceTables.ContainsKey(tableName))
                {
                    LinkedParameter lp = externalFields[tableName];

                    for (int i = 0; i < mainTable.Rows.Count; i++)
                    {
                        string value = mainTable.Rows[i][lp.ControlParameter].ToString();
                        if (value != string.Empty && value != "NULL")
                        {
                            dataGridViewExt[lp.ControlField, i].Value = value;
                        }

                        foreach (string updateParam in lp.UpdateParameterField.Keys)
                        {
                            string updateField = lp.UpdateParameterField[updateParam];
                            string mainVal = mainTable.Rows[i][updateParam].ToString();
                            if (mainVal != string.Empty && mainVal != "NULL")
                            {
                                dataGridViewExt[updateField, i].Value = mainVal;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to display external data. \n" + ex.Message, "ExternalReference Error:", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
Ejemplo n.º 3
0
        //DataTable from the linked external database with coulumns including a controlling field and updating fields.
        private void CreateSourceTable()
        {
            try
            {
                oAccess = new Access.Application();

                foreach (string tableName in externalFields.Keys)
                {
                    LinkedParameter linkedParam = externalFields[tableName];
                    DataTable sourceTable = new DataTable(linkedParam.TableName);
                    sourceTable.Columns.Add(linkedParam.ControlField);

                    foreach (string updateParam in linkedParam.UpdateParameterField.Keys)
                    {
                        string updateField = linkedParam.UpdateParameterField[updateParam];
                        sourceTable.Columns.Add(updateField);
                    }

                    oAccess.OpenCurrentDatabase(linkedParam.DBPath);
                    oAccess.Visible = false;
                    extDB = oAccess.CurrentDb();

                    string strFields = "";
                    foreach (DataColumn col in sourceTable.Columns)
                    {
                        strFields += " [" + col.ColumnName + "],";
                    }

                    strFields=strFields.Substring(0, strFields.Length - 1);//to remove the last colone in the string

                    string sqlQuery = "SELECT" + strFields + " FROM [" + linkedParam.TableName + "]";

                    Recordset recordset;
                    recordset = extDB.OpenRecordset(sqlQuery);

                    DataRow row;
                    while (!recordset.EOF)
                    {
                        row = sourceTable.NewRow();

                        foreach (DataColumn column in sourceTable.Columns)
                        {
                            row[column] = recordset.Fields[column.ColumnName].Value;
                        }
                        sourceTable.Rows.Add(row);
                        recordset.MoveNext();
                    }
                    recordset.Close();
                    if (null != oAccess.CurrentDb()) { oAccess.CloseCurrentDatabase(); }
                    sourceTables.Add(tableName, sourceTable);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Cannot create source tables. \n" + ex.Message, "ExternalReference Error:", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
Ejemplo n.º 4
0
        private void CollectExternalReference()
        {
            try
            {
                string tableName = "UI_ExternalReference";
                Recordset recordset;
                recordset = daoDB.OpenTable(tableName);

                while (!recordset.EOF)
                {
                    string controlParam = recordset.Fields["ControlParam"].Value;
                    string controlField = recordset.Fields["ControlField"].Value;
                    string categoryName = recordset.Fields["CategoryName"].Value;

                    if (!linkedParameters.ContainsKey(categoryName))
                    {
                        LinkedParameter lp = new LinkedParameter(controlParam, controlField);
                        lp.CategoryName = categoryName;
                        lp.TableName = recordset.Fields["TableName"].Value;
                        lp.DBPath = recordset.Fields["DBPath"].Value;

                        Dictionary<string, string> updateParams = new Dictionary<string, string>();
                        for (int i = 1; i < 6; i++)
                        {
                            var updateParam = recordset.Fields["UpdateParam" + i].Value;
                            var updateField = recordset.Fields["UpdateField" + i].Value;
                            if (!Convert.IsDBNull(updateParam) && updateParam!="NULL" && !updateParams.ContainsKey(updateParam)) { updateParams.Add(updateParam, updateField); }
                        }
                        lp.UpdateParameterField = updateParams;

                        if (lp.ControlField.Contains("NULL") || lp.ControlParameter.Contains("NULL") || lp.TableName.Contains("NULL") || lp.DBPath.Contains("NULL")) { continue; }
                        linkedParameters.Add(lp.CategoryName, lp);

                        string viewerTable = "";
                        if (lp.CategoryName.Contains("Rooms") || lp.CategoryName.Contains("Spaces") || lp.CategoryName.Contains("Areas")) { viewerTable = "Rvt_" + lp.CategoryName; }
                        else { viewerTable = "Type_" + lp.CategoryName; }

                        if (!externalFields.ContainsKey(viewerTable))
                        {
                            externalFields.Add(viewerTable, lp);
                        }
                    }
                    recordset.MoveNext();
                }
                recordset.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to Read Data from UI_ExternalReference table: \n" + ex.Message);
            }
        }
Ejemplo n.º 5
0
        public void ColorWarningCells(DataTable dataTable, DataGridView dataGridViewMain, DataGridView dataGridViewExt)
        {
            try
            {
                string tableName = dataTable.TableName;

                if (sourceTables.ContainsKey(tableName) && externalFields.ContainsKey(tableName))
                {
                    DataTable sourceTable = sourceTables[tableName];
                    LinkedParameter lp = externalFields[tableName];

                    for (int rowIndex = 0; rowIndex < dataGridViewExt.Rows.Count; rowIndex++)
                    {
                        if (null!=dataGridViewExt.Rows[rowIndex].Cells[0].Value && dataGridViewExt.Rows[rowIndex].Cells[0].Value.ToString()==string.Empty)
                        {
                            //dataGridViewExt.Rows[rowIndex].Cells[0].Style.BackColor = System.Drawing.Color.AntiqueWhite;
                            dataGridViewExt.Rows[rowIndex].DefaultCellStyle.BackColor = System.Drawing.Color.AntiqueWhite;
                            string revitControl = dataGridViewExt.Rows[rowIndex].Cells[0].Tag as string;
                            if (null != revitControl)
                            {
                                //dataGridViewMain.Rows[rowIndex].Cells[revitControl].Style.BackColor = System.Drawing.Color.AntiqueWhite;
                                dataGridViewMain.Rows[rowIndex].DefaultCellStyle.BackColor = System.Drawing.Color.AntiqueWhite;
                            }

                            if (warningRows.ContainsKey(tableName))
                            {
                                if (!warningRows[tableName].Contains(rowIndex))
                                {
                                    warningRows[tableName].Add(rowIndex);
                                }
                            }
                            else
                            {
                                warningRows.Add(tableName, new List<int>());
                                warningRows[tableName].Add(rowIndex);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to mark mismatched cells in the data grid view. \n" + ex.Message, "ExternalReference Error:", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
Ejemplo n.º 6
0
        public void ShowParameters(DataTable mainTable, DataGridView dataGridViewMain)
        {
            if (externalFields.ContainsKey(mainTable.TableName))
            {
                LinkedParameter linkedParam = externalFields[mainTable.TableName];

                List<string> columsToReveal = new List<string>();
                columsToReveal.Add(linkedParam.ControlParameter);
                columsToReveal.AddRange(linkedParam.UpdateParameterField.Keys.ToList());

                foreach (DataGridViewColumn column in dataGridViewMain.Columns)
                {
                    if (columsToReveal.Contains(column.Name))
                    {
                        column.Visible = true;
                    }
                }
            }
        }
 public bool Do(ref string error)
 {
     // if we don't already have a linked parameter, build one
     if ( this.LinkedParameter == null )
     {
         if ( !CheckLinkedParemterList( ref error ) )
         {
             return false;
         }
         var lp = new LinkedParameter( this.Name );
         if ( !lp.SetValue( this.InitialValue, ref error ) )
         {
             return false;
         }
         this.LinkedParameter = lp;
     }
     // store that parameter in the mode system's parameters
     this.Project.LinkedParameters[this.ModelSystemIndex].Add( this.LinkedParameter );
     return true;
 }
 public bool Do(ref string error)
 {
     // if we don't already have a linked parameter, build one
     if (this.LinkedParameter == null)
     {
         if (!CheckLinkedParemterList(ref error))
         {
             return(false);
         }
         var lp = new LinkedParameter(this.Name);
         if (!lp.SetValue(this.InitialValue, ref error))
         {
             return(false);
         }
         this.LinkedParameter = lp;
     }
     // store that parameter in the mode system's parameters
     this.ModelSystem.LinkedParameters.Add(this.LinkedParameter);
     return(true);
 }
Ejemplo n.º 9
0
        private bool SetupLinkedParameters(ref string error)
        {
            var linkedParameterList = this.ModelSystem.LinkedParameters;

            if (linkedParameterList != null)
            {
                CopiedLinkedParameters = new List <ILinkedParameter>(linkedParameterList.Count);
                foreach (var lp in linkedParameterList)
                {
                    var newLp = new LinkedParameter(lp.Name);
                    if (!newLp.SetValue(lp.Value, ref error))
                    {
                        return(false);
                    }
                    foreach (var p in lp.Parameters)
                    {
                        newLp.Add(GetCorrespondingParameter(p, this.MSS), ref error);
                    }
                    CopiedLinkedParameters.Add(newLp);
                }
            }
            return(true);
        }
Ejemplo n.º 10
0
        private void bttnOK_Click(object sender, EventArgs e)
        {
            if (ValidateLinkedParameter())
            {
                linkedParameter = new LinkedParameter(textBoxParameter.Text, textBoxField.Text);
                linkedParameter.CategoryName = selectedCategory;
                linkedParameter.DBPath       = extDBPath;
                linkedParameter.TableName    = textBoxField.Tag.ToString();

                Dictionary <string, string> updatePairs = new Dictionary <string, string>();
                foreach (ListViewItem updateParam in listViewUpdate.Items)
                {
                    string paramName = updateParam.Text;
                    string fieldName = updateParam.SubItems[1].Text;

                    updatePairs.Add(paramName, fieldName);
                }
                linkedParameter.UpdateParameterField = updatePairs;

                //ChangeUpdateParamSettings();
                UpdateDataGridView();
                this.DialogResult = DialogResult.OK;
            }
        }
Ejemplo n.º 11
0
        private List <ILinkedParameter> LoadLinkedParameters(ModelSystemStructure root, Stream stream)
        {
            var    ret   = new List <ILinkedParameter>();
            string error = null;

            using (XmlReader reader = XmlReader.Create(stream))
            {
                bool skipRead = false;
                while (!reader.EOF && (skipRead || reader.Read()))
                {
                    skipRead = false;
                    if (reader.NodeType != XmlNodeType.Element)
                    {
                        continue;
                    }
                    switch (reader.LocalName)
                    {
                    case "LinkedParameter":
                    {
                        string linkedParameterName = "Unnamed";
                        string valueRepresentation = null;
                        var    startingDepth       = reader.Depth;
                        while (reader.MoveToNextAttribute())
                        {
                            if (reader.NodeType == XmlNodeType.Attribute)
                            {
                                if (reader.LocalName == "Name")
                                {
                                    linkedParameterName = reader.ReadContentAsString();
                                }
                                else if (reader.LocalName == "Value")
                                {
                                    valueRepresentation = reader.ReadContentAsString();
                                }
                            }
                        }
                        LinkedParameter lp = new LinkedParameter(linkedParameterName);
                        lp.SetValue(valueRepresentation, ref error);
                        ret.Add(lp);
                        skipRead = true;
                        while (reader.Read())
                        {
                            if (reader.Depth <= startingDepth)
                            {
                                break;
                            }
                            if (reader.NodeType != XmlNodeType.Element)
                            {
                                continue;
                            }
                            if (reader.LocalName == "Reference")
                            {
                                string variableLink = null;
                                while (reader.MoveToNextAttribute())
                                {
                                    if (reader.Name == "Name")
                                    {
                                        variableLink = reader.ReadContentAsString();
                                    }
                                }
                                if (variableLink != null)
                                {
                                    IModuleParameter param = GetParameterFromLink(variableLink, root);
                                    if (param != null)
                                    {
                                        // in any case if there is a type error, just throw it out
                                        lp.Add(param, ref error);
                                    }
                                }
                            }
                        }
                    }
                    break;
                    }
                }
            }
            return(ret);
        }
Ejemplo n.º 12
0
        public bool CreateComboBoxList(DataTable dataTable, DataGridView dataGridViewExt)
        {
            bool exist = false;
            try
            {
                string tableName = dataTable.TableName;

                if (sourceTables.ContainsKey(tableName) && externalFields.ContainsKey(tableName) )
                {
                    DataTable sourceTable = sourceTables[tableName];
                    LinkedParameter lp = externalFields[tableName];

                    BindingSource bindingSource = new BindingSource();
                    bindingSource.DataSource = sourceTable;

                    DataGridViewComboBoxColumn combocolumn = new DataGridViewComboBoxColumn();
                    combocolumn.Name = lp.ControlField;
                    combocolumn.DataPropertyName = lp.ControlField;
                    combocolumn.HeaderText = "Ext: " + lp.ControlParameter; ;
                    combocolumn.MaxDropDownItems = 15;
                    combocolumn.DataSource = bindingSource;
                    combocolumn.DisplayMember = lp.ControlField;
                    combocolumn.ValueMember = lp.ControlField;
                    combocolumn.Tag = lp.ControlParameter;
                    combocolumn.FlatStyle = FlatStyle.Flat;
                    combocolumn.DefaultCellStyle.BackColor = System.Drawing.Color.White;
                    combocolumn.ReadOnly = false;
                    dataGridViewExt.Columns.Add(combocolumn);

                    foreach (string updateParam in lp.UpdateParameterField.Keys)
                    {
                        string updateField = lp.UpdateParameterField[updateParam];
                        DataGridViewTextBoxColumn txtcolumn = new DataGridViewTextBoxColumn();
                        txtcolumn.Name = updateField;
                        txtcolumn.HeaderText = "Ext: " + updateParam;
                        txtcolumn.Tag = updateParam;
                        dataGridViewExt.Columns.Add(txtcolumn);
                    }

                    if (dataGridViewExt.Columns.Count > 0)
                    {
                        foreach (DataRow row in dataTable.Rows)
                        {
                            int index = dataGridViewExt.Rows.Add();
                            DataGridViewRow gridRow = dataGridViewExt.Rows[index];
                            foreach (DataGridViewColumn column in dataGridViewExt.Columns)
                            {
                                gridRow.Cells[column.Name].Tag = column.Tag as string; //datagridview cell tag>> Revit parameter name
                            }
                        }
                        exist = true;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Cannot create a comboboxList. \n"+ex.Message, "ExternalReference Error:", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                exist = false;
            }
            return exist;
        }
Ejemplo n.º 13
0
 private bool SetupLinkedParameters(ref string error)
 {
     var linkedParameterList = this.LinkedParameters;
     if ( linkedParameterList != null )
     {
         foreach ( var lp in linkedParameterList )
         {
             var newLp = new LinkedParameter( lp.Name );
             if ( !newLp.SetValue( lp.Value, ref error ) )
             {
                 return false;
             }
             foreach ( var p in lp.Parameters )
             {
                 var copiedParameter = GetCorrespondingParameter( p, this.Strucuture );
                 if ( copiedParameter != null )
                 {
                     newLp.Add( copiedParameter, ref error );
                 }
             }
             this.GeneratedModelSystem.LinkedParameters.Add( newLp );
         }
     }
     return true;
 }
Ejemplo n.º 14
0
 private bool SetupLinkedParameters(ref string error)
 {
     var linkedParameterList = this.ModelSystem.LinkedParameters;
     if ( linkedParameterList != null )
     {
         CopiedLinkedParameters = new List<ILinkedParameter>( linkedParameterList.Count );
         foreach ( var lp in linkedParameterList )
         {
             var newLp = new LinkedParameter( lp.Name );
             if ( !newLp.SetValue( lp.Value, ref error ) )
             {
                 return false;
             }
             foreach ( var p in lp.Parameters )
             {
                 newLp.Add( GetCorrespondingParameter( p, this.MSS ), ref error );
             }
             CopiedLinkedParameters.Add( newLp );
         }
     }
     return true;
 }