@startuml 
 title org.texttechnologylab.project.gruppe_05_1
package org.texttechnologylab.project.gruppe_05_1 {
	class "Main" as org.texttechnologylab.project.gruppe_05_1.Main {
	  + RESOURCES_DIR
	  - xmlFactory
	  - mongoFactory
	  - speechParser
	  + main()
	}
}
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbDocument
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.rest.RESTHandler
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory
org.texttechnologylab.project.gruppe_05_1.Main "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser

package org.texttechnologylab.project.gruppe_05_1.database {
	class "SpeechIndexFactoryImpl" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndexFactoryImpl {
	  - speechParser
	  - sessions
	  - agendaItems
	  - speeches
	  - members
	  + parseLegislativePeriods()
	  + builder()
	  + parseSessions()
	  + build()
	  + filterForCurrentMembers()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.SpeechIndexFactoryImpl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser

package org.texttechnologylab.project.gruppe_05_1.database {
	interface "SpeechIndexFactory" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndexFactory {
	  - parseLegislativePeriods()
	  - filterForCurrentMembers()
	}
}

package org.texttechnologylab.project.gruppe_05_1.database {
	class "MongoDBHandler" as org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler {
	  + propertiesFileName
	  + DEFAULT_ID_FIELD_NAME
	  - mongoClient
	  - database
	  - mongoDatabase
	  - mongodb://localhost:27017
	  - remoteServer
	  - user
	  - password
	  - port
	  - collection
	  - databaseName
	  - speechesCollection
	  - sessionsCollection
	  - agendaItemsCollection
	  - historyCollection
	  + getDatabase()
	  + insertSession()
	  + insertSessions()
	  + insertAgendaItems()
	  + insertSpeeches()
	  + updateXmiData()
	  + deleteAllDocuments()
	  + bulkUpdateDocuments()
	  + close()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.AgendaItem_MongoDB_Impl
org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.MemberOfParliament_MongoDB_Impl
org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Session_MongoDB_Impl
org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl
org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.Logger
org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils

package org.texttechnologylab.project.gruppe_05_1.database {
	class "MongoPprUtils" as org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils {
	  + SPEAKER_COLLECTION_NAME
	  + SPEECH_COLLECTION_NAME
	  + PICTURES_COLLECTION_NAME
	  + COMMENT_COLLECTION_NAME
	  - speakerCollection
	  - speechCollection
	  - picturesCollection
	  - commentCollection
	  + createSpeakerCollection()
	  + createSpeechCollection()
	  + createCommentCollection()
	  + createPictureCollection()
	  + truncateSpeakerCollection()
	  - readParlamentarierFromSpeaker()
	  + getParlamentarierDetailsByID()
	  - readParlamentarierDetailsFromSpeaker()
	  - getMembership()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier
org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails
org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership

package org.texttechnologylab.project.gruppe_05_1.database {
	class "SpeechIndex" as org.texttechnologylab.project.gruppe_05_1.database.SpeechIndex {
	  - sessions
	  - speeches
	  - agendaItems
	}
}

package org.texttechnologylab.project.gruppe_05_1.database {
	class "MongoObjectFactory" as org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory {
	  - factory
	  + getFactory()
	  + createBiografischeAngaben()
	  + createInstitution()
	  + createMdb()
	  + createMdbName()
	  + createWahlperiode()
	  + createSpeaker()
	  + createMembership()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership
org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker

package org.texttechnologylab.project.gruppe_05_1.database {
	interface "MongoOperations" as org.texttechnologylab.project.gruppe_05_1.database.MongoOperations {
	  + createEntity()
	  + createList()
	}
}

package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb {
	class "BiografischeAngaben_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiografischeAngaben_Mongo_Impl {
	  + createEntity()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiografischeAngaben_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiografischeAngaben_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiografischeAngaben_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.BiografischeAngaben_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils

package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb {
	class "Wahlperiode_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Wahlperiode_Mongo_Impl {
	  + createEntity()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Wahlperiode_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Wahlperiode_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Wahlperiode_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Wahlperiode_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode

package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb {
	class "Speaker_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_Mongo_Impl {
	  + createEntity()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Speaker_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker

package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb {
	class "MdbName_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_Mongo_Impl {
	  + createEntity()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.MdbName_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName

package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb {
	class "Mdb_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl {
	  + createEntity()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Mdb_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode

package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb {
	class "Membership_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl {
	  + createEntity()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Membership_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker

package org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb {
	class "Institution_Mongo_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_Mongo_Impl {
	  + createEntity()
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoOperations
org.texttechnologylab.project.gruppe_05_1.database.domainimpl.mdb.Institution_Mongo_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution

package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches {
	class "Line_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Line_MongoDB_Impl {
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Line_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Line_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line

package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches {
	class "Speaker_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speaker_MongoDB_Impl {
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speaker_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker

package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches {
	class "AgendaItem_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.AgendaItem_MongoDB_Impl {
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.AgendaItem_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.AgendaItem_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem

package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches {
	class "Comment_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Comment_MongoDB_Impl {
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Comment_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Comment_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment

package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches {
	class "MemberOfParliament_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.MemberOfParliament_MongoDB_Impl {
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.MemberOfParliament_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.MemberOfParliament_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament

package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches {
	class "Session_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Session_MongoDB_Impl {
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Session_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Session_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session

package org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches {
	class "Speech_MongoDB_Impl" as org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl {
	}
}
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl
org.texttechnologylab.project.gruppe_05_1.database.domainimp.speeches.Speech_MongoDB_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech

package org.texttechnologylab.project.gruppe_05_1.rest {
	class "JavalinConfig" as org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig {
	  - propertiesFileName
	  + getJavalinProperties()
	  + getPort()
	}
}
org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils
org.texttechnologylab.project.gruppe_05_1.rest.JavalinConfig "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils

package org.texttechnologylab.project.gruppe_05_1.rest {
	class "RESTHandler" as org.texttechnologylab.project.gruppe_05_1.rest.RESTHandler {
	  + TEMPLATE_DIR
	  + startJavalin()
	}
}

package org.texttechnologylab.project.gruppe_05_1.rest {
	class "ParlamentarierController" as org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController {
	  + getAllParlamentarier()
	  + getParlamentarierDetails()
	  + deleteAllParlamentarier()
	}
}
org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier
org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails
org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils
org.texttechnologylab.project.gruppe_05_1.rest.ParlamentarierController "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils

package org.texttechnologylab.project.gruppe_05_1.nlp {
	class "XmiExtractor" as org.texttechnologylab.project.gruppe_05_1.nlp.XmiExtractor {
	  - 'static'
	  + extractAndUploadXmiData()
	  - processXmiGzStream()
	  - extractSpeechKeyFromFilename()
	  - uploadToMongoDB()
	  + getDatabase()
	}
}

package org.texttechnologylab.project.gruppe_05_1.nlp {
	class "NlpUtils" as org.texttechnologylab.project.gruppe_05_1.nlp.NlpUtils {
	  - pComposer
	  - iWorkers
	  - TYPE_SYSTEM_DESCRIPTOR_PATH
	  - MAX_FEATURE_LENGTH
	  + createNlpData()
	  - duuiInit()
	  + getCas()
	  + runDockerDriver()
	  - casInit()
	  + runVideos()
	  - createSentenceInfo()
	  - createNAmedEntities()
	  - createSentimentInfo()
	}
}

package org.texttechnologylab.project.gruppe_05_1.xml {
	interface "XmlOperations" as org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations {
	  - fromXmlNode()
	}
}

package org.texttechnologylab.project.gruppe_05_1.xml {
	class "FileObjectFactory" as org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory {
	  - oFactory
	  + getFactory()
	  + createBiografischeAngaben()
	  + createInstitution()
	  + createMdb()
	  + createMdbDocument()
	  + createMdbName()
	  + createWahlperiode()
	  + createSpeaker()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker
org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl

package org.texttechnologylab.project.gruppe_05_1.xml.mdb {
	class "Institution_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl {
	  + fromXmlNode()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Institution_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations

package org.texttechnologylab.project.gruppe_05_1.xml.mdb {
	class "MdbDocument_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl {
	  + fromXmlNode()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb
org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbDocument
org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils
org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbDocument_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations

package org.texttechnologylab.project.gruppe_05_1.xml.mdb {
	class "MdbName_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl {
	  + fromXmlNode()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName
org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils
org.texttechnologylab.project.gruppe_05_1.xml.mdb.MdbName_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations

package org.texttechnologylab.project.gruppe_05_1.xml.mdb {
	class "BiografischeAngaben_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl {
	  + fromXmlNode()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben
org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils
org.texttechnologylab.project.gruppe_05_1.xml.mdb.BiografischeAngaben_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations

package org.texttechnologylab.project.gruppe_05_1.xml.mdb {
	class "Mdb_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl {
	  + fromXmlNode()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Mdb_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations

package org.texttechnologylab.project.gruppe_05_1.xml.mdb {
	class "Wahlperiode_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl {
	  + fromXmlNode()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils
org.texttechnologylab.project.gruppe_05_1.xml.mdb.Wahlperiode_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations

package org.texttechnologylab.project.gruppe_05_1.xml.speeches {
	class "SpeechParser" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser {
	  - speeches
	  - agendaItems
	  + setParseLegislativePeriods()
	  - parseSessionFile()
	  - getOptionalTextContent()
	  - convertDocumentToFile()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils
org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem
org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session
org.texttechnologylab.project.gruppe_05_1.xml.speeches.SpeechParser "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums {
	enum "MongoDBEntryType" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType {
	}
}

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "LegislativePeriod" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod {
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "Fraction" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Fraction {
	  - addMember()
	  - updateName()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Fraction "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "Speech" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech {
	  - addContent()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "Session" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session {
	  - addAgendaItem()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "Content" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content {
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "HistoryEntry" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.HistoryEntry {
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.HistoryEntry "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "Comment" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment {
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "Constituency" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency {
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "AgendaItem" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem {
	  - addSpeech()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "Speaker" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker {
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "Individual" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual {
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "Line" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line {
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces {
	interface "MemberOfParliament" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament {
	  - updateParty()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "LegislativePeriod_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.LegislativePeriod_File_Impl {
	  - id
	  - startDate
	  - endDate
	  - constituency
	  + getId()
	  + getStartDate()
	  + getEndDate()
	  + getConstituency()
	  + getType()
	  + toHTML()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.LegislativePeriod_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.LegislativePeriod_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "Session_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl {
	  - id
	  - legislativePeriod
	  - dateTime
	  - endTime
	  - agendaItems
	  + getId()
	  + getLegislativePeriod()
	  + getDateTime()
	  + getEndTime()
	  + getType()
	  + addAgendaItem()
	  + toHTML()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Session
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Session_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "Comment_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl {
	  - contentId
	  - speechId
	  - comment
	  - commentatorName
	  + getContentId()
	  + getSpeechId()
	  + getComment()
	  + getCommentatorName()
	  + getType()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Comment
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Comment_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "Individual_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Individual_File_Impl {
	  - name
	  - firstName
	  - title
	  - dateOfBirth
	  - dateOfDeath
	  - placeOfBirth
	  - gender
	  - religion
	  + getName()
	  + getFirstName()
	  + getTitle()
	  + getDateOfBirth()
	  + getDateOfDeath()
	  + getPlaceOfBirth()
	  + getGender()
	  + getReligion()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Individual_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Individual

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "Line_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl {
	  - contentId
	  # speechId
	  - content
	  + getContentId()
	  + getSpeechId()
	  + getContent()
	  + getType()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Line
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Line_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "Speech_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl {
	  - sessionId
	  - agendaItemId
	  - speakerId
	  - speechId
	  - speakerName
	  - fraction
	  - speechContents
	  - speechKey
	  + getSessionId()
	  + getAgendaItemId()
	  + getSpeakerId()
	  + getSpeechId()
	  + getSpeakerName()
	  + getFraction()
	  + getSpeechKey()
	  + getType()
	  + addContent()
	  + toHTML()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speech_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "Constituency_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Constituency_File_Impl {
	  - id
	  - name
	  - federalState
	  + getId()
	  + getName()
	  + getFederalState()
	  + getType()
	  + toHTML()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Constituency_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Constituency
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Constituency_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "Speaker_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl {
	  - contentId
	  - speechId
	  - speakerId
	  - speakerName
	  - fraction
	  + getContentId()
	  + getSpeechId()
	  + getSpeakerId()
	  + getSpeakerName()
	  + getFraction()
	  + getType()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Content
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speaker
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "HistoryEntry_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.HistoryEntry_File_Impl {
	  - action
	  - content
	  - contentType
	  - date
	  + getContent()
	  + getContentType()
	  + getDate()
	  + getAction()
	  + getType()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.HistoryEntry_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.HistoryEntry
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.HistoryEntry_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "MemberOfParliament_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl {
	  - id
	  - party
	  - legislativePeriods
	  - firstLegislativePeriodId
	  - lastLegislativePeriodId
	  - photo
	  + getId()
	  + getParty()
	  + getFirstLegislativePeriodId()
	  + getLastLegislativePeriodId()
	  + getPhoto()
	  + isCurrentMember()
	  + updateParty()
	  + getType()
	  + toHTML()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.LegislativePeriod
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.MemberOfParliament
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.MemberOfParliament_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "AgendaItem_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl {
	  - id
	  - sessionId
	  - title
	  - speeches
	  + getId()
	  + getSessionId()
	  + getTitle()
	  + getType()
	  + addSpeech()
	  + toHTML()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.AgendaItem
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.AgendaItem_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls {
	class "Fraction_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Fraction_File_Impl {
	  - name
	  - longName
	  - members
	  + getName()
	  + getLongName()
	  + getType()
	  + addMember()
	  + updateName()
	  + toHTML()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Fraction_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Fraction
org.texttechnologylab.project.gruppe_05_1.xml.speeches.Impls.Fraction_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.speeches.enums.MongoDBEntryType

package org.texttechnologylab.project.gruppe_05_1.xml.speaker {
	class "Speaker_File_Impl" as org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl {
	  + fromXmlNode()
	}
}
org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership
org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker
org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.PPRUtils
org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.XmlUtils
org.texttechnologylab.project.gruppe_05_1.xml.speaker.Speaker_File_Impl "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.XmlOperations

package org.texttechnologylab.project.gruppe_05_1.util {
	class "GeneralUtils" as org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils {
	  + parseInt()
	  + parseDate()
	  + parseTime()
	  + formatDate()
	  + formatTime()
	}
}

package org.texttechnologylab.project.gruppe_05_1.util {
	class "Logger" as org.texttechnologylab.project.gruppe_05_1.util.Logger {
	  - DEBUG_LOGGING
	  + info()
	  + warn()
	  + error()
	  + debug()
	  + pink()
	}
}

package org.texttechnologylab.project.gruppe_05_1.util {
	class "XmlUtils" as org.texttechnologylab.project.gruppe_05_1.util.XmlUtils {
	  + loadXmlDocument()
	  + getRootDocument()
	  + getFirstChildByName()
	  + getNodeAttributeByName()
	  - getRawText()
	}
}

package org.texttechnologylab.project.gruppe_05_1.util {
	class "FileUtils" as org.texttechnologylab.project.gruppe_05_1.util.FileUtils {
	  + createDirectoryIFNotExists()
	  + writeStringsToFile()
	  + writeStringToFile()
	  + createFileWriter()
	}
}

package org.texttechnologylab.project.gruppe_05_1.util {
	class "PropertiesUtils" as org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils {
	  + readPropertiesFromResource()
	}
}

package org.texttechnologylab.project.gruppe_05_1.util {
	class "PPRUtils" as org.texttechnologylab.project.gruppe_05_1.util.PPRUtils {
	  + PARTEILOS_KUERZEL
	  - processedProtocols
	  + legislaturPeriode
	  + ensureCollectionExist()
	  + parlamentExplorerInit()
	  + readPhotos()
	  + readSpeechesAndComments()
	  + readAndPersistMdbs()
	  - mdbActiveInWp()
	  - copyStream()
	  + sortParlamentarierByName()
	  + sortMdbByName()
	}
}
org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler
org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoObjectFactory
org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils
org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier
org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben
org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb
org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership
org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker
org.texttechnologylab.project.gruppe_05_1.util.PPRUtils "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.xml.FileObjectFactory

package org.texttechnologylab.project.gruppe_05_1.domain {
	enum "Gender" as org.texttechnologylab.project.gruppe_05_1.domain.Gender {
	  - text
	  + getText()
	  + byText()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.mdb {
	class "Mdb" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mdb {
	  - id
	  - namen
	  - bio
	  - wahlperioden
	  + getId()
	  + setId()
	  + setNamen()
	  + getBio()
	  + setBio()
	  + setWahlperioden()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.mdb {
	class "MdbName" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbName {
	  - nachname
	  - vorname
	  - ortszusatz
	  - adel
	  - praefix
	  - andereTitel
	  - akadTitel
	  - historieVon
	  - historieBis
	  + getNachname()
	  + setNachname()
	  + getVorname()
	  + setVorname()
	  + getOrtszusatz()
	  + setOrtszusatz()
	  + getAdel()
	  + setAdel()
	  + getPraefix()
	  + setPraefix()
	  + getAndereTitel()
	  + setAndereTitel()
	  + getAkadTitel()
	  + setAkadTitel()
	  + getHistorieVon()
	  + setHistorieVon()
	  + getHistorieBis()
	  + setHistorieBis()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.mdb {
	class "Wahlperiode" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.Wahlperiode {
	  - wp
	  - mdbWpVon
	  - mdbWpBis
	  - leer
	  - wkrName
	  - wkrLand
	  - liste
	  - mandatsart
	  - institutionen
	  + getWp()
	  + setWp()
	  + getMdbWpVon()
	  + setMdbWpVon()
	  + getMdbWpBis()
	  + setMdbWpBis()
	  + getWknNr()
	  + setWknNr()
	  + getWkrName()
	  + setWkrName()
	  + getWkrLand()
	  + setWkrLand()
	  + getListe()
	  + setListe()
	  + getMandatsart()
	  + setMandatsart()
	  + setInstitutionen()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.mdb {
	class "MdbDocument" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.MdbDocument {
	  - version
	  - mdbs
	  + getVersion()
	  + setVersion()
	  + setMdbs()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.mdb {
	class "Institution" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.Institution {
	  - insartLang
	  - insLang
	  - mdbinsVon
	  - mdbinsBis
	  - fktLang
	  - fktinsVon
	  - fktinsBis
	  + getInsartLang()
	  + setInsartLang()
	  + getInsLang()
	  + setInsLang()
	  + getMdbinsVon()
	  + setMdbinsVon()
	  + getMdbinsBis()
	  + setMdbinsBis()
	  + getFktLang()
	  + setFktLang()
	  + getFktinsVon()
	  + setFktinsVon()
	  + getFktinsBis()
	  + setFktinsBis()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.mdb {
	class "BiografischeAngaben" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.BiografischeAngaben {
	  - geburtsdatum
	  - geburtsort
	  - geburtsland
	  - sterbedatum
	  - gender
	  - vorkommen...
	  - religion
	  - beruf
	  - parteiKuerzel
	  - vitaKurz
	  - veroeffentlichungspflichtiges
	  + getGeburtsdatum()
	  + setGeburtsdatum()
	  + getGeburtsort()
	  + setGeburtsort()
	  + getGeburtsland()
	  + setGeburtsland()
	  + getSterbedatum()
	  + setSterbedatum()
	  + getGender()
	  + setGender()
	  + getFamilienstand()
	  + setFamilienstand()
	  + getReligion()
	  + setReligion()
	  + getBeruf()
	  + setBeruf()
	  + getParteiKuerzel()
	  + setParteiKuerzel()
	  + getVitaKurz()
	  + setVitaKurz()
	  + getVeroeffentlichungspflichtiges()
	  + setVeroeffentlichungspflichtiges()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.mdb {
	enum "Mandatsart" as org.texttechnologylab.project.gruppe_05_1.domain.mdb.Mandatsart {
	  - text
	  + byText()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.html {
	class "Parlamentarier" as org.texttechnologylab.project.gruppe_05_1.domain.html.Parlamentarier {
	  + getId()
	  + setId()
	  + getVorname()
	  + setVorname()
	  + getNachname()
	  + setNachname()
	  + getPartei()
	  + setPartei()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.html {
	class "ParlamentarierDetails" as org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails {
	  + getId()
	  + setId()
	  + getVorname()
	  + setVorname()
	  + getNachname()
	  + setNachname()
	  + getPartei()
	  + setPartei()
	  + getTitle()
	  + setTitle()
	  + getGeburtsdatum()
	  + getGeburtsdatumPP()
	  + setGeburtsdatum()
	  + getGeburtsort()
	  + setGeburtsort()
	  + getSterbedatum()
	  + setSterbedatum()
	  + getGeschlecht()
	  + setGeschlecht()
	  + getBeruf()
	  + setBeruf()
	  + getAkademischerTitel()
	  + setAkademischerTitel()
	  + getFamilienstand()
	  + setFamilienstand()
	  + getReligion()
	  + setReligion()
	  + getVita()
	  + setVita()
	  + getParty()
	  + setParty()
	  + getPrimaryFoto()
	  + setPrimaryFoto()
	  + setMemberships()
	  + setReden()
	  + equals()
	  + hashCode()
	  + toString()
	}
}
org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership
org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.domain.speech.Speech
org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails "1" <-- "1" org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils

package org.texttechnologylab.project.gruppe_05_1.domain.speaker {
	class "Membership" as org.texttechnologylab.project.gruppe_05_1.domain.speaker.Membership {
	  + getRole()
	  + setRole()
	  + getMember()
	  + setMember()
	  + getBegin()
	  + setBegin()
	  + getEnd()
	  + setEnd()
	  + getLabel()
	  + setLabel()
	  + getWp()
	  + setWp()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.speaker {
	class "Speaker" as org.texttechnologylab.project.gruppe_05_1.domain.speaker.Speaker {
	  + getId()
	  + setId()
	  + getName()
	  + setName()
	  + getFirstName()
	  + setFirstName()
	  + getTitle()
	  + setTitle()
	  + getGeburtsdatum()
	  + setGeburtsdatum()
	  + getGeburtsort()
	  + setGeburtsort()
	  + getSterbedatum()
	  + setSterbedatum()
	  + getGeschlecht()
	  + setGeschlecht()
	  + getBeruf()
	  + setBeruf()
	  + getAkademischertitel()
	  + setAkademischertitel()
	  + getFamilienstand()
	  + setFamilienstand()
	  + getReligion()
	  + setReligion()
	  + getVita()
	  + setVita()
	  + getParty()
	  + setParty()
	  + getPrimaryFoto()
	  + setPrimaryFoto()
	  + setMemberships()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.speech {
	class "Speech" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Speech {
	  + getId()
	  + setId()
	  + getText()
	  + setText()
	  + getSpeakerId()
	  + setSpeakerId()
	  + getProtocol()
	  + setProtocol()
	  + setTextContents()
	  + getAgenda()
	  + setAgenda()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.speech {
	class "Protocol" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Protocol {
	  + getDate()
	  + setDate()
	  + getStartTime()
	  + setStartTime()
	  + getEndTime()
	  + setEndTime()
	  + getIndex()
	  + setIndex()
	  + getTitel()
	  + setTitel()
	  + getPlace()
	  + setPlace()
	  + getWp()
	  + setWp()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.speech {
	class "Comment" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Comment {
	  + getId()
	  + setId()
	  + getText()
	  + setText()
	  + getSpeaker()
	  + setSpeaker()
	  + getSpeech()
	  + setSpeech()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.speech {
	class "Agenda" as org.texttechnologylab.project.gruppe_05_1.domain.speech.Agenda {
	  + getIndex()
	  + setIndex()
	  + getId()
	  + setId()
	  + getTitle()
	  + setTitle()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package org.texttechnologylab.project.gruppe_05_1.domain.speech {
	class "TextContent" as org.texttechnologylab.project.gruppe_05_1.domain.speech.TextContent {
	  + getId()
	  + setId()
	  + getSpeakerId()
	  + setSpeakerId()
	  + getText()
	  + setText()
	  + getType()
	  + setType()
	  + equals()
	  + hashCode()
	  + toString()
	}
}

package exceptions {
	class "SessionNotFoundException" as exceptions.SessionNotFoundException {
	}
}

package exceptions {
	class "MemberNotFoundException" as exceptions.MemberNotFoundException {
	}
}

package exceptions {
	class "AgendaItemNotFoundException" as exceptions.AgendaItemNotFoundException {
	}
}

package exceptions {
	class "FractionAlreadyExistsException" as exceptions.FractionAlreadyExistsException {
	}
}

package exceptions {
	class "ServerErrorException" as exceptions.ServerErrorException {
	}
}

package exceptions {
	class "SpeechNotFoundException" as exceptions.SpeechNotFoundException {
	}
}

package exceptions {
	class "FractionNotFoundException" as exceptions.FractionNotFoundException {
	}
}

@enduml
