Scala - små steg - del 1

Jeg har akkurat startet opp prosjektet som skal bli mitt første Scala prosjekt. Jeg har tidligere vært med på en workshop hvor man lærte litt Scala, men jeg er vel bortimot helt blank for Scala å regne.

Prosjektet jeg skal lage er å hente data fra en Fritt Regnskapsdatabase og lagre det i en lokal embedded database. Denne applikasjonen skal være en webstart applikasjon.

Ved første gangs oppstart tar applikasjonen inn brukernavn, domene og passord. Applikasjonen logger inn på Fritt Regnskap, laster ned skjema og oppretter database. Deretter laster den ned data og dytter de inn i databasen.

Applikasjonen skal ha et treview som viser tabellene og deres struktur, et spørrevindu hvor man kan formulere SQL og et resultatvindu der man ser resultatet i tabulær form. Til dette har jeg tenkt å bruke:

* Scala Swing
* JDBC (Kanskje et bibliotek for å gjøre det enklere å bruke JDBC)
* En embedded database - enten hsql eller Apache Derby.
* Noe form for http utility. Har blitt tipset om
http-dispatch http://dispatch.databinder.net/About

Dette er nok ikke en revolusjonerende applikasjon, og det er gjort ofte før meg. Derimot er det en jeg synes vil bidra til Fritt Regnskap og jeg trenger å lære meg Scala Happy

Jeg begynte først med å laste ned Idea og etter et par oppdateringer så virker den klar til bruk. Den ville så ha en Scala installasjon, så jeg lastet ned 2.8.1. Siden jeg kommer til å trenge en del avhengigheter, samt at jeg er blitt tipset om at SBT (Simple Build tool) er greia for Scala, så har jeg lastet ned den også. Jeg fulgte oppskriften og har nå en ‘sbt’ kommando som jeg kan kjøre.

Etter litt dokumentasjon har jeg sånn ca forstått hva som skjer. Jeg har laget meg en Scala/ katalog, og i den kjørte jeg sbt og fulgte oppskriften. Har opprettet et prosjekt FrittRegnskapDBBrowser og fikk en struktur som ligner veldig på maven.

For å ha en avhengighet til Derby så testet jeg å lage en prosjektfil. I project/build/ laget jeg en FrittRegnskapOfflineDB.scala (om det skal være slik det får jeg vel finne ut av etterhvert) og der kunne jeg legge til

val derby = "org.apache.derby" % "derby" % "10.4.1.3"


og ved å kjøre sbt update så ser det ut som at den laster ned derby. Hva som er sammenhengen her med hva prosjektet eventuelt heter har jeg ikke helt forstått, men jeg antar at det er en navnekonvensjon ute å går her. (For eksempel klassenavn <-> prosjektnavn).

Jeg trengte også nå å få laget Idea prosjekt. Jeg utvidet definisjonen min med ‘with IdeaProsject’ (elegant bruk av mixins ser det ut som) og ved å kjøre sbt idea så har jeg fått et Idea prosjekt.

Det som nå viser seg i sbt prosjektet er at jeg må eksplisitt dra inn Scala Swing i prosjektet. Det får jeg til ved å legge til følgende lille snutt sammen med derby includen:

val scalaSwing = "org.scala-lang" % "scala-swing" % "2.8.1"


Deretter må man kjøre
* ‘sbt reload’ for å få sbt med på leken om at noe er oppdatert.
* ‘sbt update’ for å få lastet ned biblitoteket.
* ‘sbt idea’ for å få oppdatert Idea prosjektet.

Og da lot Hello World Swing eksemplet seg kompilere igjen Happy
|