Skip to content

Instantly share code, notes, and snippets.

@scriptum
Created June 29, 2015 12:53
Show Gist options
  • Select an option

  • Save scriptum/dafdcbdcf024a7fd6b90 to your computer and use it in GitHub Desktop.

Select an option

Save scriptum/dafdcbdcf024a7fd6b90 to your computer and use it in GitHub Desktop.
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.interfaces.FizzBuzz;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters.FizzBuzzUpperLimitParameter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.parameters.DefaultFizzBuzzUpperLimitParameter;
public final class Main {
public static void main(final String[] args) {
final ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
final FizzBuzz myFizzBuzz = (FizzBuzz) context.getBean("standardFizzBuzz");
final FizzBuzzUpperLimitParameter fizzBuzzUpperLimit = new DefaultFizzBuzzUpperLimitParameter();
myFizzBuzz.fizzBuzz(fizzBuzzUpperLimit.obtainUpperLimitValue());
((ConfigurableApplicationContext) context).close();
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.parameters;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters.FizzBuzzUpperLimitParameter;
public final class DefaultFizzBuzzUpperLimitParameter implements FizzBuzzUpperLimitParameter {
public static final int DEFAULT_FIZZ_BUZZ_UPPER_LIMIT_PARAMETER_VALUE = 100;
private final int fizzBuzzUpperLimitParameterValue;
public DefaultFizzBuzzUpperLimitParameter() {
this.fizzBuzzUpperLimitParameterValue = DefaultFizzBuzzUpperLimitParameter.DEFAULT_FIZZ_BUZZ_UPPER_LIMIT_PARAMETER_VALUE;
}
public DefaultFizzBuzzUpperLimitParameter(final int fizzBuzzUpperLimitParameterValue) {
this.fizzBuzzUpperLimitParameterValue = fizzBuzzUpperLimitParameterValue;
}
public int obtainUpperLimitValue() {
return this.fizzBuzzUpperLimitParameterValue;
}
}
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.interfaces.printers.StringPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
@Service
public class FizzStringPrinter implements StringPrinter {
private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
private final FizzStringReturnerFactory _fizzStringReturnerFactory;
@Autowired
public FizzStringPrinter(final FizzStringReturnerFactory _fizzStringReturnerFactory,
final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
this._fizzStringReturnerFactory = _fizzStringReturnerFactory;
this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
}
public void print() {
final StringStringReturner myFizzStringReturner = this._fizzStringReturnerFactory
.createStringStringReturner();
final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());
myOutputAdapter.output(myFizzStringReturner.getReturnString());
}
@Override
public void printValue(final Object value) {
this.print();
}
}
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;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.NewLineStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
@Service
public class NewLinePrinter {
private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
@Autowired
public NewLinePrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
}
public void printNewLine() {
final NewLineStringReturner myNewLineStringReturner = new NewLineStringReturner();
final String myNewLineString = myNewLineStringReturner.getReturnString();
final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());
myOutputAdapter.output(myNewLineString);
}
}
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;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.BuzzStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
@Service
public class BuzzPrinter {
private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
@Autowired
public BuzzPrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
}
public void printBuzz() {
final BuzzStringReturner myBuzzStringReturner = new BuzzStringReturner();
final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());
myOutputAdapter.output(myBuzzStringReturner.getReturnString());
}
}
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.interfaces.printers.StringPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
@Service
public class NewLineStringPrinter implements StringPrinter {
private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
private final NewLineStringReturnerFactory _newLineStringReturnerFactory;
@Autowired
public NewLineStringPrinter(final NewLineStringReturnerFactory _newLineStringReturnerFactory,
final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
this._newLineStringReturnerFactory = _newLineStringReturnerFactory;
this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
}
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);
}
@Override
public void printValue(final Object value) {
this.print();
}
}
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.interfaces.printers.StringPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
@Service
public class BuzzStringPrinter implements StringPrinter {
private final SystemOutFizzBuzzOutputStrategyFactory _outputStrategyFactory;
private final BuzzStringReturnerFactory _buzzStringReturnerFactory;
@Autowired
public BuzzStringPrinter(final BuzzStringReturnerFactory _buzzStringReturnerFactory,
final SystemOutFizzBuzzOutputStrategyFactory _outputStrategyFactory) {
this._buzzStringReturnerFactory = _buzzStringReturnerFactory;
this._outputStrategyFactory = _outputStrategyFactory;
}
public void print() {
final StringStringReturner myBuzzStringReturner = this._buzzStringReturnerFactory
.createStringStringReturner();
final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
this._outputStrategyFactory.createOutputStrategy());
myOutputAdapter.output(myBuzzStringReturner.getReturnString());
}
@Override
public void printValue(final Object value) {
this.print();
}
}
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.interfaces.printers.IntegerPrinter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
@Service
public class IntegerIntegerPrinter implements IntegerPrinter {
private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
private final IntegerIntegerStringReturnerFactory _integerIntegerStringReturnerFactory;
@Autowired
public IntegerIntegerPrinter(final IntegerIntegerStringReturnerFactory _integerIntegerStringReturnerFactory,
final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
this._integerIntegerStringReturnerFactory = _integerIntegerStringReturnerFactory;
this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
}
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);
}
@Override
public void print() {
throw new UnsupportedOperationException(
"com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.printers.IntegerIntegerPrinter.print()");
}
@Override
public void printValue(final Object value) {
this.printInteger((Integer) value);
}
}
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;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.FizzStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
@Service
public class FizzPrinter {
private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
@Autowired
public FizzPrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
}
public void printFizz() {
final FizzStringReturner myFizzStringReturner = new FizzStringReturner();
final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());
myOutputAdapter.output(myFizzStringReturner.getReturnString());
}
}
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;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners.IntegerIntegerStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter;
@Service
public class IntegerPrinter {
private final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory;
@Autowired
public IntegerPrinter(final SystemOutFizzBuzzOutputStrategyFactory _systemOutFizzBuzzOutputStrategyFactory) {
this._systemOutFizzBuzzOutputStrategyFactory = _systemOutFizzBuzzOutputStrategyFactory;
}
public void printInteger(final int theInteger) {
final IntegerStringReturner myIntegerIntegerStringReturner = new IntegerIntegerStringReturner();
final String myIntegerString = myIntegerIntegerStringReturner
.getIntegerReturnString(theInteger);
final FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter myOutputAdapter =
new FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(
this._systemOutFizzBuzzOutputStrategyFactory.createOutputStrategy());
myOutputAdapter.output(myIntegerString);
}
}
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;
@Service
public class StandardFizzBuzz implements FizzBuzz {
private final FizzBuzzSolutionStrategyFactory _fizzBuzzSolutionStrategyFactory;
@Autowired
public StandardFizzBuzz(final FizzBuzzSolutionStrategyFactory _fizzBuzzSolutionStrategyFactory) {
this._fizzBuzzSolutionStrategyFactory = _fizzBuzzSolutionStrategyFactory;
}
public void fizzBuzz(final int nFizzBuzzUpperLimit) {
final FizzBuzzSolutionStrategy mySolutionStrategy =
this._fizzBuzzSolutionStrategyFactory.createFizzBuzzSolutionStrategy();
mySolutionStrategy.runSolution(nFizzBuzzUpperLimit);
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;
import org.springframework.stereotype.Service;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
@Service
public class FizzStringReturner implements StringStringReturner {
public String getReturnString() {
final StringBuilder myStringBuilder = new StringBuilder("Fizz");
final String myString = myStringBuilder.toString();
return new String(myString);
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;
import org.springframework.stereotype.Service;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
@Service
public class BuzzStringReturner implements StringStringReturner {
public String getReturnString() {
final StringBuilder myStringBuilder = new StringBuilder("Buzz");
final String myString = myStringBuilder.toString();
return new String(myString);
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;
import org.springframework.stereotype.Service;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
@Service
public class NewLineStringReturner implements StringStringReturner {
public String getReturnString() {
final String systemDefaultNewLineString = System.getProperty("line.separator");
final StringBuilder myStringBuilder = new StringBuilder(systemDefaultNewLineString);
final String myString = myStringBuilder.toString();
return new String(myString);
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.stringreturners;
import org.springframework.stereotype.Service;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;
@Service
public class IntegerIntegerStringReturner implements IntegerStringReturner {
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);
}
}
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;
public final class FizzBuzzOutputGenerationContext implements OutputGenerationContext {
private final DataPrinter printer;
private final IsEvenlyDivisibleStrategy strategy;
public FizzBuzzOutputGenerationContext(final IsEvenlyDivisibleStrategy strategy,
final DataPrinter printer) {
super();
this.strategy = strategy;
this.printer = printer;
}
@Override
public DataPrinter getPrinter() {
return this.printer;
}
@Override
public IsEvenlyDivisibleStrategy getStrategy() {
return this.strategy;
}
}
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;
@Service
public class FizzBuzzOutputGenerationContextVisitor implements
OutputGenerationContextVisitor {
@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));
}
}
}
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.strategies.IsEvenlyDivisibleStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories.IsEvenlyDivisibleStrategyFactory;
@Service
public class NoFizzNoBuzzStrategyFactory implements
IsEvenlyDivisibleStrategyFactory {
private final NoFizzNoBuzzStrategy _noFizzNoBuzzStrategy;
@Autowired
public NoFizzNoBuzzStrategyFactory(final NoFizzNoBuzzStrategy _noFizzNoBuzzStrategy) {
this._noFizzNoBuzzStrategy = _noFizzNoBuzzStrategy;
}
@Override
public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy() {
return this._noFizzNoBuzzStrategy;
}
}
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;
@Service
public class FizzStringPrinterFactory implements StringPrinterFactory {
private final FizzStringPrinter _fizzStringPrinter;
@Autowired
public FizzStringPrinterFactory(final FizzStringPrinter _fizzStringPrinter) {
this._fizzStringPrinter = _fizzStringPrinter;
}
@Override
public StringPrinter createStringPrinter() {
return this._fizzStringPrinter;
}
}
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;
@Service
public class NewLineStringPrinterFactory implements StringPrinterFactory {
private final NewLineStringPrinter _newLineStringPrinter;
@Autowired
public NewLineStringPrinterFactory(final NewLineStringPrinter _newLineStringPrinter) {
this._newLineStringPrinter = _newLineStringPrinter;
}
@Override
public StringPrinter createStringPrinter() {
return this._newLineStringPrinter;
}
}
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;
@Service
public class BuzzStringReturnerFactory implements StringStringReturnerFactory {
private final BuzzStringReturner _myBuzzStringReturner;
@Autowired
public BuzzStringReturnerFactory(final BuzzStringReturner _myBuzzStringReturner) {
this._myBuzzStringReturner = _myBuzzStringReturner;
}
@Override
public StringStringReturner createStringStringReturner() {
return this._myBuzzStringReturner;
}
}
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;
@Service
public class NewLineStringReturnerFactory implements
StringStringReturnerFactory {
private final NewLineStringReturner _newlineStringReturner;
@Autowired
public NewLineStringReturnerFactory(final NewLineStringReturner _newlineStringReturner) {
this._newlineStringReturner = _newlineStringReturner;
}
@Override
public StringStringReturner createStringStringReturner() {
return this._newlineStringReturner;
}
}
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;
@Service
public class BuzzStringPrinterFactory implements StringPrinterFactory {
private final BuzzStringPrinter _buzzStringPrinter;
@Autowired
public BuzzStringPrinterFactory(final BuzzStringPrinter _buzzStringPrinter) {
this._buzzStringPrinter = _buzzStringPrinter;
}
@Override
public StringPrinter createStringPrinter() {
return this._buzzStringPrinter;
}
}
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;
@Service
public class IntegerIntegerPrinterFactory implements IntegerPrinterFactory {
private final IntegerIntegerPrinter _integerIntegerPrinter;
@Autowired
public IntegerIntegerPrinterFactory(final IntegerIntegerPrinter _integerIntegerPrinter) {
this._integerIntegerPrinter = _integerIntegerPrinter;
}
@Override
public IntegerPrinter createPrinter() {
return this._integerIntegerPrinter;
}
}
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;
@Service
public class EnterpriseGradeFizzBuzzSolutionStrategyFactory implements FizzBuzzSolutionStrategyFactory {
private final FizzBuzzSolutionStrategy _fizzBuzzSolutionStrategy;
@Autowired
public EnterpriseGradeFizzBuzzSolutionStrategyFactory(final FizzBuzzSolutionStrategy _fizzBuzzSolutionStrategy) {
this._fizzBuzzSolutionStrategy = _fizzBuzzSolutionStrategy;
}
@Override
public FizzBuzzSolutionStrategy createFizzBuzzSolutionStrategy() {
return this._fizzBuzzSolutionStrategy;
}
}
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;
@Service
public class LoopComponentFactory {
private final LoopCondition _loopCondition;
private final LoopInitializer _loopInitializer;
private final LoopStep _loopStep;
@Autowired
public LoopComponentFactory(final LoopCondition _loopCondition, final LoopInitializer _loopInitializer,
final LoopStep _loopStep) {
this._loopCondition = _loopCondition;
this._loopInitializer = _loopInitializer;
this._loopStep = _loopStep;
}
public LoopCondition createLoopCondition() {
return this._loopCondition;
}
public LoopInitializer createLoopInitializer() {
return this._loopInitializer;
}
public LoopFinalizer createLoopFinalizer(final int nLoopFinalValue) {
final LoopFinalizer myLoopFinalizer = new LoopFinalizer(nLoopFinalValue);
return myLoopFinalizer;
}
public LoopStep createLoopStep() {
return this._loopStep;
}
}
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;
@Service
public class FizzBuzzOutputGenerationContextVisitorFactory implements
OutputGenerationContextVisitorFactory {
private final FizzBuzzOutputGenerationContextVisitor _fizzBuzzOutputGenerationContextVisitor;
@Autowired
public FizzBuzzOutputGenerationContextVisitorFactory(
final FizzBuzzOutputGenerationContextVisitor _fizzBuzzOutputGenerationContextVisitor) {
this._fizzBuzzOutputGenerationContextVisitor = _fizzBuzzOutputGenerationContextVisitor;
}
@Override
public OutputGenerationContextVisitor createVisitor() {
return this._fizzBuzzOutputGenerationContextVisitor;
}
}
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;
@Service
public class FizzStrategyFactory implements IsEvenlyDivisibleStrategyFactory {
private final FizzStrategy _fizzStrategy;
@Autowired
public FizzStrategyFactory(final FizzStrategy _fizzStrategy) {
this._fizzStrategy = _fizzStrategy;
}
@Override
public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy() {
return this._fizzStrategy;
}
}
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;
@Service
public class FizzStringReturnerFactory implements StringStringReturnerFactory {
private final FizzStringReturner _fizzStringReturner;
@Autowired
public FizzStringReturnerFactory(final FizzStringReturner _fizzStringReturner) {
this._fizzStringReturner = _fizzStringReturner;
}
@Override
public StringStringReturner createStringStringReturner() {
return this._fizzStringReturner;
}
}
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;
@Service
public class BuzzStrategyFactory implements IsEvenlyDivisibleStrategyFactory {
private final BuzzStrategy _buzzStrategy;
@Autowired
public BuzzStrategyFactory(final BuzzStrategy _buzzStrategy) {
this._buzzStrategy = _buzzStrategy;
}
@Override
public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy() {
return this._buzzStrategy;
}
}
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;
@Service
public class IntegerIntegerStringReturnerFactory implements
IntegerStringReturnerFactory {
private final IntegerIntegerStringReturner _integerIntegerStringReturner;
@Autowired
public IntegerIntegerStringReturnerFactory(final IntegerIntegerStringReturner _integerIntegerStringReturner) {
this._integerIntegerStringReturner = _integerIntegerStringReturner;
}
@Override
public IntegerStringReturner createIntegerStringReturner() {
return this._integerIntegerStringReturner;
}
}
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;
@Service
public class SystemOutFizzBuzzOutputStrategyFactory implements
FizzBuzzOutputStrategyFactory {
private final SystemOutFizzBuzzOutputStrategy _systemOutFizzBuzzOutputStrategy;
@Autowired
public SystemOutFizzBuzzOutputStrategyFactory(final SystemOutFizzBuzzOutputStrategy _systemOutFizzBuzzOutputStrategy) {
this._systemOutFizzBuzzOutputStrategy = _systemOutFizzBuzzOutputStrategy;
}
@Override
public FizzBuzzOutputStrategy createOutputStrategy() {
return this._systemOutFizzBuzzOutputStrategy;
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;
import org.springframework.stereotype.Service;
@Service
public class LoopInitializer {
private static final int LOOP_INIT_VALUE = 1;
public int getLoopInitializationPoint() {
return LoopInitializer.LOOP_INIT_VALUE;
}
}
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.factories.LoopComponentFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateManipulation;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateRetrieval;
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;
public LoopContext(final int nLoopControlParameterFinalValue) {
final ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
final LoopComponentFactory myLoopComponentFactory = context.getBean("loopComponentFactory",
LoopComponentFactory.class);
this.myLoopInitializer = myLoopComponentFactory.createLoopInitializer();
this.myLoopFinalizer = myLoopComponentFactory.createLoopFinalizer(nLoopControlParameterFinalValue);
this.myLoopCondition = myLoopComponentFactory.createLoopCondition();
this.myLoopStep = myLoopComponentFactory.createLoopStep();
((ConfigurableApplicationContext) context).close();
}
@Override
public void start() {
this.myCurrentControlParameterValue =
this.myLoopInitializer.getLoopInitializationPoint();
}
@Override
public boolean shouldProceed() {
return this.myLoopCondition.evaluateLoop(this.myCurrentControlParameterValue,
this.myLoopFinalizer.getLoopFinalizationPoint());
}
@Override
public void proceed() {
this.myCurrentControlParameterValue =
this.myLoopStep.stepLoop(this.myCurrentControlParameterValue);
}
@Override
public int getControlParameter() {
return this.myCurrentControlParameterValue;
}
}
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;
public final class LoopRunner {
private final LoopContextStateManipulation myStateManipulation;
private final LoopContextStateRetrieval myStateRetrieval;
private final LoopPayloadExecution myPayload;
public LoopRunner(final LoopContextStateManipulation stateManipulation,
final LoopContextStateRetrieval stateRetrieval, final LoopPayloadExecution payload) {
this.myStateManipulation = stateManipulation;
this.myStateRetrieval = stateRetrieval;
this.myPayload = payload;
}
public void runLoop() {
for (this.myStateManipulation.start(); this.myStateManipulation.shouldProceed(); this.myStateManipulation.proceed()) {
this.myPayload.runLoopPayload(this.myStateRetrieval);
}
}
}
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.ThreeWayIntegerComparisonResult;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.ThreeWayIntegerComparator;
@Service
public class LoopCondition {
public boolean evaluateLoop(final int nCurrentNumber, final int nTotalCount) {
final ThreeWayIntegerComparisonResult comparisonResult = ThreeWayIntegerComparator.Compare(nCurrentNumber,
nTotalCount);
if (comparisonResult == ThreeWayIntegerComparisonResult.FirstIsLessThanSecond) {
return true;
} else if (comparisonResult == ThreeWayIntegerComparisonResult.FirstEqualsSecond) {
return true;
} else {
return false;
}
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;
public final class LoopFinalizer {
private final int nStoredLoopFinalValue;
public LoopFinalizer(final int nLoopFinalValue) {
this.nStoredLoopFinalValue = nLoopFinalValue;
}
public int getLoopFinalizationPoint() {
return this.nStoredLoopFinalValue;
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop;
import org.springframework.stereotype.Service;
@Service
public class LoopStep {
private static final int LOOP_INC_VALUE = 1;
public int stepLoop(final int nCurrentNumber) {
return nCurrentNumber + LoopStep.LOOP_INC_VALUE;
}
}
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.context.ApplicationContext;
import org.springframework.stereotype.Service;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator.IntegerForEqualityComparator;
@Service
public class NumberIsMultipleOfAnotherNumberVerifier {
private static IntegerDivider integerDivider;
@PostConstruct
public void init() {
final ApplicationContext applicationContext = ApplicationContextHolder.getApplicationContext();
this.integerDivider = applicationContext.getBean(IntegerDivider.class);
}
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;
}
}
}
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.strategies.comparators.integercomparator.IntegerForEqualityComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator.FirstIsSmallerThanSecondDoubleComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator.FirstIsLargerThanSecondDoubleComparator;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters.DoubleToIntConverter;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters.IntToDoubleConverter;
@Service
public class IntegerDivider {
public static final int INTEGER_DIVIDE_ZERO_VALUE = 0;
public static final int INTEGER_ORIGIN_ZERO_VALUE = 0;
private final FirstIsSmallerThanSecondDoubleComparator firstIsSmallerThanSecondDoubleComparator;
private final FirstIsLargerThanSecondDoubleComparator firstIsLargerThanSecondDoubleComparator;
@Autowired
public IntegerDivider(final FirstIsLargerThanSecondDoubleComparator firstIsLargerThanSecondDoubleComparator,
final FirstIsSmallerThanSecondDoubleComparator firstIsSmallerThanSecondDoubleComparator) {
this.firstIsLargerThanSecondDoubleComparator = firstIsLargerThanSecondDoubleComparator;
this.firstIsSmallerThanSecondDoubleComparator = firstIsSmallerThanSecondDoubleComparator;
}
public int divide(final int nFirstInteger, final int nSecondInteger) {
final boolean denominatorEqualsZero =
IntegerForEqualityComparator.areTwoIntegersEqual(nSecondInteger, IntegerDivider.INTEGER_DIVIDE_ZERO_VALUE);
if (denominatorEqualsZero) {
throw new ArithmeticException("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) IntegerDivider.INTEGER_ORIGIN_ZERO_VALUE;
if (this.firstIsSmallerThanSecondDoubleComparator.FirstIsSmallerThanSecond(dbQuotient,
(double) IntegerDivider.INTEGER_ORIGIN_ZERO_VALUE)) {
dbRoundedQuotient = Math.ceil(dbQuotient);
} else if (this.firstIsLargerThanSecondDoubleComparator.FirstIsLargerThanSecond(dbQuotient,
(double) IntegerDivider.INTEGER_ORIGIN_ZERO_VALUE)) {
dbRoundedQuotient = Math.floor(dbQuotient);
}
final int nIntegerQuotient = DoubleToIntConverter.Convert(dbRoundedQuotient);
return nIntegerQuotient;
}
}
}
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;
@Service
public class BuzzStrategy implements IsEvenlyDivisibleStrategy {
public boolean isEvenlyDivisible(final int theInteger) {
if (NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
BuzzStrategyConstants.BUZZ_INTEGER_CONSTANT_VALUE)) {
return true;
} else {
return false;
}
}
}
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;
public final class LoopContextStateRetrievalToSingleStepOutputGenerationAdapter implements SingleStepOutputGenerationParameter {
private final LoopContextStateRetrieval _retrievalObjectToAdapt;
public LoopContextStateRetrievalToSingleStepOutputGenerationAdapter(final LoopContextStateRetrieval retrievalObjectToAdapt) {
this._retrievalObjectToAdapt = retrievalObjectToAdapt;
}
@Override
public int retrieveIntegerValue() {
return this._retrievalObjectToAdapt.getControlParameter();
}
}
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;
public final class FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter implements FizzBuzzExceptionSafeOutputStrategy {
private final FizzBuzzOutputStrategy _fizzBuzzOutputStrategy;
public FizzBuzzOutputStrategyToFizzBuzzExceptionSafeOutputStrategyAdapter(final FizzBuzzOutputStrategy fizzBuzzOutputStrategy) {
this._fizzBuzzOutputStrategy = fizzBuzzOutputStrategy;
}
@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!
}
}
}
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;
@Service
public class FizzStrategy implements IsEvenlyDivisibleStrategy {
public boolean isEvenlyDivisible(final int theInteger) {
if (NumberIsMultipleOfAnotherNumberVerifier.numberIsMultipleOfAnotherNumber(theInteger,
FizzStrategyConstants.FIZZ_INTEGER_CONSTANT_VALUE)) {
return true;
} else {
return false;
}
}
}
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;
@Service
public class NoFizzNoBuzzStrategy implements IsEvenlyDivisibleStrategy {
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;
}
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;
public enum ThreeWayIntegerComparisonResult {
FirstIsLessThanSecond,
FirstEqualsSecond,
FirstIsGreaterThanSecond
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;
import org.springframework.stereotype.Service;
@Service
public class ThreeWayIntegerComparator {
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("The integers could not be compared.");
}
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.integercomparator;
import org.springframework.stereotype.Service;
@Service
public class IntegerForEqualityComparator {
public static boolean areTwoIntegersEqual(final int nFirstInteger, final int nSecondInteger) {
final ThreeWayIntegerComparisonResult comparisonResult =
ThreeWayIntegerComparator.Compare(nFirstInteger, nSecondInteger);
if (comparisonResult == ThreeWayIntegerComparisonResult.FirstEqualsSecond) {
return true;
} else {
return false;
}
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator;
import org.springframework.stereotype.Service;
@Service
public class FirstIsLargerThanSecondDoubleComparator {
public boolean FirstIsLargerThanSecond(final double dbFirstDoubleToCompare, final double dbSecondDoubleToCompare) {
if (dbFirstDoubleToCompare > dbSecondDoubleToCompare) {
return true;
} else {
return false;
}
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.comparators.doublecomparator;
import org.springframework.stereotype.Service;
@Service
public class FirstIsSmallerThanSecondDoubleComparator {
public boolean FirstIsSmallerThanSecond(final double dbFirstDoubleToCompare, final double dbSecondDoubleToCompare) {
if (dbFirstDoubleToCompare < dbSecondDoubleToCompare) {
return true;
} else {
return false;
}
}
}
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.BuzzStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.BuzzStringPrinterFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.FizzBuzzOutputGenerationContextVisitorFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.FizzStrategyFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.FizzStringPrinterFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.IntegerIntegerPrinterFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.NewLineStringPrinterFactory;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.factories.NoFizzNoBuzzStrategyFactory;
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;
@Service
public class SingleStepOutputGenerationStrategy implements OutputGenerationStrategy {
private final List<OutputGenerationContext> contexts;
private final OutputGenerationContextVisitor contextVisitor;
private final StringPrinter myNewLinePrinter;
@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) {
this.contextVisitor = fizzBuzzOutputGenerationContextVisitorFactory.createVisitor();
this.contexts = new ArrayList<OutputGenerationContext>();
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();
}
public void performGenerationForCurrentStep(final SingleStepOutputGenerationParameter generationParameter) {
final int nGenerationParameter = generationParameter.retrieveIntegerValue();
final Iterator<OutputGenerationContext> iterator = this.contexts.iterator();
while (iterator.hasNext()) {
final OutputGenerationContext context = iterator.next();
this.contextVisitor.visit(context, nGenerationParameter);
}
this.myNewLinePrinter.print();
}
}
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.interfaces.loop.LoopPayloadExecution;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzSolutionStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopContext;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.loop.LoopRunner;
@Service
public class EnterpriseGradeFizzBuzzSolutionStrategy implements FizzBuzzSolutionStrategy {
private final LoopPayloadExecution _loopPayloadExecution;
@Autowired
public EnterpriseGradeFizzBuzzSolutionStrategy(final LoopPayloadExecution _loopPayloadExecution) {
this._loopPayloadExecution = _loopPayloadExecution;
}
@Override
public void runSolution(final int nFizzBuzzUpperLimit) {
final LoopContext loopContext = new LoopContext(nFizzBuzzUpperLimit);
final LoopRunner loopRunner = new LoopRunner(loopContext, loopContext, this._loopPayloadExecution);
loopRunner.runLoop();
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;
import org.springframework.stereotype.Service;
@Service
public class 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;
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;
import org.springframework.stereotype.Service;
@Service
public class BuzzStrategyConstants
{
public static final int BUZZ_INTEGER_CONSTANT_VALUE = 5;
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.constants;
import org.springframework.stereotype.Service;
@Service
public class FizzStrategyConstants
{
public static final int FIZZ_INTEGER_CONSTANT_VALUE = 3;
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters;
import org.springframework.stereotype.Service;
@Service
public class DoubleToIntConverter {
public static int Convert(final double dbDoubleToConvert) {
final int nConversionResult = (int) dbDoubleToConvert;
return nConversionResult;
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.converters.primitivetypesconverters;
import org.springframework.stereotype.Service;
@Service
public class IntToDoubleConverter {
public static double Convert(final int nIntegerToConvert) {
final double dbConversionResult = (double) nIntegerToConvert;
return dbConversionResult;
}
}
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;
@Service
public class SystemOutFizzBuzzOutputStrategy implements FizzBuzzOutputStrategy {
@Override
public void output(final String output) throws IOException {
System.out.write(output.getBytes());
System.out.flush();
}
}
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.interfaces.loop.LoopPayloadExecution;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop.LoopContextStateRetrieval;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.OutputGenerationStrategy;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl.strategies.adapters.LoopContextStateRetrievalToSingleStepOutputGenerationAdapter;
@Service
public class SingleStepPayload implements LoopPayloadExecution {
private final OutputGenerationStrategy _outputGenerationStrategy;
@Autowired
public SingleStepPayload(final OutputGenerationStrategy _outputGenerationStrategy) {
this._outputGenerationStrategy = _outputGenerationStrategy;
}
@Override
public void runLoopPayload(final LoopContextStateRetrieval stateRetrieval) {
final LoopContextStateRetrievalToSingleStepOutputGenerationAdapter adapter =
new LoopContextStateRetrievalToSingleStepOutputGenerationAdapter(stateRetrieval);
this._outputGenerationStrategy.performGenerationForCurrentStep(adapter);
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.impl;
import org.springframework.beans.BeansException;
import org.springframework.context.*;
import org.springframework.stereotype.Service;
@Service
public class ApplicationContextHolder implements ApplicationContextAware {
private static ApplicationContext applicationContext;
private ApplicationContextHolder() {
}
public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
ApplicationContextHolder.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return ApplicationContextHolder.applicationContext;
}
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.parameters;
public interface FizzBuzzUpperLimitParameter {
public int obtainUpperLimitValue();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;
public interface StringPrinter extends DataPrinter {
public void print();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;
public interface DataPrinter {
public void print();
public void printValue(Object value);
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers;
public interface IntegerPrinter extends DataPrinter {
public void printInteger(int theInteger);
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces;
public interface FizzBuzz {
void fizzBuzz(int nFizzBuzzUpperLimit);
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners;
public interface IntegerStringReturner {
public String getIntegerReturnString(int theInteger);
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners;
public interface StringStringReturner {
public String getReturnString();
}
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;
public interface OutputGenerationContext {
public IsEvenlyDivisibleStrategy getStrategy();
public DataPrinter getPrinter();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors;
public interface OutputGenerationContextVisitor {
public void visit(OutputGenerationContext context, int nGenerationParameter);
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.IsEvenlyDivisibleStrategy;
public interface IsEvenlyDivisibleStrategyFactory {
public IsEvenlyDivisibleStrategy createIsEvenlyDivisibleStrategy();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.IntegerStringReturner;
public interface IntegerStringReturnerFactory {
public IntegerStringReturner createIntegerStringReturner();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.visitors.OutputGenerationContextVisitor;
public interface OutputGenerationContextVisitorFactory {
public OutputGenerationContextVisitor createVisitor();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.IntegerPrinter;
public interface IntegerPrinterFactory {
public IntegerPrinter createPrinter();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.stringreturners.StringStringReturner;
public interface StringStringReturnerFactory {
public StringStringReturner createStringStringReturner();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzSolutionStrategy;
public interface FizzBuzzSolutionStrategyFactory {
public FizzBuzzSolutionStrategy createFizzBuzzSolutionStrategy();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies.FizzBuzzOutputStrategy;
public interface FizzBuzzOutputStrategyFactory {
public FizzBuzzOutputStrategy createOutputStrategy();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.factories;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.printers.StringPrinter;
public interface StringPrinterFactory {
public StringPrinter createStringPrinter();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;
public interface LoopContextStateRetrieval {
public int getControlParameter();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;
public interface LoopContextStateManipulation {
public void start();
public boolean shouldProceed();
public void proceed();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.loop;
public interface LoopPayloadExecution {
public void runLoopPayload(LoopContextStateRetrieval stateRetrieval);
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
public interface OutputGenerationStrategy {
void performGenerationForCurrentStep(SingleStepOutputGenerationParameter generationParameter);
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
import java.io.IOException;
public interface FizzBuzzOutputStrategy {
public void output(String output) throws IOException;
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
public interface FizzBuzzExceptionSafeOutputStrategy {
public void output(String output);
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
public interface FizzBuzzSolutionStrategy {
public void runSolution(int nFizzBuzzUpperLimit);
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
public interface SingleStepOutputGenerationParameter {
public int retrieveIntegerValue();
}
package com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.strategies;
public interface IsEvenlyDivisibleStrategy {
public boolean isEvenlyDivisible(int theInteger);
}
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 static org.junit.Assert.assertEquals;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import com.seriouscompany.business.java.fizzbuzz.packagenamingpackage.interfaces.FizzBuzz;
public class FizzBuzzTest {
private PrintStream out;
private FizzBuzz fb;
@Before
public void setUp() {
final ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
this.fb = (FizzBuzz) context.getBean("standardFizzBuzz");
this.out = System.out;
((ConfigurableApplicationContext) context).close();
}
@After
public void tearDown() {
System.setOut(this.out);
}
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();
assertEquals(s, baos.toString());
}
@Test
public void testFizzBuzz() throws IOException {
this.doFizzBuzz(1, "1\n");
this.doFizzBuzz(2, "1\n2\n");
this.doFizzBuzz(3, "1\n2\nFizz\n");
this.doFizzBuzz(4, "1\n2\nFizz\n4\n");
this.doFizzBuzz(5, "1\n2\nFizz\n4\nBuzz\n");
this.doFizzBuzz(6, "1\n2\nFizz\n4\nBuzz\nFizz\n");
this.doFizzBuzz(7, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n");
this.doFizzBuzz(8, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\n");
this.doFizzBuzz(9, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\n");
this.doFizzBuzz(10, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n");
this.doFizzBuzz(11, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\n");
this.doFizzBuzz(12, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n");
this.doFizzBuzz(13, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n");
this.doFizzBuzz(14, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\n");
this.doFizzBuzz(15, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\nFizzBuzz\n");
this.doFizzBuzz(16, "1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\nFizzBuzz\n16\n");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment