@startuml core

skinparam monochrome true

package core {
	class Latex {
		- logger: Logger
		- header: LatexSnippet
		- snippets: ArrayList<LatexSnippet>
		- footer: LatexSnippet
		+ gatherSnippets(type: String, chapters: int, randomise: boolean): void
		+ concat(type: String, destination: String): void
		+ compile(type: String, workingDir: String): void
		- copyPdf(sourceDir: String, fileName: String, destinationDir: String, newFileName: String): void
		+ generate(type: String, destination: String, amount: int, chapters: int, shuffle: boolean): void
	}

	Latex o-- LatexSnippet
	Latex -- OperatingSystem
	Latex -- Json
	Latex -- LatexNotInstalledException

	class OperatingSystem {
		- operatingSystem: String
		- homeDir: String
		- pdflatexPath: String
	}

	class Json {
		- filePath: String
		- jsonObject: JSONObject
		+ Json(filepath: String)
		+ getValue(object: String, key: String): String
		+ setValue(object: String, key: String, value: String): void
	}

	class LatexNotInstalledException {
		- serialVersionUID: long
		- message: String
		+ LatexNotInstalledException(message: String)
		+ toString(): String
	}

	class LatexSnippet {
		- file: File
		- filePath: String
		- fileContent: String
	}
}

@enduml
