poniedziałek, 5 maja 2008

BigDecimal w GWT

Zawsze gdy testujemy jakiś framework wybieramy najprostszą drogę, co między innymi oznacza, iż korzystamy z takich typów danych jak: String i Integer. Niemniej jednak przychodzi czas kiedy musimy zmierzyć się z obsługą co najmniej kilku typów danych m.in. z typem zmiennoprzecinkowym. Doświadczenie nauczyło mnie, że jeżeli chodzi o Javę to najlepszym typem zmiennoprzecinkowym do wykonywania operacji arytmetycznych jest BigDecimal. Pewnie co niektórym nasuwa się pytanie - dlaczego nie double. Moją odpowiedzią będzie przykład zaczerpniety ze strony http://epramono.blogspot.com: Wynik na wyjściu: Upss... co za niemiła niespodzianka :(

Nie o tym jednak zamierzam pisać moim głównym tematem jest GWT (wersja 1.4.60), a w zasadzie obsługa typu BigDecimal w GWT, której najogólniej rzecz ujmując po prostu nie ma. To oczywiście poważny problem... ale jest na to rozwiązanie:
  • Wchodzimy na stronę: http://code.google.com/p/gwt-math/.
  • Ściągamy dwie biblioteki gwt-math-2.0.1.jar, gwt-math-server-2.0.1.jar i umieszczamy je w classpath naszego projektu.
  • W pliku MyModule.gwt.xml dodajemy sekcję:
  • Na tym koniec naszej pracy, możemy korzystać już z klas java.math.BigDecimal, java.math.BigInteger.

Reasumując: często jest tak, gdy sytuacja wydaje się być beznadziena z pomocą przychodzi Google, poprzez które odkrywamy, że społeczność Open Source przewidziała, że możemy natknąć się na dany problem. Stąd lepiej najpierw poszukać, niż zrobić po swojemu :)