Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit b94b0a6f authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

declarationmode factory: in case no segment was found, try again with...

declarationmode factory: in case no segment was found, try again with vocational set to false; additional parameter in dataobjectadapter to overwrite vocational field from input in case no segment with vocational was found.
parent cfce4ca5
No related branches found
No related tags found
No related merge requests found
......@@ -112,7 +112,7 @@ Public Class Vehicle
Dim segment As Segment = DeclarationData.Segments.Lookup(vehicle.VehicleCategory, vehicle.AxleConfiguration,
vehicle.GrossVehicleMassRating, vehicle.CurbMassChassis, false)
vehicleData = doa.CreateVehicleData(vehicle, segment.Missions.First(),
segment.Missions.First().Loadings.First().Value)
segment.Missions.First().Loadings.First().Value, true)
airdragData = doa.CreateAirdragData(vehicle, segment.Missions.First(), segment)
retarderData = doa.CreateRetarderData(vehicle)
angledriveData = doa.CreateAngledriveData(vehicle)
......
......@@ -79,18 +79,18 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
return retVal;
}
internal VehicleData CreateVehicleData(IVehicleDeclarationInputData data, Mission mission, Kilogram loading)
internal VehicleData CreateVehicleData(IVehicleDeclarationInputData data, Mission mission, Kilogram loading, bool allowVocational)
{
if (!data.SavedInDeclarationMode) {
WarnDeclarationMode("VehicleData");
}
return data.ExemptedVehicle
? CreateExemptedVehicleData(data)
: CreateNonExemptedVehicleData(data, mission, loading);
: CreateNonExemptedVehicleData(data, mission, loading, allowVocational);
}
private VehicleData CreateNonExemptedVehicleData(
IVehicleDeclarationInputData data, Mission mission, Kilogram loading)
IVehicleDeclarationInputData data, Mission mission, Kilogram loading, bool allowVocational)
{
var retVal = SetCommonVehicleData(data);
retVal.AxleConfiguration = data.AxleConfiguration;
......@@ -111,7 +111,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
.Average();
retVal.CargoVolume = mission.MissionType != MissionType.Construction ? mission.TotalCargoVolume : 0.SI<CubicMeter>();
retVal.VocationalVehicle = data.VocationalVehicle;
retVal.VocationalVehicle = allowVocational && data.VocationalVehicle;
retVal.ADAS = CreateADAS(data.ADAS);
var axles = data.Components.AxleWheels.AxlesDeclaration;
......
......@@ -59,6 +59,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
protected IDeclarationReport Report;
private DeclarationDataAdapter _dao;
private Segment _segment;
private bool allowVocational;
private DriverData _driverdata;
private AirdragData _airdragData;
private CombustionEngineData _engineData;
......@@ -74,7 +75,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
{
InputDataProvider = dataProvider;
Report = report;
allowVocational = true;
try {
Initialize();
if (Report != null) {
......@@ -92,11 +93,23 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
if (vehicle.ExemptedVehicle) {
return;
}
_segment = GetVehicleClassification(vehicle.VehicleCategory,
vehicle.AxleConfiguration,
vehicle.GrossVehicleMassRating,
vehicle.CurbMassChassis,
vehicle.VocationalVehicle);
try {
_segment = GetVehicleClassification(
vehicle.VehicleCategory,
vehicle.AxleConfiguration,
vehicle.GrossVehicleMassRating,
vehicle.CurbMassChassis,
vehicle.VocationalVehicle);
} catch (VectoException) {
allowVocational = false;
_segment = GetVehicleClassification(
vehicle.VehicleCategory,
vehicle.AxleConfiguration,
vehicle.GrossVehicleMassRating,
vehicle.CurbMassChassis,
false);
}
if (!_segment.Found) {
throw new VectoException(
"no segment found for vehicle configruation: vehicle category: {0}, axle configuration: {1}, GVMR: {2}",
......@@ -106,7 +119,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
_driverdata = _dao.CreateDriverData();
_driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(_segment.AccelerationFile);
var tempVehicle = _dao.CreateVehicleData(vehicle, _segment.Missions.First(),
_segment.Missions.First().Loadings.First().Value);
_segment.Missions.First().Loadings.First().Value, allowVocational);
_airdragData = _dao.CreateAirdragData(vehicle.Components.AirdragInputData,
_segment.Missions.First(), _segment);
_engineData = _dao.CreateEngineData(vehicle.Components.EngineInputData,
......@@ -130,7 +143,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
if (InputDataProvider.JobInputData.Vehicle.ExemptedVehicle) {
powertrainConfig = new VectoRunData() {
Exempted = true,
VehicleData = _dao.CreateVehicleData(InputDataProvider.JobInputData.Vehicle, null, null),
VehicleData = _dao.CreateVehicleData(InputDataProvider.JobInputData.Vehicle, null, null, allowVocational),
InputDataHash = InputDataProvider.XMLHash
};
} else {
......@@ -138,7 +151,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
VehicleData =
_dao.CreateVehicleData(
InputDataProvider.JobInputData.Vehicle, _segment.Missions.First(),
_segment.Missions.First().Loadings.First().Value),
_segment.Missions.First().Loadings.First().Value, allowVocational),
AirdragData = _airdragData,
EngineData = _engineData,
GearboxData = _gearboxData,
......@@ -168,7 +181,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
Exempted = true,
Report = Report,
Mission = new Mission() { MissionType = MissionType.ExemptedMission},
VehicleData = _dao.CreateVehicleData(InputDataProvider.JobInputData.Vehicle, null, null),
VehicleData = _dao.CreateVehicleData(InputDataProvider.JobInputData.Vehicle, null, null, allowVocational),
InputDataHash = InputDataProvider.XMLHash
};
} else {
......@@ -201,7 +214,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
var simulationRunData = new VectoRunData {
Loading = loading.Key,
VehicleDesignSpeed = _segment.DesignSpeed,
VehicleData = _dao.CreateVehicleData(vehicle, mission, loading.Value),
VehicleData = _dao.CreateVehicleData(vehicle, mission, loading.Value, allowVocational),
AirdragData = _dao.CreateAirdragData(vehicle.Components.AirdragInputData, mission, _segment),
EngineData = _engineData.Copy(), // a copy is necessary because every run has a different correction factor!
GearboxData = _gearboxData,
......
......@@ -59,6 +59,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
protected PTOData PTOTransmissionData;
protected List<VectoRunData.AuxData> AuxVTP;
protected Segment Segment;
protected bool allowVocational;
protected DeclarationDataAdapter Dao;
protected Exception InitException;
......@@ -71,6 +72,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
{
JobInputData = job;
Report = report;
allowVocational = true;
try {
Initialize();
if (Report != null) {
......@@ -87,7 +89,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
VehicleData =
Dao.CreateVehicleData(
JobInputData.Vehicle, Segment.Missions.First(),
Segment.Missions.First().Loadings.First().Value),
Segment.Missions.First().Loadings.First().Value, allowVocational),
AirdragData = AirdragData,
EngineData = EngineData,
GearboxData = GearboxData,
......@@ -111,17 +113,27 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
{
Dao = new DeclarationDataAdapter();
var vehicle = JobInputData.Vehicle;
Segment = DeclarationData.Segments.Lookup(
vehicle.VehicleCategory,
vehicle.AxleConfiguration,
vehicle.GrossVehicleMassRating,
vehicle.CurbMassChassis,
vehicle.VocationalVehicle);
try {
Segment = DeclarationData.Segments.Lookup(
vehicle.VehicleCategory,
vehicle.AxleConfiguration,
vehicle.GrossVehicleMassRating,
vehicle.CurbMassChassis,
vehicle.VocationalVehicle);
} catch (VectoException) {
allowVocational = false;
Segment = DeclarationData.Segments.Lookup(
vehicle.VehicleCategory,
vehicle.AxleConfiguration,
vehicle.GrossVehicleMassRating,
vehicle.CurbMassChassis,
false);
}
Driverdata = Dao.CreateDriverData();
Driverdata.AccelerationCurve = AccelerationCurveReader.ReadFromStream(Segment.AccelerationFile);
var tempVehicle = Dao.CreateVehicleData(
vehicle, Segment.Missions.First(),
Segment.Missions.First().Loadings.First().Value);
Segment.Missions.First().Loadings.First().Value, allowVocational);
AirdragData = Dao.CreateAirdragData(
vehicle.Components.AirdragInputData,
Segment.Missions.First(), Segment);
......@@ -226,7 +238,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
AngledriveData = AngledriveData,
VehicleData = Dao.CreateVehicleData(
JobInputData.Vehicle, mission,
loading),
loading, allowVocational),
AirdragData = AirdragData,
DriverData = null,
AdvancedAux = null,
......
......@@ -590,46 +590,62 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 7500.01, 0, false, VehicleClass.Class1),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10000, 0, false, VehicleClass.Class1),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, false, VehicleClass.Class1),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, true, VehicleClass.Class1),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10001, 0, false, VehicleClass.Class2),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10001, 0, false, VehicleClass.Class2),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, false, VehicleClass.Class2),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, false, VehicleClass.Class2),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, true, VehicleClass.Class2),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12001, 0, false, VehicleClass.Class3),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12001, 0, false, VehicleClass.Class3),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, false, VehicleClass.Class3),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, false, VehicleClass.Class3),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, true, VehicleClass.Class3),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, false, VehicleClass.Class4),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 99000, 0, false, VehicleClass.Class4),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, true, VehicleClass.Class4),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 99000, 0, true, VehicleClass.Class4),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, false, VehicleClass.Class5),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 99000, 0, false, VehicleClass.Class5),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, true, VehicleClass.Class5),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 99000, 0, true, VehicleClass.Class5),
//TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4, 7500, 0, VehicleClass.Class6),
//TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4, 16000, 0, VehicleClass.Class6),
//TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4, 16001, 0, VehicleClass.Class7),
//TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x4, 99000, 0, VehicleClass.Class7),
//TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x4, 16000, 0, VehicleClass.Class8),
//TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x4, 99000, 0, VehicleClass.Class8),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7500, 0, false, VehicleClass.Class9),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, false, VehicleClass.Class9),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, false, VehicleClass.Class9),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 99000, 0, false, VehicleClass.Class9),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7500, 0, true, VehicleClass.Class9),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 99000, 0, true, VehicleClass.Class9),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, false, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 16000, 0, false, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, false, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 99000, 0, false, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, true, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 99000, 0, true, VehicleClass.Class10),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 7500, 0, false, VehicleClass.Class11),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 40000, 0, false, VehicleClass.Class11),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x4, 40000, 0, true, VehicleClass.Class11),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 7500, 0, false, VehicleClass.Class12),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 99000, 0, false, VehicleClass.Class12),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x4, 99000, 0, true, VehicleClass.Class12),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 7500, 0, false, VehicleClass.Class16),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 99000, 0, false, VehicleClass.Class16)
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 99000, 0, false, VehicleClass.Class16),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_8x4, 99000, 0, true, VehicleClass.Class16)
]
public void SegmentLookupTest(VehicleCategory category, AxleConfiguration axleConfiguration, double grossWeight,
double curbWeight, bool vocational, VehicleClass expectedClass)
......
......@@ -879,7 +879,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
var segment = DeclarationData.Segments.Lookup(
vehicle.VehicleCategory, vehicle.AxleConfiguration, vehicle.GrossVehicleMassRating, vehicle.CurbMassChassis,
false);
var vehicleData = dao.CreateVehicleData(inputData.JobInputData.Vehicle, segment.Missions.First(), 0.SI<Kilogram>());
var vehicleData = dao.CreateVehicleData(inputData.JobInputData.Vehicle, segment.Missions.First(), 0.SI<Kilogram>(), true);
var rdyn = vehicleData.DynamicTyreRadius;
var shiftPolygons = new List<ShiftPolygon>();
......
......@@ -117,6 +117,7 @@
<Compile Include="Integration\TorqueLimitsTest.cs" />
<Compile Include="Integration\XMLReportTest.cs" />
<Compile Include="Models\Declaration\AirdragDefaultValuesTest.cs" />
<Compile Include="Models\Declaration\DataAdapter\DeclarationAdapterCreateVocationalVehicleTest.cs" />
<Compile Include="Models\Declaration\DataAdapter\DeclarationAdapterTestHelper.cs" />
<Compile Include="Models\Declaration\DataAdapter\DeclarationDataAdapterTest_Class5.cs" />
<Compile Include="Models\Declaration\DataAdapter\DeclarationDataAdapterTest_Class2.cs" />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment