diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 412eeda7..00000000
--- a/.gitattributes
+++ /dev/null
@@ -1,22 +0,0 @@
-# Auto detect text files and perform LF normalization
-* text=auto
-
-# Custom for Visual Studio
-*.cs diff=csharp
-*.sln merge=union
-*.csproj merge=union
-*.vbproj merge=union
-*.fsproj merge=union
-*.dbproj merge=union
-
-# Standard to msysgit
-*.doc diff=astextplain
-*.DOC diff=astextplain
-*.docx diff=astextplain
-*.DOCX diff=astextplain
-*.dot diff=astextplain
-*.DOT diff=astextplain
-*.pdf diff=astextplain
-*.PDF diff=astextplain
-*.rtf diff=astextplain
-*.RTF diff=astextplain
diff --git a/.gitignore b/.gitignore
index 886968a1..53879e92 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,62 +1,84 @@
-#################
-## Eclipse
-#################
-
-*.pydevproject
-.project
-.metadata
-bin/
-tmp/
-*.tmp
-*.bak
-*.swp
-*~.nib
-local.properties
-.classpath
-.settings/
-.loadpath
-*.class
-
-# External tool builders
-.externalToolBuilders/
-
-# Locally stored "Eclipse launch configurations"
-*.launch
-
-# CDT-specific
-.cproject
-
-# PDT-specific
-.buildpath
-
-#################
-## IDEA
-#################
-.idea/
-*.iml
-
-#################
-## Visual Studio
-#################
-
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# User-specific files
+*.rsuser
*.suo
*.user
+*.userosscache
*.sln.docstates
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
# Build results
[Dd]ebug/
+[Dd]ebugPublic/
[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Ww][Ii][Nn]32/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+[Ll]ogs/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# ASP.NET Scaffolding
+ScaffoldingReadMe.txt
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
*_i.c
*_p.c
+*_h.h
*.ilk
*.meta
*.obj
+*.iobj
*.pch
*.pdb
+*.ipdb
*.pgc
*.pgd
*.rsp
@@ -65,29 +87,84 @@ local.properties
*.tli
*.tlh
*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.tlog
*.vspscc
+*.vssscc
.builds
-*.dotCover
+*.pidb
+*.svclog
+*.scc
-## TODO: If you have NuGet Package Restore enabled, uncomment this
-#packages/
+# Chutzpah Test files
+_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
+*.opendb
*.opensdf
*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
# ReSharper is a .NET coding add-in
-_ReSharper*
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
# Installshield output folder
-[Ee]xpress
+[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
@@ -100,81 +177,226 @@ DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
-publish
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
# Others
-[Bb]in
-[Oo]bj
-sql
-TestResults
-*.Cache
-ClientBin
-stylecop.*
+ClientBin/
~$*
+*~
*.dbmdl
-Generated_Code #added for RIA/Silverlight projects
-
-# Backup & report files from converting an old project file to a newer
-# Visual Studio version. Backup files are not needed, because we have git ;-)
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio 6 auto-generated project file (contains which files were open etc.)
+*.vbp
+
+# Visual Studio 6 workspace and project file (working project files containing files to include in project)
+*.dsw
+*.dsp
+
+# Visual Studio 6 technical files
+*.ncb
+*.aps
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+# OpenCover UI analysis results
+OpenCover/
+# Azure Stream Analytics local run output
+ASALocalRun/
-############
-## Windows
-############
+# MSBuild Binary and Structured Log
+*.binlog
-# Windows image file caches
-Thumbs.db
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
-# Folder config file
-Desktop.ini
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
-#############
-## Mac OS
-#############
-.DS_Store
+# Local History for Visual Studio
+.localhistory/
-#############
-## Python
-#############
+# Visual Studio History (VSHistory) files
+.vshistory/
-*.py[co]
+# BeatPulse healthcheck temp database
+healthchecksdb
-# Packages
-*.egg
-*.egg-info
-dist
-build
-eggs
-parts
-bin
-var
-sdist
-develop-eggs
-.installed.cfg
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
-# Installer logs
-pip-log.txt
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/
-# Unit test / coverage reports
-.coverage
-.tox
+# Fody - auto-generated XML schema
+FodyWeavers.xsd
-#Translations
-*.mo
+# VS Code files for those working on multiple tools
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+*.code-workspace
-#Mr Developer
-.mr.developer.cfg
+# Local History for Visual Studio Code
+.history/
-# Mac crap
-.DS_Store
+# Windows Installer files from build outputs
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
-#############
-## Java
-#############
+# JetBrains Rider
+*.sln.iml
-.class
-target/
+# Project-specific: test.txt for testing file output, cache.txt for the test cache
+test.txt
+cache.txt
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 4d9a5743..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-language: java
-before_install: sudo pip install codecov
-after_success: codecov
-
-jdk:
- - oraclejdk7
- - openjdk7
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index c2ebaabc..00000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Contributor Code of Conduct
-
-As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
-
-We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.
-
-Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.
-
-This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
-
-This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.1.0, available at [http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/)
diff --git a/FizzBuzz Enterprise Edition.sln b/FizzBuzz Enterprise Edition.sln
new file mode 100644
index 00000000..de5e8eae
--- /dev/null
+++ b/FizzBuzz Enterprise Edition.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.10.35004.147
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FizzBuzz Enterprise Edition", "FizzBuzz Enterprise Edition.vcxproj", "{3807D944-851B-483A-9FBC-4E316ECA3B84}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {3807D944-851B-483A-9FBC-4E316ECA3B84}.Debug|x64.ActiveCfg = Debug|x64
+ {3807D944-851B-483A-9FBC-4E316ECA3B84}.Debug|x64.Build.0 = Debug|x64
+ {3807D944-851B-483A-9FBC-4E316ECA3B84}.Debug|x86.ActiveCfg = Debug|Win32
+ {3807D944-851B-483A-9FBC-4E316ECA3B84}.Debug|x86.Build.0 = Debug|Win32
+ {3807D944-851B-483A-9FBC-4E316ECA3B84}.Release|x64.ActiveCfg = Release|x64
+ {3807D944-851B-483A-9FBC-4E316ECA3B84}.Release|x64.Build.0 = Release|x64
+ {3807D944-851B-483A-9FBC-4E316ECA3B84}.Release|x86.ActiveCfg = Release|Win32
+ {3807D944-851B-483A-9FBC-4E316ECA3B84}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {E528AB86-3997-4CB3-96E1-074B60C7B7C6}
+ EndGlobalSection
+EndGlobal
diff --git a/FizzBuzz Enterprise Edition.vcxproj b/FizzBuzz Enterprise Edition.vcxproj
new file mode 100644
index 00000000..3a8252d7
--- /dev/null
+++ b/FizzBuzz Enterprise Edition.vcxproj
@@ -0,0 +1,157 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 17.0
+ Win32Proj
+ {3807d944-851b-483a-9fbc-4e316eca3b84}
+ FizzBuzzEnterpriseEdition
+ 10.0
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ stdcpp20
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ stdcpp20
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ stdcpp20
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ stdcpp20
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FizzBuzz Enterprise Edition.vcxproj.filters b/FizzBuzz Enterprise Edition.vcxproj.filters
new file mode 100644
index 00000000..df005c22
--- /dev/null
+++ b/FizzBuzz Enterprise Edition.vcxproj.filters
@@ -0,0 +1,72 @@
+
+
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {B732F1CF-BC88-4644-AEB4-5F85C7319B37}
+ md;markdown
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ Source files
+
+
+ Source files
+
+
+ Source files
+
+
+ Source files
+
+
+ Source files
+
+
+ Source files
+
+
+ Source files
+
+
+
+
+ Header files
+
+
+ Header files
+
+
+ Header files
+
+
+ Header files
+
+
+ Header files
+
+
+ Header files
+
+
+ Header files
+
+
+
+
+ Markdown files
+
+
+
\ No newline at end of file
diff --git a/FizzBuzz Enterprise Edition.vcxproj.user b/FizzBuzz Enterprise Edition.vcxproj.user
new file mode 100644
index 00000000..952ab4c7
--- /dev/null
+++ b/FizzBuzz Enterprise Edition.vcxproj.user
@@ -0,0 +1,19 @@
+
+
+
+ --input_source testinput --output test.txt --enable_cache cache.txt
+ WindowsLocalDebugger
+
+
+ --input_source testinput --output test.txt --enable_cache cache.txt
+ WindowsLocalDebugger
+
+
+ --input_source testinput --output test.txt --enable_cache cache.txt
+ WindowsLocalDebugger
+
+
+ --input_source testinput --output test.txt --enable_cache cache.txt
+ WindowsLocalDebugger
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index d27f9fef..82ab45e4 100644
--- a/README.md
+++ b/README.md
@@ -1,34 +1,24 @@
-# FizzBuzzEnterpriseEdition
+# FizzBuzz Enterprise Edition
+Welcome to FizzBuzz Enterprise Edition by Quality Enterprise Coding Co LTD. - the company which had the award for being the best totally real company.
-[![Build status][Build status image]][Build status URL] [![codecov.io](https://codecov.io/github/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/coverage.svg?branch=master)](https://codecov.io/github/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition?branch=master)
+Our top priority is performance, code architecture and ease of use. This is why we wrote our product in C++, and never used Java (don't look at the Git commit history, no, don't do it!).
-[Build status image]: https://secure.travis-ci.org/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition.png?branch=master
-[Build status URL]: http://travis-ci.org/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
+## System Requirements
+At least Microsoft(R) Windows(R) Server(R) 2022 or Microsoft(R) Windows (R) 11 24H2. 2 TiB of RAM and 2 PiB of disk space required.
-Enterprise software marks a special high-grade class of software that makes
-careful use of relevant software architecture design principles to build
-particularly customizable and extensible solutions to real problems. This
-project is an example of how the popular FizzBuzz game might be built were it
-subject to the high quality standards of enterprise software.
+You will need an AMD Ryzen Threadripper PRO 7995WX. For optimal usage of the program, installing 16 of (AMD Ryzen Threadripper PRO 7995WX) is recommended.
-## FizzBuzz
-
-FizzBuzz is a game that has gained in popularity as a programming assignment to
-weed out non-programmers during job interviews. The object of the assignment is
-less about solving it correctly according to the below rules and more about
-showing the programmer understands basic, necessary tools such as
-`if`-/`else`-statements and loops. The rules of FizzBuzz are as follows:
-
-For numbers 1 through 100,
-
-* if the number is divisible by 3 print Fizz;
-* if the number is divisible by 5 print Buzz;
-* if the number is divisible by 3 and 5 (15) print FizzBuzz;
-* else, print the number.
+## Usage
+Run the executable without any arguments to see the help menu. (figure it out yourself, it's very easy).
## Contributing
+You can contribute to this totally not satire and fake company by opening a pull request. It's that simple!
-Although this project is intended as satire, we take openness and inclusivity
-very seriously. To that end we have adopted the following code of conduct.
-
-[Contributor Code of Conduct](CONTRIBUTING.md)
+## FizzBuzz
+For each number:
+```
+ If it's divisible by 15, output "FizzBuzz"
+ If it's divisible by 3, output "Fizz"
+ If it's divisible by 5, output "Buzz"
+ Otherwise, output the number.
+```
diff --git a/argparser.cpp b/argparser.cpp
new file mode 100644
index 00000000..f4fd8e48
--- /dev/null
+++ b/argparser.cpp
@@ -0,0 +1,135 @@
+#include
+#include
+#include "cpp_tstring.hpp"
+#include
+#include
+#include "argparser.hpp"
+
+static constexpr TCHAR helpMessage[] = TEXT("Usage: [program] [--output file] [--enable_cache cache_file] [--source source]\n\
+\t--no-splash - Don't show the FizzBuzz Enterprise Edition splash message.\n\
+\t--help - Display this help message, even if the input source is configured properly.\n\
+\t--output [file] - Specify the file to write the result to. If this argument is omitted, the result is written into the standard output\n\
+\t--enable_cache [cache_file] - Enable persistent caching.\n\
+\t--input_source [source] - Specify where to read the numbers from. If you don't specify this argument, the help message will be displayed instead. [source] can be one of:\n\
+\t\tstdinput - The program's standard input. It's recommended to disable the splash if you use this option when calling FizzBuzz Enterprise Edition from an another program.\n\
+\t\tfile filename.txt - A file. If you set the source to file, you need to specify the filename right after the source argument.\n\
+\t\ttestinput - A fake input source. It inputs all numbers from 1 to 100 (both sides included).\n");
+
+// See the help message above for more info about these flags.
+static constexpr TCHAR HELP_FLAG[] = TEXT("--help");
+static constexpr TCHAR OUTPUT_FILENAME_FLAG[] = TEXT("--output");
+static constexpr TCHAR ENABLE_CACHE_FLAG[] = TEXT("--enable_cache");
+static constexpr TCHAR INPUT_SOURCE_FLAG[] = TEXT("--input_source");
+static constexpr TCHAR INPUT_SOURCE_STDINPUT[] = TEXT("stdinput");
+static constexpr TCHAR INPUT_SOURCE_FILE[] = TEXT("file");
+static constexpr TCHAR INPUT_SOURCE_TESTINPUT[] = TEXT("testinput");
+static constexpr TCHAR NO_SPLASH_FLAG[] = TEXT("--no-splash");
+
+void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) {
+ std::vector argvVector(argv, argv + argc);
+ auto it = argvVector.begin();
+ while (it < argvVector.end()) {
+ if (lstrcmp(*it, HELP_FLAG) == 0) {
+ showHelp = true;
+ explicitHelp = true;
+ }
+ else if (lstrcmp(*it, OUTPUT_FILENAME_FLAG) == 0) {
+ std::advance(it, 1);
+ if (it >= argvVector.end()) {
+ showHelp = true;
+ break;
+ }
+ this->outputFilename = *it;
+ if (this->outputFilename == TEXT("")) {
+ showHelp = true;
+ break;
+ }
+ }
+ else if (lstrcmp(*it, ENABLE_CACHE_FLAG) == 0) {
+ std::advance(it, 1);
+ if (it >= argvVector.end()) {
+ showHelp = true;
+ break;
+ }
+ this->cacheFile = *it;
+ if (this->cacheFile == TEXT("")) {
+ showHelp = true;
+ break;
+ }
+ }
+ else if (lstrcmp(*it, INPUT_SOURCE_FLAG) == 0) {
+ inputSourceSpecified = true;
+ std::advance(it, 1);
+ if (it >= argvVector.end()) {
+ showHelp = true;
+ break;
+ }
+ if (lstrcmp(*it, INPUT_SOURCE_STDINPUT) == 0) {
+ this->inputFile = TEXT("");
+ }
+ else if (lstrcmp(*it, INPUT_SOURCE_FILE) == 0) {
+ std::advance(it, 1);
+ if (it >= argvVector.end()) {
+ showHelp = true;
+ break;
+ }
+ this->inputFile = *it;
+ if (this->inputFile == TEXT("")) {
+ showHelp = true;
+ break;
+ }
+ }
+ else if (lstrcmp(*it, INPUT_SOURCE_TESTINPUT) == 0) {
+ this->useTestInput = true;
+ }
+ else {
+ showHelp = true;
+ break;
+ }
+ }
+ else if (lstrcmp(*it, NO_SPLASH_FLAG) == 0) {
+ this->noSplash = true;
+ }
+ std::advance(it, 1);
+ }
+ if (!inputSourceSpecified) showHelp = true;
+}
+bool ArgumentParser::shouldShowHelp() {
+ return this->showHelp;
+}
+bool ArgumentParser::isExplicitHelp() {
+ return this->explicitHelp;
+}
+tstring ArgumentParser::getOutputFilename() {
+ return this->outputFilename;
+}
+tstring ArgumentParser::getCacheFile() {
+ return this->cacheFile;
+}
+tstring ArgumentParser::getInputFile() {
+ return this->inputFile;
+}
+bool ArgumentParser::isInputSourceSpecified() {
+ return this->inputSourceSpecified;
+}
+bool ArgumentParser::shouldShowSplash() {
+ return !this->noSplash;
+}
+bool ArgumentParser::shouldUseTestInput() {
+ return this->useTestInput;
+}
+
+bool ArgumentParser::getBooleanFlag(tstring flag) {
+ if (flag == TEXT("showHelp")) return this->shouldShowHelp();
+ if (flag == TEXT("inputSourceSpecified")) return this->isInputSourceSpecified();
+ if (flag == TEXT("noSplash")) return !this->shouldShowSplash();
+ if (flag == TEXT("useTestInput")) return this->shouldUseTestInput();
+ abort();
+}
+
+tstring ArgumentParser::getStringArgument(tstring argument) {
+ if (argument == TEXT("outputFilename")) return this->getOutputFilename();
+ if (argument == TEXT("cacheFile")) return this->getCacheFile();
+ if (argument == TEXT("inputFile")) return this->getInputFile();
+ abort();
+}
diff --git a/argparser.hpp b/argparser.hpp
new file mode 100644
index 00000000..326728b3
--- /dev/null
+++ b/argparser.hpp
@@ -0,0 +1,47 @@
+#include
+#include
+#include "cpp_tstring.hpp"
+
+extern TCHAR helpMessage[];
+
+interface IArgumentParserGetters {
+ virtual bool shouldShowHelp() = 0;
+ virtual bool isExplicitHelp() = 0;
+ virtual tstring getOutputFilename() = 0;
+ virtual tstring getCacheFile() = 0;
+ virtual tstring getInputFile() = 0;
+ virtual bool isInputSourceSpecified() = 0;
+ virtual bool shouldShowSplash() = 0;
+ virtual bool shouldUseTestInput() = 0;
+};
+
+interface IArgumentParserBigGetter {
+ virtual bool getBooleanFlag(tstring flag) = 0;
+ virtual tstring getStringArgument(tstring argument) = 0;
+};
+
+class ArgumentParser: public IArgumentParserGetters, public IArgumentParserBigGetter {
+ bool showHelp = false;
+ bool explicitHelp = false;
+ tstring outputFilename = TEXT("");
+ tstring cacheFile = TEXT("");
+ tstring inputFile = TEXT("");
+ bool inputSourceSpecified = false;
+ bool noSplash = false;
+ bool useTestInput = false;
+
+public:
+ void parse(const unsigned int argc, const TCHAR* const argv[]);
+
+ virtual bool shouldShowHelp();
+ virtual bool isExplicitHelp();
+ virtual tstring getOutputFilename();
+ virtual tstring getCacheFile();
+ virtual tstring getInputFile();
+ virtual bool isInputSourceSpecified();
+ virtual bool shouldShowSplash();
+ virtual bool shouldUseTestInput();
+
+ virtual bool getBooleanFlag(tstring flag);
+ virtual tstring getStringArgument(tstring argument);
+};
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 39deaf16..00000000
--- a/build.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-apply plugin: 'java'
-apply plugin: 'application'
-
-repositories {
- jcenter()
-}
-
-sourceSets {
- main {
- java {
- srcDir 'src/main/java'
- }
- resources {
- srcDir 'resources/assets/configuration/spring/dependencyinjection/configuration/'
- }
- }
-}
-
-dependencies {
- compile 'org.springframework:spring-aop:3.2.13.RELEASE',
- 'org.springframework:spring-beans:3.2.13.RELEASE',
- 'org.springframework:spring-context:3.2.13.RELEASE',
- 'org.springframework:spring-core:3.2.13.RELEASE',
- 'org.springframework:spring-expression:3.2.13.RELEASE'
-
- testCompile 'junit:junit:4.8.2'
-}
-
-mainClassName = 'com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Main'
\ No newline at end of file
diff --git a/console.cpp b/console.cpp
new file mode 100644
index 00000000..912c93d5
--- /dev/null
+++ b/console.cpp
@@ -0,0 +1,55 @@
+#include
+#include
+#include "console.hpp"
+#include "cpp_tstring.hpp"
+#include
+#include
+
+_console::_console() {
+ this->output = GetStdHandle(STD_OUTPUT_HANDLE);
+ this->input = GetStdHandle(STD_INPUT_HANDLE);
+ this->error = GetStdHandle(STD_ERROR_HANDLE);
+}
+
+void _console::writeOutput(const TCHAR str[]) {
+ WriteConsole(this->output, str, lstrlen(str), NULL, NULL);
+}
+void _console::writeOutput(const tstring&& str) {
+ writeOutput(str.c_str());
+}
+void _console::writeOutput(const tstring str) {
+ writeOutput(str.c_str());
+}
+
+void _console::writeError(const TCHAR str[]) {
+ WriteConsole(this->error, str, lstrlen(str), NULL, NULL);
+}
+void _console::writeError(const tstring&& str) {
+ writeError(str.c_str());
+}
+void _console::writeError(const tstring str) {
+ writeError(str.c_str());
+}
+
+DWORD _console::readFixedSizeInput(TCHAR* str, const DWORD size, const PCONSOLE_READCONSOLE_CONTROL const pReadConsoleControl) {
+ std::ranges::for_each(std::views::iota(static_cast(0), size), [&](std::size_t i) {
+ str[i] = 0;
+ });
+ DWORD length;
+ if (!ReadConsole(this->input, str, size, &length, pReadConsoleControl)) abort();
+ return length;
+}
+
+tstring _console::readInput() {
+ tstring input;
+ TCHAR currChar = TEXT('\0');
+ DWORD temp = 0;
+ while (currChar != TEXT('\n')) {
+ if (!ReadConsole(this->input, &currChar, 1, &temp, NULL)) abort();
+ input.push_back(currChar);
+ }
+ input.pop_back();
+ return input;
+}
+
+_console console = {};
\ No newline at end of file
diff --git a/console.hpp b/console.hpp
new file mode 100644
index 00000000..37d14535
--- /dev/null
+++ b/console.hpp
@@ -0,0 +1,27 @@
+#pragma once
+
+#include
+#include
+#include "cpp_tstring.hpp"
+
+struct _console {
+ HANDLE output;
+ HANDLE input;
+ HANDLE error;
+
+ _console();
+
+ void writeOutput(const TCHAR str[]);
+ void writeOutput(const tstring&& str);
+ void writeOutput(const tstring str);
+
+ void writeError(const TCHAR str[]);
+ void writeError(const tstring&& str);
+ void writeError(const tstring str);
+
+ DWORD readFixedSizeInput(TCHAR* str, const DWORD size, const PCONSOLE_READCONSOLE_CONTROL const pReadConsoleControl = NULL);
+
+ tstring readInput();
+};
+
+extern _console console;
\ No newline at end of file
diff --git a/cpp_tstring.hpp b/cpp_tstring.hpp
new file mode 100644
index 00000000..1e2b3f87
--- /dev/null
+++ b/cpp_tstring.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+
+typedef std::basic_string, std::allocator> tstring;
+typedef std::basic_stringstream, std::allocator> tstringstream;
+typedef std::basic_istringstream, std::allocator> tistringstream;
+typedef std::basic_ostringstream, std::allocator> tostringstream;
+typedef std::basic_istream> tistream;
+typedef std::basic_ostream> tostream;
\ No newline at end of file
diff --git a/fizz_buzz.cpp b/fizz_buzz.cpp
new file mode 100644
index 00000000..f72f1a1b
--- /dev/null
+++ b/fizz_buzz.cpp
@@ -0,0 +1,40 @@
+#include "fizz_buzz.hpp"
+
+FizzBuzzResult _FizzBuzzer::fizzBuzz(const unsigned long long int number) {
+ FizzBuzzResult cacheLookupResult = this->cache[number]; // Performance of an std::unordered_map lookup: O(1)
+ if (cacheLookupResult != FizzBuzzResult::UNKNOWN) return cacheLookupResult;
+ // Performance of an actual calculation:
+ FizzBuzzResult calculatedResult = FizzBuzzResult::NONE;
+ if (number % 15 == 0) { // O(1)
+ calculatedResult = FizzBuzzResult::FIZZBUZZ;
+ }
+ else if (number % 5 == 0) { // O(1)
+ calculatedResult = FizzBuzzResult::BUZZ;
+ }
+ else if (number % 3 == 0) { // O(1)
+ calculatedResult = FizzBuzzResult::FIZZ;
+ }
+ this->cache[number] = calculatedResult;
+ return calculatedResult;
+}
+
+FizzBuzzResult operator|(FizzBuzzResult lhs, FizzBuzzResult rhs) {
+ return static_cast(
+ static_cast::type>(lhs) |
+ static_cast::type>(rhs)
+ );
+}
+
+FizzBuzzResult operator&(FizzBuzzResult lhs, FizzBuzzResult rhs) {
+ return static_cast(
+ static_cast::type>(lhs) &
+ static_cast::type>(rhs)
+ );
+}
+
+tostringstream& operator<<(tostringstream& ostream, FizzBuzzResult const& fizzBuzzResult) {
+ if ((fizzBuzzResult & FizzBuzzResult::FIZZ) != FizzBuzzResult::UNKNOWN) ostream << TEXT("Fizz");
+ if ((fizzBuzzResult & FizzBuzzResult::BUZZ) != FizzBuzzResult::UNKNOWN) ostream << TEXT("Buzz");
+ // if ((fizzBuzzResult & FizzBuzzResult::FIZZ) != FizzBuzzResult::UNKNOWN) ostream << ostream.str().substr(0, ostream.str().find_first_of(TEXT(':')));
+ return ostream;
+}
\ No newline at end of file
diff --git a/fizz_buzz.hpp b/fizz_buzz.hpp
new file mode 100644
index 00000000..54fb9a5e
--- /dev/null
+++ b/fizz_buzz.hpp
@@ -0,0 +1,22 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+#include "cpp_tstring.hpp"
+
+enum class FizzBuzzResult : uint8_t {
+ UNKNOWN = 0, NONE = 1 << 0, FIZZ = 1 << 1, BUZZ = 1 << 2, FIZZBUZZ = FIZZ | BUZZ
+};
+
+struct _FizzBuzzer {
+ std::unordered_map cache;
+ FizzBuzzResult fizzBuzz(const unsigned long long int number);
+};
+
+inline _FizzBuzzer fizzbuzzer;
+
+FizzBuzzResult operator|(FizzBuzzResult lhs, FizzBuzzResult rhs);
+FizzBuzzResult operator&(FizzBuzzResult lhs, FizzBuzzResult rhs);
+tostringstream& operator<<(tostringstream& ostream, FizzBuzzResult const& fizzBuzzResult);
\ No newline at end of file
diff --git a/fizz_buzz_persistent_cache.cpp b/fizz_buzz_persistent_cache.cpp
new file mode 100644
index 00000000..8d086458
--- /dev/null
+++ b/fizz_buzz_persistent_cache.cpp
@@ -0,0 +1,81 @@
+#include "fizz_buzz_persistent_cache.hpp"
+#include
+#include
+#include "fizz_buzz.hpp"
+#include "cpp_tstring.hpp"
+#include "console.hpp"
+#include
+#include
+#include
+
+FizzBuzzCacheLoader::FizzBuzzCacheLoader(tstring file) {
+ this->hFile = CreateFile(file.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (GetLastError() != NO_ERROR && GetLastError() != ERROR_ALREADY_EXISTS) {
+ DWORD error = GetLastError();
+ TCHAR* arr;
+ if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, LANG_USER_DEFAULT, reinterpret_cast(&arr), 1, NULL)) abort();
+ console.writeError(TEXT("Failed to open the persistent cache file for reading and writing: "));
+ console.writeError(arr);
+ console.writeError(TEXT("\n"));
+ abort();
+ }
+}
+
+void FizzBuzzCacheLoader::loadCache(std::unordered_map& cache) {
+ cache.clear();
+ unsigned long long int size;
+ GetFileSizeEx(this->hFile, (PLARGE_INTEGER)&size);
+ if (size > ((size_t)-1)) abort(); // (not possible under normal circumstances)
+ char* fileData = new char[size + 1];
+ ZeroMemory(fileData, sizeof(char) * (size + 1));
+ DWORD realSize = 0;
+ if (!ReadFile(this->hFile, fileData, size, &realSize, NULL)) abort();
+ if (realSize != size) abort();
+ std::string str(fileData);
+ std::istringstream stream(str);
+ std::string line;
+ while (std::getline(stream, line, '\n')) {
+ if (line[line.size() - 1] == '\r') line.pop_back();
+ if (line.size() == 0) continue;
+ std::string number, result;
+ number = line.substr(0, line.find_first_of(':'));
+ result = line.substr(line.find_first_of(':') + 1);
+ unsigned long long int actualNumber = strtoull(number.c_str(), nullptr, 10);
+ FizzBuzzResult actualResult = static_cast(strtoull(result.c_str(), nullptr, 10));
+ cache[actualNumber] = actualResult;
+ }
+}
+
+void FizzBuzzCacheLoader::dumpCache(std::unordered_map& cache) {
+ SetFilePointer(this->hFile, NULL, NULL, FILE_BEGIN);
+ SetEndOfFile(this->hFile);
+ std::for_each(cache.begin(), cache.end(), [&](const std::unordered_map::value_type& data) {
+ std::string line;
+ std::string temp;
+
+ unsigned long long int n = data.first;
+ while (n != 0) {
+ line.push_back((n % 10) + '0');
+ n /= 10;
+ }
+ std::reverse(line.begin(), line.end());
+ line.push_back(':');
+
+ uint8_t value = static_cast(data.second);
+ while (value != 0) {
+ temp.push_back((value % 10) + '0');
+ value /= 10;
+ }
+ std::reverse(temp.begin(), temp.end());
+ line.append(temp);
+ line.push_back('\n');
+ DWORD realDataWritten = 0;
+ WriteFile(this->hFile, line.c_str(), line.size(), &realDataWritten, NULL);
+ if (realDataWritten != line.size()) abort();
+ SetFilePointer(this->hFile, NULL, NULL, FILE_END);
+ });
+}
+
+FizzBuzzCacheLoader::~FizzBuzzCacheLoader() {
+ CloseHandle(this->hFile);
+}
\ No newline at end of file
diff --git a/fizz_buzz_persistent_cache.hpp b/fizz_buzz_persistent_cache.hpp
new file mode 100644
index 00000000..e69599d4
--- /dev/null
+++ b/fizz_buzz_persistent_cache.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+#include
+#include
+#include "fizz_buzz.hpp"
+#include "cpp_tstring.hpp"
+#include "console.hpp"
+#include
+#include
+
+struct FizzBuzzCacheLoader {
+ HANDLE hFile;
+
+ FizzBuzzCacheLoader(tstring file);
+
+ void loadCache(std::unordered_map& cache);
+
+ void dumpCache(std::unordered_map& cache);
+
+ ~FizzBuzzCacheLoader();
+};
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 05ef575b..00000000
Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 646353a8..00000000
--- a/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri Oct 30 12:59:42 CET 2015
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-bin.zip
diff --git a/gradlew b/gradlew
deleted file mode 100755
index 9d82f789..00000000
--- a/gradlew
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
- echo "$*"
-}
-
-die ( ) {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
deleted file mode 100644
index 8a0b282a..00000000
--- a/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/input_reader.cpp b/input_reader.cpp
new file mode 100644
index 00000000..d599d26a
--- /dev/null
+++ b/input_reader.cpp
@@ -0,0 +1,116 @@
+#pragma once
+
+#include
+#include
+#include
+#include "cpp_tstring.hpp"
+#include "console.hpp"
+#include "input_reader.hpp"
+
+std::vector BaseInputReader::readRemainingInput() {
+ std::vector results;
+ while (!this->inputExhausted) results.push_back(read());
+ return results;
+}
+
+FileInputReader::FileInputReader(tstring file) {
+ this->hFile = CreateFile(file.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (GetLastError() != NO_ERROR) {
+ DWORD error = GetLastError();
+ TCHAR* arr;
+ if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, LANG_USER_DEFAULT, reinterpret_cast(&arr), 1, NULL)) abort();
+ console.writeError(TEXT("Failed to open the input file for reading: "));
+ console.writeError(arr);
+ console.writeError(TEXT("\n"));
+ abort();
+ }
+ unsigned long long int fileSize;
+ if (!GetFileSizeEx(this->hFile, (PLARGE_INTEGER) & fileSize)) {
+ DWORD error = GetLastError();
+ TCHAR* arr;
+ if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, LANG_USER_DEFAULT, reinterpret_cast(&arr), 1, NULL)) abort();
+ console.writeError(TEXT("Failed to get the input file size: "));
+ console.writeError(arr);
+ console.writeError(TEXT("\n"));
+ abort();
+ }
+ if (fileSize == 0) inputExhausted = true;
+}
+
+unsigned long long int __input_reader_util_parse_ulonglong(BaseInputReader* _this, bool(*readChar)(TCHAR*, PDWORD)) {
+ TCHAR currChar = '\0';
+ DWORD temp = 0;
+ unsigned long long int result = 0;
+ if (!readChar(&currChar, &temp)) {
+ if (GetLastError() != ERROR_HANDLE_EOF) abort();
+ temp = 0;
+ }
+ if (temp == 0) {
+ _this->inputExhausted = true;
+ throw std::exception("There's nothing more in the input.");
+ }
+ bool isFirstChar = true;
+ bool negative = false; // We need to read the rest of the number before throwing an exception to avoid leaving parts of a number in the buffer.
+ do {
+ // This seemingly uneccessary check is needed to fix a bug.
+ if (currChar >= TEXT('0') && currChar <= TEXT('9')) {
+ result *= 10;
+ result += currChar - TEXT('0');
+ }
+ else if (isFirstChar && currChar == TEXT('-')) {
+ negative = true;
+ }
+ if (!readChar(&currChar, &temp)) {
+ if (GetLastError() != ERROR_HANDLE_EOF) abort();
+ temp = 0;
+ }
+ if (temp == 0) {
+ _this->inputExhausted = true;
+ if (isFirstChar) throw std::exception("There's nothing more in the input.");
+ break;
+ }
+ isFirstChar = false;
+ } while (currChar >= TEXT('0') && currChar <= TEXT('9'));
+ // Another bug fix - for CRLF line endings (\r\n), we need to skip the leftover newline.
+ if (currChar == TEXT('\r')) ReadConsole(console.input, &currChar, 1, &temp, NULL);
+ if (negative) throw std::exception("Negative numbers are not allowed."); // Why? Because.
+ return result;
+}
+
+HANDLE __temp_hFile;
+
+unsigned long long int FileInputReader::read() {
+ if (inputExhausted) throw std::exception("There's nothing more in the input.");
+ // I can't add a capture to the lambda, so instead I'm putting the handle in a global variable. It's not like we have more than one instance of this thing.
+ __temp_hFile = this->hFile;
+ return __input_reader_util_parse_ulonglong(this, [](PTCHAR pChar, PDWORD pTemp) -> bool {
+ return ReadFile(__temp_hFile, pChar, 1, pTemp, NULL);
+ });
+}
+
+unsigned long long int ConsoleInputReader::read() {
+ if (inputExhausted) throw std::exception("There's nothing more in the input.");
+ return __input_reader_util_parse_ulonglong(this, [](TCHAR* pChar, PDWORD _temp)->bool {
+ return ReadConsole(console.input, pChar, 1, _temp, NULL);
+ });
+}
+
+unsigned long long int TestInputReader::read() {
+ if (inputExhausted) throw std::exception("There's nothing more in the input.");
+ if (i == 100) inputExhausted = true;
+ return i++;
+}
+
+bool TestInputReader::getIsInputExhausted() {
+ return this->inputExhausted;
+}
+bool FileInputReader::getIsInputExhausted() {
+ return this->inputExhausted;
+}
+bool ConsoleInputReader::getIsInputExhausted() {
+ return this->inputExhausted;
+}
+
+FileInputReader::~FileInputReader() {
+ CloseHandle(this->hFile);
+}
diff --git a/input_reader.hpp b/input_reader.hpp
new file mode 100644
index 00000000..6368e92a
--- /dev/null
+++ b/input_reader.hpp
@@ -0,0 +1,39 @@
+#pragma once
+
+#include
+#include
+#include
+#include "cpp_tstring.hpp"
+#include "console.hpp"
+
+struct BaseInputReader {
+ bool inputExhausted = false;
+
+ virtual bool getIsInputExhausted() {
+ return this->inputExhausted;
+ }
+ virtual unsigned long long int read() = 0;
+ virtual std::vector readRemainingInput();
+ virtual ~BaseInputReader() {};
+};
+
+struct FileInputReader : BaseInputReader {
+ HANDLE hFile;
+
+ FileInputReader(tstring file);
+
+ virtual unsigned long long int read();
+ virtual bool getIsInputExhausted();
+ ~FileInputReader();
+};
+
+struct ConsoleInputReader : BaseInputReader {
+ virtual unsigned long long int read();
+ virtual bool getIsInputExhausted();
+};
+
+struct TestInputReader : BaseInputReader {
+ unsigned long long int i = 1;
+ virtual unsigned long long int read();
+ virtual bool getIsInputExhausted();
+};
\ No newline at end of file
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 00000000..6eb497e8
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,65 @@
+#include
+#include
+#include "console.hpp"
+#include "argparser.hpp"
+#include "output_writer.hpp"
+#include "input_reader.hpp"
+#include "fizz_buzz_persistent_cache.hpp"
+
+// Welcome to 2024, where open source projects have a copyright.
+TCHAR copyrightMessage[] = {
+ TEXT("FizzBuzz Enterprise Edition.\nEnterpriseQualityCoding - the most serious and not satire or fake company in the universe.\n")
+};
+
+ArgumentParser argParser;
+BaseInputReader* inputReader;
+BaseOutputWriter* outputWriter;
+FizzBuzzCacheLoader* cacheLoader;
+
+int _tmain(unsigned int argc, TCHAR* argv[]) {
+ argParser.parse(argc, argv);
+ if (argParser.shouldShowSplash()) console.writeOutput(copyrightMessage);
+ if (argParser.shouldShowHelp()) {
+ console.writeOutput(helpMessage);
+ return (argParser.isExplicitHelp()) ? 0 : -1;
+ }
+ if (argParser.shouldUseTestInput()) {
+ inputReader = new TestInputReader();
+ }
+ else if (argParser.getInputFile() == TEXT("")) {
+ inputReader = new ConsoleInputReader();
+ }
+ else {
+ inputReader = new FileInputReader(argParser.getInputFile());
+ }
+ if (argParser.getOutputFilename() != TEXT("")) {
+ outputWriter = new FileOutputWriter(argParser.getOutputFilename());
+ }
+ else {
+ outputWriter = new ConsoleOutputWriter();
+ }
+
+ if (argParser.getCacheFile() != TEXT("")) {
+ cacheLoader = new FizzBuzzCacheLoader(argParser.getCacheFile());
+ cacheLoader->loadCache(fizzbuzzer.cache);
+ }
+
+ while (!inputReader->getIsInputExhausted()) {
+ try {
+ unsigned long long int value = inputReader->read();
+ outputWriter->writeOne(value, fizzbuzzer.fizzBuzz(value));
+ }
+ catch (std::exception e) { // Just in case something goes wrong (is the input stream empty?).
+ continue;
+ }
+ }
+
+ if (argParser.getCacheFile() != TEXT("")) {
+ cacheLoader->dumpCache(fizzbuzzer.cache);
+ }
+
+ delete cacheLoader;
+ delete outputWriter;
+ delete inputReader;
+ return 0;
+}
diff --git a/output_writer.cpp b/output_writer.cpp
new file mode 100644
index 00000000..69de1382
--- /dev/null
+++ b/output_writer.cpp
@@ -0,0 +1,62 @@
+#include "output_writer.hpp"
+#include "cpp_tstring.hpp"
+#include "fizz_buzz.hpp"
+#include
+#include
+#include "console.hpp"
+#include
+#include
+#include "cpp_tstring.hpp"
+
+void BaseOutputWriter::writeOne(unsigned long long int number, FizzBuzzResult result) {
+ tostringstream str;
+ if (number == 0) str << TEXT("0");
+ else while (number != 0) {
+ str << (TCHAR)((number % 10) + TEXT('0'));
+ number /= 10;
+ }
+ tstring _result = str.str();
+ std::reverse(_result.begin(), _result.end());
+ str.clear();
+ str.str(TEXT(""));
+ str << _result << TEXT(":");
+ if ((result & FizzBuzzResult::NONE) != FizzBuzzResult::UNKNOWN) str << _result;
+ else str << result;
+ str << TEXT('\n');
+ _write(str.str());
+}
+
+void BaseOutputWriter::writeMany(std::vector> values) {
+ std::for_each(values.begin(), values.end(), [&](std::pair& pair) {
+ writeOne(pair.first, pair.second);
+ });
+}
+
+void ConsoleOutputWriter::_write(tstring str) {
+ console.writeOutput(str);
+}
+
+FileOutputWriter::FileOutputWriter(tstring file) {
+ this->hFile = CreateFile(file.c_str(), FILE_APPEND_DATA, NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (GetLastError() != NO_ERROR && GetLastError() != ERROR_ALREADY_EXISTS) {
+ DWORD error = GetLastError();
+ TCHAR* arr;
+ if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, LANG_USER_DEFAULT, reinterpret_cast(&arr), 1, NULL)) abort();
+ console.writeError(TEXT("Failed to open the output file for writing: "));
+ console.writeError(arr);
+ console.writeError(TEXT("\n"));
+ abort();
+ }
+}
+
+void FileOutputWriter::_write(tstring str) {
+ DWORD dataWritten;
+ SetFilePointer(hFile, 0, NULL, FILE_END);
+ const TCHAR* c_str = str.c_str();
+ WriteFile(this->hFile, c_str, str.length() * sizeof(TCHAR), &dataWritten, NULL);
+ if (dataWritten != str.length() * sizeof(TCHAR)) abort();
+}
+
+FileOutputWriter::~FileOutputWriter() {
+ CloseHandle(this->hFile);
+}
\ No newline at end of file
diff --git a/output_writer.hpp b/output_writer.hpp
new file mode 100644
index 00000000..9936d732
--- /dev/null
+++ b/output_writer.hpp
@@ -0,0 +1,24 @@
+#pragma once
+#include "cpp_tstring.hpp"
+#include "fizz_buzz.hpp"
+#include
+
+struct BaseOutputWriter {
+ virtual ~BaseOutputWriter() {};
+ virtual void _write(tstring str) = 0;
+ void writeOne(unsigned long long int number, FizzBuzzResult result);
+ void writeMany(std::vector> values);
+};
+
+struct ConsoleOutputWriter : BaseOutputWriter {
+ virtual void _write(tstring str);
+};
+
+struct FileOutputWriter : BaseOutputWriter {
+ HANDLE hFile;
+
+ FileOutputWriter(tstring file);
+
+ virtual void _write(tstring str);
+ ~FileOutputWriter();
+};
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 05dab880..00000000
--- a/pom.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-
- 4.0.0
-
- com.seriouscompany.business.java.fizzbuzz
- FizzBuzzEnterpriseEdition
- 1.0-SNAPSHOT
- jar
-
- FizzBuzz Enterprise Edition
- https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
-
-
- UTF-8
-
-
-
-
- junit
- junit
- 4.8.2
- test
-
-
- org.springframework
- spring-aop
- 3.2.13.RELEASE
-
-
- org.springframework
- spring-beans
- 3.2.13.RELEASE
-
-
- org.springframework
- spring-context
- 3.2.13.RELEASE
-
-
- org.springframework
- spring-core
- 3.2.13.RELEASE
-
-
- org.springframework
- spring-expression
- 3.2.13.RELEASE
-
-
-
-
-
-
- resources/assets/configuration/spring/dependencyinjection/configuration
- true
-
-
-
-
- maven-compiler-plugin
- 2.3
-
-
- 1.7
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 2.3
-
-
-
- com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Main
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- 0.5.8.201207111220
-
-
-
- prepare-agent
-
-
-
- report
- test
-
- report
-
-
-
-
-
-
-
-
diff --git a/resources/assets/configuration/spring/dependencyinjection/configuration/spring.xml b/resources/assets/configuration/spring/dependencyinjection/configuration/spring.xml
deleted file mode 100644
index aff3ff89..00000000
--- a/resources/assets/configuration/spring/dependencyinjection/configuration/spring.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index 78e6c6e7..00000000
--- a/settings.gradle
+++ /dev/null
@@ -1 +0,0 @@
-rootProject.name = 'FizzBuzzEnterpriseEdition'
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/ApplicationContextHolder.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/ApplicationContextHolder.java
deleted file mode 100644
index 6d6c10d9..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/ApplicationContextHolder.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;
-
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.stereotype.Service;
-
-/**
- * Holder for Application Context
- */
-@Service
-public class ApplicationContextHolder implements ApplicationContextAware {
-
- private static ApplicationContext applicationContext;
-
- /**
- * Updater for ApplicationContextReference
- */
- private static class ApplicationContextReferenceUpdater {
- void updateApplicationContextReference(final ApplicationContext applicationContext) {
- ApplicationContextHolder.applicationContext = applicationContext;
- }
- }
-
- /**
- * Holder for ApplicationContextReferenceUpdater
- */
- private static class ApplicationContextReferenceUpdaterHolder {
- static ApplicationContextReferenceUpdater INSTANCE = new ApplicationContextReferenceUpdater();
- }
-
- private ApplicationContextHolder() {
- super();
- }
-
- /**
- * @param applicationContext
- * @throws BeansException
- */
- @Override
- public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
- ApplicationContextReferenceUpdaterHolder.INSTANCE.updateApplicationContextReference(applicationContext);
- }
-
- /**
- * @return
- */
- public static ApplicationContext getApplicationContext() {
- return ApplicationContextHolder.applicationContext;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Constants.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Constants.java
deleted file mode 100644
index f351e327..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Constants.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;
-
-/**
- * Constants
- */
-public class Constants {
-
- public static final String AN_ATTEMPT_WAS_MADE_TO_DIVIDE_BY_ZERO = "An attempt was made to divide by zero.";
- public static final String BUZZ = "Buzz";
- public static final String COM_SERIOUSCOMPANY_BUSINESS_JAVA_FIZZBUZZ_PACKAGENAMINGPACKAGE_IMPL_PRINTERS_INTEGER_INTEGER_PRINTER_PRINT = "com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.IntegerIntegerPrinter.print()";
- public static final String FIZZ = "Fizz";
- public static final String LINE_SEPARATOR = "line.separator";
- public static final String LOOP_COMPONENT_FACTORY = "loopComponentFactory";
- public static final String SPRING_XML = "spring.xml";
- public static final String STANDARD_FIZZ_BUZZ = "standardFizzBuzz";
- public static final String THE_INTEGERS_COULD_NOT_BE_COMPARED = "The integers could not be compared.";
- public static final int DEFAULT_FIZZ_BUZZ_UPPER_LIMIT_PARAMETER_VALUE = 100;
- public static final int INTEGER_DIVIDE_ZERO_VALUE = 0;
- public static final int INTEGER_ORIGIN_ZERO_VALUE = 0;
- public static final int LOOP_INC_VALUE = 1;
- public static final int LOOP_INIT_VALUE = 1;
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Main.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Main.java
deleted file mode 100644
index 22409508..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Main.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;
-
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.parameters.DefaultFizzBuzzUpperLimitParameter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.FizzBuzz;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters.FizzBuzzUpperLimitParameter;
-
-/**
- * Main
- */
-public final class Main {
-
- /**
- * @param args
- */
- public static void main(final String[] args) {
- final ApplicationContext context = new ClassPathXmlApplicationContext(Constants.SPRING_XML);
- final FizzBuzz myFizzBuzz = (FizzBuzz) context.getBean(Constants.STANDARD_FIZZ_BUZZ);
- final FizzBuzzUpperLimitParameter fizzBuzzUpperLimit = new DefaultFizzBuzzUpperLimitParameter();
- myFizzBuzz.fizzBuzz(fizzBuzzUpperLimit.obtainUpperLimitValue());
-
- ((ConfigurableApplicationContext) context).close();
-
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/StandardFizzBuzz.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/StandardFizzBuzz.java
deleted file mode 100644
index acc15f54..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/StandardFizzBuzz.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.FizzBuzz;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.FizzBuzzSolutionStrategyFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzSolutionStrategy;
-
-/**
- * Standard FizzBuzz
- */
-@Service
-public class StandardFizzBuzz implements FizzBuzz {
-
- private final FizzBuzzSolutionStrategyFactory _fizzBuzzSolutionStrategyFactory;
-
- /**
- * @param _fizzBuzzSolutionStrategyFactory
- */
- @Autowired
- public StandardFizzBuzz(final FizzBuzzSolutionStrategyFactory _fizzBuzzSolutionStrategyFactory) {
- super();
- this._fizzBuzzSolutionStrategyFactory = _fizzBuzzSolutionStrategyFactory;
- }
-
- /**
- * @param nFizzBuzzUpperLimit
- */
- public void fizzBuzz(final int nFizzBuzzUpperLimit) {
- final FizzBuzzSolutionStrategy mySolutionStrategy =
- this._fizzBuzzSolutionStrategyFactory.createFizzBuzzSolutionStrategy();
- mySolutionStrategy.runSolution(nFizzBuzzUpperLimit);
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStrategyFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStrategyFactory.java
deleted file mode 100644
index 9ae2367b..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStrategyFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.BuzzStrategy;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IsEvenlyDivisibleStrategyFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
-
-/**
- * Factory for BuzzStrategy
- */
-@Service
-public class BuzzStrategyFactory implements IsEvenlyDivisibleStrategyFactory {
-
- private final BuzzStrategy _buzzStrategy;
-
- /**
- * @param _buzzStrategy BuzzStrategy
- */
- @Autowired
- public BuzzStrategyFactory(final BuzzStrategy _buzzStrategy) {
- super();
- this._buzzStrategy = _buzzStrategy;
- }
-
- /**
- * @return void
- */
- @Override
- public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy() {
- return this._buzzStrategy;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringPrinterFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringPrinterFactory.java
deleted file mode 100644
index 82f352f5..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringPrinterFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.BuzzStringPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringPrinterFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
-
-/**
- * Factory for BuzzStringPrinter
- */
-@Service
-public class BuzzStringPrinterFactory implements StringPrinterFactory {
-
- private final BuzzStringPrinter _buzzStringPrinter;
-
- /**
- * @param _buzzStringPrinter BuzzStringPrinter
- */
- @Autowired
- public BuzzStringPrinterFactory(final BuzzStringPrinter _buzzStringPrinter) {
- super();
- this._buzzStringPrinter = _buzzStringPrinter;
- }
-
- /**
- * @return StringPrinter
- */
- @Override
- public StringPrinter createStringPrinter() {
- return this._buzzStringPrinter;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringReturnerFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringReturnerFactory.java
deleted file mode 100644
index 94a5fb2c..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringReturnerFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.BuzzStringReturner;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringStringReturnerFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
-
-/**
- * Factory for BuzzStringReturner
- */
-@Service
-public class BuzzStringReturnerFactory implements StringStringReturnerFactory {
-
- private final BuzzStringReturner _myBuzzStringReturner;
-
- /**
- * @param _myBuzzStringReturner BuzzStringReturner
- */
- @Autowired
- public BuzzStringReturnerFactory(final BuzzStringReturner _myBuzzStringReturner) {
- super();
- this._myBuzzStringReturner = _myBuzzStringReturner;
- }
-
- /**
- * @return StringStringReturner
- */
- @Override
- public StringStringReturner createStringStringReturner() {
- return this._myBuzzStringReturner;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/EnterpriseGradeFizzBuzzSolutionStrategyFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/EnterpriseGradeFizzBuzzSolutionStrategyFactory.java
deleted file mode 100644
index 7fc9c987..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/EnterpriseGradeFizzBuzzSolutionStrategyFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.FizzBuzzSolutionStrategyFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzSolutionStrategy;
-
-/**
- * Factory for EnterpriseGradeFizzBuzzSolutionStrategy
- */
-@Service
-public class EnterpriseGradeFizzBuzzSolutionStrategyFactory implements FizzBuzzSolutionStrategyFactory {
-
- private final FizzBuzzSolutionStrategy _fizzBuzzSolutionStrategy;
-
- /**
- * @param _fizzBuzzSolutionStrategy FizzBuzzSolutionStrategy
- */
- @Autowired
- public EnterpriseGradeFizzBuzzSolutionStrategyFactory(final FizzBuzzSolutionStrategy _fizzBuzzSolutionStrategy) {
- super();
- this._fizzBuzzSolutionStrategy = _fizzBuzzSolutionStrategy;
- }
-
- /**
- * @return FizzBuzzSolutionStrategy
- */
- @Override
- public FizzBuzzSolutionStrategy createFizzBuzzSolutionStrategy() {
- return this._fizzBuzzSolutionStrategy;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzBuzzOutputGenerationContextVisitorFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzBuzzOutputGenerationContextVisitorFactory.java
deleted file mode 100644
index 5cb80cb0..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzBuzzOutputGenerationContextVisitorFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.visitors.FizzBuzzOutputGenerationContextVisitor;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.OutputGenerationContextVisitorFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContextVisitor;
-
-/**
- * Factory for FizzBuzzOutputGenerationContextVisitor
- */
-@Service
-public class FizzBuzzOutputGenerationContextVisitorFactory implements
- OutputGenerationContextVisitorFactory {
-
- private final FizzBuzzOutputGenerationContextVisitor _fizzBuzzOutputGenerationContextVisitor;
-
- /**
- * @param _fizzBuzzOutputGenerationContextVisitor FizzBuzzOutputGenerationContextVisitor
- */
- @Autowired
- public FizzBuzzOutputGenerationContextVisitorFactory(
- final FizzBuzzOutputGenerationContextVisitor _fizzBuzzOutputGenerationContextVisitor) {
- super();
- this._fizzBuzzOutputGenerationContextVisitor = _fizzBuzzOutputGenerationContextVisitor;
- }
-
- /**
- * @return OutputGenerationContextVisitor
- */
- @Override
- public OutputGenerationContextVisitor createVisitor() {
- return this._fizzBuzzOutputGenerationContextVisitor;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStrategyFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStrategyFactory.java
deleted file mode 100644
index b810ee19..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStrategyFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.FizzStrategy;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IsEvenlyDivisibleStrategyFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
-
-/**
- * Factory for FizzStrategy
- */
-@Service
-public class FizzStrategyFactory implements IsEvenlyDivisibleStrategyFactory {
-
- private final FizzStrategy _fizzStrategy;
-
- /**
- * @param _fizzStrategy FizzStrategy
- */
- @Autowired
- public FizzStrategyFactory(final FizzStrategy _fizzStrategy) {
- super();
- this._fizzStrategy = _fizzStrategy;
- }
-
- /**
- * @return IsEvenlyDivisibleStrategy
- */
- @Override
- public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy() {
- return this._fizzStrategy;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringPrinterFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringPrinterFactory.java
deleted file mode 100644
index 67cb9fa5..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringPrinterFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.FizzStringPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringPrinterFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
-
-/**
- * Factory for FizzStringPrinter
- */
-@Service
-public class FizzStringPrinterFactory implements StringPrinterFactory {
-
- private final FizzStringPrinter _fizzStringPrinter;
-
- /**
- * @param _fizzStringPrinter FizzStringPrinter
- */
- @Autowired
- public FizzStringPrinterFactory(final FizzStringPrinter _fizzStringPrinter) {
- super();
- this._fizzStringPrinter = _fizzStringPrinter;
- }
-
- /**
- * @return StringPrinter
- */
- @Override
- public StringPrinter createStringPrinter() {
- return this._fizzStringPrinter;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringReturnerFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringReturnerFactory.java
deleted file mode 100644
index 617f17f3..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringReturnerFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.FizzStringReturner;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringStringReturnerFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
-
-/**
- * Factory for FizzStringReturner
- */
-@Service
-public class FizzStringReturnerFactory implements StringStringReturnerFactory {
-
- private final FizzStringReturner _fizzStringReturner;
-
- /**
- * @param _fizzStringReturner FizzStringReturner
- */
- @Autowired
- public FizzStringReturnerFactory(final FizzStringReturner _fizzStringReturner) {
- super();
- this._fizzStringReturner = _fizzStringReturner;
- }
-
- /**
- * @return StringStringReturner
- */
- @Override
- public StringStringReturner createStringStringReturner() {
- return this._fizzStringReturner;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerPrinterFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerPrinterFactory.java
deleted file mode 100644
index 19d7b613..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerPrinterFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.IntegerIntegerPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IntegerPrinterFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.IntegerPrinter;
-
-/**
- * Factory for IntegerIntegerPrinterFactory
- */
-@Service
-public class IntegerIntegerPrinterFactory implements IntegerPrinterFactory {
-
- private final IntegerIntegerPrinter _integerIntegerPrinter;
-
- /**
- * @param _integerIntegerPrinter IntegerIntegerPrinter
- */
- @Autowired
- public IntegerIntegerPrinterFactory(final IntegerIntegerPrinter _integerIntegerPrinter) {
- super();
- this._integerIntegerPrinter = _integerIntegerPrinter;
- }
-
- /**
- * @return IntegerPrinter
- */
- @Override
- public IntegerPrinter createPrinter() {
- return this._integerIntegerPrinter;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerStringReturnerFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerStringReturnerFactory.java
deleted file mode 100644
index 84c72dc6..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerStringReturnerFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.IntegerIntegerStringReturner;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IntegerStringReturnerFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;
-
-/**
- * Factory for IntegerIntegerStringReturner
- */
-@Service
-public class IntegerIntegerStringReturnerFactory implements
- IntegerStringReturnerFactory {
-
- private final IntegerIntegerStringReturner _integerIntegerStringReturner;
-
- /**
- * @param _integerIntegerStringReturner IntegerIntegerStringReturner
- */
- @Autowired
- public IntegerIntegerStringReturnerFactory(final IntegerIntegerStringReturner _integerIntegerStringReturner) {
- super();
- this._integerIntegerStringReturner = _integerIntegerStringReturner;
- }
-
- /**
- * @return IntegerStringReturner
- */
- @Override
- public IntegerStringReturner createIntegerStringReturner() {
- return this._integerIntegerStringReturner;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/LoopComponentFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/LoopComponentFactory.java
deleted file mode 100644
index 4daa6984..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/LoopComponentFactory.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopCondition;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopFinalizer;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopInitializer;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopStep;
-
-/**
- * Factory for LoopComponent
- */
-@Service
-public class LoopComponentFactory {
-
- private final LoopCondition _loopCondition;
-
- private final LoopInitializer _loopInitializer;
-
- private final LoopStep _loopStep;
-
- /**
- * @param _loopCondition LoopCondition
- * @param _loopInitializer LoopInitializer
- * @param _loopStep LoopStep
- */
- @Autowired
- public LoopComponentFactory(final LoopCondition _loopCondition, final LoopInitializer _loopInitializer,
- final LoopStep _loopStep) {
- super();
- this._loopCondition = _loopCondition;
- this._loopInitializer = _loopInitializer;
- this._loopStep = _loopStep;
- }
-
- /**
- * @return LoopCondition
- */
- public LoopCondition createLoopCondition() {
- return this._loopCondition;
- }
-
- /**
- * @return LoopInitializer
- */
- public LoopInitializer createLoopInitializer() {
- return this._loopInitializer;
- }
-
- /**
- * @param nLoopFinalValue int
- * @return LoopFinalizer
- */
- public LoopFinalizer createLoopFinalizer(final int nLoopFinalValue) {
- final LoopFinalizer myLoopFinalizer = new LoopFinalizer(nLoopFinalValue);
- return myLoopFinalizer;
- }
-
- /**
- * @return LoopStep
- */
- public LoopStep createLoopStep() {
- return this._loopStep;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringPrinterFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringPrinterFactory.java
deleted file mode 100644
index 158e09d7..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringPrinterFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.NewLineStringPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringPrinterFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
-
-/**
- * Factory for NewLineStringPrinter
- */
-@Service
-public class NewLineStringPrinterFactory implements StringPrinterFactory {
-
- private final NewLineStringPrinter _newLineStringPrinter;
-
- /**
- * @param _newLineStringPrinter NewLineStringPrinter
- */
- @Autowired
- public NewLineStringPrinterFactory(final NewLineStringPrinter _newLineStringPrinter) {
- super();
- this._newLineStringPrinter = _newLineStringPrinter;
- }
-
- /**
- * @return StringPrinter
- */
- @Override
- public StringPrinter createStringPrinter() {
- return this._newLineStringPrinter;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringReturnerFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringReturnerFactory.java
deleted file mode 100644
index 5fb42403..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringReturnerFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.NewLineStringReturner;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.StringStringReturnerFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
-
-/**
- * Factory for NewLineStringReturner
- */
-@Service
-public class NewLineStringReturnerFactory implements
- StringStringReturnerFactory {
-
- private final NewLineStringReturner _newlineStringReturner;
-
- /**
- * @param _newlineStringReturner NewLineStringReturner
- */
- @Autowired
- public NewLineStringReturnerFactory(final NewLineStringReturner _newlineStringReturner) {
- super();
- this._newlineStringReturner = _newlineStringReturner;
- }
-
- /**
- * @return StringStringReturner
- */
- @Override
- public StringStringReturner createStringStringReturner() {
- return this._newlineStringReturner;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NoFizzNoBuzzStrategyFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NoFizzNoBuzzStrategyFactory.java
deleted file mode 100644
index 800ca150..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NoFizzNoBuzzStrategyFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.NoFizzNoBuzzStrategy;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IsEvenlyDivisibleStrategyFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
-
-/**
- * Factory for NoFizzNoBuzzStrategy
- */
-@Service
-public class NoFizzNoBuzzStrategyFactory implements
- IsEvenlyDivisibleStrategyFactory {
-
- private final NoFizzNoBuzzStrategy _noFizzNoBuzzStrategy;
-
- /**
- * @param _noFizzNoBuzzStrategy NoFizzNoBuzzStrategy
- */
- @Autowired
- public NoFizzNoBuzzStrategyFactory(final NoFizzNoBuzzStrategy _noFizzNoBuzzStrategy) {
- super();
- this._noFizzNoBuzzStrategy = _noFizzNoBuzzStrategy;
- }
-
- /**
- * @return IsEvenlyDivisibleStrategy
- */
- @Override
- public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy() {
- return this._noFizzNoBuzzStrategy;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/SystemOutFizzBuzzOutputStrategyFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/SystemOutFizzBuzzOutputStrategyFactory.java
deleted file mode 100644
index 432b8cec..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/SystemOutFizzBuzzOutputStrategyFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.SystemOutFizzBuzzOutputStrategy;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.FizzBuzzOutputStrategyFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzOutputStrategy;
-
-/**
- * Factory for SystemOutFizzBuzzOutputStrategy
- */
-@Service
-public class SystemOutFizzBuzzOutputStrategyFactory implements
- FizzBuzzOutputStrategyFactory {
-
- private final SystemOutFizzBuzzOutputStrategy _systemOutFizzBuzzOutputStrategy;
-
- /**
- * @param _systemOutFizzBuzzOutputStrategy SystemOutFizzBuzzOutputStrategy
- */
- @Autowired
- public SystemOutFizzBuzzOutputStrategyFactory(final SystemOutFizzBuzzOutputStrategy _systemOutFizzBuzzOutputStrategy) {
- super();
- this._systemOutFizzBuzzOutputStrategy = _systemOutFizzBuzzOutputStrategy;
- }
-
- /**
- * @return FizzBuzzOutputStrategy
- */
- @Override
- public FizzBuzzOutputStrategy createOutputStrategy() {
- return this._systemOutFizzBuzzOutputStrategy;
- }
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopCondition.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopCondition.java
deleted file mode 100644
index 0cdadafb..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopCondition.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.ThreeWayIntegerComparator;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.ThreeWayIntegerComparisonResult;
-
-/**
- * LoopCondition
- */
-@Service
-public class LoopCondition {
-
- /**
- * @param nCurrentNumber int
- * @param nTotalCount int
- * @return boolean
- */
- public boolean evaluateLoop(final int nCurrentNumber, final int nTotalCount) {
- final ThreeWayIntegerComparisonResult comparisonResult = ThreeWayIntegerComparator.Compare(nCurrentNumber,
- nTotalCount);
- if (ThreeWayIntegerComparisonResult.FirstIsLessThanSecond == comparisonResult) {
- return true;
- } else if (ThreeWayIntegerComparisonResult.FirstEqualsSecond == comparisonResult) {
- return true;
- } else {
- return false;
- }
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopContext.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopContext.java
deleted file mode 100644
index 0a78d7f9..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopContext.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;
-
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.LoopComponentFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateManipulation;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateRetrieval;
-
-/**
- * LoopContext
- */
-public final class LoopContext implements LoopContextStateManipulation, LoopContextStateRetrieval {
-
- private final LoopInitializer myLoopInitializer;
- private final LoopFinalizer myLoopFinalizer;
- private final LoopCondition myLoopCondition;
- private final LoopStep myLoopStep;
- private int myCurrentControlParameterValue;
-
- /**
- * @param nLoopControlParameterFinalValue int
- */
- public LoopContext(final int nLoopControlParameterFinalValue) {
- super();
- final ApplicationContext context = new ClassPathXmlApplicationContext(Constants.SPRING_XML);
- final LoopComponentFactory myLoopComponentFactory = context.getBean(Constants.LOOP_COMPONENT_FACTORY,
- LoopComponentFactory.class);
- this.myLoopInitializer = myLoopComponentFactory.createLoopInitializer();
- this.myLoopFinalizer = myLoopComponentFactory.createLoopFinalizer(nLoopControlParameterFinalValue);
- this.myLoopCondition = myLoopComponentFactory.createLoopCondition();
- this.myLoopStep = myLoopComponentFactory.createLoopStep();
- ((ConfigurableApplicationContext) context).close();
- }
-
- /**
- * @return void
- */
- @Override
- public void start() {
- this.myCurrentControlParameterValue =
- this.myLoopInitializer.getLoopInitializationPoint();
- }
-
- /**
- * @return boolean
- */
- @Override
- public boolean shouldProceed() {
- return this.myLoopCondition.evaluateLoop(this.myCurrentControlParameterValue,
- this.myLoopFinalizer.getLoopFinalizationPoint());
- }
-
- /**
- * @return void
- */
- @Override
- public void proceed() {
- this.myCurrentControlParameterValue =
- this.myLoopStep.stepLoop(this.myCurrentControlParameterValue);
- }
-
- /**
- * @return int
- */
- @Override
- public int getControlParameter() {
- return this.myCurrentControlParameterValue;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopFinalizer.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopFinalizer.java
deleted file mode 100644
index 2f104333..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopFinalizer.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;
-
-/**
- * LoopFinalizer
- */
-public final class LoopFinalizer {
-
- private final int nStoredLoopFinalValue;
-
- /**
- * @param nLoopFinalValue int
- */
- public LoopFinalizer(final int nLoopFinalValue) {
- super();
- this.nStoredLoopFinalValue = nLoopFinalValue;
- }
-
- /**
- * @return int
- */
- public int getLoopFinalizationPoint() {
- return this.nStoredLoopFinalValue;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopInitializer.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopInitializer.java
deleted file mode 100644
index 2304800e..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopInitializer.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;
-
-/**
- * LoopInitializer
- */
-@Service
-public class LoopInitializer {
-
- /**
- * @return int
- */
- public int getLoopInitializationPoint() {
- return Constants.LOOP_INIT_VALUE;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopRunner.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopRunner.java
deleted file mode 100644
index da29e3dc..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopRunner.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateManipulation;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateRetrieval;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopPayloadExecution;
-
-/**
- * LoopRunner
- */
-public final class LoopRunner {
-
- private final LoopContextStateManipulation myStateManipulation;
- private final LoopContextStateRetrieval myStateRetrieval;
- private final LoopPayloadExecution myPayload;
-
- /**
- * @param stateManipulation LoopContextStateManipulation
- * @param stateRetrieval LoopContextStateRetrieval
- * @param payload LoopPayloadExecution
- */
- public LoopRunner(final LoopContextStateManipulation stateManipulation,
- final LoopContextStateRetrieval stateRetrieval, final LoopPayloadExecution payload) {
- super();
- this.myStateManipulation = stateManipulation;
- this.myStateRetrieval = stateRetrieval;
- this.myPayload = payload;
- }
-
- /**
- * @return
- */
- public void runLoop() {
- for (this.myStateManipulation.start(); this.myStateManipulation.shouldProceed(); this.myStateManipulation.proceed()) {
- this.myPayload.runLoopPayload(this.myStateRetrieval);
- }
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopStep.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopStep.java
deleted file mode 100644
index ee3962cf..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopStep.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;
-
-/**
- * LoopStep
- */
-@Service
-public class LoopStep {
-
- /**
- * @param nCurrentNumber int
- * @return int
- */
- public int stepLoop(final int nCurrentNumber) {
- return nCurrentNumber + Constants.LOOP_INC_VALUE;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/IntegerDivider.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/IntegerDivider.java
deleted file mode 100644
index 7230dfdb..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/IntegerDivider.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator.FirstIsLargerThanSecondDoubleComparator;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator.FirstIsSmallerThanSecondDoubleComparator;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.IntegerForEqualityComparator;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters.DoubleToIntConverter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters.IntToDoubleConverter;
-
-/**
- * IntegerDivider
- */
-@Service
-public class IntegerDivider {
-
- private final FirstIsSmallerThanSecondDoubleComparator firstIsSmallerThanSecondDoubleComparator;
- private final FirstIsLargerThanSecondDoubleComparator firstIsLargerThanSecondDoubleComparator;
-
- /**
- * @param firstIsLargerThanSecondDoubleComparator FirstIsLargerThanSecondDoubleComparator
- * @param firstIsSmallerThanSecondDoubleComparator FirstIsSmallerThanSecondDoubleComparator
- */
- @Autowired
- public IntegerDivider(final FirstIsLargerThanSecondDoubleComparator firstIsLargerThanSecondDoubleComparator,
- final FirstIsSmallerThanSecondDoubleComparator firstIsSmallerThanSecondDoubleComparator) {
- super();
- this.firstIsLargerThanSecondDoubleComparator = firstIsLargerThanSecondDoubleComparator;
- this.firstIsSmallerThanSecondDoubleComparator = firstIsSmallerThanSecondDoubleComparator;
- }
-
- /**
- * @param nFirstInteger int
- * @param nSecondInteger int
- * @return int
- */
- public int divide(final int nFirstInteger, final int nSecondInteger) {
- final boolean denominatorEqualsZero =
- IntegerForEqualityComparator.areTwoIntegersEqual(nSecondInteger, Constants.INTEGER_DIVIDE_ZERO_VALUE);
- if (denominatorEqualsZero) {
- throw new ArithmeticException(Constants.AN_ATTEMPT_WAS_MADE_TO_DIVIDE_BY_ZERO);
- } else {
- final double dbFirstNumber = IntToDoubleConverter.Convert(nFirstInteger);
- final double dbSecondNumber = IntToDoubleConverter.Convert(nSecondInteger);
- final double dbQuotient = dbFirstNumber / dbSecondNumber;
- double dbRoundedQuotient = (double) Constants.INTEGER_ORIGIN_ZERO_VALUE;
- if (this.firstIsSmallerThanSecondDoubleComparator.FirstIsSmallerThanSecond(dbQuotient,
- (double) Constants.INTEGER_ORIGIN_ZERO_VALUE)) {
- dbRoundedQuotient = Math.ceil(dbQuotient);
- } else if (this.firstIsLargerThanSecondDoubleComparator.FirstIsLargerThanSecond(dbQuotient,
- (double) Constants.INTEGER_ORIGIN_ZERO_VALUE)) {
- dbRoundedQuotient = Math.floor(dbQuotient);
- }
- final int nIntegerQuotient = DoubleToIntConverter.Convert(dbRoundedQuotient);
- return nIntegerQuotient;
- }
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/NumberIsMultipleOfAnotherNumberVerifier.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/NumberIsMultipleOfAnotherNumberVerifier.java
deleted file mode 100644
index d58d6b27..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/NumberIsMultipleOfAnotherNumberVerifier.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.ApplicationContextHolder;
-import javax.annotation.PostConstruct;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.IntegerForEqualityComparator;
-
-/**
- * NumberIsMultipleOfAnotherNumberVerifier
- */
-@Service
-public class NumberIsMultipleOfAnotherNumberVerifier {
-
- private static IntegerDivider integerDivider;
-
- @Autowired
- private ApplicationContextHolder applicationContextHolder;
-
- /**
- * @return
- */
- @PostConstruct
- public void init() {
- final ApplicationContext applicationContext = applicationContextHolder.getApplicationContext();
-
- this.integerDivider = applicationContext.getBean(IntegerDivider.class);
- }
-
- /**
- * @param nFirstNumber
- * @param nSecondNumber
- * @return
- */
- public static boolean numberIsMultipleOfAnotherNumber(final int nFirstNumber, final int nSecondNumber) {
- try {
- final int nDivideFirstIntegerBySecondIntegerResult =
- (NumberIsMultipleOfAnotherNumberVerifier.integerDivider.divide(nFirstNumber, nSecondNumber));
- final int nMultiplyDivisionResultBySecondIntegerResult =
- nDivideFirstIntegerBySecondIntegerResult * nSecondNumber;
- if (IntegerForEqualityComparator.areTwoIntegersEqual(nMultiplyDivisionResultBySecondIntegerResult,
- nFirstNumber)) {
- return true;
- } else {
- return false;
- }
- } catch (final ArithmeticException ae) {
- return false;
- }
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/parameters/DefaultFizzBuzzUpperLimitParameter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/parameters/DefaultFizzBuzzUpperLimitParameter.java
deleted file mode 100644
index dc0e84a8..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/parameters/DefaultFizzBuzzUpperLimitParameter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.parameters;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters.FizzBuzzUpperLimitParameter;
-
-/**
- * Parameter for DefaultFizzBuzzUpperLimit
- */
-public final class DefaultFizzBuzzUpperLimitParameter implements FizzBuzzUpperLimitParameter {
-
- private final int fizzBuzzUpperLimitParameterValue;
-
- /**
- *
- */
- public DefaultFizzBuzzUpperLimitParameter() {
- super();
- this.fizzBuzzUpperLimitParameterValue = Constants.DEFAULT_FIZZ_BUZZ_UPPER_LIMIT_PARAMETER_VALUE;
- }
-
- /**
- * @param fizzBuzzUpperLimitParameterValue int
- */
- public DefaultFizzBuzzUpperLimitParameter(final int fizzBuzzUpperLimitParameterValue) {
- super();
- this.fizzBuzzUpperLimitParameterValue = fizzBuzzUpperLimitParameterValue;
- }
-
- /**
- * @return int
- */
- public int obtainUpperLimitValue() {
- return this.fizzBuzzUpperLimitParameterValue;
- }
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzPrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzPrinter.java
deleted file mode 100644
index 558da0fa..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzPrinter.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
-
-/**
- * Printer for Buzz
- */
-@Service
-public class BuzzPrinter {
-
- private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
-
- /**
- * @param _systemOutFizzBuzzOutputStrategyFactory
- */
- @Autowired
- public BuzzPrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
- super();
- this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzStringPrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzStringPrinter.java
deleted file mode 100644
index 76de87a8..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzStringPrinter.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.BuzzStringReturnerFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
-
-/**
- * Printer for BuzzString
- */
-@Service
-public class BuzzStringPrinter implements StringPrinter {
-
- private final SystemOutFizzBuzzOutputStrategyFactory _outputStrategyFactory;
-
- private final BuzzStringReturnerFactory _buzzStringReturnerFactory;
-
- /**
- * @param _buzzStringReturnerFactory
- * @param _outputStrategyFactory
- */
- @Autowired
- public BuzzStringPrinter(final BuzzStringReturnerFactory _buzzStringReturnerFactory,
- final SystemOutFizzBuzzOutputStrategyFactory _outputStrategyFactory) {
- super();
- this._buzzStringReturnerFactory = _buzzStringReturnerFactory;
- this._outputStrategyFactory = _outputStrategyFactory;
- }
-
- /**
- * @return void
- */
- public void print() {
- final StringStringReturner myBuzzStringReturner = this._buzzStringReturnerFactory
- .createStringStringReturner();
- final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
- new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
- this._outputStrategyFactory.createOutputStrategy());
-
- myOutputAdapter.output(myBuzzStringReturner.getReturnString());
- }
-
- /**
- * @param value
- * @return
- */
- @Override
- public void printValue(final Object value) {
- this.print();
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzPrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzPrinter.java
deleted file mode 100644
index 1b95394a..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzPrinter.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
-
-/**
- * Printer for Fizz
- */
-@Service
-public class FizzPrinter {
-
- private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
-
- /**
- * @param _systemOutFizzBuzzOutputStrategyFactory
- */
- @Autowired
- public FizzPrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
- super();
- this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzStringPrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzStringPrinter.java
deleted file mode 100644
index 04cb8d14..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzStringPrinter.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.FizzStringReturnerFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
-
-/**
- * Printer for FizzString
- */
-@Service
-public class FizzStringPrinter implements StringPrinter {
-
- private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
-
- private final FizzStringReturnerFactory _fizzStringReturnerFactory;
-
- /**
- * @param _fizzStringReturnerFactory FizzStringReturnerFactory
- * @param _systemOutFizzBuzzOutputStrategyFactory SystemOutFizzBuzzOutputStrategyFactory
- */
- @Autowired
- public FizzStringPrinter(final FizzStringReturnerFactory _fizzStringReturnerFactory,
- final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
- super();
- this._fizzStringReturnerFactory = _fizzStringReturnerFactory;
- this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
- }
-
- /**
- * @return void
- */
- public void print() {
- final StringStringReturner myFizzStringReturner = this._fizzStringReturnerFactory
- .createStringStringReturner();
- final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
- new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
- this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());
-
- myOutputAdapter.output(myFizzStringReturner.getReturnString());
- }
-
- /**
- * @param value
- */
- @Override
- public void printValue(final Object value) {
- this.print();
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerIntegerPrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerIntegerPrinter.java
deleted file mode 100644
index f2ec3f83..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerIntegerPrinter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.IntegerIntegerStringReturnerFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.IntegerPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;
-
-/**
- * Printer for IntegerInteger
- */
-@Service
-public class IntegerIntegerPrinter implements IntegerPrinter {
-
- private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
-
- private final IntegerIntegerStringReturnerFactory _integerIntegerStringReturnerFactory;
-
- /**
- * @param _integerIntegerStringReturnerFactory IntegerIntegerStringReturnerFactory
- * @param _systemOutFizzBuzzOutputStrategyFactory SystemOutFizzBuzzOutputStrategyFactory
- */
- @Autowired
- public IntegerIntegerPrinter(final IntegerIntegerStringReturnerFactory _integerIntegerStringReturnerFactory,
- final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
- super();
- this._integerIntegerStringReturnerFactory = _integerIntegerStringReturnerFactory;
- this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
- }
-
- /**
- * @param theInteger
- */
- public void printInteger(final int theInteger) {
- final IntegerStringReturner myIntegerStringReturner =
- this._integerIntegerStringReturnerFactory.createIntegerStringReturner();
- final String myIntegerString = myIntegerStringReturner.getIntegerReturnString(theInteger);
- final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
- new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
- this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());
-
- myOutputAdapter.output(myIntegerString);
- }
-
- /**
- * @return void
- */
- @Override
- public void print() {
- throw new UnsupportedOperationException(
- com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants.COM_SERIOUSCOMPANY_BUSINESS_JAVA_FIZZBUZZ_PACKAGENAMINGPACKAGE_IMPL_PRINTERS_INTEGER_INTEGER_PRINTER_PRINT);
- }
-
- /**
- * @param value
- */
- @Override
- public void printValue(final Object value) {
- this.printInteger((Integer) value);
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerPrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerPrinter.java
deleted file mode 100644
index e256c115..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerPrinter.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
-
-/**
- * Printer for Integers
- */
-@Service
-public class IntegerPrinter {
-
- private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
-
- /**
- * @param _systemOutFizzBuzzOutputStrategyFactory
- */
- @Autowired
- public IntegerPrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
- super();
- this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLinePrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLinePrinter.java
deleted file mode 100644
index 448643ba..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLinePrinter.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
-
-/**
- * Printer for New Line
- */
-@Service
-public class NewLinePrinter {
-
- private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
-
- /**
- * @param _systemOutFizzBuzzOutputStrategyFactory
- */
- @Autowired
- public NewLinePrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
- super();
- this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLineStringPrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLineStringPrinter.java
deleted file mode 100644
index 8439ed5c..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLineStringPrinter.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.NewLineStringReturnerFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.SystemOutFizzBuzzOutputStrategyFactory;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
-
-/**
- * Printer for NewLineString
- */
-@Service
-public class NewLineStringPrinter implements StringPrinter {
-
- private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
-
- private final NewLineStringReturnerFactory _newLineStringReturnerFactory;
-
- /**
- * @param _newLineStringReturnerFactory NewLineStringReturnerFactory
- * @param _systemOutFizzBuzzOutputStrategyFactory SystemOutFizzBuzzOutputStrategyFactory
- */
- @Autowired
- public NewLineStringPrinter(final NewLineStringReturnerFactory _newLineStringReturnerFactory,
- final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
- super();
- this._newLineStringReturnerFactory = _newLineStringReturnerFactory;
- this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
- }
-
- /**
- * @return void
- */
- public void print() {
- final StringStringReturner myNewLineStringReturner = this._newLineStringReturnerFactory
- .createStringStringReturner();
- final String myNewLineString = myNewLineStringReturner.getReturnString();
- final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
- new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
- this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());
-
- myOutputAdapter.output(myNewLineString);
- }
-
- /**
- * @param value Object
- */
- @Override
- public void printValue(final Object value) {
- this.print();
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/BuzzStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/BuzzStrategy.java
deleted file mode 100644
index 180f22e7..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/BuzzStrategy.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants.BuzzStrategyConstants;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics.NumberIsMultipleOfAnotherNumberVerifier;
-
-/**
- * Strategy for Buzz
- */
-@Service
-public class BuzzStrategy implements IsEvenlyDivisibleStrategy {
-
- /**
- * @param theInteger int
- * @return boolean
- */
- public boolean isEvenlyDivisible(final int theInteger) {
- if (NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
- BuzzStrategyConstants.BUZZ_INTEGER_CONSTANT_VALUE)) {
- return true;
- } else {
- return false;
- }
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/EnterpriseGradeFizzBuzzSolutionStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/EnterpriseGradeFizzBuzzSolutionStrategy.java
deleted file mode 100644
index 314d5243..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/EnterpriseGradeFizzBuzzSolutionStrategy.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopContext;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopRunner;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopPayloadExecution;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzSolutionStrategy;
-
-/**
- * Strategy for EnterpriseGradeFizzBuzzSolution
- */
-@Service
-public class EnterpriseGradeFizzBuzzSolutionStrategy implements FizzBuzzSolutionStrategy {
-
- private final LoopPayloadExecution _loopPayloadExecution;
-
- /**
- * @param _loopPayloadExecution LoopPayloadExecution
- */
- @Autowired
- public EnterpriseGradeFizzBuzzSolutionStrategy(final LoopPayloadExecution _loopPayloadExecution) {
- super();
- this._loopPayloadExecution = _loopPayloadExecution;
- }
-
- /**
- * @param nFizzBuzzUpperLimit int
- * @return void
- */
- @Override
- public void runSolution(final int nFizzBuzzUpperLimit) {
- final LoopContext loopContext = new LoopContext(nFizzBuzzUpperLimit);
- final LoopRunner loopRunner = new LoopRunner(loopContext, loopContext, this._loopPayloadExecution);
- loopRunner.runLoop();
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/FizzStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/FizzStrategy.java
deleted file mode 100644
index 8735c46d..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/FizzStrategy.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants.FizzStrategyConstants;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics.NumberIsMultipleOfAnotherNumberVerifier;
-
-/**
- * Strategy for Fizz
- */
-@Service
-public class FizzStrategy implements IsEvenlyDivisibleStrategy {
-
- /**
- * @param theInteger int
- * @return boolean
- */
- public boolean isEvenlyDivisible(final int theInteger) {
- if (NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
- FizzStrategyConstants.FIZZ_INTEGER_CONSTANT_VALUE)) {
- return true;
- } else {
- return false;
- }
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/NoFizzNoBuzzStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/NoFizzNoBuzzStrategy.java
deleted file mode 100644
index c9ead5cc..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/NoFizzNoBuzzStrategy.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants.NoFizzNoBuzzStrategyConstants;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.math.arithmetics.NumberIsMultipleOfAnotherNumberVerifier;
-
-/**
- * Strategy for NoFizzNoBuzz
- */
-@Service
-public class NoFizzNoBuzzStrategy implements IsEvenlyDivisibleStrategy {
-
- /**
- * @param theInteger int
- * @return boolean
- */
- public boolean isEvenlyDivisible(final int theInteger) {
- if (!NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
- NoFizzNoBuzzStrategyConstants.NO_FIZZ_INTEGER_CONSTANT_VALUE)) {
- if (!NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
- NoFizzNoBuzzStrategyConstants.NO_BUZZ_INTEGER_CONSTANT_VALUE)) {
- return true;
- } else {
- return false;
- }
- } else if (!NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
- NoFizzNoBuzzStrategyConstants.NO_BUZZ_INTEGER_CONSTANT_VALUE)) {
- if (!NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
- NoFizzNoBuzzStrategyConstants.NO_FIZZ_INTEGER_CONSTANT_VALUE)) {
- return true;
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepOutputGenerationStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepOutputGenerationStrategy.java
deleted file mode 100644
index ff818716..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepOutputGenerationStrategy.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.*;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.visitors.FizzBuzzOutputGenerationContext;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.OutputGenerationStrategy;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.SingleStepOutputGenerationParameter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContext;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContextVisitor;
-
-/**
- * Strategy for SingleStepOutputGeneration
- */
-@Service
-public class SingleStepOutputGenerationStrategy implements OutputGenerationStrategy {
-
- private final List contexts;
- private final OutputGenerationContextVisitor contextVisitor;
- private final StringPrinter myNewLinePrinter;
-
- /**
- * @param fizzBuzzOutputGenerationContextVisitorFactory FizzBuzzOutputGenerationContextVisitorFactory
- * @param fizzStrategyFactory FizzStrategyFactory
- * @param fizzStringPrinterFactory FizzStringPrinterFactory
- * @param buzzStrategyFactory BuzzStrategyFactory
- * @param buzzStringPrinterFactory BuzzStringPrinterFactory
- * @param noFizzNoBuzzStrategyFactory NoFizzNoBuzzStrategyFactory
- * @param integerIntegerPrinterFactory IntegerIntegerPrinterFactory
- * @param newLineStringPrinterFactory NewLineStringPrinterFactory
- */
- @Autowired
- public SingleStepOutputGenerationStrategy(
- final FizzBuzzOutputGenerationContextVisitorFactory fizzBuzzOutputGenerationContextVisitorFactory,
- final FizzStrategyFactory fizzStrategyFactory,
- final FizzStringPrinterFactory fizzStringPrinterFactory,
- final BuzzStrategyFactory buzzStrategyFactory,
- final BuzzStringPrinterFactory buzzStringPrinterFactory,
- final NoFizzNoBuzzStrategyFactory noFizzNoBuzzStrategyFactory,
- final IntegerIntegerPrinterFactory integerIntegerPrinterFactory,
- final NewLineStringPrinterFactory newLineStringPrinterFactory) {
- super();
- this.contextVisitor = fizzBuzzOutputGenerationContextVisitorFactory.createVisitor();
- this.contexts = new ArrayList();
- this.contexts.add(new FizzBuzzOutputGenerationContext(fizzStrategyFactory.createIsEvenlyDivisibleStrategy(),
- fizzStringPrinterFactory.createStringPrinter()));
- this.contexts.add(new FizzBuzzOutputGenerationContext(buzzStrategyFactory.createIsEvenlyDivisibleStrategy(),
- buzzStringPrinterFactory.createStringPrinter()));
- this.contexts.add(new FizzBuzzOutputGenerationContext(
- noFizzNoBuzzStrategyFactory.createIsEvenlyDivisibleStrategy(),
- integerIntegerPrinterFactory.createPrinter()));
-
- this.myNewLinePrinter = newLineStringPrinterFactory.createStringPrinter();
- }
-
- /**
- * @param generationParameter SingleStepOutputGenerationParameter
- * @return void
- */
- public void performGenerationForCurrentStep(final SingleStepOutputGenerationParameter generationParameter) {
- final int nGenerationParameter = generationParameter.retrieveIntegerValue();
- final Iterator iterator = this.contexts.iterator();
- while (iterator.hasNext()) {
- final OutputGenerationContext context = iterator.next();
- this.contextVisitor.visit(context, nGenerationParameter);
- }
- this.myNewLinePrinter.print();
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepPayload.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepPayload.java
deleted file mode 100644
index f9de4aef..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepPayload.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.LoopContextStateRetrievalToSingleStepOutputGenerationAdapter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateRetrieval;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopPayloadExecution;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.OutputGenerationStrategy;
-
-/**
- * Payload for SingleStep
- */
-@Service
-public class SingleStepPayload implements LoopPayloadExecution {
-
- private final OutputGenerationStrategy _outputGenerationStrategy;
-
- /**
- * @param _outputGenerationStrategy
- */
- @Autowired
- public SingleStepPayload(final OutputGenerationStrategy _outputGenerationStrategy) {
- super();
- this._outputGenerationStrategy = _outputGenerationStrategy;
- }
-
- /**
- * @param stateRetrieval LoopContextStateRetrieval
- * @return void
- */
- @Override
- public void runLoopPayload(final LoopContextStateRetrieval stateRetrieval) {
- final LoopContextStateRetrievalToSingleStepOutputGenerationAdapter adapter =
- new LoopContextStateRetrievalToSingleStepOutputGenerationAdapter(stateRetrieval);
- this._outputGenerationStrategy.performGenerationForCurrentStep(adapter);
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SystemOutFizzBuzzOutputStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SystemOutFizzBuzzOutputStrategy.java
deleted file mode 100644
index 71c161a4..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SystemOutFizzBuzzOutputStrategy.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies;
-
-import java.io.IOException;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzOutputStrategy;
-
-/**
- * Strategy for SystemOutFizzBuzzOutput
- */
-@Service
-public class SystemOutFizzBuzzOutputStrategy implements FizzBuzzOutputStrategy {
-
- /**
- * @param output String
- * @throws IOException
- * @return void
- */
- @Override
- public void output(final String output) throws IOException {
- System.out.write(output.getBytes());
- System.out.flush();
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter.java
deleted file mode 100644
index 106860d4..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzOutputStrategy;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzExceptionSafeOutputStrategy;
-
-/**
- * Adapter for FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategy
- */
-public final class FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter implements FizzBuzzExceptionSafeOutputStrategy {
-
- private final FizzBuzzOutputStrategy _fizzBuzzOutputStrategy;
-
- /**
- * @param fizzBuzzOutputStrategy FizzBuzzOutputStrategy
- */
- public FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(final FizzBuzzOutputStrategy fizzBuzzOutputStrategy) {
- this._fizzBuzzOutputStrategy = fizzBuzzOutputStrategy;
- }
-
- /**
- * @param outputStringToOutput String
- * @return void
- */
- @Override
- public void output(final String outputStringToOutput) {
- try {
- this._fizzBuzzOutputStrategy.output(outputStringToOutput);
- } catch (final Exception exceptionFromDoingOutput) {
- // We're the enterprise...we don't get exceptions!
- } catch (final Throwable throwableFromDoingOutput) {
- // We're the enterprise...we don't get throwables either!
- }
- }
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/LoopContextStateRetrievalToSingleStepOutputGenerationAdapter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/LoopContextStateRetrievalToSingleStepOutputGenerationAdapter.java
deleted file mode 100644
index fb1a8b8e..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/LoopContextStateRetrievalToSingleStepOutputGenerationAdapter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateRetrieval;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.SingleStepOutputGenerationParameter;
-
-/**
- * Adapter for LoopContextStateRetrievalToSingleStepOutputGeneration
- */
-public final class LoopContextStateRetrievalToSingleStepOutputGenerationAdapter implements SingleStepOutputGenerationParameter {
-
- private final LoopContextStateRetrieval _retrievalObjectToAdapt;
-
- /**
- * @param retrievalObjectToAdapt LoopContextStateRetrieval
- */
- public LoopContextStateRetrievalToSingleStepOutputGenerationAdapter(final LoopContextStateRetrieval retrievalObjectToAdapt) {
- super();
- this._retrievalObjectToAdapt = retrievalObjectToAdapt;
-
- }
-
- /**
- * @return int
- */
- @Override
- public int retrieveIntegerValue() {
- return this._retrievalObjectToAdapt.getControlParameter();
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsLargerThanSecondDoubleComparator.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsLargerThanSecondDoubleComparator.java
deleted file mode 100644
index 9a99c8d1..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsLargerThanSecondDoubleComparator.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator;
-
-import org.springframework.stereotype.Service;
-
-/**
- * Comparator for FirstIsLargerThanSecondDouble
- */
-@Service
-public class FirstIsLargerThanSecondDoubleComparator {
-
- /**
- * @param dbFirstDoubleToCompare double
- * @param dbSecondDoubleToCompare double
- * @return boolean
- */
- public boolean FirstIsLargerThanSecond(final double dbFirstDoubleToCompare, final double dbSecondDoubleToCompare) {
- if (dbFirstDoubleToCompare > dbSecondDoubleToCompare) {
- return true;
- } else {
- return false;
- }
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsSmallerThanSecondDoubleComparator.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsSmallerThanSecondDoubleComparator.java
deleted file mode 100644
index 4699244b..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsSmallerThanSecondDoubleComparator.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator;
-
-import org.springframework.stereotype.Service;
-
-/**
- * Comparator for FirstIsSmallerThanSecondDouble
- */
-@Service
-public class FirstIsSmallerThanSecondDoubleComparator {
-
- /**
- * @param dbFirstDoubleToCompare double
- * @param dbSecondDoubleToCompare double
- * @return boolean
- */
- public boolean FirstIsSmallerThanSecond(final double dbFirstDoubleToCompare, final double dbSecondDoubleToCompare) {
- if (dbFirstDoubleToCompare < dbSecondDoubleToCompare) {
- return true;
- } else {
- return false;
- }
- }
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/IntegerForEqualityComparator.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/IntegerForEqualityComparator.java
deleted file mode 100644
index 164b049f..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/IntegerForEqualityComparator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;
-
-import org.springframework.stereotype.Service;
-
-/**
- * Comparator for IntegerForEquality
- */
-@Service
-public final class IntegerForEqualityComparator {
-
- private IntegerForEqualityComparator() {}
-
- /**
- * @param nFirstInteger int
- * @param nSecondInteger int
- * @return boolean
- */
- public static boolean areTwoIntegersEqual(final int nFirstInteger, final int nSecondInteger) {
- final ThreeWayIntegerComparisonResult comparisonResult =
- ThreeWayIntegerComparator.Compare(nFirstInteger, nSecondInteger);
- if (ThreeWayIntegerComparisonResult.FirstEqualsSecond == comparisonResult) {
- return true;
- } else {
- return false;
- }
- }
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparator.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparator.java
deleted file mode 100644
index c24032d0..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparator.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants;
-
-/**
- * Comparator for ThreeWayInteger
- */
-@Service
-public final class ThreeWayIntegerComparator {
-
- private ThreeWayIntegerComparator() {}
-
- /**
- * @param nFirstInteger int
- * @param nSecondInteger int
- * @return ThreeWayIntegerComparisonResult
- */
- public static ThreeWayIntegerComparisonResult Compare(final int nFirstInteger, final int nSecondInteger) {
- if (nFirstInteger == nSecondInteger) {
- return ThreeWayIntegerComparisonResult.FirstEqualsSecond;
- } else if (nFirstInteger < nSecondInteger) {
- return ThreeWayIntegerComparisonResult.FirstIsLessThanSecond;
- } else if (nFirstInteger > nSecondInteger) {
- return ThreeWayIntegerComparisonResult.FirstIsGreaterThanSecond;
- } else {
- // If the integers cannot be compared, then something is seriously wrong with the numbers.
- throw new UnsupportedOperationException(Constants.THE_INTEGERS_COULD_NOT_BE_COMPARED);
- }
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparisonResult.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparisonResult.java
deleted file mode 100644
index 17c30c88..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparisonResult.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;
-
-/**
- * ThreeWayIntegerComparisonResult
- */
-public enum ThreeWayIntegerComparisonResult {
- FirstIsLessThanSecond,
- FirstEqualsSecond,
- FirstIsGreaterThanSecond
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/BuzzStrategyConstants.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/BuzzStrategyConstants.java
deleted file mode 100644
index 07518808..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/BuzzStrategyConstants.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;
-
-import org.springframework.stereotype.Service;
-
-/**
- * Constants for BuzzStrategy
- */
-@Service
-public final class BuzzStrategyConstants {
-
- private BuzzStrategyConstants() {}
-
- public static final int BUZZ_INTEGER_CONSTANT_VALUE = 5;
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/FizzStrategyConstants.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/FizzStrategyConstants.java
deleted file mode 100644
index 7a75702d..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/FizzStrategyConstants.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;
-
-import org.springframework.stereotype.Service;
-
-/**
- * Constants for FizzStrategy
- */
-@Service
-public final class FizzStrategyConstants {
-
- private FizzStrategyConstants() {}
-
- public static final int FIZZ_INTEGER_CONSTANT_VALUE = 3;
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/NoFizzNoBuzzStrategyConstants.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/NoFizzNoBuzzStrategyConstants.java
deleted file mode 100644
index 2617bba7..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/NoFizzNoBuzzStrategyConstants.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;
-
-import org.springframework.stereotype.Service;
-
-/**
- * Constants for NoFizzNoBuzzStrategy
- */
-@Service
-public final class NoFizzNoBuzzStrategyConstants {
-
- private NoFizzNoBuzzStrategyConstants() {}
-
- public static final int NO_BUZZ_INTEGER_CONSTANT_VALUE = BuzzStrategyConstants.BUZZ_INTEGER_CONSTANT_VALUE;
- public static final int NO_FIZZ_INTEGER_CONSTANT_VALUE = FizzStrategyConstants.FIZZ_INTEGER_CONSTANT_VALUE;
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/DoubleToIntConverter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/DoubleToIntConverter.java
deleted file mode 100644
index 6a0c587f..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/DoubleToIntConverter.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters;
-
-import org.springframework.stereotype.Service;
-
-/**
- * Converter for DoubleToInt
- */
-@Service
-public final class DoubleToIntConverter {
-
- private DoubleToIntConverter() {}
-
- /**
- * @param dbDoubleToConvert double
- * @return int
- */
- public static int Convert(final double dbDoubleToConvert) {
- final int nConversionResult = (int) dbDoubleToConvert;
- return nConversionResult;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/IntToDoubleConverter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/IntToDoubleConverter.java
deleted file mode 100644
index b8011ad4..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/IntToDoubleConverter.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters;
-
-import org.springframework.stereotype.Service;
-
-/**
- * Converter for IntToDouble
- */
-@Service
-public final class IntToDoubleConverter {
-
- private IntToDoubleConverter() {}
-
- /**
- * @param nIntegerToConvert int
- * @return double
- */
- public static double Convert(final int nIntegerToConvert) {
- final double dbConversionResult = (double) nIntegerToConvert;
- return dbConversionResult;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/BuzzStringReturner.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/BuzzStringReturner.java
deleted file mode 100644
index d54464f3..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/BuzzStringReturner.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
-
-/**
- * Returner for BuzzString
- */
-@Service
-public class BuzzStringReturner implements StringStringReturner {
-
- /**
- * @return String
- */
- public String getReturnString() {
- final StringBuilder myStringBuilder = new StringBuilder(
- com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants.BUZZ);
- final String myString = myStringBuilder.toString();
- return new String(myString);
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/FizzStringReturner.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/FizzStringReturner.java
deleted file mode 100644
index 92648612..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/FizzStringReturner.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
-
-/**
- * Returner for FizzString
- */
-@Service
-public class FizzStringReturner implements StringStringReturner {
-
- /**
- * @return String
- */
- public String getReturnString() {
- final StringBuilder myStringBuilder = new StringBuilder(
- com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants.FIZZ);
- final String myString = myStringBuilder.toString();
- final char[] myCharacters = myString.toCharArray();
- return new String(myCharacters, 0, myCharacters.length);
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/IntegerIntegerStringReturner.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/IntegerIntegerStringReturner.java
deleted file mode 100644
index f89bf428..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/IntegerIntegerStringReturner.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;
-
-/**
- * Returner for IntegerIntegerString
- */
-@Service
-public class IntegerIntegerStringReturner implements IntegerStringReturner {
-
- /**
- * @param theInteger ing
- * @return String
- */
- public String getIntegerReturnString(final int theInteger) {
- final Integer myIntegerToBeConvertedToString = new Integer(theInteger);
- final StringBuilder myStringBuilder = new StringBuilder(myIntegerToBeConvertedToString.toString());
- final String myResultingStringFromIntegerToStringConversion = myStringBuilder.toString();
- return new String(myResultingStringFromIntegerToStringConversion);
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/NewLineStringReturner.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/NewLineStringReturner.java
deleted file mode 100644
index 6cb864d8..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/NewLineStringReturner.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;
-
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
-
-/**
- * Returner for NewLineString
- */
-@Service
-public class NewLineStringReturner implements StringStringReturner {
-
- /**
- * @return
- */
- public String getReturnString() {
- final String systemDefaultNewLineString = System.getProperty(
- com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.Constants.LINE_SEPARATOR);
- final StringBuilder myStringBuilder = new StringBuilder(systemDefaultNewLineString);
- final String myString = myStringBuilder.toString();
- return new String(myString);
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContext.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContext.java
deleted file mode 100644
index cc41f966..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContext.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.visitors;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.DataPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContext;
-
-/**
- * Context for FizzBuzzOutputGeneration
- */
-public final class FizzBuzzOutputGenerationContext implements OutputGenerationContext {
-
- private final DataPrinter printer;
- private final IsEvenlyDivisibleStrategy strategy;
-
- /**
- * @param strategy IsEvenlyDivisibleStrategy
- * @param printer DataPrinter
- */
- public FizzBuzzOutputGenerationContext(final IsEvenlyDivisibleStrategy strategy,
- final DataPrinter printer) {
- super();
- this.strategy = strategy;
- this.printer = printer;
- }
-
- /**
- * @return
- */
- @Override
- public DataPrinter getPrinter() {
- return this.printer;
- }
-
- /**
- * @return
- */
- @Override
- public IsEvenlyDivisibleStrategy getStrategy() {
- return this.strategy;
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContextVisitor.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContextVisitor.java
deleted file mode 100644
index dc372059..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContextVisitor.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.visitors;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.DataPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
-import org.springframework.stereotype.Service;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContext;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContextVisitor;
-
-/**
- * Visitor for FizzBuzzOutputGenerationContext
- */
-@Service
-public class FizzBuzzOutputGenerationContextVisitor implements
- OutputGenerationContextVisitor {
-
- /**
- * @param context OutputGenerationContext
- * @param nGenerationParameter int
- */
- @Override
- public void visit(final OutputGenerationContext context, final int nGenerationParameter) {
- final IsEvenlyDivisibleStrategy strategy = context.getStrategy();
- if (strategy.isEvenlyDivisible(nGenerationParameter)) {
- final DataPrinter printer = context.getPrinter();
- printer.printValue(new Integer(nGenerationParameter));
- }
- }
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/FizzBuzz.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/FizzBuzz.java
deleted file mode 100644
index d0147978..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/FizzBuzz.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces;
-
-/**
- * FizzBuzz
- */
-public interface FizzBuzz {
-
- /**
- * @param nFizzBuzzUpperLimit
- */
- void fizzBuzz(int nFizzBuzzUpperLimit);
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzOutputStrategyFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzOutputStrategyFactory.java
deleted file mode 100644
index f252d35f..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzOutputStrategyFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzOutputStrategy;
-
-/**
- * Factory for FizzBuzzOutputStrategy
- */
-public interface FizzBuzzOutputStrategyFactory {
-
- /**
- * @return
- */
- public FizzBuzzOutputStrategy createOutputStrategy();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzSolutionStrategyFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzSolutionStrategyFactory.java
deleted file mode 100644
index 685bb226..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzSolutionStrategyFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzSolutionStrategy;
-
-/**
- * Factory for FizzBuzzSolutionStrategy
- */
-public interface FizzBuzzSolutionStrategyFactory {
-
- /**
- * @return
- */
- public FizzBuzzSolutionStrategy createFizzBuzzSolutionStrategy();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerPrinterFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerPrinterFactory.java
deleted file mode 100644
index 06dcd129..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerPrinterFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.IntegerPrinter;
-
-/**
- * Factory for IntegerPrinter
- */
-public interface IntegerPrinterFactory {
-
- /**
- * @return
- */
- public IntegerPrinter createPrinter();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerStringReturnerFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerStringReturnerFactory.java
deleted file mode 100644
index 57946ad7..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerStringReturnerFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;
-
-/**
- * Factory for IntegerStringReturner
- */
-public interface IntegerStringReturnerFactory {
-
- /**
- * @return
- */
- public IntegerStringReturner createIntegerStringReturner();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IsEvenlyDivisibleStrategyFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IsEvenlyDivisibleStrategyFactory.java
deleted file mode 100644
index 915d32ec..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IsEvenlyDivisibleStrategyFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
-
-/**
- * Factory for IsEvenlyDivisibleStrategy
- */
-public interface IsEvenlyDivisibleStrategyFactory {
-
- /**
- * @return
- */
- public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/OutputGenerationContextVisitorFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/OutputGenerationContextVisitorFactory.java
deleted file mode 100644
index f3bf1e95..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/OutputGenerationContextVisitorFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContextVisitor;
-
-/**
- * Factory for OutputGenerationContextVisitor
- */
-public interface OutputGenerationContextVisitorFactory {
-
- /**
- * @return
- */
- public OutputGenerationContextVisitor createVisitor();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringPrinterFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringPrinterFactory.java
deleted file mode 100644
index c09cb7c9..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringPrinterFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
-
-/**
- * Factory for StringPrinter
- */
-public interface StringPrinterFactory {
-
- /**
- * @return
- */
- public StringPrinter createStringPrinter();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringStringReturnerFactory.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringStringReturnerFactory.java
deleted file mode 100644
index a1c9974e..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringStringReturnerFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
-
-/**
- * Factory for StringStringReturner
- */
-public interface StringStringReturnerFactory {
-
- /**
- * @return
- */
- public StringStringReturner createStringStringReturner();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateManipulation.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateManipulation.java
deleted file mode 100644
index e471463f..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateManipulation.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;
-
-/**
- * Manipulation for LoopContextState
- */
-public interface LoopContextStateManipulation {
-
- /**
- * @return
- */
- public void start();
-
- /**
- * @return
- */
- public boolean shouldProceed();
-
- /**
- * @return
- */
- public void proceed();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateRetrieval.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateRetrieval.java
deleted file mode 100644
index 388d264d..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateRetrieval.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;
-
-/**
- * Retrieval for LoopContextState
- */
-public interface LoopContextStateRetrieval {
-
- /**
- * @return
- */
- public int getControlParameter();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopPayloadExecution.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopPayloadExecution.java
deleted file mode 100644
index c29683a5..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopPayloadExecution.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;
-
-/**
- * Execution for LoopPayload
- */
-public interface LoopPayloadExecution {
-
- /**
- * @param stateRetrieval
- */
- public void runLoopPayload(LoopContextStateRetrieval stateRetrieval);
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/parameters/FizzBuzzUpperLimitParameter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/parameters/FizzBuzzUpperLimitParameter.java
deleted file mode 100644
index 35b75231..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/parameters/FizzBuzzUpperLimitParameter.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters;
-
-/**
- * Parameter for FizzBuzzUpperLimit
- */
-public interface FizzBuzzUpperLimitParameter {
-
- /**
- * @return
- */
- public int obtainUpperLimitValue();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/DataPrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/DataPrinter.java
deleted file mode 100644
index 7627df06..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/DataPrinter.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;
-
-/**
- * Printer for Data
- */
-public interface DataPrinter {
-
- /**
- * @return
- */
- public void print();
-
- /**
- * @param value
- */
- public void printValue(Object value);
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/IntegerPrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/IntegerPrinter.java
deleted file mode 100644
index e011bfa7..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/IntegerPrinter.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;
-
-/**
- * Printer for Integer
- */
-public interface IntegerPrinter extends DataPrinter {
-
- /**
- * @param theInteger
- */
- public void printInteger(int theInteger);
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/StringPrinter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/StringPrinter.java
deleted file mode 100644
index 001aeab4..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/StringPrinter.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;
-
-/**
- * Printer for String
- */
-public interface StringPrinter extends DataPrinter {
-
- /**
- *
- */
- public void print();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzExceptionSafeOutputStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzExceptionSafeOutputStrategy.java
deleted file mode 100644
index b77576ec..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzExceptionSafeOutputStrategy.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
-
-/**
- * Strategy for FizzBuzzExceptionSafeOutput
- */
-public interface FizzBuzzExceptionSafeOutputStrategy {
-
- /**
- * @param output
- */
- public void output(String output);
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzOutputStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzOutputStrategy.java
deleted file mode 100644
index bf245aa9..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzOutputStrategy.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
-
-import java.io.IOException;
-
-/**
- * Strategy for FizzBuzzOutput
- */
-public interface FizzBuzzOutputStrategy {
-
- /**
- * @param output
- * @throws IOException
- */
- public void output(String output) throws IOException;
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzSolutionStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzSolutionStrategy.java
deleted file mode 100644
index 197d271c..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzSolutionStrategy.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
-
-/**
- * Strategy for FizzBuzzSolution
- */
-public interface FizzBuzzSolutionStrategy {
-
- /**
- * @param nFizzBuzzUpperLimit
- */
- public void runSolution(int nFizzBuzzUpperLimit);
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/IsEvenlyDivisibleStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/IsEvenlyDivisibleStrategy.java
deleted file mode 100644
index 6a30ff41..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/IsEvenlyDivisibleStrategy.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
-
-/**
- * Strategy for IsEvenlyDivisible
- */
-public interface IsEvenlyDivisibleStrategy {
-
- /**
- * @param theInteger
- * @return
- */
- public boolean isEvenlyDivisible(int theInteger);
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/OutputGenerationStrategy.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/OutputGenerationStrategy.java
deleted file mode 100644
index 6794a38e..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/OutputGenerationStrategy.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
-
-/**
- * Strategy for OutputGeneration
- */
-public interface OutputGenerationStrategy {
-
- /**
- * @param generationParameter
- */
- void performGenerationForCurrentStep(SingleStepOutputGenerationParameter generationParameter);
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/SingleStepOutputGenerationParameter.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/SingleStepOutputGenerationParameter.java
deleted file mode 100644
index 7fc12d0c..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/SingleStepOutputGenerationParameter.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
-
-/**
- * Parameter for SingleStepOutputGeneration
- */
-public interface SingleStepOutputGenerationParameter {
-
- /**
- * @return
- */
- public int retrieveIntegerValue();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/IntegerStringReturner.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/IntegerStringReturner.java
deleted file mode 100644
index 9e461e65..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/IntegerStringReturner.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners;
-
-/**
- * Returner for IntegerString
- */
-public interface IntegerStringReturner {
-
- /**
- * @param theInteger
- * @return
- */
- public String getIntegerReturnString(int theInteger);
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/StringStringReturner.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/StringStringReturner.java
deleted file mode 100644
index 24adf9ab..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/StringStringReturner.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners;
-
-/**
- * Returner for StringString
- */
-public interface StringStringReturner {
-
- /**
- * @return
- */
- public String getReturnString();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContext.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContext.java
deleted file mode 100644
index f8877092..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContext.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.DataPrinter;
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
-
-/**
- * Context for OutputGeneration
- */
-public interface OutputGenerationContext {
-
- /**
- * @return
- */
- public IsEvenlyDivisibleStrategy getStrategy();
-
- /**
- * @return
- */
- public DataPrinter getPrinter();
-
-}
diff --git a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContextVisitor.java b/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContextVisitor.java
deleted file mode 100644
index b42cfd2d..00000000
--- a/src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContextVisitor.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors;
-
-/**
- * Visitor for OutputGenerationContext
- */
-public interface OutputGenerationContextVisitor {
-
- /**
- * @param context
- * @param nGenerationParameter
- */
- public void visit(OutputGenerationContext context, int nGenerationParameter);
-
-}
diff --git a/src/test/java/FizzBuzzTest.java b/src/test/java/FizzBuzzTest.java
deleted file mode 100644
index 73ab761c..00000000
--- a/src/test/java/FizzBuzzTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-import static org.junit.Assert.assertEquals;
-
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.FizzBuzz;
-
-/**
- * Tests for FizzBuzz
- */
-public class FizzBuzzTest {
-
- private PrintStream out;
- private FizzBuzz fb;
-
- /**
- * @return void
- */
- @Before
- public void setUp() {
- final ApplicationContext context = new ClassPathXmlApplicationContext(TestConstants.SPRING_XML);
- this.fb = (FizzBuzz) context.getBean(TestConstants.STANDARD_FIZZ_BUZZ);
- this.out = System.out;
- ((ConfigurableApplicationContext) context).close();
- }
-
- /**
- * @return void
- */
- @After
- public void tearDown() {
- System.setOut(this.out);
- }
-
- /**
- * @param n int
- * @param s String
- * @throws IOException
- */
- private void doFizzBuzz(final int n, final String s) throws IOException {
- final ByteArrayOutputStream baos = new ByteArrayOutputStream();
- final BufferedOutputStream bos = new BufferedOutputStream(baos);
- System.setOut(new PrintStream(bos));
-
- this.fb.fizzBuzz(n);
-
- System.out.flush();
- String platformDependentExpectedResult = s.replaceAll("\\n", System.getProperty("line.separator"));
- assertEquals(platformDependentExpectedResult, baos.toString());
- }
-
- /**
- * @throws IOException
- * @return void
- */
- @Test
- public void testFizzBuzz() throws IOException {
- this.doFizzBuzz(TestConstants.INT_1, TestConstants._1_);
- this.doFizzBuzz(TestConstants.INT_2, TestConstants._1_2_);
- this.doFizzBuzz(TestConstants.INT_3, TestConstants._1_2_FIZZ);
- this.doFizzBuzz(TestConstants.INT_4, TestConstants._1_2_FIZZ_4);
- this.doFizzBuzz(TestConstants.INT_5, TestConstants._1_2_FIZZ_4_BUZZ);
- this.doFizzBuzz(TestConstants.INT_6, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ);
- this.doFizzBuzz(TestConstants.INT_7, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7);
- this.doFizzBuzz(TestConstants.INT_8, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8);
- this.doFizzBuzz(TestConstants.INT_9, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ);
- this.doFizzBuzz(TestConstants.INT_10, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ);
- this.doFizzBuzz(TestConstants.INT_11, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11);
- this.doFizzBuzz(TestConstants.INT_12, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ);
- this.doFizzBuzz(TestConstants.INT_13, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13);
- this.doFizzBuzz(TestConstants.INT_14, TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14);
- this.doFizzBuzz(TestConstants.INT_15,
- TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14_FIZZ_BUZZ);
- this.doFizzBuzz(TestConstants.INT_16,
- TestConstants._1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14_FIZZ_BUZZ_16);
- }
-
-}
diff --git a/src/test/java/TestConstants.java b/src/test/java/TestConstants.java
deleted file mode 100644
index 6b8c5883..00000000
--- a/src/test/java/TestConstants.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Constants for FizzBuzz tests
- */
-public class TestConstants {
-
- private TestConstants() {
- super();
- }
-
- static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14_FIZZ_BUZZ_16 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\nFizzBuzz\n16\n";
- static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14_FIZZ_BUZZ = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\nFizzBuzz\n";
- static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13_14 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\n";
- static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ_13 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n";
- static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11_FIZZ = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n";
- static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ_11 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\n";
- static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ_BUZZ = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n";
- static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8_FIZZ = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\n";
- static final String _1_2_FIZZ_4_BUZZ_FIZZ_7_8 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\n";
- static final String _1_2_FIZZ_4_BUZZ_FIZZ_7 = "1\n2\nFizz\n4\nBuzz\nFizz\n7\n";
- static final String _1_2_FIZZ_4_BUZZ_FIZZ = "1\n2\nFizz\n4\nBuzz\nFizz\n";
- static final String _1_2_FIZZ_4_BUZZ = "1\n2\nFizz\n4\nBuzz\n";
- static final String _1_2_FIZZ_4 = "1\n2\nFizz\n4\n";
- static final String _1_2_FIZZ = "1\n2\nFizz\n";
- static final String _1_2_ = "1\n2\n";
- static final String _1_ = "1\n";
- static final String STANDARD_FIZZ_BUZZ = "standardFizzBuzz";
- static final String SPRING_XML = "spring.xml";
- static final int INT_1 = 1;
- static final int INT_2 = 2;
- static final int INT_3 = 3;
- static final int INT_4 = 4;
- static final int INT_5 = 5;
- static final int INT_6 = 6;
- static final int INT_7 = 7;
- static final int INT_8 = 8;
- static final int INT_9 = 9;
- static final int INT_10 = 10;
- static final int INT_11 = 11;
- static final int INT_12 = 12;
- static final int INT_13 = 13;
- static final int INT_14 = 14;
- static final int INT_15 = 15;
- static final int INT_16 = 16;
-
-}