Skip to content

Commit

Permalink
code fixes and exceptions mechanism
Browse files Browse the repository at this point in the history
  • Loading branch information
Dorian Sarnowski committed Sep 13, 2015
1 parent 6ae9885 commit d61f604
Show file tree
Hide file tree
Showing 11 changed files with 64 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ public interface BaseValues {

Map<Integer, GenderForms> baseNumbers();

Map<Integer, String> exceptions();

List<PluralForms> pluralForms();

String currency();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,17 @@ public static Container englishContainer() {

public static Container germanContainer() {

GermanHundredsToWordsConverter germanHundredsToWordsConverter = new GermanHundredsToWordsConverter(new GermanValues().baseNumbers());
BaseValues values = new GermanValues();

GermanHundredsToWordsConverter germanHundredsToWordsConverter = new GermanHundredsToWordsConverter(
values.baseNumbers());

IntegerToStringConverter converter = new GermanIntegerToWordsConverter(
new IntegerToWordsConverter(germanHundredsToWordsConverter, new GermanValues().pluralForms()),
new IntegerToWordsConverter(germanHundredsToWordsConverter, values.pluralForms()), values.exceptions(),
germanHundredsToWordsConverter);

BigDecimalToStringConverter bigDecimalBankingMoneyValueConverter = new BigDecimalToBankingMoneyConverter(
converter,
new GermanValues().currency());
converter, values.currency());

return new Container(converter, bigDecimalBankingMoneyValueConverter);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import pl.allegro.finance.tradukisto.internal.languages.PluralForms;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -57,6 +58,11 @@ public Map<Integer, GenderForms> baseNumbers() {
.build();
}

@Override
public Map<Integer, String> exceptions() {
return new HashMap<>();
}

@Override
public List<PluralForms> pluralForms() {
return Arrays.<PluralForms>asList(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import pl.allegro.finance.tradukisto.internal.languages.PluralForms;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

Expand All @@ -23,6 +24,11 @@ public Map<Integer, GenderForms> baseNumbers() {
return baseNumbers;
}

@Override
public Map<Integer, String> exceptions() {
return new HashMap<>();
}

@Override
public List<PluralForms> pluralForms() {
return Arrays.<PluralForms>asList(new CzechPluralForms());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import pl.allegro.finance.tradukisto.internal.languages.PluralForms;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -55,6 +56,11 @@ public Map<Integer, GenderForms> baseNumbers() {
.build();
}

@Override
public Map<Integer, String> exceptions() {
return new HashMap<>();
}

@Override
public List<PluralForms> pluralForms() {
return Arrays.<PluralForms>asList(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public GermanHundredsToWordsConverter(Map<Integer, GenderForms> baseValues) {
@Override
public String asWords(Integer value, GenderType genderType) {
if (baseValues.containsKey(value)) {
return baseValues.get(value).form();
return baseValues.get(value).formFor(genderType);
} else if (Range.closed(21, 99).contains(value)) {
return twoDigitsNumberAsString(value, genderType);
} else if (Range.closed(101, 999).contains(value)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,28 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class GermanIntegerToWordsConverter implements IntegerToStringConverter {

private final IntegerToStringConverter bigNumbersConverter;
private final IntegerToStringConverter smallNumbersConverter;
private final Map<Integer, String> exceptions;
private final GenderAwareIntegerToStringConverter smallNumbersConverter;

public GermanIntegerToWordsConverter(IntegerToStringConverter bigNumbersConverter,
Map<Integer, String> exceptions,
GenderAwareIntegerToStringConverter smallNumbersConverter) {
this.bigNumbersConverter = bigNumbersConverter;
this.exceptions = exceptions;
this.smallNumbersConverter = smallNumbersConverter;
}

@Override
public String asWords(Integer value) {
if (exceptions.containsKey(value)) {
return exceptions.get(value);
}

Integer bigNumber = value / 1000000;
Integer smallNumber = value % 1000000;

Expand All @@ -31,13 +39,13 @@ public String asWords(Integer value) {
}

if (smallNumber > 0) {
result.add(smallNumbersConverter.asWords(smallNumber));
result.add(smallNumbersConverter.asWords(smallNumber, GenderType.NON_APPLICABLE));
}

return mergeResult(result);
return merge(result);
}

private String mergeResult(List<String> result) {
private String merge(List<String> result) {
if (result.isEmpty()) {
return smallNumbersConverter.asWords(0, GenderType.NON_APPLICABLE);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package pl.allegro.finance.tradukisto.internal.languages.german;

import com.google.common.collect.ImmutableMap;
import pl.allegro.finance.tradukisto.internal.BaseValues;
import pl.allegro.finance.tradukisto.internal.languages.GenderForms;
import pl.allegro.finance.tradukisto.internal.languages.GenderType;
Expand Down Expand Up @@ -57,6 +58,11 @@ public Map<Integer, GenderForms> baseNumbers() {
.build();
}

@Override
public Map<Integer, String> exceptions() {
return ImmutableMap.<Integer, String>builder().put(1, "eins").build();
}

@Override
public List<PluralForms> pluralForms() {
return Arrays.<PluralForms>asList(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import pl.allegro.finance.tradukisto.internal.languages.SlavonicPluralForms;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -56,6 +57,11 @@ public Map<Integer, GenderForms> baseNumbers() {
.build();
}

@Override
public Map<Integer, String> exceptions() {
return new HashMap<>();
}

@Override
public List<PluralForms> pluralForms() {
return Arrays.<PluralForms>asList(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import pl.allegro.finance.tradukisto.internal.languages.SlavonicPluralForms;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

Expand Down Expand Up @@ -58,6 +59,11 @@ public Map<Integer, GenderForms> baseNumbers() {
.build();
}

@Override
public Map<Integer, String> exceptions() {
return new HashMap<>();
}

@Override
public List<PluralForms> pluralForms() {
return Arrays.<PluralForms>asList(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,14 @@ public class GermanValuesTest extends Specification {
2147483647 | "zwei Milliarden einhundertsiebenundvierzig Millionen vierhundertdreiundachtzigtausendsechshundertsiebenundvierzig"
}

def "should convert fasdfas"() {
def "should convert milliard in German"() {
expect:
converter.asWords(1000000) == "eine Million"
converter.asWords(value) == words

where:
value | words
1000000 | "eine Million"
2000000 | "zwei Millionen"
}

def "should convert any value in range of 0-999 in German"() {
Expand Down

0 comments on commit d61f604

Please sign in to comment.