package org.genedb.web.mvc.controller;
public class NumberNameConverter {
private enum Numbers {
MILLION(1000000), THOUSAND(1000), HUNDRED(100), TEN(10);
private int number;
private Numbers(int number) {
this.number = number;
}
public int getNumber() {
return number;
}
}
public static String convert(int num) {
// FIXME Doesn't work for > 100
switch(num) {
case 0: return "zero";
case 1: return "one";
case 2: return "two";
case 3: return "three";
case 4: return "four";
case 5: return "five";
case 6: return "six";
case 7: return "seven";
case 8: return "eight";
case 9: return "nine";
case 10: return "ten";
case 11: return "eleven";
case 12: return "twelve";
case 13: return "thirteen";
case 14: return "fourteen";
case 15: return "fifteen";
case 16: return "sixteen";
case 17: return "seventeen";
case 18: return "eighteen";
case 19: return "nineteen";
case 20: return "twenty";
case 30: return "thirty";
case 40: return "fourty";
case 50: return "fifty";
case 60: return "sixty";
case 70: return "seventy";
case 80: return "eighty";
case 90: return "ninety";
}
StringBuilder ret = new StringBuilder();
if (num < 100) {
// But not one of those above
ret.append(convert(num / 10));
ret.append("-");
ret.append(convert(num % 10));
return ret.toString();
}
int balance = num;
for (Numbers number : Numbers.values()) {
int count = balance / number.getNumber();
if (count > 0) {
balance -= count * number.getNumber();
ret.append(convert(count)+" "+number.name());
}
}
return ret.toString();
}
}