Index: TAOR-rework-bugfixing/TAOR rework/nieuwdomein/onderdelen/special laden onderdelen/SpecialLadenOnderdelenNieuw.vb =================================================================== diff -u -r1635 -r1638 --- TAOR-rework-bugfixing/TAOR rework/nieuwdomein/onderdelen/special laden onderdelen/SpecialLadenOnderdelenNieuw.vb (.../SpecialLadenOnderdelenNieuw.vb) (revision 1635) +++ TAOR-rework-bugfixing/TAOR rework/nieuwdomein/onderdelen/special laden onderdelen/SpecialLadenOnderdelenNieuw.vb (.../SpecialLadenOnderdelenNieuw.vb) (revision 1638) @@ -1,5 +1,66 @@ -Public Class SpecialLadenOnderdelenNieuw +Imports TA_OR_rework + +Public Class SpecialLadenOnderdelenNieuw Implements ISpecialLadenOnderdelen - Public ReadOnly Property BestandsNaam As String Implements ISpecialLadenOnderdelen.BestandsNaam + ''' + ''' Dictionary met het type van een onderdeel als key en het onderdeel zelf als value. + ''' + Private ReadOnly _typeEnOnderdeelDictionary As New Dictionary(Of Type, IOnderdeel) + + ''' + Public Sub VoegOnderdelenToe(ardisDatas As List(Of ArdisData)) Implements ISpecialLadenOnderdelen.VoegOnderdelenToe + Dim zijkantenArdisData As New List(Of ArdisData) + + 'Alle onderdelen overlopen. + For Each ardisData In ardisDatas + 'Het type controleren, nieuwe isntantie maken van onderdeel en toevoegen aan dictionary, zijkanten worden apart behandeld omdat deze per paar komen. + Select Case ardisData.PartRef + Case "ZijkantPlaat" + 'Toevoegen aan lijst met zijkanten. + zijkantenArdisData.Add(ardisData) + Case "Rug" + Dim rug As New Rug With { + .ArdisData = ardisData + } + _typeEnOnderdeelDictionary.Add(rug.GetType(), rug) + Case "Bodem" + Dim bodem As New Bodem With { + .ArdisData = ardisData + } + _typeEnOnderdeelDictionary.Add(bodem.GetType(), bodem) + Case "Front" + Dim front As New Front With { + .ArdisData = ardisData + } + _typeEnOnderdeelDictionary.Add(front.GetType(), front) + End Select + Next + + 'Controleren of het aantal zijkanten even is. + If (zijkantenArdisData.Count Mod 2) <> 0 Then + 'Zijkanten overlopen en nieuwe instantie maken per paar. + For i = 0 To zijkantenArdisData.Count - 1 Step 2 + Dim zijkant As New Zijkant With { + .ArdisDataL = zijkantenArdisData.Item(i), + .ArdisDataR = zijkantenArdisData.Item(i + 1) + } + _typeEnOnderdeelDictionary.Add(zijkant.GetType(), zijkant) + Next + Else + Throw New Exception("Het aantal Ardis datas voor zijkanten is oneven.") + End If + End Sub + + ''' + Private Function GeefOnderdeel(onderdeelType As Type) As IOnderdeel Implements ISpecialLadenOnderdelen.GeefOnderdeel + Dim onderdeel As IOnderdeel + If _typeEnOnderdeelDictionary.TryGetValue(onderdeelType, onderdeel) Then + 'Onderdeel gevonden. + Return onderdeel + End If + 'Onderdeel niet gevonden. + Return Nothing + End Function + End Class Index: TAOR-rework-bugfixing/TAOR rework/nieuwdomein/onderdelen/special laden onderdelen/ISpecialLadenOnderdelen.vb =================================================================== diff -u -r1635 -r1638 --- TAOR-rework-bugfixing/TAOR rework/nieuwdomein/onderdelen/special laden onderdelen/ISpecialLadenOnderdelen.vb (.../ISpecialLadenOnderdelen.vb) (revision 1635) +++ TAOR-rework-bugfixing/TAOR rework/nieuwdomein/onderdelen/special laden onderdelen/ISpecialLadenOnderdelen.vb (.../ISpecialLadenOnderdelen.vb) (revision 1638) @@ -1,5 +1,13 @@ Public Interface ISpecialLadenOnderdelen - ReadOnly Property BestandsNaam() As String - - + ''' + ''' Onderdelen toevoegen in de vorm van een lijst van ArdisData. + ''' + ''' Onderdelen + sub VoegOnderdelenToe(ardisDatas As List(Of ArdisData)) + ''' + ''' Onderdeel opvragen aan de hand van het type van het onderdeel. + ''' + ''' Type van het onderdeel + ''' + Function GeefOnderdeel(onderdeelType As Type) As IOnderdeel End Interface