Ukelonn: en webapplikasjon for ukelønn
Tanken er at ungene skal kunne registrere jobber de gjør i hjemmet og at foreldrene kan registrere utbetalinger av ukelønn og andre måter lønna blir betalt på (f.eks. utlegg/lån og ekstra datapakker til mobil).
Webapplikasjonen er skrevet for å bli kjørt i en OSGi runtime, og er ment å være responsive slik at den er lett å kjøre på mobiltelefoner og nettbrett.
Hva ligger på de forskjellige branchene
I øyeblikket er det to hoved-brancher:
- using-primefaces
Denne branchen bruker [[https://en.wikipedia.org/wiki/JavaServer_Faces][JSF]] med [[http://www.primefaces.org/][primefaces]] og er i skrivende stund den som er kommet lengst
- using-rendersnake
Denne branchen er ment å være "back to basic" og bruke [[http://rendersnake.org/][rendersnake]] sammen med en REST-ful backend, men den er i skrivende stund ikke forbi "hello world"-stadiet
Jeg har også plan om å lage en branch med en versjon som bruker vaadin istedenfor primefaces, men den er foreløpig på plan-stadiet
Utsjekk og bygg
Dette trengs for å laste og kjøre programvaren
- Installer det som trengs:
- git: https://git-scm.com/download/win
- Java SDK 1.8: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- Apache maven:
- Download: https://maven.apache.org/download.cgi
- Install: https://maven.apache.org/install.html
- Run: https://maven.apache.org/run.html
- Gjør en klon av git-repositoriet
#+BEGIN_EXAMPLE
mkdir %HOME%\git
cd %HOME%\git
git clone https://github.com/steinarb/ukelonn.git
#+END_EXAMPLE
- Åpne et kommandolinje-vindu og skriv følgende kommandoer:
#+BEGIN_EXAMPLE
cd %HOME%\git\ukelonn
git checkout using-primefaces
mvn clean install
cd ukelonn.gogoshell
mvn install pax:provision
#+END_EXAMPLE
- Åpne en nettleser på http://localhost:8090
Beskrivelse av koden
(Beskriver versjonen fra using-primefaces)
Prosjektet er et maven-prosjekt med følgende struktur:
pom.xml
Dette er topp-prosjektet som definerer alle versjoner av programvare som brukes og alle versjoner av avhengigheter og felles-oppsett for plugins.
ukelonn.api/pom.xml
Dette er en OSGi-bundle som definerer to OSGi-servicer: UkelonnService og UkelonnDatabase
ukelonn.bundle/pom.xml
Dette er selve webapplikasjonen. Siden dette er en JSF-applikasjon så er dette en WAR og ikke en JAR, men det er også en OSGi-bundle som krever en UkelonnDatabase service og som eksponerer en UkelonnService service
ukelonn.bundle.test.db/pom.xml
Dette er en ikke-persistent SQL-database i minnet som setter opp forventet skjema og fyller opp databasen med test-data.
Dette er en fullt funksjonell database, men ingenting blir persistert mellom kjøringer. Den brukes til test både av webappen i gogoshell og brukes som en vanlig jar-fil i enhetstestene i ukelonn.bundle
ukelonn.bundle.postgresql.db/pom.xml
Dette er en OSGi-bundle som forventer å finne en PostgreSQL-base som brukeren som kjører webappen har rettigheter til og som har en database "ukelonn" med forventet skjema
ukelonn.tests/pom.xml
Dette er en Pax Exam integrasjonstest som sjekker at OSGi-bundlene starter og at de tilbyr riktig service.
ukelonn.gogoshell/pom.xml
Dette er en POM for å starte webappen kjørende i gogoshell. Dvs. en fullt funksjonell OSGi-kontainer som blir startet på nytt hver gang maven starter den
ukelonn.karaf/pom.xml
Dette er en POM som lager en "feature"-fil for [[http://karaf.apache.org/][Apache karaf]]
ukelonn.rebundled/pom.xml
Hver gang man trenger en avhengighet som ikke er en OSGi-bundle kan man "rebundle" avhengigheten ved å lage et nytt underprosjekt av dette prosjektet
Kjøring på apache karaf
Kjøring på apache karaf med testdatabasen
Kjøring på apache karaf med PostgreSQL
Framgangsmåte:
- Klon og bygg webapplikasjonen (regner med at linux-brukere klarer å oversette til noe passende):
#+BEGIN_EXAMPLE
mkdir %HOME%\git
cd %HOME%\git
git clone https://github.com/steinarb/ukelonn.git
cd %HOME%\git\ukelonn
git checkout using-primefaces
mvn clean install
#+END_EXAMPLE
- [http://karaf.apache.org/download.html][Last ned Karaf 4.0.7]], pakk ut den nedlastede distribusjonen og start karaf fra kommandlinja
- Gjør pax-web (servlet-kontainer-støtte for OSGi) tilgjengelig som "karaf features", hentet fra maven:
#+BEGIN_EXAMPLE
feature:repo-add mvn:org.ops4j.pax.web/pax-web-features/4.2.7/xml/features
#+END_EXAMPLE
- Gjør ukelonn-webapplikasjonen tilgjengelig for karaf, som "karaf features", hentet fra maven:
#+BEGIN_EXAMPLE
feature:repo-add mvn:no.priv.bang.ukelonn.karaf/ukelonn-all/LATEST/xml/features
#+END_EXAMPLE
- Installer avhengighetene:
#+BEGIN_EXAMPLE
feature:install pax-jsf-support
feature:install pax-jdbc
feature:install pax-jdbc-derby
#+END_EXAMPLE
- Installer webapplikasjonen:
#+BEGIN_EXAMPLE
feature:install ukelonn.api
feature:install ukelonn.bundle.test.db
feature:install ukelonn.bundle
#+END_EXAMPLE
- Koble en nettleser mot http://localhost:8181/ukelonn/
- For en vanlig bruker, brukernavn/passord: jad/1ad
- Vanlig bruker kan registrere nye jobber og sjekke saldo
- For en administrator-bruker, brukernavn/passord: on/ola12
- Administrator-bruker kan registrere utbetalinger, legge inn nye jobbtyper og endre eksisterende, legge inn nye utbetalinger og justere på eksisterende, og legge inn brukere og endre på eksisterende brukere
Dette krever at man har en lokal PostgreSQL-installasjon med følgende innstillinger:
- En database med navn "ukelonn" der brukeren karaf kjører med har alle rettigheter
- Følgende tabeller må være i databasen ukelonn: https://github.com/steinarb/ukelonn/tree/using-primefaces/ukelonn.bundle.test.db/src/main/resources/sql/tables
- Følgende views må være i databasen ukelonn: https://github.com/steinarb/ukelonn/tree/using-primefaces/ukelonn.bundle.test.db/src/main/resources/sql/views
Lisens
Framgangsmåte:
- Klon og bygg webapplikasjonen (regner med at linux-brukere klarer å oversette til noe passende):
#+BEGIN_EXAMPLE
mkdir %HOME%\git
cd %HOME%\git
git clone https://github.com/steinarb/ukelonn.git
cd %HOME%\git\ukelonn
git checkout using-primefaces
mvn clean install
#+END_EXAMPLE
- [http://karaf.apache.org/download.html][Last ned Karaf 4.0.7]], pakk ut den nedlastede distribusjonen og start karaf fra kommandlinja
- Gjør pax-web (servlet-kontainer-støtte for OSGi) tilgjengelig som "karaf features", hentet fra maven:
#+BEGIN_EXAMPLE
feature:repo-add mvn:org.ops4j.pax.web/pax-web-features/4.2.7/xml/features
#+END_EXAMPLE
- Gjør ukelonn-webapplikasjonen tilgjengelig for karaf, som "karaf features", hentet fra maven:
#+BEGIN_EXAMPLE
feature:repo-add mvn:no.priv.bang.ukelonn.karaf/ukelonn-all/LATEST/xml/features
#+END_EXAMPLE
- Installer avhengighetene:
#+BEGIN_EXAMPLE
feature:install pax-jsf-support
feature:install pax-jdbc
feature:install pax-jdbc-derby
#+END_EXAMPLE
- Installer webapplikasjonen:
#+BEGIN_EXAMPLE
feature:install ukelonn.api
feature:install postgresql
feature:install ukelonn.bundle.postgresql.db
feature:install ukelonn.bundle
#+END_EXAMPLE
- Koble en nettleser mot http://localhost:8181/ukelonn/
- For en vanlig bruker, brukernavn/passord: jad/1ad
- Vanlig bruker kan registrere nye jobber og sjekke saldo
- For en administrator-bruker, brukernavn/passord: on/ola12
- Administrator-bruker kan registrere utbetalinger, legge inn nye jobbtyper og endre eksisterende, legge inn nye utbetalinger og justere på eksisterende, og legge inn brukere og endre på eksisterende brukere
Lisensen er Eclipse Public License - v 1.0. Jeg kunne tenkt meg GPL i en eller annen variant, men da måtte jeg passe på hvilke lisenser som var kompatible og det ble for mye jobb.