From cbd5a8808894ebcb3900caaa49106ace7486d528 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 12:15:44 +0400 Subject: [PATCH 01/42] Get rid of slow code --- .gitattributes | 22 --- .gitignore | 180 ------------------ .travis.yml | 7 - CONTRIBUTING.md | 15 -- README.md | 34 ---- build.gradle | 29 --- gradle/wrapper/gradle-wrapper.jar | Bin 53637 -> 0 bytes gradle/wrapper/gradle-wrapper.properties | 6 - gradlew | 160 ---------------- gradlew.bat | 90 --------- pom.xml | 101 ---------- .../configuration/spring.xml | 13 -- settings.gradle | 1 - .../impl/ApplicationContextHolder.java | 52 ----- .../packagenamingpackage/impl/Constants.java | 23 --- .../packagenamingpackage/impl/Main.java | 29 --- .../impl/StandardFizzBuzz.java | 36 ---- .../impl/factories/BuzzStrategyFactory.java | 35 ---- .../factories/BuzzStringPrinterFactory.java | 35 ---- .../factories/BuzzStringReturnerFactory.java | 35 ---- ...eGradeFizzBuzzSolutionStrategyFactory.java | 34 ---- ...OutputGenerationContextVisitorFactory.java | 37 ---- .../impl/factories/FizzStrategyFactory.java | 35 ---- .../factories/FizzStringPrinterFactory.java | 35 ---- .../factories/FizzStringReturnerFactory.java | 35 ---- .../IntegerIntegerPrinterFactory.java | 35 ---- .../IntegerIntegerStringReturnerFactory.java | 36 ---- .../impl/factories/LoopComponentFactory.java | 67 ------- .../NewLineStringPrinterFactory.java | 35 ---- .../NewLineStringReturnerFactory.java | 36 ---- .../NoFizzNoBuzzStrategyFactory.java | 36 ---- ...ystemOutFizzBuzzOutputStrategyFactory.java | 35 ---- .../impl/loop/LoopCondition.java | 31 --- .../impl/loop/LoopContext.java | 73 ------- .../impl/loop/LoopFinalizer.java | 25 --- .../impl/loop/LoopInitializer.java | 20 -- .../impl/loop/LoopRunner.java | 38 ---- .../impl/loop/LoopStep.java | 21 -- .../impl/math/arithmetics/IntegerDivider.java | 61 ------ ...mberIsMultipleOfAnotherNumberVerifier.java | 55 ------ .../DefaultFizzBuzzUpperLimitParameter.java | 35 ---- .../impl/printers/BuzzPrinter.java | 25 --- .../impl/printers/BuzzStringPrinter.java | 56 ------ .../impl/printers/FizzPrinter.java | 25 --- .../impl/printers/FizzStringPrinter.java | 55 ------ .../impl/printers/IntegerIntegerPrinter.java | 65 ------- .../impl/printers/IntegerPrinter.java | 25 --- .../impl/printers/NewLinePrinter.java | 25 --- .../impl/printers/NewLineStringPrinter.java | 56 ------ .../impl/strategies/BuzzStrategy.java | 28 --- ...terpriseGradeFizzBuzzSolutionStrategy.java | 39 ---- .../impl/strategies/FizzStrategy.java | 28 --- .../impl/strategies/NoFizzNoBuzzStrategy.java | 40 ---- .../SingleStepOutputGenerationStrategy.java | 76 -------- .../impl/strategies/SingleStepPayload.java | 39 ---- .../SystemOutFizzBuzzOutputStrategy.java | 26 --- ...uzzExceptionSafeOutputStrategyAdapter.java | 34 ---- ...alToSingleStepOutputGenerationAdapter.java | 30 --- ...rstIsLargerThanSecondDoubleComparator.java | 24 --- ...stIsSmallerThanSecondDoubleComparator.java | 23 --- .../IntegerForEqualityComparator.java | 27 --- .../ThreeWayIntegerComparator.java | 33 ---- .../ThreeWayIntegerComparisonResult.java | 10 - .../constants/BuzzStrategyConstants.java | 15 -- .../constants/FizzStrategyConstants.java | 15 -- .../NoFizzNoBuzzStrategyConstants.java | 16 -- .../DoubleToIntConverter.java | 22 --- .../IntToDoubleConverter.java | 22 --- .../stringreturners/BuzzStringReturner.java | 23 --- .../stringreturners/FizzStringReturner.java | 24 --- .../IntegerIntegerStringReturner.java | 24 --- .../NewLineStringReturner.java | 24 --- .../FizzBuzzOutputGenerationContext.java | 42 ---- ...izzBuzzOutputGenerationContextVisitor.java | 30 --- .../interfaces/FizzBuzz.java | 13 -- .../FizzBuzzOutputStrategyFactory.java | 15 -- .../FizzBuzzSolutionStrategyFactory.java | 15 -- .../factories/IntegerPrinterFactory.java | 15 -- .../IntegerStringReturnerFactory.java | 15 -- .../IsEvenlyDivisibleStrategyFactory.java | 15 -- ...OutputGenerationContextVisitorFactory.java | 15 -- .../factories/StringPrinterFactory.java | 15 -- .../StringStringReturnerFactory.java | 15 -- .../loop/LoopContextStateManipulation.java | 23 --- .../loop/LoopContextStateRetrieval.java | 13 -- .../interfaces/loop/LoopPayloadExecution.java | 13 -- .../FizzBuzzUpperLimitParameter.java | 13 -- .../interfaces/printers/DataPrinter.java | 18 -- .../interfaces/printers/IntegerPrinter.java | 13 -- .../interfaces/printers/StringPrinter.java | 13 -- .../FizzBuzzExceptionSafeOutputStrategy.java | 13 -- .../strategies/FizzBuzzOutputStrategy.java | 16 -- .../strategies/FizzBuzzSolutionStrategy.java | 13 -- .../strategies/IsEvenlyDivisibleStrategy.java | 14 -- .../strategies/OutputGenerationStrategy.java | 13 -- .../SingleStepOutputGenerationParameter.java | 13 -- .../IntegerStringReturner.java | 14 -- .../stringreturners/StringStringReturner.java | 13 -- .../visitors/OutputGenerationContext.java | 21 -- .../OutputGenerationContextVisitor.java | 14 -- src/test/java/FizzBuzzTest.java | 87 --------- src/test/java/TestConstants.java | 45 ----- 102 files changed, 3279 deletions(-) delete mode 100644 .gitattributes delete mode 100644 .gitignore delete mode 100644 .travis.yml delete mode 100644 CONTRIBUTING.md delete mode 100644 README.md delete mode 100644 build.gradle delete mode 100644 gradle/wrapper/gradle-wrapper.jar delete mode 100644 gradle/wrapper/gradle-wrapper.properties delete mode 100755 gradlew delete mode 100644 gradlew.bat delete mode 100644 pom.xml delete mode 100644 resources/assets/configuration/spring/dependencyinjection/configuration/spring.xml delete mode 100644 settings.gradle delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/ApplicationContextHolder.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Constants.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/Main.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/StandardFizzBuzz.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStrategyFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringPrinterFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/BuzzStringReturnerFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/EnterpriseGradeFizzBuzzSolutionStrategyFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzBuzzOutputGenerationContextVisitorFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStrategyFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringPrinterFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/FizzStringReturnerFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerPrinterFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/IntegerIntegerStringReturnerFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/LoopComponentFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringPrinterFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NewLineStringReturnerFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/NoFizzNoBuzzStrategyFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/factories/SystemOutFizzBuzzOutputStrategyFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopCondition.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopContext.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopFinalizer.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopInitializer.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopRunner.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/loop/LoopStep.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/IntegerDivider.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/math/arithmetics/NumberIsMultipleOfAnotherNumberVerifier.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/parameters/DefaultFizzBuzzUpperLimitParameter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzPrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/BuzzStringPrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzPrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/FizzStringPrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerIntegerPrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/IntegerPrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLinePrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/printers/NewLineStringPrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/BuzzStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/EnterpriseGradeFizzBuzzSolutionStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/FizzStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/NoFizzNoBuzzStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepOutputGenerationStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SingleStepPayload.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/SystemOutFizzBuzzOutputStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/adapters/LoopContextStateRetrievalToSingleStepOutputGenerationAdapter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsLargerThanSecondDoubleComparator.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/doublecomparator/FirstIsSmallerThanSecondDoubleComparator.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/IntegerForEqualityComparator.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparator.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/comparators/integercomparator/ThreeWayIntegerComparisonResult.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/BuzzStrategyConstants.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/FizzStrategyConstants.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/constants/NoFizzNoBuzzStrategyConstants.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/DoubleToIntConverter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/strategies/converters/primitivetypesconverters/IntToDoubleConverter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/BuzzStringReturner.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/FizzStringReturner.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/IntegerIntegerStringReturner.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/stringreturners/NewLineStringReturner.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContext.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/impl/visitors/FizzBuzzOutputGenerationContextVisitor.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/FizzBuzz.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzOutputStrategyFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/FizzBuzzSolutionStrategyFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerPrinterFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IntegerStringReturnerFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/IsEvenlyDivisibleStrategyFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/OutputGenerationContextVisitorFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringPrinterFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/factories/StringStringReturnerFactory.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateManipulation.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopContextStateRetrieval.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/loop/LoopPayloadExecution.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/parameters/FizzBuzzUpperLimitParameter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/DataPrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/IntegerPrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/printers/StringPrinter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzExceptionSafeOutputStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzOutputStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/FizzBuzzSolutionStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/IsEvenlyDivisibleStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/OutputGenerationStrategy.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/strategies/SingleStepOutputGenerationParameter.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/IntegerStringReturner.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/stringreturners/StringStringReturner.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContext.java delete mode 100644 src/main/java/com/seriouscompany/business/java/fizzbuzz/packagenamingpackage/interfaces/visitors/OutputGenerationContextVisitor.java delete mode 100644 src/test/java/FizzBuzzTest.java delete mode 100644 src/test/java/TestConstants.java 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 deleted file mode 100644 index 886968a1..00000000 --- a/.gitignore +++ /dev/null @@ -1,180 +0,0 @@ -################# -## 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. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results -[Dd]ebug/ -[Rr]elease/ -*_i.c -*_p.c -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.vspscc -.builds -*.dotCover - -## TODO: If you have NuGet Package Restore enabled, uncomment this -#packages/ - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf - -# Visual Studio profiler -*.psess -*.vsp - -# ReSharper is a .NET coding add-in -_ReSharper* - -# Installshield output folder -[Ee]xpress - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish - -# Others -[Bb]in -[Oo]bj -sql -TestResults -*.Cache -ClientBin -stylecop.* -~$* -*.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 ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML - - - -############ -## Windows -############ - -# Windows image file caches -Thumbs.db - -# Folder config file -Desktop.ini - -############# -## Mac OS -############# -.DS_Store - -############# -## Python -############# - -*.py[co] - -# Packages -*.egg -*.egg-info -dist -build -eggs -parts -bin -var -sdist -develop-eggs -.installed.cfg - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox - -#Translations -*.mo - -#Mr Developer -.mr.developer.cfg - -# Mac crap -.DS_Store - -############# -## Java -############# - -.class -target/ 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/README.md b/README.md deleted file mode 100644 index d27f9fef..00000000 --- a/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# FizzBuzzEnterpriseEdition - -[![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) - -[Build status image]: https://secure.travis-ci.org/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition.png?branch=master -[Build status URL]: http://travis-ci.org/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition - -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. - -## 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. - -## Contributing - -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) 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/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 05ef575b0cd0173fc735f2857ce4bd594ce4f6bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53637 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 t9m@SZ!E*7&jsr?!t7TL-WYI4eM@gAug8 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 \(.*\)$'` - 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/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 - 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; - -} From f901147800f684e5ba90702fdf2bfdb5fec63816 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 12:19:06 +0400 Subject: [PATCH 02/42] convert into a visual studio project --- ...8405ed39-3fbf-4d56-8b0c-a27360690cbc.vsidx | Bin 0 -> 7488 bytes .vs/FizzBuzz Enterprise Edition/v17/.suo | Bin 0 -> 17408 bytes .../v17/Browse.VC.db | Bin 0 -> 401408 bytes .../v17/DocumentLayout.json | 12 ++ FizzBuzz Enterprise Edition.sln | 31 ++++ FizzBuzz Enterprise Edition.vcxproj | 138 ++++++++++++++++++ FizzBuzz Enterprise Edition.vcxproj.filters | 21 +++ FizzBuzz Enterprise Edition.vcxproj.user | 4 + 8 files changed, 206 insertions(+) create mode 100644 .vs/FizzBuzz Enterprise Edition/FileContentIndex/8405ed39-3fbf-4d56-8b0c-a27360690cbc.vsidx create mode 100644 .vs/FizzBuzz Enterprise Edition/v17/.suo create mode 100644 .vs/FizzBuzz Enterprise Edition/v17/Browse.VC.db create mode 100644 .vs/FizzBuzz Enterprise Edition/v17/DocumentLayout.json create mode 100644 FizzBuzz Enterprise Edition.sln create mode 100644 FizzBuzz Enterprise Edition.vcxproj create mode 100644 FizzBuzz Enterprise Edition.vcxproj.filters create mode 100644 FizzBuzz Enterprise Edition.vcxproj.user diff --git a/.vs/FizzBuzz Enterprise Edition/FileContentIndex/8405ed39-3fbf-4d56-8b0c-a27360690cbc.vsidx b/.vs/FizzBuzz Enterprise Edition/FileContentIndex/8405ed39-3fbf-4d56-8b0c-a27360690cbc.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..781239a1c119dc28004b654211abbabaf1a1b51e GIT binary patch literal 7488 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 literal 0 HcmV?d00001 diff --git a/.vs/FizzBuzz Enterprise Edition/v17/Browse.VC.db b/.vs/FizzBuzz Enterprise Edition/v17/Browse.VC.db new file mode 100644 index 0000000000000000000000000000000000000000..e3132aac34a13534678ccb7aa45bc176969bba86 GIT binary patch literal 401408 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 Xzbt(9R2%)}-Iw0!>v-?^ueAPup*IaD literal 0 HcmV?d00001 diff --git a/.vs/FizzBuzz Enterprise Edition/v17/DocumentLayout.json b/.vs/FizzBuzz Enterprise Edition/v17/DocumentLayout.json new file mode 100644 index 00000000..41fc5083 --- /dev/null +++ b/.vs/FizzBuzz Enterprise Edition/v17/DocumentLayout.json @@ -0,0 +1,12 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\GEOEGII555\\files\\FizzBuzz Enterprise Edition\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [] + } + ] +} \ No newline at end of file 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..b6c93dd7 --- /dev/null +++ b/FizzBuzz Enterprise Edition.vcxproj @@ -0,0 +1,138 @@ + + + + + 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 + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + diff --git a/FizzBuzz Enterprise Edition.vcxproj.filters b/FizzBuzz Enterprise Edition.vcxproj.filters new file mode 100644 index 00000000..2dd9adf2 --- /dev/null +++ b/FizzBuzz Enterprise Edition.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {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 + + + \ 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..88a55094 --- /dev/null +++ b/FizzBuzz Enterprise Edition.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From a801e21a99efa7d8970c1f55a7df54bc5e0d0d22 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 12:21:19 +0400 Subject: [PATCH 03/42] remove temporary folder --- .../8405ed39-3fbf-4d56-8b0c-a27360690cbc.vsidx | Bin 7488 -> 0 bytes .vs/FizzBuzz Enterprise Edition/v17/.suo | Bin 17408 -> 0 bytes .../v17/Browse.VC.db | Bin 401408 -> 0 bytes .../v17/DocumentLayout.json | 12 ------------ 4 files changed, 12 deletions(-) delete mode 100644 .vs/FizzBuzz Enterprise Edition/FileContentIndex/8405ed39-3fbf-4d56-8b0c-a27360690cbc.vsidx delete mode 100644 .vs/FizzBuzz Enterprise Edition/v17/.suo delete mode 100644 .vs/FizzBuzz Enterprise Edition/v17/Browse.VC.db delete mode 100644 .vs/FizzBuzz Enterprise Edition/v17/DocumentLayout.json diff --git a/.vs/FizzBuzz Enterprise Edition/FileContentIndex/8405ed39-3fbf-4d56-8b0c-a27360690cbc.vsidx b/.vs/FizzBuzz Enterprise Edition/FileContentIndex/8405ed39-3fbf-4d56-8b0c-a27360690cbc.vsidx deleted file mode 100644 index 781239a1c119dc28004b654211abbabaf1a1b51e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7488 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 diff --git a/.vs/FizzBuzz Enterprise Edition/v17/Browse.VC.db b/.vs/FizzBuzz Enterprise Edition/v17/Browse.VC.db deleted file mode 100644 index e3132aac34a13534678ccb7aa45bc176969bba86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401408 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 Xzbt(9R2%)}-Iw0!>v-?^ueAPup*IaD diff --git a/.vs/FizzBuzz Enterprise Edition/v17/DocumentLayout.json b/.vs/FizzBuzz Enterprise Edition/v17/DocumentLayout.json deleted file mode 100644 index 41fc5083..00000000 --- a/.vs/FizzBuzz Enterprise Edition/v17/DocumentLayout.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "Version": 1, - "WorkspaceRootPath": "C:\\Users\\GEOEGII555\\files\\FizzBuzz Enterprise Edition\\", - "Documents": [], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [] - } - ] -} \ No newline at end of file From 56a216a8412987542b0781c51c702898c255708a Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 12:37:36 +0400 Subject: [PATCH 04/42] Add a .gitignore file --- .gitignore | 398 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 398 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..8dd4607a --- /dev/null +++ b/.gitignore @@ -0,0 +1,398 @@ +## 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 +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# 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*/ +*.[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/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +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 +ClientBin/ +~$* +*~ +*.dbmdl +*.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/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml \ No newline at end of file From 5e5a652281f2bcd24ce05f184db512a706f7f977 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 13:14:53 +0400 Subject: [PATCH 05/42] add a console interface and a typedef for a string that uses TCHARs --- FizzBuzz Enterprise Edition.vcxproj | 42 +++++++++--------- FizzBuzz Enterprise Edition.vcxproj.filters | 24 +++++++++-- console.cpp | 47 +++++++++++++++++++++ console.hpp | 27 ++++++++++++ cpp_tstring.hpp | 8 ++++ main.cpp | 11 +++++ 6 files changed, 135 insertions(+), 24 deletions(-) create mode 100644 console.cpp create mode 100644 console.hpp create mode 100644 cpp_tstring.hpp create mode 100644 main.cpp diff --git a/FizzBuzz Enterprise Edition.vcxproj b/FizzBuzz Enterprise Edition.vcxproj index b6c93dd7..ea288506 100644 --- a/FizzBuzz Enterprise Edition.vcxproj +++ b/FizzBuzz Enterprise Edition.vcxproj @@ -17,7 +17,6 @@ Release x64 - 17.0 @@ -53,27 +52,24 @@ true Unicode - - + + + + + + + + + + + + + - - - - - - - - - - - - - - Level3 @@ -130,9 +126,15 @@ true - - + + + + + + + + - + \ No newline at end of file diff --git a/FizzBuzz Enterprise Edition.vcxproj.filters b/FizzBuzz Enterprise Edition.vcxproj.filters index 2dd9adf2..2435d30f 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.filters +++ b/FizzBuzz Enterprise Edition.vcxproj.filters @@ -1,10 +1,6 @@  - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd @@ -17,5 +13,25 @@ {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 + + + + + Header files + + + Header files + \ No newline at end of file diff --git a/console.cpp b/console.cpp new file mode 100644 index 00000000..cd47e736 --- /dev/null +++ b/console.cpp @@ -0,0 +1,47 @@ +#include +#include +#include "console.hpp" +#include "cpp_tstring.hpp" + +_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::writeError(const TCHAR str[]) { + WriteConsole(this->error, str, lstrlen(str), NULL, NULL); +} + +void _console::writeError(const tstring str) { + writeError(str.c_str()); +} + +DWORD _console::readFixedSizeInput(TCHAR* str, const DWORD size, const PCONSOLE_READCONSOLE_CONTROL const pReadConsoleControl) { + for (size_t i = 0; i < size; 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..ddc3d869 --- /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 writeError(const TCHAR 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..e503ff4e --- /dev/null +++ b/cpp_tstring.hpp @@ -0,0 +1,8 @@ +#pragma once + +#include +#include +#include + +typedef std::basic_string, std::allocator> tstring; +typedef std::basic_stringstream, std::allocator> tstringstream; diff --git a/main.cpp b/main.cpp new file mode 100644 index 00000000..18e2e220 --- /dev/null +++ b/main.cpp @@ -0,0 +1,11 @@ +#include +#include +#include "console.hpp" + +TCHAR copyrightMessage[] = { + TEXT("FizzBuzz Enterprise Edition. Copyright 2024 EnterpriseQualityCoding - the most serious and not satire or fake company in the uinverse.") +}; + +int _tmain(unsigned int argc, TCHAR* argv[]) { + console.writeOutput(copyrightMessage); +} \ No newline at end of file From f3333400167e6f318332b0e03a5846f7d1f7652f Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 14:02:30 +0400 Subject: [PATCH 06/42] Add an argument parser --- FizzBuzz Enterprise Edition.vcxproj | 2 + FizzBuzz Enterprise Edition.vcxproj.filters | 6 ++ argparser.cpp | 76 +++++++++++++++++++++ argparser.hpp | 16 +++++ main.cpp | 14 +++- 5 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 argparser.cpp create mode 100644 argparser.hpp diff --git a/FizzBuzz Enterprise Edition.vcxproj b/FizzBuzz Enterprise Edition.vcxproj index ea288506..2064109e 100644 --- a/FizzBuzz Enterprise Edition.vcxproj +++ b/FizzBuzz Enterprise Edition.vcxproj @@ -127,10 +127,12 @@ + + diff --git a/FizzBuzz Enterprise Edition.vcxproj.filters b/FizzBuzz Enterprise Edition.vcxproj.filters index 2435d30f..54b26101 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.filters +++ b/FizzBuzz Enterprise Edition.vcxproj.filters @@ -25,6 +25,9 @@ Source files + + Source files + @@ -33,5 +36,8 @@ Header files + + Header files + \ No newline at end of file diff --git a/argparser.cpp b/argparser.cpp new file mode 100644 index 00000000..0ffe3f7a --- /dev/null +++ b/argparser.cpp @@ -0,0 +1,76 @@ +#include +#include +#include "cpp_tstring.hpp" +#include "argparser.hpp" + +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"); + +void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { + unsigned int i = 0; + while (i < argc) { + if (lstrcmp(argv[i], TEXT("--help")) == 0) showHelp = true; + else if (lstrcmp(argv[i], TEXT("--output")) == 0) { + i++; + if (i >= argc) { + showHelp = true; + break; + } + this->outputFilename = argv[i]; + if (this->outputFilename == TEXT("")) { + showHelp = true; + break; + } + } + else if (lstrcmp(argv[i], TEXT("--enable_cache")) == 0) { + i++; + if (i >= argc) { + showHelp = true; + break; + } + this->cacheFile = argv[i]; + if (this->cacheFile == TEXT("")) { + showHelp = true; + break; + } + } + else if (lstrcmp(argv[i], TEXT("--input_source")) == 0) { + inputSourceSpecified = true; + i++; + if (i >= argc) { + showHelp = true; + break; + } + if (lstrcmp(argv[i], TEXT("stdinput")) == 0) { + this->inputFile = TEXT(""); + } + else if (lstrcmp(argv[i], TEXT("file")) == 0) { + i++; + if (i >= argc) { + showHelp = true; + break; + } + this->inputFile = argv[i]; + if (this->inputFile == TEXT("")) { + showHelp = true; + break; + } + } + else { + showHelp = true; + break; + } + } + else if (lstrcmp(argv[i], TEXT("--no-splash")) == 0) { + this->noSplash = true; + } + i++; + } + if (!inputSourceSpecified) showHelp = true; +} \ No newline at end of file diff --git a/argparser.hpp b/argparser.hpp new file mode 100644 index 00000000..c8beab48 --- /dev/null +++ b/argparser.hpp @@ -0,0 +1,16 @@ +#include +#include +#include "cpp_tstring.hpp" + +extern TCHAR helpMessage[]; + +struct ArgumentParser { + bool showHelp = false; + tstring outputFilename = TEXT(""); + tstring cacheFile = TEXT(""); + tstring inputFile = TEXT(""); + bool inputSourceSpecified = false; + bool noSplash = false; + + void parse(const unsigned int argc, const TCHAR* const argv[]); +}; diff --git a/main.cpp b/main.cpp index 18e2e220..79257c74 100644 --- a/main.cpp +++ b/main.cpp @@ -1,11 +1,21 @@ #include #include #include "console.hpp" +#include "argparser.hpp" +// Welcome to 2024, where open source projects have a copyright. TCHAR copyrightMessage[] = { - TEXT("FizzBuzz Enterprise Edition. Copyright 2024 EnterpriseQualityCoding - the most serious and not satire or fake company in the uinverse.") + TEXT("FizzBuzz Enterprise Edition.\nEnterpriseQualityCoding - the most serious and not satire or fake company in the uinverse.\n") }; +ArgumentParser argParser; + int _tmain(unsigned int argc, TCHAR* argv[]) { - console.writeOutput(copyrightMessage); + argParser.parse(argc, argv); + if (!argParser.noSplash) console.writeOutput(copyrightMessage); + if (argParser.showHelp) { + console.writeOutput(helpMessage); + return -1; + } + return 0; } \ No newline at end of file From 943d1223314c0fb4e39e567db640bd076c8b65a9 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 14:36:14 +0400 Subject: [PATCH 07/42] Add an input reader --- FizzBuzz Enterprise Edition.vcxproj | 2 + FizzBuzz Enterprise Edition.vcxproj.filters | 6 ++ input_reader.cpp | 67 +++++++++++++++++++++ input_reader.hpp | 30 +++++++++ main.cpp | 8 +++ 5 files changed, 113 insertions(+) create mode 100644 input_reader.cpp create mode 100644 input_reader.hpp diff --git a/FizzBuzz Enterprise Edition.vcxproj b/FizzBuzz Enterprise Edition.vcxproj index 2064109e..48b9a171 100644 --- a/FizzBuzz Enterprise Edition.vcxproj +++ b/FizzBuzz Enterprise Edition.vcxproj @@ -129,12 +129,14 @@ + + diff --git a/FizzBuzz Enterprise Edition.vcxproj.filters b/FizzBuzz Enterprise Edition.vcxproj.filters index 54b26101..53d6a661 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.filters +++ b/FizzBuzz Enterprise Edition.vcxproj.filters @@ -28,6 +28,9 @@ Source files + + Source files + @@ -39,5 +42,8 @@ Header files + + Header files + \ No newline at end of file diff --git a/input_reader.cpp b/input_reader.cpp new file mode 100644 index 00000000..38d34b3b --- /dev/null +++ b/input_reader.cpp @@ -0,0 +1,67 @@ +#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, 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 input file for reading: ")); + console.writeError(arr); + console.writeError(TEXT("\n")); + abort(); + } +} + +unsigned long long int FileInputReader::read() { + if (inputExhausted) throw std::exception("There's nothing more in the input."); + TCHAR currChar = '\0'; + DWORD temp = 0; + unsigned long long int result = 0; + do { + if (!ReadFile(this->hFile, &currChar, 1, &temp, NULL)) { + if (GetLastError() != ERROR_HANDLE_EOF) abort(); + temp = 0; + } + if (temp == 0) { + inputExhausted = true; + break; + } + result *= 10; + result += currChar - TEXT('0'); + } while (currChar >= TEXT('0') && currChar <= TEXT('9')); + return result; +} + +unsigned long long int ConsoleInputReader::read() { + if (inputExhausted) throw std::exception("There's nothing more in the input."); + TCHAR currChar = '\0'; + DWORD temp = 0; + unsigned long long int result = 0; + do { + if (!ReadConsole(this->stdOutput, &currChar, 1, &temp, NULL)) { + if (GetLastError() != ERROR_HANDLE_EOF) abort(); + temp = 0; + } + if (temp == 0) { + inputExhausted = true; + break; + } + result *= 10; + result += currChar - TEXT('0'); + } while (currChar >= TEXT('0') && currChar <= TEXT('9')); + return result; +} \ No newline at end of file diff --git a/input_reader.hpp b/input_reader.hpp new file mode 100644 index 00000000..459405d7 --- /dev/null +++ b/input_reader.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include +#include +#include +#include "cpp_tstring.hpp" +#include "console.hpp" + +struct BaseInputReader { + bool inputExhausted = false; + + virtual unsigned long long int read() = 0; + virtual std::vector readRemainingInput(); +}; + +struct FileInputReader : BaseInputReader { + HANDLE hFile; + + FileInputReader(tstring file); + + virtual unsigned long long int read(); +}; + +struct ConsoleInputReader : BaseInputReader { + HANDLE stdOutput; + + ConsoleInputReader() : stdOutput(GetStdHandle(STD_OUTPUT_HANDLE)) {}; + + virtual unsigned long long int read(); +}; diff --git a/main.cpp b/main.cpp index 79257c74..930a03a0 100644 --- a/main.cpp +++ b/main.cpp @@ -2,6 +2,7 @@ #include #include "console.hpp" #include "argparser.hpp" +#include "input_reader.hpp" // Welcome to 2024, where open source projects have a copyright. TCHAR copyrightMessage[] = { @@ -9,6 +10,7 @@ TCHAR copyrightMessage[] = { }; ArgumentParser argParser; +BaseInputReader* inputReader; int _tmain(unsigned int argc, TCHAR* argv[]) { argParser.parse(argc, argv); @@ -17,5 +19,11 @@ int _tmain(unsigned int argc, TCHAR* argv[]) { console.writeOutput(helpMessage); return -1; } + if (argParser.inputFile == TEXT("")) { + inputReader = new ConsoleInputReader(); + } + else { + inputReader = new FileInputReader(argParser.inputFile); + } return 0; } \ No newline at end of file From d0e0477162be1a02dc9457df3283c9dcee87373a Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 14:52:00 +0400 Subject: [PATCH 08/42] Create _FizzBuzzer --- FizzBuzz Enterprise Edition.vcxproj | 2 ++ FizzBuzz Enterprise Edition.vcxproj.filters | 6 ++++++ fizz_buzz.cpp | 21 +++++++++++++++++++++ fizz_buzz.hpp | 15 +++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 fizz_buzz.cpp create mode 100644 fizz_buzz.hpp diff --git a/FizzBuzz Enterprise Edition.vcxproj b/FizzBuzz Enterprise Edition.vcxproj index 48b9a171..d14aa23b 100644 --- a/FizzBuzz Enterprise Edition.vcxproj +++ b/FizzBuzz Enterprise Edition.vcxproj @@ -129,6 +129,7 @@ + @@ -136,6 +137,7 @@ + diff --git a/FizzBuzz Enterprise Edition.vcxproj.filters b/FizzBuzz Enterprise Edition.vcxproj.filters index 53d6a661..b88dabb3 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.filters +++ b/FizzBuzz Enterprise Edition.vcxproj.filters @@ -31,6 +31,9 @@ Source files + + Source files + @@ -45,5 +48,8 @@ Header files + + Header files + \ No newline at end of file diff --git a/fizz_buzz.cpp b/fizz_buzz.cpp new file mode 100644 index 00000000..645be1cc --- /dev/null +++ b/fizz_buzz.cpp @@ -0,0 +1,21 @@ +#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; +} + +_FizzBuzzer fizzbuzzer = {}; \ No newline at end of file diff --git a/fizz_buzz.hpp b/fizz_buzz.hpp new file mode 100644 index 00000000..bc391100 --- /dev/null +++ b/fizz_buzz.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include +#include + +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); +}; + +extern _FizzBuzzer fizzbuzzer; \ No newline at end of file From 1d8dbcf78b2aae12b704eb91abf6075dcb926f21 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 15:22:38 +0400 Subject: [PATCH 09/42] Add an output writer --- FizzBuzz Enterprise Edition.vcxproj | 2 + FizzBuzz Enterprise Edition.vcxproj.filters | 6 +++ fizz_buzz.cpp | 16 ++++++- fizz_buzz.hpp | 5 +- input_reader.cpp | 4 +- main.cpp | 2 + output_writer.cpp | 52 +++++++++++++++++++++ output_writer.hpp | 22 +++++++++ 8 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 output_writer.cpp create mode 100644 output_writer.hpp diff --git a/FizzBuzz Enterprise Edition.vcxproj b/FizzBuzz Enterprise Edition.vcxproj index d14aa23b..ee679fb5 100644 --- a/FizzBuzz Enterprise Edition.vcxproj +++ b/FizzBuzz Enterprise Edition.vcxproj @@ -132,6 +132,7 @@ + @@ -139,6 +140,7 @@ + diff --git a/FizzBuzz Enterprise Edition.vcxproj.filters b/FizzBuzz Enterprise Edition.vcxproj.filters index b88dabb3..38cbcec8 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.filters +++ b/FizzBuzz Enterprise Edition.vcxproj.filters @@ -34,6 +34,9 @@ Source files + + Header files + @@ -51,5 +54,8 @@ Header files + + Header files + \ No newline at end of file diff --git a/fizz_buzz.cpp b/fizz_buzz.cpp index 645be1cc..ae2fdbf4 100644 --- a/fizz_buzz.cpp +++ b/fizz_buzz.cpp @@ -18,4 +18,18 @@ FizzBuzzResult _FizzBuzzer::fizzBuzz(const unsigned long long int number) { return calculatedResult; } -_FizzBuzzer fizzbuzzer = {}; \ No newline at end of file +_FizzBuzzer fizzbuzzer = {}; + +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) + ); +} \ No newline at end of file diff --git a/fizz_buzz.hpp b/fizz_buzz.hpp index bc391100..b9a5fef9 100644 --- a/fizz_buzz.hpp +++ b/fizz_buzz.hpp @@ -12,4 +12,7 @@ struct _FizzBuzzer { FizzBuzzResult fizzBuzz(const unsigned long long int number); }; -extern _FizzBuzzer fizzbuzzer; \ No newline at end of file +extern _FizzBuzzer fizzbuzzer; + +FizzBuzzResult operator|(FizzBuzzResult lhs, FizzBuzzResult rhs); +FizzBuzzResult operator&(FizzBuzzResult lhs, FizzBuzzResult rhs); \ No newline at end of file diff --git a/input_reader.cpp b/input_reader.cpp index 38d34b3b..12ee524b 100644 --- a/input_reader.cpp +++ b/input_reader.cpp @@ -14,8 +14,8 @@ std::vector BaseInputReader::readRemainingInput() { } FileInputReader::FileInputReader(tstring file) { - this->hFile = CreateFile(file.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - if (GetLastError() != NO_ERROR && GetLastError() != ERROR_ALREADY_EXISTS) { + 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(); diff --git a/main.cpp b/main.cpp index 930a03a0..3b014e5f 100644 --- a/main.cpp +++ b/main.cpp @@ -2,6 +2,7 @@ #include #include "console.hpp" #include "argparser.hpp" +#include "output_writer.hpp" #include "input_reader.hpp" // Welcome to 2024, where open source projects have a copyright. @@ -11,6 +12,7 @@ TCHAR copyrightMessage[] = { ArgumentParser argParser; BaseInputReader* inputReader; +BaseOutputWriter* outputWriter; int _tmain(unsigned int argc, TCHAR* argv[]) { argParser.parse(argc, argv); diff --git a/output_writer.cpp b/output_writer.cpp new file mode 100644 index 00000000..9199cf80 --- /dev/null +++ b/output_writer.cpp @@ -0,0 +1,52 @@ +#include "output_writer.hpp" +#include "cpp_tstring.hpp" +#include "fizz_buzz.hpp" +#include +#include +#include "console.hpp" +#include + +void BaseOutputWriter::writeOne(unsigned long long int number, FizzBuzzResult result) { + tstring str; + if (number == 0) str = TEXT("0"); + else while (number != 0) { + str.push_back((TCHAR)(number + TEXT('0'))); + } + str.reserve(); + str.append(TEXT(":")); + + if ((result & FizzBuzzResult::FIZZ) != FizzBuzzResult::UNKNOWN) str.append(TEXT("Fizz")); + if ((result & FizzBuzzResult::BUZZ) != FizzBuzzResult::UNKNOWN) str.append(TEXT("Buzz")); + if ((result & FizzBuzzResult::NONE) != FizzBuzzResult::UNKNOWN) str.append(str.substr(0, str.length() - 1)); + str.push_back('\n'); + _write(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(), GENERIC_WRITE, 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; + WriteFile(this->hFile, str.c_str(), str.length(), &dataWritten, NULL); + if (dataWritten != str.length()) abort(); +} \ No newline at end of file diff --git a/output_writer.hpp b/output_writer.hpp new file mode 100644 index 00000000..3f9c6ed1 --- /dev/null +++ b/output_writer.hpp @@ -0,0 +1,22 @@ +#pragma once +#include "cpp_tstring.hpp" +#include "fizz_buzz.hpp" +#include + +struct 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); +}; \ No newline at end of file From 6e6808f36a00d7b0c660900c8c162cd31998995f Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 15:31:40 +0400 Subject: [PATCH 10/42] Add a fake input stream, which just spams numbers from 1 to 100 --- FizzBuzz Enterprise Edition.vcxproj.filters | 2 +- argparser.cpp | 6 +++++- argparser.hpp | 1 + input_reader.cpp | 6 ++++++ input_reader.hpp | 5 +++++ main.cpp | 15 ++++++++++++++- 6 files changed, 32 insertions(+), 3 deletions(-) diff --git a/FizzBuzz Enterprise Edition.vcxproj.filters b/FizzBuzz Enterprise Edition.vcxproj.filters index 38cbcec8..71fbc503 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.filters +++ b/FizzBuzz Enterprise Edition.vcxproj.filters @@ -35,7 +35,7 @@ Source files - Header files + Source files diff --git a/argparser.cpp b/argparser.cpp index 0ffe3f7a..4bb7636e 100644 --- a/argparser.cpp +++ b/argparser.cpp @@ -10,7 +10,8 @@ TCHAR helpMessage[] = TEXT("Usage: [program] [--output file] [--enable_cache cac \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\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"); void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { unsigned int i = 0; @@ -62,6 +63,9 @@ void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { break; } } + else if (lstrcmp(argv[i], TEXT("testinput")) == 0) { + this->useTestInput = true; + } else { showHelp = true; break; diff --git a/argparser.hpp b/argparser.hpp index c8beab48..c59ec3b5 100644 --- a/argparser.hpp +++ b/argparser.hpp @@ -11,6 +11,7 @@ struct ArgumentParser { tstring inputFile = TEXT(""); bool inputSourceSpecified = false; bool noSplash = false; + bool useTestInput = false; void parse(const unsigned int argc, const TCHAR* const argv[]); }; diff --git a/input_reader.cpp b/input_reader.cpp index 12ee524b..56a864d1 100644 --- a/input_reader.cpp +++ b/input_reader.cpp @@ -64,4 +64,10 @@ unsigned long long int ConsoleInputReader::read() { result += currChar - TEXT('0'); } while (currChar >= TEXT('0') && currChar <= TEXT('9')); return result; +} + +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++; } \ No newline at end of file diff --git a/input_reader.hpp b/input_reader.hpp index 459405d7..ea43a96c 100644 --- a/input_reader.hpp +++ b/input_reader.hpp @@ -28,3 +28,8 @@ struct ConsoleInputReader : BaseInputReader { virtual unsigned long long int read(); }; + +struct TestInputReader : BaseInputReader { + unsigned long long int i = 1; + virtual unsigned long long int read(); +}; \ No newline at end of file diff --git a/main.cpp b/main.cpp index 3b014e5f..78e91650 100644 --- a/main.cpp +++ b/main.cpp @@ -21,11 +21,24 @@ int _tmain(unsigned int argc, TCHAR* argv[]) { console.writeOutput(helpMessage); return -1; } - if (argParser.inputFile == TEXT("")) { + if (argParser.useTestInput) { + inputReader = new TestInputReader(); + } + else if (argParser.inputFile == TEXT("")) { inputReader = new ConsoleInputReader(); } else { inputReader = new FileInputReader(argParser.inputFile); } + if (argParser.outputFilename != TEXT("")) { + outputWriter = new FileOutputWriter(argParser.outputFilename); + } + else { + outputWriter = new ConsoleOutputWriter(); + } + while (!inputReader->inputExhausted) { + unsigned long long int value = inputReader->read(); + outputWriter->writeOne(value, fizzbuzzer.fizzBuzz(value)); + } return 0; } \ No newline at end of file From 436218158bdc8de9287673f82eddeac4ab20eae2 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 15:34:04 +0400 Subject: [PATCH 11/42] Check if the file is empty. --- input_reader.cpp | 3 +++ main.cpp | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/input_reader.cpp b/input_reader.cpp index 56a864d1..ae2e5279 100644 --- a/input_reader.cpp +++ b/input_reader.cpp @@ -24,6 +24,9 @@ FileInputReader::FileInputReader(tstring file) { console.writeError(TEXT("\n")); abort(); } + DWORD fileSize; + GetFileSize(this->hFile, &fileSize); + if (fileSize == 0) inputExhausted = true; } unsigned long long int FileInputReader::read() { diff --git a/main.cpp b/main.cpp index 78e91650..009fd2dd 100644 --- a/main.cpp +++ b/main.cpp @@ -37,8 +37,13 @@ int _tmain(unsigned int argc, TCHAR* argv[]) { outputWriter = new ConsoleOutputWriter(); } while (!inputReader->inputExhausted) { - unsigned long long int value = inputReader->read(); - outputWriter->writeOne(value, fizzbuzzer.fizzBuzz(value)); + 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; + } } return 0; } \ No newline at end of file From 304a98fa2a8b93332b0af8ddc24468d90a2fb672 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 15:38:12 +0400 Subject: [PATCH 12/42] fix --- input_reader.cpp | 10 ++++++++++ input_reader.hpp | 6 ++++++ main.cpp | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/input_reader.cpp b/input_reader.cpp index ae2e5279..c31e80fb 100644 --- a/input_reader.cpp +++ b/input_reader.cpp @@ -73,4 +73,14 @@ 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; } \ No newline at end of file diff --git a/input_reader.hpp b/input_reader.hpp index ea43a96c..a80a87f7 100644 --- a/input_reader.hpp +++ b/input_reader.hpp @@ -9,6 +9,9 @@ struct BaseInputReader { bool inputExhausted = false; + virtual bool getIsInputExhausted() { + return this->inputExhausted; + } virtual unsigned long long int read() = 0; virtual std::vector readRemainingInput(); }; @@ -19,6 +22,7 @@ struct FileInputReader : BaseInputReader { FileInputReader(tstring file); virtual unsigned long long int read(); + virtual bool getIsInputExhausted(); }; struct ConsoleInputReader : BaseInputReader { @@ -27,9 +31,11 @@ struct ConsoleInputReader : BaseInputReader { ConsoleInputReader() : stdOutput(GetStdHandle(STD_OUTPUT_HANDLE)) {}; 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 index 009fd2dd..9b5a5ca7 100644 --- a/main.cpp +++ b/main.cpp @@ -36,7 +36,7 @@ int _tmain(unsigned int argc, TCHAR* argv[]) { else { outputWriter = new ConsoleOutputWriter(); } - while (!inputReader->inputExhausted) { + while (!inputReader->getIsInputExhausted()) { try { unsigned long long int value = inputReader->read(); outputWriter->writeOne(value, fizzbuzzer.fizzBuzz(value)); From 55295bc728334ef921e30854fc1301ebb114580f Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 16:43:35 +0400 Subject: [PATCH 13/42] more bug fixes // isn't this supposed to be easy --- FizzBuzz Enterprise Edition.vcxproj.user | 17 +++++- fizz_buzz.hpp | 2 +- input_reader.cpp | 67 +++++++++++++++--------- input_reader.hpp | 4 -- output_writer.cpp | 7 +-- 5 files changed, 64 insertions(+), 33 deletions(-) diff --git a/FizzBuzz Enterprise Edition.vcxproj.user b/FizzBuzz Enterprise Edition.vcxproj.user index 88a55094..22adfe85 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.user +++ b/FizzBuzz Enterprise Edition.vcxproj.user @@ -1,4 +1,19 @@  - + + --input_source stdinput + WindowsLocalDebugger + + + --input_source stdinput + WindowsLocalDebugger + + + --input_source stdinput + WindowsLocalDebugger + + + --input_source stdinput + WindowsLocalDebugger + \ No newline at end of file diff --git a/fizz_buzz.hpp b/fizz_buzz.hpp index b9a5fef9..061c3992 100644 --- a/fizz_buzz.hpp +++ b/fizz_buzz.hpp @@ -4,7 +4,7 @@ #include enum class FizzBuzzResult : uint8_t { - UNKNOWN = 0, NONE = 1 << 0, FIZZ = 1 << 1, BUZZ = 1 << 2, FIZZBUZZ = FIZZ & BUZZ + UNKNOWN = 0, NONE = 1 << 0, FIZZ = 1 << 1, BUZZ = 1 << 2, FIZZBUZZ = FIZZ | BUZZ }; struct _FizzBuzzer { diff --git a/input_reader.cpp b/input_reader.cpp index c31e80fb..238adcd3 100644 --- a/input_reader.cpp +++ b/input_reader.cpp @@ -24,49 +24,68 @@ FileInputReader::FileInputReader(tstring file) { console.writeError(TEXT("\n")); abort(); } - DWORD fileSize; - GetFileSize(this->hFile, &fileSize); + unsigned long long int fileSize; + GetFileSizeEx(this->hFile, (PLARGE_INTEGER) & fileSize); if (fileSize == 0) inputExhausted = true; } -unsigned long long int FileInputReader::read() { - if (inputExhausted) throw std::exception("There's nothing more in the input."); +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."); + return -1; + } + 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 { - if (!ReadFile(this->hFile, &currChar, 1, &temp, NULL)) { + // 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) { - inputExhausted = true; + _this->inputExhausted = true; + if (isFirstChar) throw std::exception("There's nothing more in the input."); break; } - result *= 10; - result += currChar - TEXT('0'); + 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."); - TCHAR currChar = '\0'; - DWORD temp = 0; - unsigned long long int result = 0; - do { - if (!ReadConsole(this->stdOutput, &currChar, 1, &temp, NULL)) { - if (GetLastError() != ERROR_HANDLE_EOF) abort(); - temp = 0; - } - if (temp == 0) { - inputExhausted = true; - break; - } - result *= 10; - result += currChar - TEXT('0'); - } while (currChar >= TEXT('0') && currChar <= TEXT('9')); - return result; + 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() { diff --git a/input_reader.hpp b/input_reader.hpp index a80a87f7..4ab48fb3 100644 --- a/input_reader.hpp +++ b/input_reader.hpp @@ -26,10 +26,6 @@ struct FileInputReader : BaseInputReader { }; struct ConsoleInputReader : BaseInputReader { - HANDLE stdOutput; - - ConsoleInputReader() : stdOutput(GetStdHandle(STD_OUTPUT_HANDLE)) {}; - virtual unsigned long long int read(); virtual bool getIsInputExhausted(); }; diff --git a/output_writer.cpp b/output_writer.cpp index 9199cf80..3a3db958 100644 --- a/output_writer.cpp +++ b/output_writer.cpp @@ -5,16 +5,17 @@ #include #include "console.hpp" #include +#include void BaseOutputWriter::writeOne(unsigned long long int number, FizzBuzzResult result) { tstring str; if (number == 0) str = TEXT("0"); else while (number != 0) { - str.push_back((TCHAR)(number + TEXT('0'))); + str.push_back((TCHAR)((number % 10) + TEXT('0'))); + number /= 10; } - str.reserve(); + std::reverse(str.begin(), str.end()); str.append(TEXT(":")); - if ((result & FizzBuzzResult::FIZZ) != FizzBuzzResult::UNKNOWN) str.append(TEXT("Fizz")); if ((result & FizzBuzzResult::BUZZ) != FizzBuzzResult::UNKNOWN) str.append(TEXT("Buzz")); if ((result & FizzBuzzResult::NONE) != FizzBuzzResult::UNKNOWN) str.append(str.substr(0, str.length() - 1)); From 772329211dbb8122d929a0681f18eee8ba0fbbb3 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 16:52:44 +0400 Subject: [PATCH 14/42] Add a readme --- FizzBuzz Enterprise Edition.vcxproj | 3 +++ FizzBuzz Enterprise Edition.vcxproj.filters | 5 +++++ README.md | 21 +++++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 README.md diff --git a/FizzBuzz Enterprise Edition.vcxproj b/FizzBuzz Enterprise Edition.vcxproj index ee679fb5..565a29b8 100644 --- a/FizzBuzz Enterprise Edition.vcxproj +++ b/FizzBuzz Enterprise Edition.vcxproj @@ -142,6 +142,9 @@ + + + diff --git a/FizzBuzz Enterprise Edition.vcxproj.filters b/FizzBuzz Enterprise Edition.vcxproj.filters index 71fbc503..70cd243e 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.filters +++ b/FizzBuzz Enterprise Edition.vcxproj.filters @@ -58,4 +58,9 @@ Header files + + + Markdown files + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..e90f22ea --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# 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. + +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!). + +The usage is simple: + +## 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! + +## 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. +``` \ No newline at end of file From a4531d8073f433f49f652636dd822df53acfaa07 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 17:01:44 +0400 Subject: [PATCH 15/42] Fix file writing, update .gitignore --- .gitignore | 5 ++++- FizzBuzz Enterprise Edition.vcxproj.user | 8 ++++---- output_writer.cpp | 9 ++++++--- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 8dd4607a..c1fd02dd 100644 --- a/.gitignore +++ b/.gitignore @@ -395,4 +395,7 @@ FodyWeavers.xsd *.msp # JetBrains Rider -*.sln.iml \ No newline at end of file +*.sln.iml + +# Project-specific: test.txt for testing file output +test.txt \ No newline at end of file diff --git a/FizzBuzz Enterprise Edition.vcxproj.user b/FizzBuzz Enterprise Edition.vcxproj.user index 22adfe85..0fc3b595 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.user +++ b/FizzBuzz Enterprise Edition.vcxproj.user @@ -1,19 +1,19 @@  - --input_source stdinput + --input_source testinput --output test.txt WindowsLocalDebugger - --input_source stdinput + --input_source testinput --output test.txt WindowsLocalDebugger - --input_source stdinput + --input_source testinput --output test.txt WindowsLocalDebugger - --input_source stdinput + --input_source testinput --output test.txt WindowsLocalDebugger \ No newline at end of file diff --git a/output_writer.cpp b/output_writer.cpp index 3a3db958..95ffc0c6 100644 --- a/output_writer.cpp +++ b/output_writer.cpp @@ -34,7 +34,7 @@ void ConsoleOutputWriter::_write(tstring str) { } FileOutputWriter::FileOutputWriter(tstring file) { - this->hFile = CreateFile(file.c_str(), GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + 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; @@ -47,7 +47,10 @@ FileOutputWriter::FileOutputWriter(tstring file) { } void FileOutputWriter::_write(tstring str) { + // TODO: Broken. DWORD dataWritten; - WriteFile(this->hFile, str.c_str(), str.length(), &dataWritten, NULL); - if (dataWritten != str.length()) abort(); + 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(); } \ No newline at end of file From 57f3932503f30c4d9f64144291c94a0167693155 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 17:03:33 +0400 Subject: [PATCH 16/42] Already fixed --- output_writer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/output_writer.cpp b/output_writer.cpp index 95ffc0c6..6312c6fc 100644 --- a/output_writer.cpp +++ b/output_writer.cpp @@ -47,7 +47,6 @@ FileOutputWriter::FileOutputWriter(tstring file) { } void FileOutputWriter::_write(tstring str) { - // TODO: Broken. DWORD dataWritten; SetFilePointer(hFile, 0, NULL, FILE_END); const TCHAR* c_str = str.c_str(); From b4e8a09cf1b6a9ab4702d8c259a270b3f51506cf Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 18:15:05 +0400 Subject: [PATCH 17/42] Add persistent cache (not tested) --- FizzBuzz Enterprise Edition.vcxproj | 2 + FizzBuzz Enterprise Edition.vcxproj.filters | 6 ++ cpp_tstring.hpp | 4 + fizz_buzz_persistent_cache.cpp | 92 +++++++++++++++++++++ fizz_buzz_persistent_cache.hpp | 21 +++++ main.cpp | 16 ++++ 6 files changed, 141 insertions(+) create mode 100644 fizz_buzz_persistent_cache.cpp create mode 100644 fizz_buzz_persistent_cache.hpp diff --git a/FizzBuzz Enterprise Edition.vcxproj b/FizzBuzz Enterprise Edition.vcxproj index 565a29b8..f866b7b9 100644 --- a/FizzBuzz Enterprise Edition.vcxproj +++ b/FizzBuzz Enterprise Edition.vcxproj @@ -130,6 +130,7 @@ + @@ -139,6 +140,7 @@ + diff --git a/FizzBuzz Enterprise Edition.vcxproj.filters b/FizzBuzz Enterprise Edition.vcxproj.filters index 70cd243e..df005c22 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.filters +++ b/FizzBuzz Enterprise Edition.vcxproj.filters @@ -37,6 +37,9 @@ Source files + + Source files + @@ -57,6 +60,9 @@ Header files + + Header files + diff --git a/cpp_tstring.hpp b/cpp_tstring.hpp index e503ff4e..1bd2c8f8 100644 --- a/cpp_tstring.hpp +++ b/cpp_tstring.hpp @@ -6,3 +6,7 @@ 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_persistent_cache.cpp b/fizz_buzz_persistent_cache.cpp new file mode 100644 index 00000000..97d18a2b --- /dev/null +++ b/fizz_buzz_persistent_cache.cpp @@ -0,0 +1,92 @@ +#include "fizz_buzz_persistent_cache.hpp" +#include +#include +#include "fizz_buzz.hpp" +#include "cpp_tstring.hpp" +#include "console.hpp" +#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()) { + 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) + TCHAR* fileData = new TCHAR[size]; + ZeroMemory(fileData, size * sizeof(TCHAR)); + SetFilePointer(this->hFile, NULL, NULL, FILE_BEGIN); + DWORD actualDataSize = 0; + if (!ReadFile(this->hFile, fileData, size, &actualDataSize, NULL)) abort(); + tistream str(tstring(fileData)); + tstring line; + while (std::getline, std::allocator>(str, line), TEXT('\n')) { + if (line[line.size() - 1] == TEXT('\r')) line.pop_back(); + if (line.length() == 0) continue; + size_t separator = line.find_first_of(':'); + if (separator == tstring::npos) continue; + tstring numberStr, resultStr; + unsigned long long int number = 0; + uint8_t numberResult = 0; + FizzBuzzResult result = FizzBuzzResult::UNKNOWN; + numberStr = line.substr(0, separator); + resultStr = line.substr(separator + 1); + std::reverse(numberStr.begin(), numberStr.end()); + while (numberStr != TEXT("")) { + number *= 10; + if (numberStr[numberStr.size() - 1] < '0' || numberStr[numberStr.size() - 1] > '9') abort(); + number += numberStr[numberStr.size() - 1] - TEXT('0'); + numberStr.pop_back(); + } + std::reverse(resultStr.begin(), resultStr.end()); + while (resultStr != TEXT("")) { + numberResult *= 10; + if (resultStr[resultStr.size() - 1] < '0' || resultStr[resultStr.size() - 1] > '9') abort(); + numberResult += resultStr[resultStr.size() - 1] - TEXT('0'); + resultStr.pop_back(); + } + result = static_cast(numberResult); + cache[number] = result; + } +} + +void FizzBuzzCacheLoader::dumpCache(std::unordered_map& cache) { + SetFilePointer(this->hFile, NULL, NULL, FILE_BEGIN); + SetEndOfFile(this->hFile); + std::for_each(cache.begin(), cache.end(), [&](std::pair& data) { + tstring line; + tstring temp; + + while (data.first != 0) { + line.push_back((TCHAR)(data.first + TEXT('0'))); + } + std::reverse(line.begin(), line.end()); + line.push_back(TEXT(':')); + + uint8_t value = static_cast(data.second); + while (value != 0) { + temp.push_back((TCHAR)(value + TEXT('0'))); + } + line.append(temp); + DWORD realDataWritten = 0; + WriteFile(this->hFile, line.c_str(), line.size() * sizeof(TCHAR), &realDataWritten, NULL); + if (realDataWritten != line.size() * sizeof(TCHAR)) 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/main.cpp b/main.cpp index 9b5a5ca7..dfca1df3 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,7 @@ #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[] = { @@ -13,6 +14,7 @@ TCHAR copyrightMessage[] = { ArgumentParser argParser; BaseInputReader* inputReader; BaseOutputWriter* outputWriter; +FizzBuzzCacheLoader* cacheLoader; int _tmain(unsigned int argc, TCHAR* argv[]) { argParser.parse(argc, argv); @@ -36,6 +38,12 @@ int _tmain(unsigned int argc, TCHAR* argv[]) { else { outputWriter = new ConsoleOutputWriter(); } + + if (argParser.cacheFile != TEXT("")) { + cacheLoader = new FizzBuzzCacheLoader(argParser.cacheFile); + cacheLoader->loadCache(fizzbuzzer.cache); + } + while (!inputReader->getIsInputExhausted()) { try { unsigned long long int value = inputReader->read(); @@ -45,5 +53,13 @@ int _tmain(unsigned int argc, TCHAR* argv[]) { continue; } } + + if (argParser.cacheFile != TEXT("")) { + cacheLoader->dumpCache(fizzbuzzer.cache); + } + + delete[] cacheLoader; + delete[] outputWriter; + delete[] inputReader; return 0; } \ No newline at end of file From f79272ceb9a25a1129698cd830547b9873dd5f3b Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 18:18:20 +0400 Subject: [PATCH 18/42] Close the file handles. --- input_reader.cpp | 4 ++++ input_reader.hpp | 2 ++ output_writer.cpp | 4 ++++ output_writer.hpp | 2 ++ 4 files changed, 12 insertions(+) diff --git a/input_reader.cpp b/input_reader.cpp index 238adcd3..eb4995ef 100644 --- a/input_reader.cpp +++ b/input_reader.cpp @@ -102,4 +102,8 @@ bool FileInputReader::getIsInputExhausted() { } bool ConsoleInputReader::getIsInputExhausted() { return this->inputExhausted; +} + +FileInputReader::~FileInputReader() { + CloseHandle(this->hFile); } \ No newline at end of file diff --git a/input_reader.hpp b/input_reader.hpp index 4ab48fb3..6368e92a 100644 --- a/input_reader.hpp +++ b/input_reader.hpp @@ -14,6 +14,7 @@ struct BaseInputReader { } virtual unsigned long long int read() = 0; virtual std::vector readRemainingInput(); + virtual ~BaseInputReader() {}; }; struct FileInputReader : BaseInputReader { @@ -23,6 +24,7 @@ struct FileInputReader : BaseInputReader { virtual unsigned long long int read(); virtual bool getIsInputExhausted(); + ~FileInputReader(); }; struct ConsoleInputReader : BaseInputReader { diff --git a/output_writer.cpp b/output_writer.cpp index 6312c6fc..3c22d14a 100644 --- a/output_writer.cpp +++ b/output_writer.cpp @@ -52,4 +52,8 @@ void FileOutputWriter::_write(tstring str) { 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 index 3f9c6ed1..9936d732 100644 --- a/output_writer.hpp +++ b/output_writer.hpp @@ -4,6 +4,7 @@ #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); @@ -19,4 +20,5 @@ struct FileOutputWriter : BaseOutputWriter { FileOutputWriter(tstring file); virtual void _write(tstring str); + ~FileOutputWriter(); }; \ No newline at end of file From 65242b6a3e7b1d5e6b748c7a4dfca6dd879a639e Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 8 Jul 2024 18:47:44 +0400 Subject: [PATCH 19/42] Fix persistent caching. --- .gitignore | 5 +- FizzBuzz Enterprise Edition.vcxproj.user | 8 +-- fizz_buzz_persistent_cache.cpp | 79 ++++++++++-------------- main.cpp | 6 +- 4 files changed, 44 insertions(+), 54 deletions(-) diff --git a/.gitignore b/.gitignore index c1fd02dd..53879e92 100644 --- a/.gitignore +++ b/.gitignore @@ -397,5 +397,6 @@ FodyWeavers.xsd # JetBrains Rider *.sln.iml -# Project-specific: test.txt for testing file output -test.txt \ No newline at end of file +# 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/FizzBuzz Enterprise Edition.vcxproj.user b/FizzBuzz Enterprise Edition.vcxproj.user index 0fc3b595..952ab4c7 100644 --- a/FizzBuzz Enterprise Edition.vcxproj.user +++ b/FizzBuzz Enterprise Edition.vcxproj.user @@ -1,19 +1,19 @@  - --input_source testinput --output test.txt + --input_source testinput --output test.txt --enable_cache cache.txt WindowsLocalDebugger - --input_source testinput --output test.txt + --input_source testinput --output test.txt --enable_cache cache.txt WindowsLocalDebugger - --input_source testinput --output test.txt + --input_source testinput --output test.txt --enable_cache cache.txt WindowsLocalDebugger - --input_source testinput --output test.txt + --input_source testinput --output test.txt --enable_cache cache.txt WindowsLocalDebugger \ No newline at end of file diff --git a/fizz_buzz_persistent_cache.cpp b/fizz_buzz_persistent_cache.cpp index 97d18a2b..8d086458 100644 --- a/fizz_buzz_persistent_cache.cpp +++ b/fizz_buzz_persistent_cache.cpp @@ -4,12 +4,13 @@ #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()) { + 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(); @@ -25,66 +26,54 @@ void FizzBuzzCacheLoader::loadCache(std::unordered_maphFile, (PLARGE_INTEGER)&size); if (size > ((size_t)-1)) abort(); // (not possible under normal circumstances) - TCHAR* fileData = new TCHAR[size]; - ZeroMemory(fileData, size * sizeof(TCHAR)); - SetFilePointer(this->hFile, NULL, NULL, FILE_BEGIN); - DWORD actualDataSize = 0; - if (!ReadFile(this->hFile, fileData, size, &actualDataSize, NULL)) abort(); - tistream str(tstring(fileData)); - tstring line; - while (std::getline, std::allocator>(str, line), TEXT('\n')) { - if (line[line.size() - 1] == TEXT('\r')) line.pop_back(); - if (line.length() == 0) continue; - size_t separator = line.find_first_of(':'); - if (separator == tstring::npos) continue; - tstring numberStr, resultStr; - unsigned long long int number = 0; - uint8_t numberResult = 0; - FizzBuzzResult result = FizzBuzzResult::UNKNOWN; - numberStr = line.substr(0, separator); - resultStr = line.substr(separator + 1); - std::reverse(numberStr.begin(), numberStr.end()); - while (numberStr != TEXT("")) { - number *= 10; - if (numberStr[numberStr.size() - 1] < '0' || numberStr[numberStr.size() - 1] > '9') abort(); - number += numberStr[numberStr.size() - 1] - TEXT('0'); - numberStr.pop_back(); - } - std::reverse(resultStr.begin(), resultStr.end()); - while (resultStr != TEXT("")) { - numberResult *= 10; - if (resultStr[resultStr.size() - 1] < '0' || resultStr[resultStr.size() - 1] > '9') abort(); - numberResult += resultStr[resultStr.size() - 1] - TEXT('0'); - resultStr.pop_back(); - } - result = static_cast(numberResult); - cache[number] = result; + 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(), [&](std::pair& data) { - tstring line; - tstring temp; + std::for_each(cache.begin(), cache.end(), [&](const std::unordered_map::value_type& data) { + std::string line; + std::string temp; - while (data.first != 0) { - line.push_back((TCHAR)(data.first + TEXT('0'))); + 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(TEXT(':')); + line.push_back(':'); uint8_t value = static_cast(data.second); while (value != 0) { - temp.push_back((TCHAR)(value + TEXT('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() * sizeof(TCHAR), &realDataWritten, NULL); - if (realDataWritten != line.size() * sizeof(TCHAR)) abort(); + WriteFile(this->hFile, line.c_str(), line.size(), &realDataWritten, NULL); + if (realDataWritten != line.size()) abort(); SetFilePointer(this->hFile, NULL, NULL, FILE_END); - }); + }); } FizzBuzzCacheLoader::~FizzBuzzCacheLoader() { diff --git a/main.cpp b/main.cpp index dfca1df3..6ab30f38 100644 --- a/main.cpp +++ b/main.cpp @@ -58,8 +58,8 @@ int _tmain(unsigned int argc, TCHAR* argv[]) { cacheLoader->dumpCache(fizzbuzzer.cache); } - delete[] cacheLoader; - delete[] outputWriter; - delete[] inputReader; + delete cacheLoader; + delete outputWriter; + delete inputReader; return 0; } \ No newline at end of file From 6c1455b8adabdd49dbb6353ae8439f3c665ad114 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 15 Jul 2024 10:58:19 +0400 Subject: [PATCH 20/42] Made flags be constant expressions. --- argparser.cpp | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/argparser.cpp b/argparser.cpp index 4bb7636e..14e7d471 100644 --- a/argparser.cpp +++ b/argparser.cpp @@ -13,11 +13,21 @@ TCHAR helpMessage[] = TEXT("Usage: [program] [--output file] [--enable_cache cac \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. +constexpr TCHAR HELP_FLAG[] = TEXT("--help"); +constexpr TCHAR OUTPUT_FILENAME_FLAG[] = TEXT("--output"); +constexpr TCHAR ENABLE_CACHE_FLAG[] = TEXT("--enable_cache"); +constexpr TCHAR INPUT_SOURCE_FLAG[] = TEXT("--input_source"); +constexpr TCHAR INPUT_SOURCE_STDINPUT[] = TEXT("stdinput"); +constexpr TCHAR INPUT_SOURCE_FILE[] = TEXT("file"); +constexpr TCHAR INPUT_SOURCE_TESTINPUT[] = TEXT("testinput"); +constexpr TCHAR NO_SPLASH_FLAG[] = TEXT("--no-spplash"); + void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { unsigned int i = 0; while (i < argc) { - if (lstrcmp(argv[i], TEXT("--help")) == 0) showHelp = true; - else if (lstrcmp(argv[i], TEXT("--output")) == 0) { + if (lstrcmp(argv[i], HELP_FLAG) == 0) showHelp = true; + else if (lstrcmp(argv[i], OUTPUT_FILENAME_FLAG) == 0) { i++; if (i >= argc) { showHelp = true; @@ -29,7 +39,7 @@ void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { break; } } - else if (lstrcmp(argv[i], TEXT("--enable_cache")) == 0) { + else if (lstrcmp(argv[i], ENABLE_CACHE_FLAG) == 0) { i++; if (i >= argc) { showHelp = true; @@ -41,17 +51,17 @@ void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { break; } } - else if (lstrcmp(argv[i], TEXT("--input_source")) == 0) { + else if (lstrcmp(argv[i], INPUT_SOURCE_FLAG) == 0) { inputSourceSpecified = true; i++; if (i >= argc) { showHelp = true; break; } - if (lstrcmp(argv[i], TEXT("stdinput")) == 0) { + if (lstrcmp(argv[i], INPUT_SOURCE_STDINPUT) == 0) { this->inputFile = TEXT(""); } - else if (lstrcmp(argv[i], TEXT("file")) == 0) { + else if (lstrcmp(argv[i], INPUT_SOURCE_FILE) == 0) { i++; if (i >= argc) { showHelp = true; @@ -63,7 +73,7 @@ void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { break; } } - else if (lstrcmp(argv[i], TEXT("testinput")) == 0) { + else if (lstrcmp(argv[i], INPUT_SOURCE_TESTINPUT) == 0) { this->useTestInput = true; } else { @@ -71,7 +81,7 @@ void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { break; } } - else if (lstrcmp(argv[i], TEXT("--no-splash")) == 0) { + else if (lstrcmp(argv[i], NO_SPLASH_FLAG) == 0) { this->noSplash = true; } i++; From 580325cc6480d31f57a2bb5a50017e145eefaa82 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 15 Jul 2024 11:08:25 +0400 Subject: [PATCH 21/42] Use getter functions instead of direct class member access. --- argparser.cpp | 36 ++++++++++++++++++++++++++++++++++++ argparser.hpp | 13 ++++++++++++- main.cpp | 20 ++++++++++---------- 3 files changed, 58 insertions(+), 11 deletions(-) diff --git a/argparser.cpp b/argparser.cpp index 14e7d471..41b7a76e 100644 --- a/argparser.cpp +++ b/argparser.cpp @@ -87,4 +87,40 @@ void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { i++; } if (!inputSourceSpecified) showHelp = true; +} +bool ArgumentParser::shouldShowHelp() { + return this->showHelp; +} +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(); } \ No newline at end of file diff --git a/argparser.hpp b/argparser.hpp index c59ec3b5..60fd3675 100644 --- a/argparser.hpp +++ b/argparser.hpp @@ -4,7 +4,7 @@ extern TCHAR helpMessage[]; -struct ArgumentParser { +class ArgumentParser { bool showHelp = false; tstring outputFilename = TEXT(""); tstring cacheFile = TEXT(""); @@ -13,5 +13,16 @@ struct ArgumentParser { bool noSplash = false; bool useTestInput = false; +public: void parse(const unsigned int argc, const TCHAR* const argv[]); + bool shouldShowHelp(); + tstring getOutputFilename(); + tstring getCacheFile(); + tstring getInputFile(); + bool isInputSourceSpecified(); + bool shouldShowSplash(); + bool shouldUseTestInput(); + + bool getBooleanFlag(tstring flag); + tstring getStringArgument(tstring argument); }; diff --git a/main.cpp b/main.cpp index 6ab30f38..65cea760 100644 --- a/main.cpp +++ b/main.cpp @@ -18,29 +18,29 @@ FizzBuzzCacheLoader* cacheLoader; int _tmain(unsigned int argc, TCHAR* argv[]) { argParser.parse(argc, argv); - if (!argParser.noSplash) console.writeOutput(copyrightMessage); - if (argParser.showHelp) { + if (argParser.shouldShowSplash()) console.writeOutput(copyrightMessage); + if (argParser.shouldShowHelp()) { console.writeOutput(helpMessage); return -1; } - if (argParser.useTestInput) { + if (argParser.shouldUseTestInput()) { inputReader = new TestInputReader(); } - else if (argParser.inputFile == TEXT("")) { + else if (argParser.getInputFile() == TEXT("")) { inputReader = new ConsoleInputReader(); } else { - inputReader = new FileInputReader(argParser.inputFile); + inputReader = new FileInputReader(argParser.getInputFile()); } - if (argParser.outputFilename != TEXT("")) { - outputWriter = new FileOutputWriter(argParser.outputFilename); + if (argParser.getOutputFilename() != TEXT("")) { + outputWriter = new FileOutputWriter(argParser.getOutputFilename()); } else { outputWriter = new ConsoleOutputWriter(); } - if (argParser.cacheFile != TEXT("")) { - cacheLoader = new FizzBuzzCacheLoader(argParser.cacheFile); + if (argParser.getCacheFile() != TEXT("")) { + cacheLoader = new FizzBuzzCacheLoader(argParser.getCacheFile()); cacheLoader->loadCache(fizzbuzzer.cache); } @@ -54,7 +54,7 @@ int _tmain(unsigned int argc, TCHAR* argv[]) { } } - if (argParser.cacheFile != TEXT("")) { + if (argParser.getCacheFile() != TEXT("")) { cacheLoader->dumpCache(fizzbuzzer.cache); } From f6ab067d326cb54bef0e2874f28406117cdc2297 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 15 Jul 2024 11:12:31 +0400 Subject: [PATCH 22/42] Added 2 interfaces. --- argparser.hpp | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/argparser.hpp b/argparser.hpp index 60fd3675..ac317ca1 100644 --- a/argparser.hpp +++ b/argparser.hpp @@ -4,7 +4,22 @@ extern TCHAR helpMessage[]; -class ArgumentParser { +interface IArgumentParserGetters { + virtual bool shouldShowHelp() = 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; tstring outputFilename = TEXT(""); tstring cacheFile = TEXT(""); @@ -15,14 +30,15 @@ class ArgumentParser { public: void parse(const unsigned int argc, const TCHAR* const argv[]); - bool shouldShowHelp(); - tstring getOutputFilename(); - tstring getCacheFile(); - tstring getInputFile(); - bool isInputSourceSpecified(); - bool shouldShowSplash(); - bool shouldUseTestInput(); - - bool getBooleanFlag(tstring flag); - tstring getStringArgument(tstring argument); + + virtual bool shouldShowHelp(); + 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); }; From c9d36c2f50795411d5c168a790cd669191f208ec Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 15 Jul 2024 11:17:56 +0400 Subject: [PATCH 23/42] Change the loop to std::ranges::for_each with std::views::iota --- FizzBuzz Enterprise Edition.vcxproj | 4 ++++ console.cpp | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/FizzBuzz Enterprise Edition.vcxproj b/FizzBuzz Enterprise Edition.vcxproj index f866b7b9..3a8252d7 100644 --- a/FizzBuzz Enterprise Edition.vcxproj +++ b/FizzBuzz Enterprise Edition.vcxproj @@ -76,6 +76,7 @@ true WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true + stdcpp20 Console @@ -90,6 +91,7 @@ true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true + stdcpp20 Console @@ -104,6 +106,7 @@ true _DEBUG;_CONSOLE;%(PreprocessorDefinitions) true + stdcpp20 Console @@ -118,6 +121,7 @@ true NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true + stdcpp20 Console diff --git a/console.cpp b/console.cpp index cd47e736..2bac598b 100644 --- a/console.cpp +++ b/console.cpp @@ -2,6 +2,8 @@ #include #include "console.hpp" #include "cpp_tstring.hpp" +#include +#include _console::_console() { this->output = GetStdHandle(STD_OUTPUT_HANDLE); @@ -26,7 +28,9 @@ void _console::writeError(const tstring str) { } DWORD _console::readFixedSizeInput(TCHAR* str, const DWORD size, const PCONSOLE_READCONSOLE_CONTROL const pReadConsoleControl) { - for (size_t i = 0; i < size; i++) str[i] = 0; + 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; From 8c00abc09ff3c1a42f745f9e5d3b41e44fb311f4 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 15 Jul 2024 11:30:57 +0400 Subject: [PATCH 24/42] Use tostringstreams instead of normal strings in baseoutputwriter --- cpp_tstring.hpp | 1 + fizz_buzz.cpp | 7 +++++++ fizz_buzz.hpp | 6 +++++- output_writer.cpp | 23 +++++++++++++---------- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/cpp_tstring.hpp b/cpp_tstring.hpp index 1bd2c8f8..1e2b3f87 100644 --- a/cpp_tstring.hpp +++ b/cpp_tstring.hpp @@ -3,6 +3,7 @@ #include #include #include +#include typedef std::basic_string, std::allocator> tstring; typedef std::basic_stringstream, std::allocator> tstringstream; diff --git a/fizz_buzz.cpp b/fizz_buzz.cpp index ae2fdbf4..a7c1fa70 100644 --- a/fizz_buzz.cpp +++ b/fizz_buzz.cpp @@ -32,4 +32,11 @@ FizzBuzzResult operator&(FizzBuzzResult lhs, FizzBuzzResult rhs) { 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 index 061c3992..5d0dd761 100644 --- a/fizz_buzz.hpp +++ b/fizz_buzz.hpp @@ -1,7 +1,10 @@ #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 @@ -15,4 +18,5 @@ struct _FizzBuzzer { extern _FizzBuzzer fizzbuzzer; FizzBuzzResult operator|(FizzBuzzResult lhs, FizzBuzzResult rhs); -FizzBuzzResult operator&(FizzBuzzResult lhs, FizzBuzzResult rhs); \ No newline at end of file +FizzBuzzResult operator&(FizzBuzzResult lhs, FizzBuzzResult rhs); +tostringstream& operator<<(tostringstream& ostream, FizzBuzzResult const& fizzBuzzResult); \ No newline at end of file diff --git a/output_writer.cpp b/output_writer.cpp index 3c22d14a..59013bb5 100644 --- a/output_writer.cpp +++ b/output_writer.cpp @@ -6,21 +6,24 @@ #include "console.hpp" #include #include +#include "cpp_tstring.hpp" void BaseOutputWriter::writeOne(unsigned long long int number, FizzBuzzResult result) { - tstring str; - if (number == 0) str = TEXT("0"); + tostringstream str; + if (number == 0) str << TEXT("0"); else while (number != 0) { - str.push_back((TCHAR)((number % 10) + TEXT('0'))); + str << (TCHAR)((number % 10) + TEXT('0')); number /= 10; } - std::reverse(str.begin(), str.end()); - str.append(TEXT(":")); - if ((result & FizzBuzzResult::FIZZ) != FizzBuzzResult::UNKNOWN) str.append(TEXT("Fizz")); - if ((result & FizzBuzzResult::BUZZ) != FizzBuzzResult::UNKNOWN) str.append(TEXT("Buzz")); - if ((result & FizzBuzzResult::NONE) != FizzBuzzResult::UNKNOWN) str.append(str.substr(0, str.length() - 1)); - str.push_back('\n'); - _write(str); + tstring _result = str.str(); + std::reverse(_result.begin(), _result.end()); + str.clear(); + str << _result; + str << TEXT(":"); + if ((result & FizzBuzzResult::NONE) != FizzBuzzResult::UNKNOWN) str << _result; + else str << result; + str << TEXT('\n'); + _write(str.str()); } void BaseOutputWriter::writeMany(std::vector> values) { From f4550d9def95e0689b225d863f4e18e995daf1ab Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 15 Jul 2024 11:34:50 +0400 Subject: [PATCH 25/42] Use inline instead of extern --- fizz_buzz.cpp | 2 -- fizz_buzz.hpp | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/fizz_buzz.cpp b/fizz_buzz.cpp index a7c1fa70..f72f1a1b 100644 --- a/fizz_buzz.cpp +++ b/fizz_buzz.cpp @@ -18,8 +18,6 @@ FizzBuzzResult _FizzBuzzer::fizzBuzz(const unsigned long long int number) { return calculatedResult; } -_FizzBuzzer fizzbuzzer = {}; - FizzBuzzResult operator|(FizzBuzzResult lhs, FizzBuzzResult rhs) { return static_cast( static_cast::type>(lhs) | diff --git a/fizz_buzz.hpp b/fizz_buzz.hpp index 5d0dd761..54fb9a5e 100644 --- a/fizz_buzz.hpp +++ b/fizz_buzz.hpp @@ -15,7 +15,7 @@ struct _FizzBuzzer { FizzBuzzResult fizzBuzz(const unsigned long long int number); }; -extern _FizzBuzzer fizzbuzzer; +inline _FizzBuzzer fizzbuzzer; FizzBuzzResult operator|(FizzBuzzResult lhs, FizzBuzzResult rhs); FizzBuzzResult operator&(FizzBuzzResult lhs, FizzBuzzResult rhs); From 2254cd16e1ddda1ad2f96c7fe3c6abe2de5f2486 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 15 Jul 2024 11:57:53 +0400 Subject: [PATCH 26/42] Change the loop to use iterators instead. Also fix a couple of bugs. --- argparser.cpp | 49 +++++++++++++++++++++++++---------------------- output_writer.cpp | 4 ++-- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/argparser.cpp b/argparser.cpp index 41b7a76e..a07e590e 100644 --- a/argparser.cpp +++ b/argparser.cpp @@ -1,6 +1,8 @@ #include #include #include "cpp_tstring.hpp" +#include +#include #include "argparser.hpp" TCHAR helpMessage[] = TEXT("Usage: [program] [--output file] [--enable_cache cache_file] [--source source]\n\ @@ -21,59 +23,60 @@ constexpr TCHAR INPUT_SOURCE_FLAG[] = TEXT("--input_source"); constexpr TCHAR INPUT_SOURCE_STDINPUT[] = TEXT("stdinput"); constexpr TCHAR INPUT_SOURCE_FILE[] = TEXT("file"); constexpr TCHAR INPUT_SOURCE_TESTINPUT[] = TEXT("testinput"); -constexpr TCHAR NO_SPLASH_FLAG[] = TEXT("--no-spplash"); +constexpr TCHAR NO_SPLASH_FLAG[] = TEXT("--no-splash"); void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { - unsigned int i = 0; - while (i < argc) { - if (lstrcmp(argv[i], HELP_FLAG) == 0) showHelp = true; - else if (lstrcmp(argv[i], OUTPUT_FILENAME_FLAG) == 0) { - i++; - if (i >= argc) { + std::vector argvVector(argv, argv + argc); + auto it = argvVector.begin(); + while (it < argvVector.end()) { + if (lstrcmp(*it, HELP_FLAG) == 0) showHelp = true; + else if (lstrcmp(*it, OUTPUT_FILENAME_FLAG) == 0) { + std::advance(it, 1); + if (it >= argvVector.end()) { showHelp = true; break; } - this->outputFilename = argv[i]; + this->outputFilename = *it; if (this->outputFilename == TEXT("")) { showHelp = true; break; } } - else if (lstrcmp(argv[i], ENABLE_CACHE_FLAG) == 0) { - i++; - if (i >= argc) { + else if (lstrcmp(*it, ENABLE_CACHE_FLAG) == 0) { + std::advance(it, 1); + if (it >= argvVector.end()) { showHelp = true; break; } - this->cacheFile = argv[i]; + this->cacheFile = *it; if (this->cacheFile == TEXT("")) { showHelp = true; break; } } - else if (lstrcmp(argv[i], INPUT_SOURCE_FLAG) == 0) { + else if (lstrcmp(*it, INPUT_SOURCE_FLAG) == 0) { inputSourceSpecified = true; - i++; - if (i >= argc) { + std::advance(it, 1); + if (it >= argvVector.end()) { showHelp = true; break; } - if (lstrcmp(argv[i], INPUT_SOURCE_STDINPUT) == 0) { + if (lstrcmp(*it, INPUT_SOURCE_STDINPUT) == 0) { this->inputFile = TEXT(""); } - else if (lstrcmp(argv[i], INPUT_SOURCE_FILE) == 0) { - i++; - if (i >= argc) { + else if (lstrcmp(*it, INPUT_SOURCE_FILE) == 0) { + std::advance(it, 1); + if (it >= argvVector.end()) { showHelp = true; break; } - this->inputFile = argv[i]; + this->inputFile = *it; if (this->inputFile == TEXT("")) { showHelp = true; break; } } - else if (lstrcmp(argv[i], INPUT_SOURCE_TESTINPUT) == 0) { + else if (lstrcmp(*it, INPUT_SOURCE_TESTINPUT) == 0) { this->useTestInput = true; } else { @@ -81,10 +84,10 @@ void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { break; } } - else if (lstrcmp(argv[i], NO_SPLASH_FLAG) == 0) { + else if (lstrcmp(*it, NO_SPLASH_FLAG) == 0) { this->noSplash = true; } - i++; + std::advance(it, 1); } if (!inputSourceSpecified) showHelp = true; } diff --git a/output_writer.cpp b/output_writer.cpp index 59013bb5..69de1382 100644 --- a/output_writer.cpp +++ b/output_writer.cpp @@ -18,8 +18,8 @@ void BaseOutputWriter::writeOne(unsigned long long int number, FizzBuzzResult re tstring _result = str.str(); std::reverse(_result.begin(), _result.end()); str.clear(); - str << _result; - str << TEXT(":"); + str.str(TEXT("")); + str << _result << TEXT(":"); if ((result & FizzBuzzResult::NONE) != FizzBuzzResult::UNKNOWN) str << _result; else str << result; str << TEXT('\n'); From 950127b69cd51995ec213f2b2dafd3f851582ca2 Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Mon, 15 Jul 2024 12:04:00 +0400 Subject: [PATCH 27/42] rvalue ref --- console.cpp | 8 ++++++-- console.hpp | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/console.cpp b/console.cpp index 2bac598b..912c93d5 100644 --- a/console.cpp +++ b/console.cpp @@ -14,7 +14,9 @@ _console::_console() { 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()); } @@ -22,7 +24,9 @@ void _console::writeOutput(const tstring 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()); } diff --git a/console.hpp b/console.hpp index ddc3d869..37d14535 100644 --- a/console.hpp +++ b/console.hpp @@ -12,11 +12,11 @@ struct _console { _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); From ff091b1c12fd80f1fc5050e556b5a872dfaff96b Mon Sep 17 00:00:00 2001 From: GEOEGII555 <57674559+GEOEGII555@users.noreply.github.com> Date: Tue, 29 Oct 2024 16:29:02 +0300 Subject: [PATCH 28/42] Update README.md --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e90f22ea..82ab45e4 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,10 @@ Welcome to FizzBuzz Enterprise Edition by Quality Enterprise Coding Co LTD. - th 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!). -The usage is simple: +## 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. + +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. ## Usage Run the executable without any arguments to see the help menu. (figure it out yourself, it's very easy). @@ -18,4 +21,4 @@ For each number: If it's divisible by 3, output "Fizz" If it's divisible by 5, output "Buzz" Otherwise, output the number. -``` \ No newline at end of file +``` From 836e4bbc2454e465caa48ce65d8665096d6caab7 Mon Sep 17 00:00:00 2001 From: GEOEGII555 <57674559+GEOEGII555@users.noreply.github.com> Date: Tue, 12 Nov 2024 08:20:51 +0300 Subject: [PATCH 29/42] Update argparser.cpp --- argparser.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/argparser.cpp b/argparser.cpp index a07e590e..d07c15bf 100644 --- a/argparser.cpp +++ b/argparser.cpp @@ -5,7 +5,7 @@ #include #include "argparser.hpp" -TCHAR helpMessage[] = TEXT("Usage: [program] [--output file] [--enable_cache cache_file] [--source source]\n\ +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\ @@ -126,4 +126,4 @@ tstring ArgumentParser::getStringArgument(tstring argument) { if (argument == TEXT("cacheFile")) return this->getCacheFile(); if (argument == TEXT("inputFile")) return this->getInputFile(); abort(); -} \ No newline at end of file +} From 12eac55992b9a7194c38047cd1724a09cf1e4ac1 Mon Sep 17 00:00:00 2001 From: GEOEGII555 <57674559+GEOEGII555@users.noreply.github.com> Date: Tue, 12 Nov 2024 08:22:54 +0300 Subject: [PATCH 30/42] Update argparser.cpp --- argparser.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/argparser.cpp b/argparser.cpp index d07c15bf..fa09907b 100644 --- a/argparser.cpp +++ b/argparser.cpp @@ -16,14 +16,14 @@ static constexpr TCHAR helpMessage[] = TEXT("Usage: [program] [--output file] [- \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. -constexpr TCHAR HELP_FLAG[] = TEXT("--help"); -constexpr TCHAR OUTPUT_FILENAME_FLAG[] = TEXT("--output"); -constexpr TCHAR ENABLE_CACHE_FLAG[] = TEXT("--enable_cache"); -constexpr TCHAR INPUT_SOURCE_FLAG[] = TEXT("--input_source"); -constexpr TCHAR INPUT_SOURCE_STDINPUT[] = TEXT("stdinput"); -constexpr TCHAR INPUT_SOURCE_FILE[] = TEXT("file"); -constexpr TCHAR INPUT_SOURCE_TESTINPUT[] = TEXT("testinput"); -constexpr TCHAR NO_SPLASH_FLAG[] = TEXT("--no-splash"); +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); From b95d1fb1f53b1fc42b0aaca6ac2516e25580bef8 Mon Sep 17 00:00:00 2001 From: GEOEGII555 <57674559+GEOEGII555@users.noreply.github.com> Date: Tue, 12 Nov 2024 09:20:08 +0300 Subject: [PATCH 31/42] Update argparser.cpp --- argparser.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/argparser.cpp b/argparser.cpp index fa09907b..35f93008 100644 --- a/argparser.cpp +++ b/argparser.cpp @@ -29,7 +29,10 @@ 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; + 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()) { From 0b5ff92a64df64b6e0f9504aa53cefafb8dd53a8 Mon Sep 17 00:00:00 2001 From: GEOEGII555 <57674559+GEOEGII555@users.noreply.github.com> Date: Tue, 12 Nov 2024 09:21:38 +0300 Subject: [PATCH 32/42] Update argparser.hpp --- argparser.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/argparser.hpp b/argparser.hpp index ac317ca1..326728b3 100644 --- a/argparser.hpp +++ b/argparser.hpp @@ -6,6 +6,7 @@ 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; @@ -21,6 +22,7 @@ interface IArgumentParserBigGetter { class ArgumentParser: public IArgumentParserGetters, public IArgumentParserBigGetter { bool showHelp = false; + bool explicitHelp = false; tstring outputFilename = TEXT(""); tstring cacheFile = TEXT(""); tstring inputFile = TEXT(""); @@ -32,6 +34,7 @@ class ArgumentParser: public IArgumentParserGetters, public IArgumentParserBigGe 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(); From 383dc7e36c0e48ade12ce365cb1c450accdac996 Mon Sep 17 00:00:00 2001 From: GEOEGII555 <57674559+GEOEGII555@users.noreply.github.com> Date: Tue, 12 Nov 2024 10:04:31 +0300 Subject: [PATCH 33/42] Update argparser.cpp --- argparser.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/argparser.cpp b/argparser.cpp index 35f93008..f4fd8e48 100644 --- a/argparser.cpp +++ b/argparser.cpp @@ -97,6 +97,9 @@ void ArgumentParser::parse(const unsigned int argc, const TCHAR* const argv[]) { bool ArgumentParser::shouldShowHelp() { return this->showHelp; } +bool ArgumentParser::isExplicitHelp() { + return this->explicitHelp; +} tstring ArgumentParser::getOutputFilename() { return this->outputFilename; } From bdf2e21b994679608796feaf74223c3d01c4c2c5 Mon Sep 17 00:00:00 2001 From: GEOEGII555 <57674559+GEOEGII555@users.noreply.github.com> Date: Tue, 12 Nov 2024 10:06:57 +0300 Subject: [PATCH 34/42] Update main.cpp --- main.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/main.cpp b/main.cpp index 65cea760..6eb497e8 100644 --- a/main.cpp +++ b/main.cpp @@ -8,7 +8,7 @@ // 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 uinverse.\n") + TEXT("FizzBuzz Enterprise Edition.\nEnterpriseQualityCoding - the most serious and not satire or fake company in the universe.\n") }; ArgumentParser argParser; @@ -21,7 +21,7 @@ int _tmain(unsigned int argc, TCHAR* argv[]) { if (argParser.shouldShowSplash()) console.writeOutput(copyrightMessage); if (argParser.shouldShowHelp()) { console.writeOutput(helpMessage); - return -1; + return (argParser.isExplicitHelp()) ? 0 : -1; } if (argParser.shouldUseTestInput()) { inputReader = new TestInputReader(); @@ -62,4 +62,4 @@ int _tmain(unsigned int argc, TCHAR* argv[]) { delete outputWriter; delete inputReader; return 0; -} \ No newline at end of file +} From 05383b9dbafcfc2d012bd24438dbcd3c9503d94e Mon Sep 17 00:00:00 2001 From: GEOEGII555 <57674559+GEOEGII555@users.noreply.github.com> Date: Tue, 12 Nov 2024 10:11:18 +0300 Subject: [PATCH 35/42] Update input_reader.cpp --- input_reader.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/input_reader.cpp b/input_reader.cpp index eb4995ef..25b6f701 100644 --- a/input_reader.cpp +++ b/input_reader.cpp @@ -40,7 +40,6 @@ unsigned long long int __input_reader_util_parse_ulonglong(BaseInputReader* _thi if (temp == 0) { _this->inputExhausted = true; throw std::exception("There's nothing more in the input."); - return -1; } 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. @@ -106,4 +105,4 @@ bool ConsoleInputReader::getIsInputExhausted() { FileInputReader::~FileInputReader() { CloseHandle(this->hFile); -} \ No newline at end of file +} From 655cfb9c4c7821979c7ec104188a1fc0bc4eca7a Mon Sep 17 00:00:00 2001 From: GEOEGII555 <57674559+GEOEGII555@users.noreply.github.com> Date: Tue, 12 Nov 2024 10:13:43 +0300 Subject: [PATCH 36/42] Update input_reader.cpp --- input_reader.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/input_reader.cpp b/input_reader.cpp index 25b6f701..43f1bccf 100644 --- a/input_reader.cpp +++ b/input_reader.cpp @@ -25,7 +25,15 @@ FileInputReader::FileInputReader(tstring file) { abort(); } unsigned long long int fileSize; - GetFileSizeEx(this->hFile, (PLARGE_INTEGER) & 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 open the input file for reading: ")); + console.writeError(arr); + console.writeError(TEXT("\n")); + abort(); + } if (fileSize == 0) inputExhausted = true; } From ea747b3eb53660aa78d9f3eb867d12768d78c272 Mon Sep 17 00:00:00 2001 From: GEOEGII555 <57674559+GEOEGII555@users.noreply.github.com> Date: Tue, 12 Nov 2024 10:16:25 +0300 Subject: [PATCH 37/42] Update input_reader.cpp Copied the code, but forgot to update the error message. Now it's fixed. --- input_reader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input_reader.cpp b/input_reader.cpp index 43f1bccf..d599d26a 100644 --- a/input_reader.cpp +++ b/input_reader.cpp @@ -29,7 +29,7 @@ FileInputReader::FileInputReader(tstring file) { 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(TEXT("Failed to get the input file size: ")); console.writeError(arr); console.writeError(TEXT("\n")); abort(); From e854c7dbd4a86e9dcdfd6fd2529c6dd83e142abb Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Thu, 13 Feb 2025 11:58:55 +0300 Subject: [PATCH 38/42] Renamed 'realDataWritten' to 'dataWritten' --- fizz_buzz_persistent_cache.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fizz_buzz_persistent_cache.cpp b/fizz_buzz_persistent_cache.cpp index 8d086458..70990594 100644 --- a/fizz_buzz_persistent_cache.cpp +++ b/fizz_buzz_persistent_cache.cpp @@ -69,9 +69,9 @@ void FizzBuzzCacheLoader::dumpCache(std::unordered_maphFile, line.c_str(), line.size(), &realDataWritten, NULL); - if (realDataWritten != line.size()) abort(); + DWORD dataWritten = 0; + WriteFile(this->hFile, line.c_str(), line.size(), &dataWritten, NULL); + if (dataWritten != line.size()) abort(); SetFilePointer(this->hFile, NULL, NULL, FILE_END); }); } From d6f8d7bb0da5ba80a9cc87315e0190462d358d7b Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Thu, 13 Feb 2025 12:00:20 +0300 Subject: [PATCH 39/42] Rename 'size' to 'expectedSize' and 'realSize' to 'actualSize' --- fizz_buzz_persistent_cache.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/fizz_buzz_persistent_cache.cpp b/fizz_buzz_persistent_cache.cpp index 70990594..7c983a61 100644 --- a/fizz_buzz_persistent_cache.cpp +++ b/fizz_buzz_persistent_cache.cpp @@ -23,14 +23,14 @@ FizzBuzzCacheLoader::FizzBuzzCacheLoader(tstring file) { 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(); + unsigned long long int expectedSize; + GetFileSizeEx(this->hFile, (PLARGE_INTEGER)&expectedSize); + if (expectedSize > ((size_t)-1)) abort(); // (not possible under normal circumstances) + char* fileData = new char[expectedSize + 1]; + ZeroMemory(fileData, sizeof(char) * (expectedSize + 1)); + DWORD actualSize = 0; + if (!ReadFile(this->hFile, fileData, expectedSize, &actualSize, NULL)) abort(); + if (actualSize != expectedSize) abort(); std::string str(fileData); std::istringstream stream(str); std::string line; From fd4304fb484835186a48f855ad9ab46a784a699b Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Thu, 13 Feb 2025 12:01:10 +0300 Subject: [PATCH 40/42] Rename 'fileData' to 'dataStoredInTheFile' --- fizz_buzz_persistent_cache.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fizz_buzz_persistent_cache.cpp b/fizz_buzz_persistent_cache.cpp index 7c983a61..a88a5776 100644 --- a/fizz_buzz_persistent_cache.cpp +++ b/fizz_buzz_persistent_cache.cpp @@ -26,12 +26,12 @@ void FizzBuzzCacheLoader::loadCache(std::unordered_maphFile, (PLARGE_INTEGER)&expectedSize); if (expectedSize > ((size_t)-1)) abort(); // (not possible under normal circumstances) - char* fileData = new char[expectedSize + 1]; - ZeroMemory(fileData, sizeof(char) * (expectedSize + 1)); + char* dataStoredInTheFile = new char[expectedSize + 1]; + ZeroMemory(dataStoredInTheFile, sizeof(char) * (expectedSize + 1)); DWORD actualSize = 0; - if (!ReadFile(this->hFile, fileData, expectedSize, &actualSize, NULL)) abort(); + if (!ReadFile(this->hFile, dataStoredInTheFile, expectedSize, &actualSize, NULL)) abort(); if (actualSize != expectedSize) abort(); - std::string str(fileData); + std::string str(dataStoredInTheFile); std::istringstream stream(str); std::string line; while (std::getline(stream, line, '\n')) { From b7ce274804bb62de5b2feb17f3d527749fa0185d Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Thu, 13 Feb 2025 12:01:41 +0300 Subject: [PATCH 41/42] Remove useless comment --- fizz_buzz.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/fizz_buzz.cpp b/fizz_buzz.cpp index f72f1a1b..176fa3a5 100644 --- a/fizz_buzz.cpp +++ b/fizz_buzz.cpp @@ -35,6 +35,5 @@ FizzBuzzResult operator&(FizzBuzzResult lhs, FizzBuzzResult 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 From 3105978ed96e5bf0794596b0f0a13e59a100f61c Mon Sep 17 00:00:00 2001 From: GEOEGII555 Date: Thu, 13 Feb 2025 12:05:42 +0300 Subject: [PATCH 42/42] Add SetConsoleCP and SetConsoleOutputCP. --- console.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/console.cpp b/console.cpp index 912c93d5..29ffb8c3 100644 --- a/console.cpp +++ b/console.cpp @@ -9,6 +9,9 @@ _console::_console() { this->output = GetStdHandle(STD_OUTPUT_HANDLE); this->input = GetStdHandle(STD_INPUT_HANDLE); this->error = GetStdHandle(STD_ERROR_HANDLE); + + if (!SetConsoleCP(CP_UTF8)) abort(); + if (!SetConsoleOutputCP(CP_UTF8)) abort(); } void _console::writeOutput(const TCHAR str[]) {