protected virtual Model.ExternalDBField processExternalopenXDAField(T xdaObj, Model.ExternalDBField field)
 {
     return(field);
 }
        private List <Model.ExternalDBField> GetFields(string tableName, Tuple <IEnumerable <Model.AdditionalField>, IEnumerable <Model.ExternalOpenXDAField> > collumns, T xdaObj)
        {
            List <Model.ExternalDBField> result = new List <Model.ExternalDBField>();

            if (collumns.Item1.Count() < 1 && collumns.Item2.Count() < 1)
            {
                return(result);
            }

            IEnumerable <string> querycol = collumns.Item1.Select(item => item.ExternalDBTableKey).Union(collumns.Item2.Select(item => item.ExternalDBTableKey));

            string query = "SELECT " + String.Join(", ", querycol);

            query = query + " FROM " + GetTableQuery(tableName) + " WHERE " + getDataQuery(xdaObj, tableName);

            Dictionary <string, string> extData = new Dictionary <string, string>();

            if (extDBType == DatabaseType.Oracle)
            {
                CategorizedSettingsElementCollection reportSettings = ConfigurationFile.Current.Settings[extDBConnectionSetting];
                string conString = reportSettings["ConnectionString"].Value;

                using (OracleConnection con = new OracleConnection(conString))
                {
                    con.Open();
                    using (OracleCommand cmd = con.CreateCommand())
                    {
                        cmd.CommandText = query;


                        using (OracleDataReader reader = cmd.ExecuteReader())
                        {
                            if (reader.Read())
                            {
                                for (int i = 0; i < (reader.FieldCount); i++)
                                {
                                    if (reader.GetValue(i) == null)
                                    {
                                        extData.Add(reader.GetName(i).ToLower(), "");
                                    }
                                    else
                                    {
                                        extData.Add(reader.GetName(i).ToLower(), reader.GetValue(i).ToString());
                                    }
                                }
                            }
                            else
                            {
                                throw new Exception("Key not found in DataBase");
                            }
                        }
                    }
                }
            }
            else
            {
                using (AdoDataConnection connection = new AdoDataConnection(extDBConnectionSetting))
                {
                    DataTable dataTable = connection.RetrieveData(query);

                    foreach (DataRow row in dataTable.AsEnumerable())
                    {
                        extData = row.Table.Columns.Cast <DataColumn>().ToDictionary(c => c.ColumnName.ToLower(), c => row[c].ToString());
                    }
                }
            }

            //Sort Through Data to get any Data that has changed or does not exist only
            using (AdoDataConnection connection = new AdoDataConnection("systemSettings"))
            {
                TableOperations <Model.AdditionalFieldValue> valueTable = new TableOperations <Model.AdditionalFieldValue>(connection);

                result = collumns.Item1.Select(item =>
                {
                    string value = item.ExternalDBTableKey;
                    extData.TryGetValue(item.ExternalDBTableKey.ToLower(), out value);

                    Model.ExternalDBField res = new Model.ExternalDBField()
                    {
                        FieldName         = item.FieldName,
                        Value             = value,
                        Error             = false,
                        PreviousValue     = null,
                        FieldValueID      = null,
                        AdditionalFieldID = item.ID,
                        isXDAField        = false,
                        Changed           = false,
                    };

                    res = processExternalAdditionalField(xdaObj, res);

                    if (valueTable.QueryRecordCountWhere("AdditionalFieldID = {0} AND ParentTableID = {1}", item.ID, res.ParentTableID) > 0)
                    {
                        Model.AdditionalFieldValue val = valueTable.QueryRecordsWhere("AdditionalFieldID = {0} AND ParentTableID = {1}", item.ID, res.ParentTableID).First();
                        res.FieldValueID  = val.ID;
                        res.PreviousValue = val.Value;
                    }

                    return(res);
                }).ToList();

                result = result.Concat(collumns.Item2.Select(item =>
                {
                    string value = item.ExternalDBTableKey;
                    extData.TryGetValue(item.ExternalDBTableKey.ToLower(), out value);

                    Model.ExternalDBField res = new Model.ExternalDBField()
                    {
                        AdditionalFieldID = item.ID,
                        FieldName         = item.FieldName,
                        Value             = value,
                        Error             = false,
                        PreviousValue     = Convert.ToString(xdaObj.GetType().GetProperty(item.FieldName).GetValue(xdaObj)),
                        isXDAField        = true,
                        Changed           = false,
                    };

                    res = processExternalopenXDAField(xdaObj, res);

                    return(res);
                })).ToList();
            }

            return(result.Where(item => item.PreviousValue != item.Value).ToList());
        }
 protected virtual Model.ExternalDBField processExternalAdditionalField(T xdaObj, Model.ExternalDBField field)
 {
     return(field);
 }
 protected override Model.ExternalDBField processExternalopenXDAField(Transformer xfr, Model.ExternalDBField field)
 {
     field.ParentTableID = xfr.ID;
     field.DisplayName   = xfr.AssetKey;
     return(field);
 }
 protected override Model.ExternalDBField processExternalopenXDAField(LineSegment segment, Model.ExternalDBField field)
 {
     field.ParentTableID = segment.ID;
     field.DisplayName   = segment.AssetKey;
     return(field);
 }
Example #6
0
 protected override Model.ExternalDBField processExternalAdditionalField(Meter meter, Model.ExternalDBField field)
 {
     field.ParentTableID = meter.ID;
     field.DisplayName   = meter.AssetKey;
     return(field);
 }
 protected override Model.ExternalDBField processExternalopenXDAField(Bus bus, Model.ExternalDBField field)
 {
     field.ParentTableID = bus.ID;
     field.DisplayName   = bus.AssetKey;
     return(field);
 }
 protected override Model.ExternalDBField processExternalopenXDAField(Location location, Model.ExternalDBField field)
 {
     field.ParentTableID = location.ID;
     field.DisplayName   = location.LocationKey;
     return(field);
 }
 protected override Model.ExternalDBField processExternalAdditionalField(Line line, Model.ExternalDBField field)
 {
     field.ParentTableID = line.ID;
     field.DisplayName   = line.AssetKey;
     return(field);
 }
 protected override Model.ExternalDBField processExternalopenXDAField(CapBank capBank, Model.ExternalDBField field)
 {
     field.ParentTableID = capBank.ID;
     field.DisplayName   = capBank.AssetKey;
     return(field);
 }