From a17e392240c09d1b161c0215be86a67215f90c21 Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Thu, 9 Apr 2015 22:05:46 +0100 Subject: [PATCH] initial commit --- .classpath | 26 ++++++++++++++++++++++++++ .project | 23 +++++++++++++++++++++++ .settings/org.eclipse.core.resources.prefs | 4 ++++ .settings/org.eclipse.jdt.core.prefs | 398 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .settings/org.eclipse.jdt.ui.prefs | 4 ++++ .settings/org.eclipse.m2e.core.prefs | 4 ++++ logs/2015-04-09-1.log.gz | Bin 0 -> 66 bytes logs/2015-04-09-2.log.gz | Bin 0 -> 66 bytes logs/2015-04-09-3.log.gz | Bin 0 -> 66 bytes logs/2015-04-09-4.log.gz | Bin 0 -> 66 bytes logs/2015-04-09-5.log.gz | Bin 0 -> 66 bytes logs/2015-04-09-6.log | 4 ++++ logs/2015-04-09-6.log.gz | Bin 0 -> 411 bytes logs/2015-04-09-7.log | 5 +++++ logs/latest.log | 6 ++++++ pom.xml | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/App.java | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/file/FileReader.java | 344 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/file/FileWriter.java | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/gui/GUI.java | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/item/AudioVisualItem.java | 22 ++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/item/LibraryItem.java | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/item/PrintedItem.java | 33 +++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/item/items/audiovisual/CD.java | 43 +++++++++++++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/item/items/audiovisual/DVD.java | 30 ++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/item/items/printed/Book.java | 43 +++++++++++++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/item/items/printed/Periodical.java | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/util/EnumLineType.java | 33 +++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/util/Library.java | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/wf/doyle/blockbuster/util/User.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/data/cd_&_dvd_data_1.txt | 25 +++++++++++++++++++++++++ src/main/resources/data/cd_&_dvd_data_2.txt | 23 +++++++++++++++++++++++ src/main/resources/data/cd_&_dvd_data_3.txt | 26 ++++++++++++++++++++++++++ src/main/resources/data/cd_data.txt | 17 +++++++++++++++++ src/main/resources/data/items_all.txt | 41 +++++++++++++++++++++++++++++++++++++++++ src/main/resources/log4j2.xml | 27 +++++++++++++++++++++++++++ src/test/java/wf/doyle/blockbuster/AppTest.java | 38 ++++++++++++++++++++++++++++++++++++++ target/classes/data/cd_&_dvd_data_1.txt | 25 +++++++++++++++++++++++++ target/classes/data/cd_&_dvd_data_2.txt | 23 +++++++++++++++++++++++ target/classes/data/cd_&_dvd_data_3.txt | 26 ++++++++++++++++++++++++++ target/classes/data/cd_data.txt | 17 +++++++++++++++++ target/classes/data/items_all.txt | 41 +++++++++++++++++++++++++++++++++++++++++ target/classes/log4j2.xml | 27 +++++++++++++++++++++++++++ target/classes/serialized-data.txt | 0 target/classes/wf/doyle/blockbuster/App.class | Bin 0 -> 1612 bytes target/classes/wf/doyle/blockbuster/file/FileReader.class | Bin 0 -> 8798 bytes target/classes/wf/doyle/blockbuster/file/FileWriter$1.class | Bin 0 -> 1349 bytes target/classes/wf/doyle/blockbuster/file/FileWriter.class | Bin 0 -> 3980 bytes target/classes/wf/doyle/blockbuster/gui/GUI$1.class | Bin 0 -> 1237 bytes target/classes/wf/doyle/blockbuster/gui/GUI.class | Bin 0 -> 5499 bytes target/classes/wf/doyle/blockbuster/item/AudioVisualItem.class | Bin 0 -> 463 bytes target/classes/wf/doyle/blockbuster/item/LibraryItem.class | Bin 0 -> 3275 bytes target/classes/wf/doyle/blockbuster/item/PrintedItem.class | Bin 0 -> 601 bytes target/classes/wf/doyle/blockbuster/item/items/audiovisual/CD.class | Bin 0 -> 827 bytes target/classes/wf/doyle/blockbuster/item/items/audiovisual/DVD.class | Bin 0 -> 713 bytes target/classes/wf/doyle/blockbuster/item/items/printed/Book.class | Bin 0 -> 797 bytes target/classes/wf/doyle/blockbuster/item/items/printed/Periodical.class | Bin 0 -> 1277 bytes target/classes/wf/doyle/blockbuster/util/EnumLineType.class | Bin 0 -> 1309 bytes target/classes/wf/doyle/blockbuster/util/Library$1.class | Bin 0 -> 1186 bytes target/classes/wf/doyle/blockbuster/util/Library.class | Bin 0 -> 3783 bytes target/classes/wf/doyle/blockbuster/util/User.class | Bin 0 -> 886 bytes target/test-classes/wf/doyle/blockbuster/AppTest.class | Bin 0 -> 627 bytes 62 files changed, 2187 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.jdt.ui.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 logs/2015-04-09-1.log.gz create mode 100644 logs/2015-04-09-2.log.gz create mode 100644 logs/2015-04-09-3.log.gz create mode 100644 logs/2015-04-09-4.log.gz create mode 100644 logs/2015-04-09-5.log.gz create mode 100644 logs/2015-04-09-6.log create mode 100644 logs/2015-04-09-6.log.gz create mode 100644 logs/2015-04-09-7.log create mode 100644 logs/latest.log create mode 100644 pom.xml create mode 100644 src/main/java/wf/doyle/blockbuster/App.java create mode 100644 src/main/java/wf/doyle/blockbuster/file/FileReader.java create mode 100644 src/main/java/wf/doyle/blockbuster/file/FileWriter.java create mode 100644 src/main/java/wf/doyle/blockbuster/gui/GUI.java create mode 100644 src/main/java/wf/doyle/blockbuster/item/AudioVisualItem.java create mode 100644 src/main/java/wf/doyle/blockbuster/item/LibraryItem.java create mode 100644 src/main/java/wf/doyle/blockbuster/item/PrintedItem.java create mode 100644 src/main/java/wf/doyle/blockbuster/item/items/audiovisual/CD.java create mode 100644 src/main/java/wf/doyle/blockbuster/item/items/audiovisual/DVD.java create mode 100644 src/main/java/wf/doyle/blockbuster/item/items/printed/Book.java create mode 100644 src/main/java/wf/doyle/blockbuster/item/items/printed/Periodical.java create mode 100644 src/main/java/wf/doyle/blockbuster/util/EnumLineType.java create mode 100644 src/main/java/wf/doyle/blockbuster/util/Library.java create mode 100644 src/main/java/wf/doyle/blockbuster/util/User.java create mode 100644 src/main/resources/data/cd_&_dvd_data_1.txt create mode 100644 src/main/resources/data/cd_&_dvd_data_2.txt create mode 100644 src/main/resources/data/cd_&_dvd_data_3.txt create mode 100644 src/main/resources/data/cd_data.txt create mode 100644 src/main/resources/data/items_all.txt create mode 100644 src/main/resources/log4j2.xml create mode 100644 src/test/java/wf/doyle/blockbuster/AppTest.java create mode 100644 target/classes/data/cd_&_dvd_data_1.txt create mode 100644 target/classes/data/cd_&_dvd_data_2.txt create mode 100644 target/classes/data/cd_&_dvd_data_3.txt create mode 100644 target/classes/data/cd_data.txt create mode 100644 target/classes/data/items_all.txt create mode 100644 target/classes/log4j2.xml create mode 100644 target/classes/serialized-data.txt create mode 100644 target/classes/wf/doyle/blockbuster/App.class create mode 100644 target/classes/wf/doyle/blockbuster/file/FileReader.class create mode 100644 target/classes/wf/doyle/blockbuster/file/FileWriter$1.class create mode 100644 target/classes/wf/doyle/blockbuster/file/FileWriter.class create mode 100644 target/classes/wf/doyle/blockbuster/gui/GUI$1.class create mode 100644 target/classes/wf/doyle/blockbuster/gui/GUI.class create mode 100644 target/classes/wf/doyle/blockbuster/item/AudioVisualItem.class create mode 100644 target/classes/wf/doyle/blockbuster/item/LibraryItem.class create mode 100644 target/classes/wf/doyle/blockbuster/item/PrintedItem.class create mode 100644 target/classes/wf/doyle/blockbuster/item/items/audiovisual/CD.class create mode 100644 target/classes/wf/doyle/blockbuster/item/items/audiovisual/DVD.class create mode 100644 target/classes/wf/doyle/blockbuster/item/items/printed/Book.class create mode 100644 target/classes/wf/doyle/blockbuster/item/items/printed/Periodical.class create mode 100644 target/classes/wf/doyle/blockbuster/util/EnumLineType.class create mode 100644 target/classes/wf/doyle/blockbuster/util/Library$1.class create mode 100644 target/classes/wf/doyle/blockbuster/util/Library.class create mode 100644 target/classes/wf/doyle/blockbuster/util/User.class create mode 100644 target/test-classes/wf/doyle/blockbuster/AppTest.class diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..9c865fb --- /dev/null +++ b/.classpath @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..724e3b2 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + blockbuster + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..f9fe345 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8124721 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,398 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.doc.comment.support=enabled +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error +org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=private +org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags +org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=warning +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.8 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=0 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=0 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=0 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=0 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=0 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=0 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=0 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=true +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=80 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true +org.eclipse.jdt.core.formatter.indentation.size=8 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=0 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=tab +org.eclipse.jdt.core.formatter.tabulation.size=4 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000..4511abb --- /dev/null +++ b/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,4 @@ +cleanup_settings_version=2 +eclipse.preferences.version=1 +formatter_profile=_Jordan +formatter_settings_version=12 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/logs/2015-04-09-1.log.gz b/logs/2015-04-09-1.log.gz new file mode 100644 index 0000000..14bda9c Binary files /dev/null and b/logs/2015-04-09-1.log.gz differ diff --git a/logs/2015-04-09-2.log.gz b/logs/2015-04-09-2.log.gz new file mode 100644 index 0000000..aac3166 Binary files /dev/null and b/logs/2015-04-09-2.log.gz differ diff --git a/logs/2015-04-09-3.log.gz b/logs/2015-04-09-3.log.gz new file mode 100644 index 0000000..939e6c8 Binary files /dev/null and b/logs/2015-04-09-3.log.gz differ diff --git a/logs/2015-04-09-4.log.gz b/logs/2015-04-09-4.log.gz new file mode 100644 index 0000000..0bff6bd Binary files /dev/null and b/logs/2015-04-09-4.log.gz differ diff --git a/logs/2015-04-09-5.log.gz b/logs/2015-04-09-5.log.gz new file mode 100644 index 0000000..cecf6a2 Binary files /dev/null and b/logs/2015-04-09-5.log.gz differ diff --git a/logs/2015-04-09-6.log b/logs/2015-04-09-6.log new file mode 100644 index 0000000..7e6e18e --- /dev/null +++ b/logs/2015-04-09-6.log @@ -0,0 +1,4 @@ +[11:43:34] [main/INFO]: BlockBuster starting +[11:52:27] [main/INFO]: BlockBuster starting +[11:54:30] [main/INFO]: BlockBuster starting +[11:54:41] [main/INFO]: BlockBuster starting diff --git a/logs/2015-04-09-6.log.gz b/logs/2015-04-09-6.log.gz new file mode 100644 index 0000000..3a46928 Binary files /dev/null and b/logs/2015-04-09-6.log.gz differ diff --git a/logs/2015-04-09-7.log b/logs/2015-04-09-7.log new file mode 100644 index 0000000..d41fc87 --- /dev/null +++ b/logs/2015-04-09-7.log @@ -0,0 +1,5 @@ +[11:43:34] [main/INFO]: BlockBuster starting +[11:52:27] [main/INFO]: BlockBuster starting +[11:54:30] [main/INFO]: BlockBuster starting +[11:54:41] [main/INFO]: BlockBuster starting +[11:56:44] [main/INFO]: BlockBuster starting diff --git a/logs/latest.log b/logs/latest.log new file mode 100644 index 0000000..9b6c2e5 --- /dev/null +++ b/logs/latest.log @@ -0,0 +1,6 @@ +[11:43:34] [main/INFO]: BlockBuster starting +[11:52:27] [main/INFO]: BlockBuster starting +[11:54:30] [main/INFO]: BlockBuster starting +[11:54:41] [main/INFO]: BlockBuster starting +[11:56:44] [main/INFO]: BlockBuster starting +[11:56:51] [main/INFO]: BlockBuster starting diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e54eea8 --- /dev/null +++ b/pom.xml @@ -0,0 +1,68 @@ + + 4.0.0 + + wf.doyle + blockbuster + 0.0.1-SNAPSHOT + jar + + blockbuster + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + + org.apache.logging.log4j + log4j-api + 2.1 + + + + org.apache.logging.log4j + log4j-core + 2.1 + + + + com.google.guava + guava + 18.0 + + + + org.apache.commons + commons-lang3 + 3.4 + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + + true + wf.doyle.blockbuster.App + true + true + + + + + + + diff --git a/src/main/java/wf/doyle/blockbuster/App.java b/src/main/java/wf/doyle/blockbuster/App.java new file mode 100644 index 0000000..9c3536a --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/App.java @@ -0,0 +1,70 @@ +package wf.doyle.blockbuster; + +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import wf.doyle.blockbuster.gui.GUI; +import wf.doyle.blockbuster.item.LibraryItem; +import wf.doyle.blockbuster.util.Library; +import wf.doyle.blockbuster.util.User; + +/** + * Entry class of BlockBuster + * + * @author Jordan Doyle + */ +public class App { + /** + * Log4j logger instance + */ + public static final Logger LOGGER = LogManager.getLogger("BlockBuster"); + + /** + * List of items available in the library + */ + public static List items = new ArrayList(); + + /** + * Local user + */ + public static final User USER = new User(); + + /** + * Entry point of BlockBuster + * + * @param args + * arguments passed to program + */ + public static void main(String[] args) + { + + LOGGER.info("BlockBuster starting"); + + Library l = null; + try + { + l = new Library(); + } + catch(URISyntaxException e1) + { + e1.printStackTrace(); + } + + if(args.length > 0 && args[0] == "-debug") { + l.printAllDetails(); + l.printAllDetailsSortedOnTitle(); + return; + } + + GUI n = new GUI(); + n.setVisible(true); + + // write to file: + // FileWriter a = new + // FileWriter(Paths.get(App.class.getResource("/serialized-data.txt").toURI())).serializeItems(); + } +} diff --git a/src/main/java/wf/doyle/blockbuster/file/FileReader.java b/src/main/java/wf/doyle/blockbuster/file/FileReader.java new file mode 100644 index 0000000..7b5a0b8 --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/file/FileReader.java @@ -0,0 +1,344 @@ +package wf.doyle.blockbuster.file; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.ListIterator; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Stream; + +import com.google.common.base.CaseFormat; + +import wf.doyle.blockbuster.App; +import wf.doyle.blockbuster.item.LibraryItem; +import wf.doyle.blockbuster.util.EnumLineType; + +/** + * Provides functions to read and parse provided files. + * + * @author Jordan Doyle + */ +public class FileReader { + /** + * Path to the file to read + */ + private Path path; + + /** + * Enum containing the current line type. + */ + private EnumLineType currentLine = EnumLineType.NONE; + + /** + * Pattern to find data types + */ + private Pattern dataTypes = Pattern.compile("\\[(.*) data\\]"); + + /** + * Line number we're currently dealing with. + */ + private int lineNumber = 0; + + /** + * A list of what the current line type gives us, allows easy setting with + * reflection + */ + private String[] lineContains; + + /** + * Contains a list of what each line type should contain which lets us write + * data back to the file easily. + */ + public static Map containing = new HashMap(); + + /** + * Contains a mapping of EnumLineTypes to the respective classes for use in + * {@link #wf.doyle.blockbuster.item.LibraryItem.toString()} + */ + public static Map> classes = new HashMap>(); + + /** + * Instantiates a new instance of FileReader + * + * @param path + * path of the file to read + */ + public FileReader(Path path) + { + this.path = path; + } + + /** + * Parses the current file + */ + public void parseFile() + { + // Open the file using UTF-8 charset + try(Stream lines = Files.lines(this.path, StandardCharsets.UTF_8)) + { + Iterator it = lines.iterator(); + + while(it.hasNext()) + { + this.lineNumber++; + + String line = it.next(); + + // if we don't know what we're currently dealing with, lets just + // leave it. + if(this.currentLine == EnumLineType.UNKNOWN) continue; + + parseLine(line.trim()); + } + } + catch(IOException e) + { + App.LOGGER.error("Error whilst reading provided file", e); + } + } + + /** + * @return storage class from current line type + */ + private Class getClassType() + { + Class classType = null; + + // this is so horrible but there's no ways around it if I want to test + // multiple packages for the class we want. + try + { + // check if it's in wf.doyle.blockbuster.item.items.audiovisual in + // its current case + classType = (Class) Class.forName("wf.doyle.blockbuster.item.items.audiovisual." + this.currentLine.toString()); + } + catch(ClassNotFoundException e) + { + try + { + // check if it's in wf.doyle.blockbuster.item.items.printed in + // camel case + classType = (Class) Class.forName("wf.doyle.blockbuster.item.items.printed." + CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, this.currentLine.toString())); + } + catch(ClassNotFoundException ex) + { + try + { + // check if it's in + // wf.doyle.blockbuster.item.items.audiovisual in camel case + classType = (Class) Class.forName("wf.doyle.blockbuster.item.items.audiovisual." + CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, this.currentLine.toString())); + } + catch(ClassNotFoundException ex2) + { + App.LOGGER.error("Couldn't find storage class for this line type.", ex2); + } + } + } + + return classType; + } + + /** + * Find a private field in a class (and its parents) + * + * @param nameRaw + * name of field to find + * @param classType + * class to find the field in + * @return the found private field + */ + public static Field getField(String nameRaw, Class classType) + { + // for some reason the data files have extra spaces, why would you do + // this :( + String name = nameRaw.trim(); + + Field field = null; + + // again, horrible code but it's the only thing we can do when we're + // looking in multiple classes for a private field. + try + { + // check LibraryItem for the field + field = classType.getSuperclass().getSuperclass().getDeclaredField(name); + } + catch(NoSuchFieldException | SecurityException e) + { + try + { + // check the parent class for the field + // (AudioVisualItem/PrintedItem) + field = classType.getSuperclass().getDeclaredField(name); + } + catch(NoSuchFieldException | SecurityException ex) + { + try + { + // check the current class for the field + field = classType.getDeclaredField(name); + } + catch(NoSuchFieldException | SecurityException ex2) + { + App.LOGGER.error("Couldn't find field " + name + " in " + classType.getName(), ex2); + } + } + } + + return field; + } + + /** + * Set the value of a private field + * + * @param f + * field to set the value of + * @param instance + * instance to set the value in + * @param data + * data to set the value as + * @return instance of LibraryItem + */ + public static LibraryItem setField(Field f, LibraryItem instance, String data) + { + try + { + try + { + // check if the field type is int + if(f.getType().isAssignableFrom(int.class)) + { + int val = (int) Double.parseDouble(data); + f.setAccessible(true); + f.set(instance, val); + + return instance; + } + } + catch(NumberFormatException nfe) + { + } + + // check if the data is a boolean + if(data.equalsIgnoreCase("true") || data.equalsIgnoreCase("false")) + { + boolean b = Boolean.parseBoolean(data); + f.setAccessible(true); + f.set(instance, b); + + return instance; + } + + f.setAccessible(true); + f.set(instance, data); + } + catch(IllegalArgumentException | IllegalAccessException e) + { + App.LOGGER.error("Couldn't set value of " + f.getName() + " in " + instance.getClass().getName(), e); + } + + return instance; + } + + /** + * Parses the current line and decides what to do with it. + * + * @param line + * string to parse + */ + private void parseLine(String line) + { + if(line.isEmpty() || line.startsWith("//")) + { + // get the data types from the "// data is" line, afaik it's not + // what it's intended for, but ah well let's be lazy and use it for + // reflection + if(line.startsWith("// data is")) this.lineContains = line.substring(line.indexOf("// data is") + "// data is".length()).split(", "); + + return; + } + + // if this line is a declaration block ([CD data]) then we wont continue + // from here, we've already parsed it. + if(determineLineType(line)) return; + + Class itemClass = this.getClassType(); + + // just some fields to help me with reflection. "classes" maps a class + // object to an EnumLineType and "containing" just parses the "data is" + // line for us for the reflection + if(!containing.containsKey(itemClass.getName())) containing.put(itemClass.getName(), this.lineContains); + if(!classes.containsKey(this.currentLine)) classes.put(this.currentLine, itemClass); + + try + { + LibraryItem item = itemClass.newInstance(); + + // split the data on the line by comma + ListIterator iterator = Arrays.asList(line.split(",")).listIterator(); + + while(iterator.hasNext()) + { + int key = iterator.nextIndex(); + String value = iterator.next().trim(); // again with the + // unnecessary + // whitespaces + + Field field = getField(this.lineContains[key].trim(), itemClass); + + item = setField(field, item, value); + } + + // add this storage class to our main array + App.items.add(item); + } + catch(IllegalAccessException | InstantiationException e) + { + App.LOGGER.error("Couldn't instantiate storage class.", e); + } + } + + /** + * Parses the current line and determines the type of data it is providing + * + * @param line + * string to parse to type + * @return true if found a line type + */ + private boolean determineLineType(String line) + { + Matcher m = this.dataTypes.matcher(line); + + if(!m.find()) return false; + + switch(m.group(1).toLowerCase()) + { + case "dvd": + this.currentLine = EnumLineType.DVD; + return true; + + case "cd": + this.currentLine = EnumLineType.CD; + return true; + + case "book": + this.currentLine = EnumLineType.BOOK; + return true; + + case "periodical": + this.currentLine = EnumLineType.PERIODICAL; + return true; + + default: + this.currentLine = EnumLineType.UNKNOWN; + App.LOGGER.error("Couldn't recognise data type on line " + this.lineNumber + " in file " + this.path.getFileName() + ", skipping this block."); + return true; + } + } +} diff --git a/src/main/java/wf/doyle/blockbuster/file/FileWriter.java b/src/main/java/wf/doyle/blockbuster/file/FileWriter.java new file mode 100644 index 0000000..eb47186 --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/file/FileWriter.java @@ -0,0 +1,128 @@ +package wf.doyle.blockbuster.file; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + +import com.google.common.base.CaseFormat; + +import wf.doyle.blockbuster.App; +import wf.doyle.blockbuster.item.LibraryItem; +import wf.doyle.blockbuster.util.EnumLineType; + +/** + * Serializes all the items and writes them back into a data file. + * + * @author Jordan Doyle + */ +public class FileWriter { + /** + * Provides a versioning for our data files which allows backwards + * compatability with older data files. + */ + protected static final long serialVersionUID = 0L; + + /** + * Path to the file to write to + */ + private Path path; + + /** + * Lines to write to the data file + */ + private List lines = new ArrayList(); + + /** + * Final string to write to file. + */ + public String joinedString; + + /** + * Instantiates a new FileWriter instance + * + * @param path + * path to file to write to + */ + public FileWriter(Path path) + { + this.lines.add("// SERIAL " + serialVersionUID); + + this.path = path; + } + + /** + * Serializes all items from the main array ( + * {@link wf.doyle.blockbuster.App#items}) and stores each line in the + * {@link #lines} array. + * + * @return serialized classes + */ + public FileWriter serializeItems() + { + List items = App.items; + + // sort the items by class type, doesn't mess up our storage file when + // we save. + Collections.sort(items, new Comparator() + { + @Override + public int compare(LibraryItem arg0, LibraryItem arg1) + { + return arg0.getType().toString().compareTo(arg1.getType().toString()); + } + }); + + EnumLineType header = null; + + for(LibraryItem item : items) + { + if(header != item.getType()) + { + this.lines.add(""); + // add the declaration line in camel case + this.lines.add("[" + CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, item.getType().toString()) + " data]"); + // add back the "data is" line, helps us a lot with reflection + this.lines.add("// data is " + StringUtils.join(FileReader.containing.get(item.getClass().getName()), ", ").trim()); + header = item.getType(); + } + + this.lines.add(item.toString()); + } + + this.joinedString = StringUtils.join(this.lines, "\r\n"); + + return this; + } + + /** + * Write and save to the file + */ + public void save() + { + File file = this.path.toFile(); + try + { + file.createNewFile(); + } + catch(IOException e) + { + App.LOGGER.error("Could not create new file", e); + } + + try(PrintWriter writer = new PrintWriter(file)) + { + writer.write(this.joinedString); + } + catch(Exception e) + { + App.LOGGER.error("Could not write to file", e); + } + } +} diff --git a/src/main/java/wf/doyle/blockbuster/gui/GUI.java b/src/main/java/wf/doyle/blockbuster/gui/GUI.java new file mode 100644 index 0000000..3d60d79 --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/gui/GUI.java @@ -0,0 +1,170 @@ +package wf.doyle.blockbuster.gui; + +import java.awt.EventQueue; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; + +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.lang.reflect.Field; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import javax.swing.JTabbedPane; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; + +import wf.doyle.blockbuster.App; +import wf.doyle.blockbuster.file.FileReader; +import wf.doyle.blockbuster.item.LibraryItem; +import wf.doyle.blockbuster.item.items.printed.Book; +import wf.doyle.blockbuster.item.items.printed.Periodical; +import wf.doyle.blockbuster.util.EnumLineType; + +/** + * Provides a nice (yet somewhat sketchy) front-end for BlockBuster. + * + * @author Jordan Doyle + */ +public class GUI extends JFrame { + + /** + * Content Pane + */ + private JPanel contentPane; + /** + * Tabbed Pane + */ + private final JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP); + + /** + * Create the frame. + */ + public GUI() + { + this.setResizable(false); + this.setTitle("BlockBuster"); + + try + { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } + catch(ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(100, 100, 712, 613); + this.contentPane = new JPanel(); + this.contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + setContentPane(this.contentPane); + this.contentPane.setLayout(new GridLayout(1, 0, 0, 0)); + this.contentPane.add(this.tabbedPane); + + List items = App.items; + Collections.sort(items, new Comparator() + { + @Override + public int compare(LibraryItem arg0, LibraryItem arg1) + { + return arg0.getType().toString().compareTo(arg1.getType().toString()); + } + }); + + EnumLineType header = null; + + int top = 17; + + JPanel panel = null; + + for(LibraryItem item : items) + { + if(header != item.getType()) + { + top = 17; + + panel = new JPanel(); + this.tabbedPane.addTab(item.getClass().getSimpleName(), null, panel, null); + panel.setLayout(null); + + header = item.getType(); + } + + JButton btnNewButton = new JButton("Borrow"); + + if(item.getLoan()) + { + btnNewButton.setEnabled(false); + btnNewButton.setText("Unavailable"); + } + + btnNewButton.setBounds(570, top - 4, 97, 25); + panel.add(btnNewButton); + + JLabel lblNewLabel = new JLabel(item.getName()); + lblNewLabel.setBounds(12, top, 170, 16); + panel.add(lblNewLabel); + + JLabel lblNewLabel_2; + JLabel lblNewLabel_3; + + final boolean borrow; + + if(item instanceof Book) + { + lblNewLabel_2 = new JLabel("" + ((Book) item).getISBN()); + lblNewLabel_3 = new JLabel( ((Book) item).getAuthor()); + borrow = false; + } + else + { + lblNewLabel_2 = new JLabel(item.getItemCode()); + + if(item instanceof Periodical) + { + lblNewLabel_3 = new JLabel( ((Periodical) item).getPublisher()); + borrow = false; + } + else + { + lblNewLabel_3 = new JLabel("Borrowed: " + item.getTimesBorrowed()); + borrow = true; + } + } + + btnNewButton.addActionListener((e)-> { + if(!App.USER.hasItem() && item.toggleItem()) + { + if(borrow) + lblNewLabel_3.setText("Borrowed: " + item.getTimesBorrowed()); + + App.USER.setItem(item); + + btnNewButton.setText("Return"); + } else if(App.USER.hasItem(item)) { + btnNewButton.setText("Borrow"); + App.USER.removeItem(); + } + }); + + lblNewLabel_2.setBounds(220, top, 100, 16); + panel.add(lblNewLabel_2); + + lblNewLabel_3.setBounds(370, top, 100, 16); + panel.add(lblNewLabel_3); + + JLabel lblNewLabel_4 = new JLabel(item.getCost()); + lblNewLabel_4.setBounds(520, top, 100, 16); + panel.add(lblNewLabel_4); + + top += 38; + } + } +} diff --git a/src/main/java/wf/doyle/blockbuster/item/AudioVisualItem.java b/src/main/java/wf/doyle/blockbuster/item/AudioVisualItem.java new file mode 100644 index 0000000..90c0b0f --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/item/AudioVisualItem.java @@ -0,0 +1,22 @@ +package wf.doyle.blockbuster.item; + +/** + * @see wf.doyle.blockbuster.item.LibraryItem + * @author Jordan Doyle + */ +public abstract class AudioVisualItem extends LibraryItem { + /** + * The time this item runs for + */ + private int playingTime; + + /** + * Gets the running time for this audio visual item. + * + * @return length of item + */ + public int getPlayingTime() + { + return this.playingTime; + } +} diff --git a/src/main/java/wf/doyle/blockbuster/item/LibraryItem.java b/src/main/java/wf/doyle/blockbuster/item/LibraryItem.java new file mode 100644 index 0000000..35613d2 --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/item/LibraryItem.java @@ -0,0 +1,161 @@ +package wf.doyle.blockbuster.item; + +import java.lang.reflect.Field; +import java.text.DecimalFormat; + +import wf.doyle.blockbuster.App; +import wf.doyle.blockbuster.file.FileReader; +import wf.doyle.blockbuster.util.EnumLineType; + +/** + * Provides a base class for all items to extend. + * + * @author Jordan Doyle + */ +public abstract class LibraryItem { + /** + * Checks if the item currently on loan. + */ + private boolean onLoan = false; + + /** + * Amount of times the item has been taken. + */ + private int timesBorrowed = 0; + + /** + * URN of the item, as specified by the providing data file. + */ + private String itemCode; + + /** + * Cost of the item, as specified by the providing data file. + */ + private int cost; + + /** + * Name of the library item + */ + private String title; + + /** + * Gets the unique reference number of the item. + * + * @return URN of item + */ + public String getItemCode() + { + return this.itemCode; + } + + /** + * Gets the storage class type for this class. + * + * @return type of storage class + */ + public abstract EnumLineType getType(); + + /** + * Gets the name of the item provided by the data file. + * + * @return name of item + */ + public String getName() + { + return this.title; + } + + /** + * Gets the cost of the item. + * + * @return cost of the item in pounds + */ + public String getCost() + { + return new DecimalFormat("'£'0.00").format((float)this.cost / 100); + } + + /** + * Checks if the item is currently being loaned + * + * @return true if the item is loaned out + */ + public boolean getLoan() + { + return this.onLoan; + } + + /** + * Checks how many times this item has been borrowed from the library. + * Increments every time {@link #takeItem()} is called. + * + * @return amount of times item has been borrowed + */ + public int getTimesBorrowed() + { + return this.timesBorrowed; + } + + /** + * Takes the item from the library and increments the taken counter by 1. + */ + public void takeItem() + { + if(this.getLoan()) return; + + this.onLoan = true; + this.timesBorrowed++; + } + + /** + * Returns the item back to the library and let it be available again. + */ + public void returnItem() + { + if(!this.getLoan()) return; + + this.onLoan = false; + } + + @Override + public String toString() + { + String[] contains = FileReader.containing.get(this.getClass().getName()); + + String string = ""; + + for(String key : contains) + { + Class child = FileReader.classes.get(this.getType()); + + Field f = FileReader.getField(key.trim(), child); + f.setAccessible(true); + try + { + string = string + f.get(this) + ", "; + } + catch(IllegalArgumentException | IllegalAccessException e) + { + App.LOGGER.error("Could not get value of reflection field", e); + } + } + + return string.substring(0, string.lastIndexOf(",")); + } + + /** + * Toggles between taking the item and putting it back. + * + * @return true if we now have the item + */ + public boolean toggleItem() + { + if(this.getLoan()) { + this.returnItem(); + return false; + } else { + this.takeItem(); + return true; + } + } +} diff --git a/src/main/java/wf/doyle/blockbuster/item/PrintedItem.java b/src/main/java/wf/doyle/blockbuster/item/PrintedItem.java new file mode 100644 index 0000000..92a8b8f --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/item/PrintedItem.java @@ -0,0 +1,33 @@ +package wf.doyle.blockbuster.item; + +/** + * @see wf.doyle.blockbuster.item.LibraryItem + * @author Jordan Doyle + */ +public abstract class PrintedItem extends LibraryItem { + /** + * Number of pages in the item + */ + private int noOfPages; + + /** + * Publisher of the item + */ + private String publisher; + + /** + * @return number of pages in the item + */ + public int getNumberOfPages() + { + return this.noOfPages; + } + + /** + * @return publisher of the item + */ + public String getPublisher() + { + return this.publisher; + } +} diff --git a/src/main/java/wf/doyle/blockbuster/item/items/audiovisual/CD.java b/src/main/java/wf/doyle/blockbuster/item/items/audiovisual/CD.java new file mode 100644 index 0000000..52d0048 --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/item/items/audiovisual/CD.java @@ -0,0 +1,43 @@ +package wf.doyle.blockbuster.item.items.audiovisual; + +import wf.doyle.blockbuster.item.AudioVisualItem; +import wf.doyle.blockbuster.util.EnumLineType; + +/** + * This object represents a CD in a library. + * + * @author Jordan Doyle + */ +public final class CD extends AudioVisualItem { + /** + * Number of tracks on the album. + */ + private int noOfTracks; + + /** + * The artist of the album. + */ + private String artist; + + /** + * @return number of tracks on the album + */ + public int getNumberOfTracks() + { + return this.noOfTracks; + } + + /** + * @return artist of the album + */ + public String getArtist() + { + return this.artist; + } + + @Override + public EnumLineType getType() + { + return EnumLineType.CD; + } +} diff --git a/src/main/java/wf/doyle/blockbuster/item/items/audiovisual/DVD.java b/src/main/java/wf/doyle/blockbuster/item/items/audiovisual/DVD.java new file mode 100644 index 0000000..4f7260b --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/item/items/audiovisual/DVD.java @@ -0,0 +1,30 @@ +package wf.doyle.blockbuster.item.items.audiovisual; + +import wf.doyle.blockbuster.item.AudioVisualItem; +import wf.doyle.blockbuster.util.EnumLineType; + +/** + * This object represents a DVD in a library. + * + * @author Jordan Doyle + */ +public final class DVD extends AudioVisualItem { + /** + * Director of the DVD + */ + private String director; + + /** + * @return gets the director of the DVD + */ + public String getDirector() + { + return this.director; + } + + @Override + public EnumLineType getType() + { + return EnumLineType.DVD; + } +} diff --git a/src/main/java/wf/doyle/blockbuster/item/items/printed/Book.java b/src/main/java/wf/doyle/blockbuster/item/items/printed/Book.java new file mode 100644 index 0000000..adb1eaf --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/item/items/printed/Book.java @@ -0,0 +1,43 @@ +package wf.doyle.blockbuster.item.items.printed; + +import wf.doyle.blockbuster.item.PrintedItem; +import wf.doyle.blockbuster.util.EnumLineType; + +/** + * This object represents a Book in a library. + * + * @author Jordan Doyle + */ +public class Book extends PrintedItem { + /** + * Author of the book. + */ + private String author; + + /** + * ISBN of the book. + */ + private String isbn; + + /** + * @return author of the book + */ + public String getAuthor() + { + return this.author; + } + + /** + * @return ISBN of the book + */ + public String getISBN() + { + return this.isbn; + } + + @Override + public EnumLineType getType() + { + return EnumLineType.BOOK; + } +} diff --git a/src/main/java/wf/doyle/blockbuster/item/items/printed/Periodical.java b/src/main/java/wf/doyle/blockbuster/item/items/printed/Periodical.java new file mode 100644 index 0000000..44227c6 --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/item/items/printed/Periodical.java @@ -0,0 +1,45 @@ +package wf.doyle.blockbuster.item.items.printed; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +import wf.doyle.blockbuster.App; +import wf.doyle.blockbuster.item.PrintedItem; +import wf.doyle.blockbuster.util.EnumLineType; + +/** + * This object represents a periodic publication in a library. + * + * @author Jordan Doyle + */ +public class Periodical extends PrintedItem { + /** + * Time of publication + */ + private String publicationDate; + + /** + * @return time of publication + */ + public Date getPublicationDate() + { + try + { + return new SimpleDateFormat("dd-MM-yy").parse(this.publicationDate); + // return a Date object from our publicationDate string. Dear + // Oracle, please implement PHP's strtotime somehow + } + catch(ParseException e) + { + App.LOGGER.error("Error parsing publication date", e); + return new Date(); + } + } + + @Override + public EnumLineType getType() + { + return EnumLineType.PERIODICAL; + } +} diff --git a/src/main/java/wf/doyle/blockbuster/util/EnumLineType.java b/src/main/java/wf/doyle/blockbuster/util/EnumLineType.java new file mode 100644 index 0000000..bf2d184 --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/util/EnumLineType.java @@ -0,0 +1,33 @@ +package wf.doyle.blockbuster.util; + +/** + * Enum containing all the different types of lines. + * + * @author Jordan Doyle + */ +public enum EnumLineType { + /** + * The current lines contain information about CDs. + */ + CD, + /** + * The current lines contain information about DVDs. + */ + DVD, + /** + * The current lines contain information about books. + */ + BOOK, + /** + * The current lines contain information about periodicals. + */ + PERIODICAL, + /** + * This line contains an unknown data type. + */ + UNKNOWN, + /** + * It is not yet determined what these lines contain + */ + NONE; +} diff --git a/src/main/java/wf/doyle/blockbuster/util/Library.java b/src/main/java/wf/doyle/blockbuster/util/Library.java new file mode 100644 index 0000000..c5ab61a --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/util/Library.java @@ -0,0 +1,109 @@ +package wf.doyle.blockbuster.util; + +import java.lang.reflect.Field; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import wf.doyle.blockbuster.App; +import wf.doyle.blockbuster.file.FileReader; +import wf.doyle.blockbuster.item.LibraryItem; + +/** + * Contains various functions for the Library. + * + * @author Jordan Doyle + */ +public final class Library { + /** + * FileReader instance to read from the data files + */ + private FileReader reader; + + /** + * Instantiates a new Library class. + * + * @throws URISyntaxException + * resource could not be parsed + */ + public Library() throws URISyntaxException + { + Path path = Paths.get(App.class.getResource("/data/items_all.txt").toURI()); + + this.reader = new FileReader(path); + this.reader.parseFile(); + } + + /** + * Prints all the data about each item + */ + public void printAllDetails() + { + App.LOGGER.debug("UNSORTED DETAILS TEST"); + App.LOGGER.debug("====================================================================="); + + for(LibraryItem item : App.items) + { + for(String containing : FileReader.containing.get(item.getClass().getName())) + { + try + { + Field f = FileReader.getField(containing, item.getClass()); + f.setAccessible(true); + App.LOGGER.debug(containing.trim() + ": " + f.get(item)); + } + catch(IllegalArgumentException | IllegalAccessException e) + { + App.LOGGER.error("Couldn't print out details", e); + } + } + + App.LOGGER.debug("----------------------------------------"); + } + + App.LOGGER.debug("====================================================================="); + } + + /** + * Prints all the data about each item sorted on title + */ + public void printAllDetailsSortedOnTitle() // who picks the method names for + { // these tasks..? + List items = App.items; + Collections.sort(items, new Comparator() + { + @Override + public int compare(LibraryItem arg0, LibraryItem arg1) + { + return arg0.getName().compareTo(arg1.getName()); + } + }); + + App.LOGGER.debug("SORTED DETAILS TEST"); + App.LOGGER.debug("====================================================================="); + + for(LibraryItem item : items) + { + for(String containing : FileReader.containing.get(item.getClass().getName())) + { + try + { + Field f = FileReader.getField(containing, item.getClass()); + f.setAccessible(true); + App.LOGGER.debug(containing.trim() + ": " + f.get(item)); + } + catch(IllegalArgumentException | IllegalAccessException e) + { + App.LOGGER.error("Couldn't print out details", e); + } + } + + App.LOGGER.debug("----------------------------------------"); + } + + App.LOGGER.debug("====================================================================="); + } +} diff --git a/src/main/java/wf/doyle/blockbuster/util/User.java b/src/main/java/wf/doyle/blockbuster/util/User.java new file mode 100644 index 0000000..ed5cceb --- /dev/null +++ b/src/main/java/wf/doyle/blockbuster/util/User.java @@ -0,0 +1,58 @@ +package wf.doyle.blockbuster.util; + +import wf.doyle.blockbuster.item.LibraryItem; + +/** + * Storage class holding data about a user. + * + * @author Jordan Doyle + */ +public class User { + /** + * Holds the reference to the item that the user currently has + */ + private LibraryItem hasItem = null; + + /** + * Checks if the user currently has an item + * + * @return true if the user has an item + */ + public boolean hasItem() + { + return this.hasItem != null; + } + + /** + * Checks if a user has a certain item. + * + * @param item + * item to compare against + * @return true, if the user has the specified item + */ + public boolean hasItem(LibraryItem item) + { + if(!hasItem()) return false; + + return (hasItem.equals(item)); + } + + /** + * Takes the item off of the user + */ + public void removeItem() + { + this.hasItem = null; + } + + /** + * Gives the user an item + * + * @param l + * item instance + */ + public void setItem(LibraryItem l) + { + this.hasItem = l; + } +} diff --git a/src/main/resources/data/cd_&_dvd_data_1.txt b/src/main/resources/data/cd_&_dvd_data_1.txt new file mode 100644 index 0000000..4f42816 --- /dev/null +++ b/src/main/resources/data/cd_&_dvd_data_1.txt @@ -0,0 +1,25 @@ +// this is a comment, any lines that start with // +// (and blank lines) should be ignored + +[CD data] + +// data is artist, noOfTracks, playingTime, title, itemCode, cost + +James Blunt,15,68, Back to Bedlam, LM003604,498 +Duffy,10,73, Rockferry, LM003553,898 +Adele,12,19,75, LM003580,798 +Robert Plant and Alison Krauss,13,72, Raising Sand, LM003750,898 +Goldfrapp,10,72, Seventh Tree, LM003873,1299 +Amy Winehouse,11,70, Back To Black, LM003698,698 +Jack Johnson,15,67, Sleep Through The Static, LM003773,898 + Mark Ronson,14,74, Version, LM003365,698, +Radiohead,10,75, In Rainbows , LM003771,798, +Nick Cave,11,68, Dig!!! Lazarus Dig!!!, LM003751,1199 +Nickelback,11,72, All the Right Reasons, LM003915,598 + +[DVD data] + +// data is director, playingTime, title, itemCode, cost + +Chris Miller,92, Shrek The Third, LM004314,1026 +Robert Zemeckis,114, Beowulf , LM004079,900 diff --git a/src/main/resources/data/cd_&_dvd_data_2.txt b/src/main/resources/data/cd_&_dvd_data_2.txt new file mode 100644 index 0000000..99a0676 --- /dev/null +++ b/src/main/resources/data/cd_&_dvd_data_2.txt @@ -0,0 +1,23 @@ +[DVD data] +// none available yet + +[CD data] +// data is artist, noOfTracks, playingTime, title, itemCode, cost +Goldfrapp,10,72, Seventh Tree, LM003873,1299 +Amy Winehouse,11,70, Back To Black, LM003698,698 +Jack Johnson, 15,67, Sleep Through The Static, LM003773,898 + +[DVD data] +// data is director, playingTime, title, itemCode, cost +Chris Miller,92, Shrek The Third, LM004314,1026 +Robert Zemeckis,114, Beowulf , LM004079,900 +Phyllida Lloyd,118, Mamma Mia, LM004984,798 +Joe Wright,130, Atonement, LM004720,1293 +Andrew Adamson,125, The Chronicles of Narnia: Prince Caspian, LM004178,498 + +[cd data] +// data is artist, noOfTracks, playingTime, title, itemCode, cost +Mark Ronson,14,75, Version, LM003365,698 +Radiohead,10,74, In Rainbows , LM003771,798 +Nick Cave,11,68, Dig!!! Lazarus Dig!!!, LM003751,1199 +Nickelback, 11,68, All the Right Reasons, LM003915,598 diff --git a/src/main/resources/data/cd_&_dvd_data_3.txt b/src/main/resources/data/cd_&_dvd_data_3.txt new file mode 100644 index 0000000..9ac436b --- /dev/null +++ b/src/main/resources/data/cd_&_dvd_data_3.txt @@ -0,0 +1,26 @@ +// this is a comment, any lines that start with // +// (and blank lines) should be ignored + +[CD data] + +// data is artist, noOfTracks, playingTime, title, itemCode, cost, timesBorrowed, onLoan + +James Blunt,15,68, Back to Bedlam, LM003604,498,234,true +Duffy,10,73, Rockferry, LM003553,898,90,false +Adele,12,19,75, LM003580,798,87,FALSE +Robert Plant and Alison Krauss,13,72, Raising Sand, LM003750,898,89,tRUE +Goldfrapp,10,72, Seventh Tree, LM003873,1299,9876,true +Amy Winehouse,11,70, Back To Black, LM003698,698,8765,false +Jack Johnson,15,67, Sleep Through The Static, LM003773,898, 54,True + Mark Ronson, 14,74, Version, LM003365,698,56,true +Radiohead,10,75, In Rainbows , LM003771,798,6543,FALSE +Nick Cave,11,68, Dig!!! Lazarus Dig!!!, LM003751,1199,90,False +Nickelback,11,72, All the Right Reasons, LM003915,598,32,true + +[DVD data] + +// data is director, playingTime, title, itemCode, cost, timesBorrowed, onLoan + + +Chris Miller,92, Shrek The Third, LM004314,1026,900,TRUE +Robert Zemeckis,114, Beowulf , LM004079,900,87,FALSE \ No newline at end of file diff --git a/src/main/resources/data/cd_data.txt b/src/main/resources/data/cd_data.txt new file mode 100644 index 0000000..bfe2c67 --- /dev/null +++ b/src/main/resources/data/cd_data.txt @@ -0,0 +1,17 @@ +// this is a comment, any lines that start with // +// (and blank lines) should be ignored + + +// data is artist, noOfTracks, playingTime, title, itemCode, cost + +James Blunt,15,68, Back to Bedlam, LM003604,498 +Duffy,10,73, Rockferry, LM003553,898 +Adele,12,19,75, LM003580,798 +Robert Plant and Alison Krauss,13,72, Raising Sand, LM003750,898 +Goldfrapp,10,72, Seventh Tree, LM003873,1299 +Amy Winehouse,11,70, Back To Black, LM003698,698 +Jack Johnson,15,67, Sleep Through The Static, LM003773,898 + Mark Ronson,14,74, Version, LM003365,698, +Radiohead,10,75, In Rainbows , LM003771,798, +Nick Cave,11,68, Dig!!! Lazarus Dig!!!, LM003751,1199 +Nickelback,11,72, All the Right Reasons, LM003915,598 \ No newline at end of file diff --git a/src/main/resources/data/items_all.txt b/src/main/resources/data/items_all.txt new file mode 100644 index 0000000..52b503c --- /dev/null +++ b/src/main/resources/data/items_all.txt @@ -0,0 +1,41 @@ +// this is a comment, any lines that start with // +// (and blank lines) should be ignored + +[Book data] +// data is author, isbn, noOfPages, publisher, title, itemCode, cost, timesBorrowed, onLoan +Barnes and Kolling, 9780131976290,480, Pearson, Objects First with Java, LM002411,3989,781,true +Aho Sethi and Ullman, 9780201101942,795, Addison-Wesley, Compilers: Principles Techniques and Tools, LM002711,599,0,FALSE +Harvey Paul and Jeffrey, 9780130622211,1568, Prentice Hall, C# How to Program, LM002876,4599,45,TRUE +Muster, 9780072193145,1011, McGraw-Hill, Unix Made Easy: The Basics and Beyond (Made Easy), LM002468,6395,0,TRUE +Thomee, 9783540331216,370, Springer Verlag, Galerkin Finite Element Methods for Parabolic Problems, LM002153,4554,0,FALSE + +[CD data] + +// data is artist, noOfTracks, playingTime, title, itemCode, cost, timesBorrowed, onLoan + +James Blunt,15,68, Back to Bedlam, LM003604,498,234,true +Duffy,10,73, Rockferry, LM003553,898,90,false +Adele,12,19,75, LM003580,798,87,FALSE +Robert Plant and Alison Krauss,13,72, Raising Sand, LM003750,898,89,tRUE +Goldfrapp,10,72, Seventh Tree, LM003873,1299,9876,true +Amy Winehouse,11,70, Back To Black, LM003698,698,8765,false +Jack Johnson,15,67, Sleep Through The Static, LM003773,898,54,True + Mark Ronson,14,74, Version, LM003365,698,56,true +Radiohead,10,75, In Rainbows , LM003771,798,6543,FALSE +Nick Cave,11,68, Dig!!! Lazarus Dig!!!, LM003751,1199,90,False +Nickelback,11,72, All the Right Reasons, LM003915,598,32,true + +[DVD data] + +// data is director, playingTime, title, itemCode, cost, timesBorrowed, onLoan +Chris Miller,92, Shrek The Third, LM004314,1026,900,TRUE +Robert Zemeckis,114, Beowulf , LM004079,900,87,FALSE +Phyllida Lloyd,118, Mamma Mia, LM004984,798,566,true +Joe Wright,130, Atonement, LM004720,1293,66,true +Andrew Adamson,125, The Chronicles of Narnia: Prince Caspian, LM004178,345,45,FALSE + +[periodical data] +// data is publicationDate, noOfPages, publisher, title, itemCode, cost, timesBorrowed, onLoan +25-03-08,70, News International, The Times, LM005447,80,0,FALSE +26-03-08,70, News International, The Times, LM005002,80,0,false +26-03-08,60, Associated Newspapers, Daily Mail, LM005177,40,0,false diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml new file mode 100644 index 0000000..47187c2 --- /dev/null +++ b/src/main/resources/log4j2.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/wf/doyle/blockbuster/AppTest.java b/src/test/java/wf/doyle/blockbuster/AppTest.java new file mode 100644 index 0000000..9993855 --- /dev/null +++ b/src/test/java/wf/doyle/blockbuster/AppTest.java @@ -0,0 +1,38 @@ +package wf.doyle.blockbuster; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/target/classes/data/cd_&_dvd_data_1.txt b/target/classes/data/cd_&_dvd_data_1.txt new file mode 100644 index 0000000..4f42816 --- /dev/null +++ b/target/classes/data/cd_&_dvd_data_1.txt @@ -0,0 +1,25 @@ +// this is a comment, any lines that start with // +// (and blank lines) should be ignored + +[CD data] + +// data is artist, noOfTracks, playingTime, title, itemCode, cost + +James Blunt,15,68, Back to Bedlam, LM003604,498 +Duffy,10,73, Rockferry, LM003553,898 +Adele,12,19,75, LM003580,798 +Robert Plant and Alison Krauss,13,72, Raising Sand, LM003750,898 +Goldfrapp,10,72, Seventh Tree, LM003873,1299 +Amy Winehouse,11,70, Back To Black, LM003698,698 +Jack Johnson,15,67, Sleep Through The Static, LM003773,898 + Mark Ronson,14,74, Version, LM003365,698, +Radiohead,10,75, In Rainbows , LM003771,798, +Nick Cave,11,68, Dig!!! Lazarus Dig!!!, LM003751,1199 +Nickelback,11,72, All the Right Reasons, LM003915,598 + +[DVD data] + +// data is director, playingTime, title, itemCode, cost + +Chris Miller,92, Shrek The Third, LM004314,1026 +Robert Zemeckis,114, Beowulf , LM004079,900 diff --git a/target/classes/data/cd_&_dvd_data_2.txt b/target/classes/data/cd_&_dvd_data_2.txt new file mode 100644 index 0000000..99a0676 --- /dev/null +++ b/target/classes/data/cd_&_dvd_data_2.txt @@ -0,0 +1,23 @@ +[DVD data] +// none available yet + +[CD data] +// data is artist, noOfTracks, playingTime, title, itemCode, cost +Goldfrapp,10,72, Seventh Tree, LM003873,1299 +Amy Winehouse,11,70, Back To Black, LM003698,698 +Jack Johnson, 15,67, Sleep Through The Static, LM003773,898 + +[DVD data] +// data is director, playingTime, title, itemCode, cost +Chris Miller,92, Shrek The Third, LM004314,1026 +Robert Zemeckis,114, Beowulf , LM004079,900 +Phyllida Lloyd,118, Mamma Mia, LM004984,798 +Joe Wright,130, Atonement, LM004720,1293 +Andrew Adamson,125, The Chronicles of Narnia: Prince Caspian, LM004178,498 + +[cd data] +// data is artist, noOfTracks, playingTime, title, itemCode, cost +Mark Ronson,14,75, Version, LM003365,698 +Radiohead,10,74, In Rainbows , LM003771,798 +Nick Cave,11,68, Dig!!! Lazarus Dig!!!, LM003751,1199 +Nickelback, 11,68, All the Right Reasons, LM003915,598 diff --git a/target/classes/data/cd_&_dvd_data_3.txt b/target/classes/data/cd_&_dvd_data_3.txt new file mode 100644 index 0000000..9ac436b --- /dev/null +++ b/target/classes/data/cd_&_dvd_data_3.txt @@ -0,0 +1,26 @@ +// this is a comment, any lines that start with // +// (and blank lines) should be ignored + +[CD data] + +// data is artist, noOfTracks, playingTime, title, itemCode, cost, timesBorrowed, onLoan + +James Blunt,15,68, Back to Bedlam, LM003604,498,234,true +Duffy,10,73, Rockferry, LM003553,898,90,false +Adele,12,19,75, LM003580,798,87,FALSE +Robert Plant and Alison Krauss,13,72, Raising Sand, LM003750,898,89,tRUE +Goldfrapp,10,72, Seventh Tree, LM003873,1299,9876,true +Amy Winehouse,11,70, Back To Black, LM003698,698,8765,false +Jack Johnson,15,67, Sleep Through The Static, LM003773,898, 54,True + Mark Ronson, 14,74, Version, LM003365,698,56,true +Radiohead,10,75, In Rainbows , LM003771,798,6543,FALSE +Nick Cave,11,68, Dig!!! Lazarus Dig!!!, LM003751,1199,90,False +Nickelback,11,72, All the Right Reasons, LM003915,598,32,true + +[DVD data] + +// data is director, playingTime, title, itemCode, cost, timesBorrowed, onLoan + + +Chris Miller,92, Shrek The Third, LM004314,1026,900,TRUE +Robert Zemeckis,114, Beowulf , LM004079,900,87,FALSE \ No newline at end of file diff --git a/target/classes/data/cd_data.txt b/target/classes/data/cd_data.txt new file mode 100644 index 0000000..bfe2c67 --- /dev/null +++ b/target/classes/data/cd_data.txt @@ -0,0 +1,17 @@ +// this is a comment, any lines that start with // +// (and blank lines) should be ignored + + +// data is artist, noOfTracks, playingTime, title, itemCode, cost + +James Blunt,15,68, Back to Bedlam, LM003604,498 +Duffy,10,73, Rockferry, LM003553,898 +Adele,12,19,75, LM003580,798 +Robert Plant and Alison Krauss,13,72, Raising Sand, LM003750,898 +Goldfrapp,10,72, Seventh Tree, LM003873,1299 +Amy Winehouse,11,70, Back To Black, LM003698,698 +Jack Johnson,15,67, Sleep Through The Static, LM003773,898 + Mark Ronson,14,74, Version, LM003365,698, +Radiohead,10,75, In Rainbows , LM003771,798, +Nick Cave,11,68, Dig!!! Lazarus Dig!!!, LM003751,1199 +Nickelback,11,72, All the Right Reasons, LM003915,598 \ No newline at end of file diff --git a/target/classes/data/items_all.txt b/target/classes/data/items_all.txt new file mode 100644 index 0000000..52b503c --- /dev/null +++ b/target/classes/data/items_all.txt @@ -0,0 +1,41 @@ +// this is a comment, any lines that start with // +// (and blank lines) should be ignored + +[Book data] +// data is author, isbn, noOfPages, publisher, title, itemCode, cost, timesBorrowed, onLoan +Barnes and Kolling, 9780131976290,480, Pearson, Objects First with Java, LM002411,3989,781,true +Aho Sethi and Ullman, 9780201101942,795, Addison-Wesley, Compilers: Principles Techniques and Tools, LM002711,599,0,FALSE +Harvey Paul and Jeffrey, 9780130622211,1568, Prentice Hall, C# How to Program, LM002876,4599,45,TRUE +Muster, 9780072193145,1011, McGraw-Hill, Unix Made Easy: The Basics and Beyond (Made Easy), LM002468,6395,0,TRUE +Thomee, 9783540331216,370, Springer Verlag, Galerkin Finite Element Methods for Parabolic Problems, LM002153,4554,0,FALSE + +[CD data] + +// data is artist, noOfTracks, playingTime, title, itemCode, cost, timesBorrowed, onLoan + +James Blunt,15,68, Back to Bedlam, LM003604,498,234,true +Duffy,10,73, Rockferry, LM003553,898,90,false +Adele,12,19,75, LM003580,798,87,FALSE +Robert Plant and Alison Krauss,13,72, Raising Sand, LM003750,898,89,tRUE +Goldfrapp,10,72, Seventh Tree, LM003873,1299,9876,true +Amy Winehouse,11,70, Back To Black, LM003698,698,8765,false +Jack Johnson,15,67, Sleep Through The Static, LM003773,898,54,True + Mark Ronson,14,74, Version, LM003365,698,56,true +Radiohead,10,75, In Rainbows , LM003771,798,6543,FALSE +Nick Cave,11,68, Dig!!! Lazarus Dig!!!, LM003751,1199,90,False +Nickelback,11,72, All the Right Reasons, LM003915,598,32,true + +[DVD data] + +// data is director, playingTime, title, itemCode, cost, timesBorrowed, onLoan +Chris Miller,92, Shrek The Third, LM004314,1026,900,TRUE +Robert Zemeckis,114, Beowulf , LM004079,900,87,FALSE +Phyllida Lloyd,118, Mamma Mia, LM004984,798,566,true +Joe Wright,130, Atonement, LM004720,1293,66,true +Andrew Adamson,125, The Chronicles of Narnia: Prince Caspian, LM004178,345,45,FALSE + +[periodical data] +// data is publicationDate, noOfPages, publisher, title, itemCode, cost, timesBorrowed, onLoan +25-03-08,70, News International, The Times, LM005447,80,0,FALSE +26-03-08,70, News International, The Times, LM005002,80,0,false +26-03-08,60, Associated Newspapers, Daily Mail, LM005177,40,0,false diff --git a/target/classes/log4j2.xml b/target/classes/log4j2.xml new file mode 100644 index 0000000..47187c2 --- /dev/null +++ b/target/classes/log4j2.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/classes/serialized-data.txt b/target/classes/serialized-data.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/target/classes/serialized-data.txt diff --git a/target/classes/wf/doyle/blockbuster/App.class b/target/classes/wf/doyle/blockbuster/App.class new file mode 100644 index 0000000..4d46135 Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/App.class differ diff --git a/target/classes/wf/doyle/blockbuster/file/FileReader.class b/target/classes/wf/doyle/blockbuster/file/FileReader.class new file mode 100644 index 0000000..e9b051d Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/file/FileReader.class differ diff --git a/target/classes/wf/doyle/blockbuster/file/FileWriter$1.class b/target/classes/wf/doyle/blockbuster/file/FileWriter$1.class new file mode 100644 index 0000000..da88445 Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/file/FileWriter$1.class differ diff --git a/target/classes/wf/doyle/blockbuster/file/FileWriter.class b/target/classes/wf/doyle/blockbuster/file/FileWriter.class new file mode 100644 index 0000000..ae19846 Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/file/FileWriter.class differ diff --git a/target/classes/wf/doyle/blockbuster/gui/GUI$1.class b/target/classes/wf/doyle/blockbuster/gui/GUI$1.class new file mode 100644 index 0000000..25a33c0 Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/gui/GUI$1.class differ diff --git a/target/classes/wf/doyle/blockbuster/gui/GUI.class b/target/classes/wf/doyle/blockbuster/gui/GUI.class new file mode 100644 index 0000000..80e9422 Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/gui/GUI.class differ diff --git a/target/classes/wf/doyle/blockbuster/item/AudioVisualItem.class b/target/classes/wf/doyle/blockbuster/item/AudioVisualItem.class new file mode 100644 index 0000000..4bb422b Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/item/AudioVisualItem.class differ diff --git a/target/classes/wf/doyle/blockbuster/item/LibraryItem.class b/target/classes/wf/doyle/blockbuster/item/LibraryItem.class new file mode 100644 index 0000000..72c11ed Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/item/LibraryItem.class differ diff --git a/target/classes/wf/doyle/blockbuster/item/PrintedItem.class b/target/classes/wf/doyle/blockbuster/item/PrintedItem.class new file mode 100644 index 0000000..31b9cc5 Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/item/PrintedItem.class differ diff --git a/target/classes/wf/doyle/blockbuster/item/items/audiovisual/CD.class b/target/classes/wf/doyle/blockbuster/item/items/audiovisual/CD.class new file mode 100644 index 0000000..7c29b4d Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/item/items/audiovisual/CD.class differ diff --git a/target/classes/wf/doyle/blockbuster/item/items/audiovisual/DVD.class b/target/classes/wf/doyle/blockbuster/item/items/audiovisual/DVD.class new file mode 100644 index 0000000..bc127e3 Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/item/items/audiovisual/DVD.class differ diff --git a/target/classes/wf/doyle/blockbuster/item/items/printed/Book.class b/target/classes/wf/doyle/blockbuster/item/items/printed/Book.class new file mode 100644 index 0000000..54e3675 Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/item/items/printed/Book.class differ diff --git a/target/classes/wf/doyle/blockbuster/item/items/printed/Periodical.class b/target/classes/wf/doyle/blockbuster/item/items/printed/Periodical.class new file mode 100644 index 0000000..4856c3e Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/item/items/printed/Periodical.class differ diff --git a/target/classes/wf/doyle/blockbuster/util/EnumLineType.class b/target/classes/wf/doyle/blockbuster/util/EnumLineType.class new file mode 100644 index 0000000..50fa4ae Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/util/EnumLineType.class differ diff --git a/target/classes/wf/doyle/blockbuster/util/Library$1.class b/target/classes/wf/doyle/blockbuster/util/Library$1.class new file mode 100644 index 0000000..0d5875b Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/util/Library$1.class differ diff --git a/target/classes/wf/doyle/blockbuster/util/Library.class b/target/classes/wf/doyle/blockbuster/util/Library.class new file mode 100644 index 0000000..bc3ca9d Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/util/Library.class differ diff --git a/target/classes/wf/doyle/blockbuster/util/User.class b/target/classes/wf/doyle/blockbuster/util/User.class new file mode 100644 index 0000000..6869af3 Binary files /dev/null and b/target/classes/wf/doyle/blockbuster/util/User.class differ diff --git a/target/test-classes/wf/doyle/blockbuster/AppTest.class b/target/test-classes/wf/doyle/blockbuster/AppTest.class new file mode 100644 index 0000000..87f8bba Binary files /dev/null and b/target/test-classes/wf/doyle/blockbuster/AppTest.class differ -- libgit2 1.7.2