public static void LoadFromDatabase([ItemNotNull][NotNull] ObservableCollection <AffordanceStandby> result, [NotNull] string connectionString,
                                            [ItemNotNull][NotNull] ObservableCollection <DeviceCategory> deviceCategories, [ItemNotNull][NotNull] ObservableCollection <RealDevice> realDevices,
                                            [ItemNotNull][NotNull] ObservableCollection <Affordance> affordances, [ItemNotNull][NotNull] ObservableCollection <DeviceAction> deviceActions,
                                            [ItemNotNull][NotNull] ObservableCollection <DeviceActionGroup> deviceActionGroups, bool ignoreMissingTables)
        {
            var aic = new AllItemCollections(deviceCategories: deviceCategories, realDevices: realDevices,
                                             affordances: affordances, deviceActions: deviceActions, deviceActionGroups: deviceActionGroups);

            LoadAllFromDatabase(result, connectionString, TableName, AssignFields, aic, ignoreMissingTables, false);
        }
Esempio n. 2
0
        private static TemperatureValue AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                     [NotNull] AllItemCollections aic)
        {
            var id            = dr.GetIntFromLong("ID");
            var date          = dr.GetDateTime("Date");
            var value         = dr.GetDouble("Temperatur");
            var tempProfileID = dr.GetInt("tempProfileID");
            var guid          = GetGuid(dr, ignoreMissingFields);

            return(new TemperatureValue(date, value, tempProfileID, id, connectionString, guid));
        }
        private static AffordanceStandby AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                      [NotNull] AllItemCollections aic)
        {
            var id           = dr.GetIntFromLong("ID", true, ignoreMissingFields, -1);
            var affordanceID = dr.GetIntFromLong("AffordanceID", false, ignoreMissingFields, -1);
            var deviceID     = dr.GetIntFromLong("DeviceID", false, ignoreMissingFields, -1);
            var adt          =
                (AssignableDeviceType)dr.GetIntFromLong("AssignableDeviceType", false, ignoreMissingFields);

            IAssignableDevice device;

            switch (adt)
            {
            case AssignableDeviceType.DeviceCategory:
                device = aic.DeviceCategories.FirstOrDefault(dc => dc.ID == deviceID);
                break;

            case AssignableDeviceType.Device:
                device = aic.RealDevices.FirstOrDefault(rd => rd.ID == deviceID);
                break;

            case AssignableDeviceType.DeviceAction:
                device = aic.DeviceActions.FirstOrDefault(rd => rd.ID == deviceID);
                break;

            case AssignableDeviceType.DeviceActionGroup:
                device = aic.DeviceActionGroups.FirstOrDefault(rd => rd.ID == deviceID);
                break;

            default:
                throw new LPGException("unknown device type");
            }

            var aff        = aic.Affordances.FirstOrDefault(affordance => affordance.ID == affordanceID);
            var deviceName = "(no device)";

            if (device != null)
            {
                deviceName = device.Name;
            }
            int?affid = null;

            if (aff != null)
            {
                affid = aff.IntID;
            }
            var guid = GetGuid(dr, ignoreMissingFields);
            var tup  = new AffordanceStandby(device, id, affid, connectionString, deviceName, guid)
            {
                ParentAffordance = aff
            };

            return(tup);
        }
Esempio n. 4
0
        public static void LoadFromDatabase([ItemNotNull][NotNull] ObservableCollection <HouseHousehold> result, [NotNull] string connectionString,
                                            [ItemNotNull][NotNull] ObservableCollection <ModularHousehold> modularHouseholds,
                                            [ItemNotNull][NotNull] ObservableCollection <ChargingStationSet> chargingStationSets,
                                            [ItemNotNull][NotNull] ObservableCollection <TransportationDeviceSet> transportationDeviceSets,
                                            [ItemNotNull][NotNull] ObservableCollection <TravelRouteSet> travelRouteSets,
                                            bool ignoreMissingTables)
        {
            var aic = new AllItemCollections(modularHouseholds: modularHouseholds, chargingStationSets: chargingStationSets,
                                             transportationDeviceSets: transportationDeviceSets, travelRouteSets: travelRouteSets);

            LoadAllFromDatabase(result, connectionString, TableName, AssignFields, aic, ignoreMissingTables, false);
        }
        private static LoadtypeOutcome AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                    [NotNull] AllItemCollections aic)
        {
            var id            = dr.GetIntFromLong("ID");
            var calcoutcomeID = dr.GetIntFromLong("CalculationOutcomeID", false, ignoreMissingFields, -1);
            var loadTypeName  = dr.GetString("LoadTypeName");
            var value         = dr.GetDouble("Value");
            var name          = loadTypeName + " " + value;
            var guid          = GetGuid(dr, ignoreMissingFields);

            return(new LoadtypeOutcome(name, calcoutcomeID, loadTypeName, value, connectionString, guid, id));
        }
        public static void LoadFromDatabase([ItemNotNull][NotNull] ObservableCollection <Location> result, [NotNull] string connectionString,
                                            [ItemNotNull][NotNull] ObservableCollection <RealDevice> devices, [ItemNotNull][NotNull] ObservableCollection <DeviceCategory> deviceCategories,
                                            [ItemNotNull][NotNull] ObservableCollection <VLoadType> loadTypes, bool ignoreMissingTables)
        {
            var aic = new AllItemCollections();

            LoadAllFromDatabase(result, connectionString, TableName, AssignFields, aic, ignoreMissingTables, true);
            var ld = new ObservableCollection <LocationDevice>();

            LocationDevice.LoadFromDatabase(ld, connectionString, devices, deviceCategories, loadTypes,
                                            ignoreMissingTables);
            SetSubitems(new List <DBBase>(result), new List <DBBase>(ld), IsCorrectLocationDeviceParent,
                        ignoreMissingTables);
        }
Esempio n. 7
0
        public static void LoadFromDatabase([ItemNotNull][NotNull] ObservableCollection <HouseTypeDevice> result, [NotNull] string connectionString,
                                            [ItemNotNull][NotNull] ObservableCollection <RealDevice> pallDevices, [ItemNotNull][NotNull] ObservableCollection <DeviceCategory> pallDeviceCategories,
                                            [ItemNotNull][NotNull] ObservableCollection <TimeBasedProfile> pallTimeBasedProfiles, [ItemNotNull][NotNull] ObservableCollection <TimeLimit> timeLimits,
                                            [ItemNotNull][NotNull] ObservableCollection <VLoadType> vLoadTypes, bool ignoreMissingTables,
                                            [ItemNotNull][NotNull] ObservableCollection <Location> allLocations, [ItemNotNull][NotNull] ObservableCollection <DeviceAction> deviceActions,
                                            [ItemNotNull][NotNull] ObservableCollection <DeviceActionGroup> deviceActionGroups, [ItemNotNull][NotNull] ObservableCollection <Variable> variables)
        {
            var aic = new AllItemCollections(realDevices: pallDevices,
                                             deviceCategories: pallDeviceCategories, timeProfiles: pallTimeBasedProfiles, timeLimits: timeLimits,
                                             loadTypes: vLoadTypes, locations: allLocations, deviceActions: deviceActions,
                                             deviceActionGroups: deviceActionGroups, variables: variables);

            LoadAllFromDatabase(result, connectionString, TableName, AssignFields, aic, ignoreMissingTables, false);
        }
        private static TravelRouteSetEntry AssignFields([NotNull] DataReader dr, [NotNull] string connectionString,
                                                        bool ignoreMissingFields,
                                                        [NotNull] AllItemCollections aic)
        {
            var id      = dr.GetIntFromLong("ID");
            var setid   = dr.GetIntFromLong("TravelRouteSetID");
            var routeID = dr.GetIntFromLong("TravelRouteID");
            var route   = aic.TravelRoutes.FirstOrDefault(x => x.ID == routeID);
            //var name = dr.GetString("Name",false,"",ignoreMissingFields);
            const string name = "no name";
            var          guid = GetGuid(dr, ignoreMissingFields);
            var          step = new TravelRouteSetEntry(id, setid, connectionString, name, route, guid);

            return(step);
        }
        public static void LoadFromDatabase([ItemNotNull][NotNull] ObservableCollection <STHouseholdDistribution> result,
                                            [NotNull] string connectionString, bool ignoreMissingTables, [ItemNotNull][NotNull] ObservableCollection <HouseholdTag> tags)
        {
            var aic = new AllItemCollections();

            LoadAllFromDatabase(result, connectionString, TableName, AssignFields, aic, ignoreMissingTables, false);

            var stHouseholdDistributionTags =
                new ObservableCollection <STHouseholdDistributionTag>();

            STHouseholdDistributionTag.LoadFromDatabase(stHouseholdDistributionTags, connectionString, tags,
                                                        ignoreMissingTables);
            SetSubitems(new List <DBBase>(result), new List <DBBase>(stHouseholdDistributionTags), IsCorrectParentHHDist,
                        ignoreMissingTables);
        }
        private static STHouseSize AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                [NotNull] AllItemCollections aic)
        {
            var          id = dr.GetIntFromLong("ID");
            var          settlementtemplateID = dr.GetIntFromLong("SettlementTemplateID", false, ignoreMissingFields, -1);
            var          minimumHouseSize     = dr.GetIntFromLong("MinimumHouseSize", false);
            var          maximumHouseSize     = dr.GetIntFromLong("MaximumHouseSize", false);
            var          percentage           = dr.GetDouble("Percentage", false);
            const string name = "unknown";
            var          guid = GetGuid(dr, ignoreMissingFields);

            var shh = new STHouseSize(id, connectionString, settlementtemplateID, name, minimumHouseSize,
                                      maximumHouseSize, percentage, guid);

            return(shh);
        }
        private static AffordanceTimeUseOutcome AssignFields([NotNull] DataReader dr, [NotNull] string connectionString,
                                                             bool ignoreMissingFields,
                                                             [NotNull] AllItemCollections aic)
        {
            var id             = dr.GetIntFromLong("ID");
            var calcoutcomeID  = dr.GetIntFromLong("CalculationOutcomeID", false, ignoreMissingFields, -1);
            var affordanceName = dr.GetString("AffordanceName");
            var personName     = dr.GetString("PersonName");
            var timeInMinutes  = dr.GetDouble("TimeInMinutes");
            var executions     = dr.GetIntFromLong("Executions");
            var name           = personName + " " + affordanceName;
            var guid           = GetGuid(dr, ignoreMissingFields);

            return(new AffordanceTimeUseOutcome(name, calcoutcomeID, affordanceName, timeInMinutes, personName,
                                                executions, connectionString, guid, id));
        }
        private static HHTAffordance AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                  [NotNull]     AllItemCollections aic)
        {
            var hhdevlocID       = dr.GetIntFromLong("ID");
            var householdTraitID = dr.GetIntFromLong("HouseholdTraitID");
            var affID            = dr.GetIntFromLong("AffordanceID");
            var weight           = dr.GetIntFromLong("Weight", false, ignoreMissingFields, 100);
            var locationID       = dr.GetIntFromLong("LocationID");
            var timeLimitID      = dr.GetIntFromLong("TimeLimitID", false, ignoreMissingFields);
            var aff = aic.Affordances.FirstOrDefault(myaff => myaff.ID == affID);

            var startMinusMinutes = dr.GetIntFromLong("StartMinusMinutes", false, ignoreMissingFields);
            var startPlusMinutes  = dr.GetIntFromLong("StartPlusMinutes", false, ignoreMissingFields);

            var endMinusMinutes = dr.GetIntFromLong("EndMinusMinutes", false, ignoreMissingFields);
            var endPlusMinutes  = dr.GetIntFromLong("EndPlusMinutes", false, ignoreMissingFields);

            var hht =
                aic.HouseholdTraits.FirstOrDefault(myhouseholdtrait => myhouseholdtrait.ID == householdTraitID);
            HHTLocation hhtloc = null;

            if (hht != null)
            {
                hhtloc = hht.Locations.FirstOrDefault(myhhtl => myhhtl.Location.ID == locationID);
            }
            var affname = "(no name)";

            if (aff != null)
            {
                affname = aff.Name;
            }
            var hhlName = "(no name)";

            if (hhtloc != null)
            {
                hhlName = hhtloc.Name;
            }
            var       householdName = affname + " - " + hhlName;
            TimeLimit timeLimit     = aic.TimeLimits.FirstOrDefault(x => x.ID == timeLimitID);
            var       guid          = GetGuid(dr, ignoreMissingFields);

            var hhdl = new HHTAffordance(hhdevlocID, aff, hhtloc, householdTraitID, connectionString,
                                         householdName, timeLimit, weight, startMinusMinutes, startPlusMinutes, endMinusMinutes, endPlusMinutes, guid);

            hhtloc?.AffordanceLocations.Add(hhdl);
            return(hhdl);
        }
Esempio n. 13
0
        private static AffordanceTagReference AssignFields([NotNull] DataReader dr, [NotNull] string connectionString,
                                                           bool ignoreMissingFields, [NotNull] AllItemCollections aic)
        {
            var holidayDateID = dr.GetIntFromLong("ID");
            var taggingSetID  = dr.GetIntFromLong("TaggingSetID");
            var tagID         = dr.GetIntFromLong("TagID");
            var tag           = aic.AffordanceTags.FirstOrDefault(myTag => myTag.ID == tagID);
            var name          = GetName(tag);
            var gender        = (PermittedGender)dr.GetIntFromLong("Gender", false, ignoreMissingFields);
            var percentage    = dr.GetDouble("Percentage", false, 0, ignoreMissingFields);
            var minAge        = dr.GetIntFromLong("MinAge", false, ignoreMissingFields, 1);
            var maxAge        = dr.GetIntFromLong("MaxAge", false, ignoreMissingFields, 99);
            var guid          = GetGuid(dr, ignoreMissingFields);

            return(new AffordanceTagReference(name, taggingSetID, tag, connectionString, holidayDateID, gender, minAge,
                                              maxAge, percentage, guid));
        }
        private static TravelRouteStep AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                    [NotNull] AllItemCollections aic)
        {
            var id      = dr.GetIntFromLong("ID");
            var routeid = dr.GetIntFromLong("TravelRouteID");
            var transportationDeviceID = dr.GetIntFromLong("TravelDeviceID");
            var stepNumber             = dr.GetIntFromLong("StepNumber");
            var distance = dr.GetDouble("Distance");
            var transportationDeviceCategory = aic.TransportationDeviceCategories.FirstOrDefault(x => x.ID == transportationDeviceID);
            var name    = dr.GetString("Name", false, "(no name)", ignoreMissingFields);
            var stepKey = dr.GetString("StepKey", false, "", ignoreMissingFields);
            var guid    = GetGuid(dr, ignoreMissingFields);
            var step    = new TravelRouteStep(id, routeid, connectionString, name, transportationDeviceCategory, distance,
                                              stepNumber, guid, stepKey);

            return(step);
        }
        private static SettlementHH AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                 [NotNull] AllItemCollections aic)
        {
            var shhID            = dr.GetIntFromLong("ID");
            var settlementID     = dr.GetInt("SettlementID", false, -1, ignoreMissingFields);
            var householdID      = dr.GetIntFromLongOrInt("HouseholdID", false);
            var count            = dr.GetInt("Count");
            var calcObjectTypeID = dr.GetNullableIntFromLong("CalcObjectType", false, ignoreMissingFields);
            var objectType       = CalcObjectType.ModularHousehold;

            if (objectType == (CalcObjectType)1)
            {
                objectType = CalcObjectType.ModularHousehold;
            }
            if (calcObjectTypeID != null && calcObjectTypeID != 0)
            {
                objectType = (CalcObjectType)calcObjectTypeID;
            }

            ICalcObject calcObject;

            switch (objectType)
            {
            case CalcObjectType.ModularHousehold:
                calcObject = aic.ModularHouseholds.FirstOrDefault(hh1 => hh1.ID == householdID);
                break;

            case CalcObjectType.House:
                calcObject = aic.Houses.FirstOrDefault(hh1 => hh1.ID == householdID);
                break;

            default: throw new LPGException("Unknown CalcObjectType! This is a bug.");
            }

            var householdName = string.Empty;

            if (calcObject != null)
            {
                householdName = calcObject.Name;
            }
            var guid = GetGuid(dr, ignoreMissingFields);
            var shh  = new SettlementHH(shhID, calcObject, count, settlementID, connectionString,
                                        householdName, guid);

            return(shh);
        }
Esempio n. 16
0
        private static HHTTrait AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                             [NotNull] AllItemCollections aic)
        {
            var hhtDesireID   = dr.GetIntFromLong("ID");
            var parentTraitID = dr.GetIntFromLong("ParentTraitID");
            var thisTraitID   = dr.GetIntFromLong("ThisTraitID");
            var subhht        = aic.HouseholdTraits.FirstOrDefault(mytrait => mytrait.ID == thisTraitID);
            var name          = "(no name)";

            if (subhht != null)
            {
                name = subhht.Name;
            }
            var guid   = GetGuid(dr, ignoreMissingFields);
            var hhtsub = new HHTTrait(hhtDesireID, parentTraitID, subhht, connectionString, name, guid);

            return(hhtsub);
        }
        private static HHTemplateVacation AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                       [NotNull] AllItemCollections aic)
        {
            var hhpID      = dr.GetIntFromLong("ID");
            var vacationID = dr.GetIntFromLong("VacationID", ignoreMissingField: ignoreMissingFields);
            var templateID = dr.GetIntFromLong("HHTemplateID");
            var v          = aic.Vacations.FirstOrDefault(mypers => mypers.ID == vacationID);
            var name       = "(no name)";

            if (v != null)
            {
                name = v.Name;
            }
            var guid = GetGuid(dr, ignoreMissingFields);
            var hhp  = new HHTemplateVacation(hhpID, v, templateID, name, connectionString, guid);

            return(hhp);
        }
Esempio n. 18
0
        private static SiteLocation AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                 [NotNull] AllItemCollections aic)
        {
            var siteLocID  = dr.GetIntFromLong("ID");
            var siteID     = dr.GetIntFromLong("SiteID");
            var locationID = dr.GetIntFromLong("LocationID");
            var loc        = aic.Locations.FirstOrDefault(x => x.ID == locationID);
            var name       = "(no name)";

            if (loc != null)
            {
                name = loc.Name;
            }
            var guid   = GetGuid(dr, ignoreMissingFields);
            var locdev = new SiteLocation(siteLocID, loc, siteID, connectionString, name, guid);

            return(locdev);
        }
        private static HouseTypeGenerator AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                       [NotNull] AllItemCollections aic)
        {
            var id            = dr.GetIntFromLong("ID");
            var generatorID   = dr.GetIntFromLong("GeneratorID");
            var houseID       = dr.GetIntFromLong("HouseID");
            var mygen         = aic.Generators.FirstOrDefault(gen => gen.ID == generatorID);
            var generatorName = string.Empty;

            if (mygen != null)
            {
                generatorName = mygen.Name;
            }
            var guid = GetGuid(dr, ignoreMissingFields);

            return(new HouseTypeGenerator(id, houseID, mygen, connectionString, generatorName,
                                          guid));
        }
        private static HouseTypeEnergyStorage AssignFields([NotNull] DataReader dr, [NotNull] string connectionString,
                                                           bool ignoreMissingFields, [NotNull] AllItemCollections aic)
        {
            var id = dr.GetIntFromLong("ID");
            var energyStorageID = dr.GetIntFromLong("EnergyStorageID");

            var houseID = dr.GetIntFromLong("HouseID");

            var es   = aic.EnergyStorages.FirstOrDefault(energyStorage => energyStorage.ID == energyStorageID);
            var name = "(no name)";

            if (es != null)
            {
                name = es.Name;
            }
            var guid = GetGuid(dr, ignoreMissingFields);

            return(new HouseTypeEnergyStorage(id, name, houseID, es, connectionString, guid));
        }
        private static HHTLocation AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                [NotNull] AllItemCollections aic)
        {
            var hhlID       = dr.GetIntFromLong("ID");
            var locationID  = dr.GetIntFromLong("LocationID");
            var householdID = dr.GetNullableIntFromLong("HouseholdTraitID", false, ignoreMissingFields);

            var loc  = aic.Locations.FirstOrDefault(myloc => myloc.ID == locationID);
            var name = "(no name)";

            if (loc != null)
            {
                name = loc.Name;
            }
            var guid = GetGuid(dr, ignoreMissingFields);
            var hhl  = new HHTLocation(hhlID, loc, householdID, name, connectionString, guid);

            return(hhl);
        }
Esempio n. 22
0
        private static HHTemplateTag AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                  [NotNull] AllItemCollections aic)
        {
            var hhpID         = dr.GetIntFromLong("ID");
            var templateTagID = dr.GetIntFromLong("TemplateTagID", ignoreMissingField: ignoreMissingFields);
            var householdID   = dr.GetIntFromLong("HHTemplateID");
            var p             = aic.HouseholdTags.FirstOrDefault(x => x.ID == templateTagID);
            var name          = "(no name)";

            if (p != null)
            {
                name = p.Name;
            }
            var guid = GetGuid(dr, ignoreMissingFields);

            var hhp = new HHTemplateTag(hhpID, p, householdID, name, connectionString, guid);

            return(hhp);
        }
Esempio n. 23
0
        private static GeographicLocHoliday AssignFields([NotNull] DataReader dr, [NotNull] string connectionString,
                                                         bool ignoreMissingFields, [NotNull] AllItemCollections aic)
        {
            var id                   = dr.GetIntFromLong("ID");
            var holidayID            = dr.GetIntFromLong("HolidayID");
            var geographicLocationID = dr.GetIntFromLong("GeographicLocationID");
            var holiday              = aic.Holidays.FirstOrDefault(myhd => myhd.ID == holidayID);
            var holidayName          = string.Empty;

            if (holiday != null)
            {
                holidayName = holiday.Name;
            }
            var guid = GetGuid(dr, ignoreMissingFields);
            var tdlt = new GeographicLocHoliday(id, holiday, geographicLocationID, connectionString,
                                                holidayName, guid);

            return(tdlt);
        }
        private static STHouseholdTemplate AssignFields([NotNull] DataReader dr, [NotNull] string connectionString,
                                                        bool ignoreMissingFields, [NotNull] AllItemCollections aic)
        {
            var id = dr.GetIntFromLong("ID");
            var settlementtemplateID = dr.GetIntFromLong("SettlementTemplateID", false, ignoreMissingFields, -1);
            var householdTemplateID  = dr.GetIntFromLong("HouseholdTemplateID", false);
            var ht   = aic.HouseholdTemplates.FirstOrDefault(x => x.IntID == householdTemplateID);
            var name = "unknown";

            if (ht != null)
            {
                name = ht.Name;
            }
            var guid = GetGuid(dr, ignoreMissingFields);

            var shh = new STHouseholdTemplate(id, connectionString, settlementtemplateID, name, ht, guid);

            return(shh);
        }
        private static HHTemplateEntryPerson AssignFields([NotNull] DataReader dr, [NotNull] string connectionString,
                                                          bool ignoreMissingFields, [NotNull] AllItemCollections aic)
        {
            var hhpID       = dr.GetIntFromLong("ID");
            var personID    = dr.GetIntFromLong("PersonID", ignoreMissingField: ignoreMissingFields);
            var householdID = dr.GetIntFromLong("HHGEntryID");
            var p           = aic.Persons.FirstOrDefault(mypers => mypers.ID == personID);
            var name        = "(no name)";

            if (p != null)
            {
                name = p.Name;
            }
            var guid = GetGuid(dr, ignoreMissingFields);

            var hhp = new HHTemplateEntryPerson(hhpID, p, householdID,
                                                name, connectionString, guid);

            return(hhp);
        }
        private static AffordanceDesire AssignFields([NotNull] DataReader dr, [NotNull] string connectionString, bool ignoreMissingFields,
                                                     [NotNull] AllItemCollections aic)
        {
            var id                = dr.GetIntFromLong("ID");
            var affordanceID      = dr.GetIntFromLongOrInt("AffordanceID", false, ignoreMissingFields, -1);
            var desireID          = dr.GetInt("DesireID");
            var satisfactionValue = dr.GetDecimal("SatisfactionValue");
            var name              = "no name";
            var des               = aic.Desires.FirstOrDefault(tp => tp.ID == desireID);

            if (des != null)
            {
                name = des.Name;
            }
            var guid             = GetGuid(dr, ignoreMissingFields);
            var affordanceDesire = new AffordanceDesire(id, des, affordanceID, satisfactionValue,
                                                        aic.Desires, name, connectionString, guid);

            return(affordanceDesire);
        }
        private static TemplatePersonTrait AssignFields([NotNull] DataReader dr, [NotNull] string connectionString,
                                                        bool ignoreMissingFields,
                                                        [NotNull] AllItemCollections aic)
        {
            var id = dr.GetIntFromLong("ID");
            var templatePersonID = dr.GetIntFromLong("TemplatePersonID");
            var traitID          = dr.GetNullableIntFromLong("HouseholdTraitID", false, ignoreMissingFields);

            var trait = aic.HouseholdTraits.FirstOrDefault(mytrait => mytrait.ID == traitID);
            var name  = "(no name)";

            if (trait != null)
            {
                name = trait.Name;
            }
            var guid = GetGuid(dr, ignoreMissingFields);
            var chht = new TemplatePersonTrait(id, templatePersonID, name, connectionString, trait,
                                               guid);

            return(chht);
        }
        public static void LoadFromDatabase([ItemNotNull][NotNull] ObservableCollection <HouseTypeGenerator> result, [NotNull] string connectionString,
                                            [NotNull][ItemNotNull] ObservableCollection <Generator> generators, bool ignoreMissingTables)
        {
            var aic = new AllItemCollections(generators: generators);

            LoadAllFromDatabase(result, connectionString, TableName, AssignFields, aic, ignoreMissingTables, false);
            var items2Delete = new List <HouseTypeGenerator>();

            foreach (var houseGenerator in result)
            {
                if (houseGenerator.Generator == null)
                {
                    items2Delete.Add(houseGenerator);
                }
            }
            foreach (var houseGenerator in items2Delete)
            {
                houseGenerator.DeleteFromDB();
                result.Remove(houseGenerator);
            }
        }
        public static void LoadFromDatabase([ItemNotNull][NotNull] ObservableCollection <RealDeviceLoadType> result, [NotNull] string connectionString,
                                            [NotNull][ItemNotNull] ObservableCollection <VLoadType> loadTypes, bool ignoreMissingTables)
        {
            var aic = new AllItemCollections(loadTypes: loadTypes);

            LoadAllFromDatabase(result, connectionString, TableName, AssignFields, aic, ignoreMissingTables, false);
            var items2Delete = new ObservableCollection <RealDeviceLoadType>();

            foreach (var realDeviceLoadType in result)
            {
                if (realDeviceLoadType.LoadType == null)
                {
                    items2Delete.Add(realDeviceLoadType);
                }
            }
            foreach (var realDeviceLoadType in items2Delete)
            {
                realDeviceLoadType.DeleteFromDB();
                result.Remove(realDeviceLoadType);
            }
        }
        public static void LoadFromDatabase([ItemNotNull][NotNull] ObservableCollection <SubAffordanceDesire> result, [NotNull] string connectionString,
                                            [ItemNotNull][NotNull] ObservableCollection <Desire> desires, bool ignoreMissingTables)
        {
            var aic = new AllItemCollections(desires: desires);

            LoadAllFromDatabase(result, connectionString, TableName, AssignFields, aic, ignoreMissingTables, false);
            var items2Delete = new List <SubAffordanceDesire>();

            foreach (var subAffordanceDesire in result)
            {
                if (subAffordanceDesire._desire == null || subAffordanceDesire.SubaffordanceID == null)
                {
                    items2Delete.Add(subAffordanceDesire);
                }
            }
            foreach (var desire in items2Delete)
            {
                desire.DeleteFromDB();
                result.Remove(desire);
            }
        }