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