Lines of Code

Ik heb na drie dagen eindelijk alle business regels in het model gedeelte gestopt, de JPA erin gegooid en de relaties goed gelegd. De code om alles te testen is er nog niet maar hopelijk is er niet veel fouts aan ^^. Uit nieuwsgierigheid wilde ik eens weten hoeveel lijnen code ik al in me project heb. Omdat Netbeans zo’n plugin niet heeft, heb ik maar eventjes snel een LoC (Lines of Code) scriptje in elkaar geflanst in Perl.

Het LoC script: http://aiids.pastebin.com/u8LAxc9L

Het resultaat van me afstudeerproject: http://aiids.pastebin.com/MJbRLrbT

Java Persistence API: annotations

Java Persistence API (JPA in het kort) is eigenlijk de API die ervoor zorgt dat je je objecten kan opslaan in databases. Bijvoorbeeld je hebt een database voor liedjes. Je hebt een songs, albums en artiesten tabel. Daarin zitten bepaalde kolommen die dan per record waarden krijgen. Nu is het zo dat ik in me opleiding een basis gekregen heb van JPA. Daar leerden we enkele annotaties kennen als @Entity en @OneToMany. De annotaties zeggen dat die klasse een tabel is en dat de properties van de klasse de kolommen zijn. Nu heb je ook dat je relaties hebt tussen objecten en tabellen. Bijvoorbeeld een liedje kan in meerdere albums voorkomen en een album kan meerdere liedjes hebben. Dat is een ManyToMany relatie. Een andere relatie is een OneToMany (of ManyToOne) relatie. Voorbeeld is dat een song een artiest heeft en een artiest kan meerdere liedjes hebben. In SQL vorm en met behulp van ERD toestanden wordt dit als volgt weergegeven.

Nu is het zo dat ik al ontwikkelaar altijd eerst de database ontwerp doe en dan pas de software eromheen ga maken. Nu had ik een ERD gemaakt en alle tabellen aangemaakt en dan komt de ontwikkeling in Java. Omdat het mijn eerste grote toepassing is in Java met combinatie van een database, zat ik mij af te vragen of ik geen JPA kon gebruiken (want zelf een ORM maken neemt dan terug veel tijd in beslag). Ik had al een basis kennis in me broekzak en wist dat JPA eigenlijk nogal een eigenzinnige manier heeft van namen te geven aan tabellen en kolommen. Ook had ik geen zin om de structuur aan JPA over te laten maar JPA moest mijn structuur volgen. Dus die naam gebruiken voor die entiteit en die namen voor die kolommen en de relaties moesten zo gaan noemen. Dus ik ging op zoek hoe ik dat kon doen. Ik vond dingen als @JoinTable en @JoinColumn voor de relaties en @Table en @Column voor de namen van tabellen en kolommen.

Laat ons eens beginnen met de code te geven die Netbeans maakt als je een entiteit maakt.

Song.java
Album.java
Artiest.java

Je ziet dat er relaties zijn. In JPA moet een relatie altijd een eigenaar hebben. Je ziet dat er soms staat mappedBy en dan een naam. Dat is de naam van de klasse property die de eigenaar is van de relatie. Zo weet JPA dat aan de andere kant van de relatie naar die mappedBy moet gekeken worden om zo de corresponderende objecten te vinden.

Nu willen we dat de tabel namen en kolommen gelijken op onze ERD. Dit is belangrijk want als die database al in gebruik is door andere toepassingen, dan willen we niet dat JPA alles gaat verknoeien door zelf namen te geven. Ik heb de code nogmaals gepost met de annotaties erbij en in commentaar staat er uitleg bij.

Song.java
Album.java
Artiest.java

En nog een screenshot van de tabellen en kolommen die gemaakt zijn.

Voor meer uitleg of vragen kan je altijd een reactie nalaten hier.

Mestverwerking @Roose

Vorige zaterdag zat ik in vergadering met Jeroen voor het voederprogramma en omdat ik nog geen rijbewijs heb, moest ik wachten op me broer tot hij gedaan was met mest te strooien op het land. Ik ging de laatste twee vrachten nog eens mee en zag toen de verwerkingsinstallatie van Roose BVBA. Een kleine put van 6 miljoen liter vloeibare mest en een beest van een tractor (190 PK) met daaraan een tankje van 18 000 liters. Doodgewoon dus…

Internet discussie :D

[no-youtube=http://www.youtube.com/watch?v=fh-X4ti5LC0]

Beuh, de VRT heeft dat filmpje weggedaan. Flikkers!

Voederprogramma

Zoals ik al zei zal mijn VBA programma vervangen worden door een complexer programma (dat zullen we nog eens moeten zien, haha :p). Volgens mij was dit om eens te testen hoe goed ik kon programmeren omdat het andere programma toch redelijk goed moet zijn. Roose vroeg al van november 2010 of ik geen voederprogramma kon maken. Wat snel vertelde hij iets over Excel toestanden die niet goed waren. Waarvan ik dacht “o nee ik programmeer niet in Excel hoor”. Nu kwam er een maand terug een eerste vergadering waarin hij vertelde wat het moest zijn. Het is een programma die de bestellingen van voeders moet beheren. Dit onderdeel van het programma zal mijn afstudeerproject worden. Welke features en must-haves het moet kunnen, staat op de Voederprogramma pagina.

Dus ik doe dit programma als afstudeerproject maar daarna moet er nog aan geschreven worden. Zo moet het programma analyses uitvoeren om bijvoorbeeld te weten welke meelleverancier het beste meel levert en zo de prijs kan drukken op het meel. Om even te illustreren zei hij als het programma 10 cent per ton per jaar kan besparen dat dit 22.000 euros besparingen kan opleveren.

Dit is een uniek programma omdat de programma’s die meelleveranciers geven aan hun klanten eigenlijk domme dingetjes zijn. Daarom schrijf ik het programma zo algemeen mogelijk en dus niet enkel voor het bedrijf Roose BVBA. De eigenaar was ook van dat idee om alles algemeen te doen zodat het programma verkoopbaar is. Als je kan zeggen dat mijn programma zoveel duizenden euros per jaar kan sparen, dan ga je plots veel klanten hebben (en zekers nu het slecht gaat ^^).

De maand februari tot nu toe

We zijn al een tijdje in februari en wat is tot nu toe gebeurt?

Geslaagd!

Ik ben geslaagd voor al mijn 10 examens! Wat betekent dat ik uber slim ben en ten tweede dat ik mag solliciteren want nu rest enkel stage en afstudeerproject nog. Van sommige punten heb ik soms mijn twijfels. Zo was me IT&Recht super gedaan en kreeg ik amper een 11/20… Zelfde voor .NET, perfecte programma’s, perfecte uitleg erbij en prachtige presentaties en toch amper 14/20…

FOSDEM

Vorig weekend maar één dagje naar FOSDEM geweest. De zaterdag had ik geen zin en niemand was toch aanwezig (heb dan maar een dag gewerkt). De zondag dan maar vertrokken met Lien naar FOSDEM. Onderweg kwam avdg erbij en in brussel-zuid kwam Pieter (met volle geweld door de deur :D). Nadat ik en Lien champagne kregen van Pieter (waarvoor dank Pieter) toonde Pieter mij hoe je de ticket machine van de NMBS aan de kloten kan helpen ^^ (waarvoor dank Pieter)².

Eigenlijk was FOSDEM redelijk saai maar heb toch terug een mooie buit aan DVD’s en stickers. Ook stond er een groot touchscreen met openSuse erop. Doodleuk stond Yast2 open (en dat is in root modus) en het duurde ook niet lang voor ik settings (oeps) aan het veranderen was ^^. De meneer was niet zo blij (ik wel) en hij probeerde via ALT + F4 het af te sluiten maar het lukte hem niet ^^. Voor het eerst werden we aangesproken in de aula door een FOSDEM medewerkster. We waren te luidruchtig…

Soubry

Sinds dinsdag werk ik 4 dagen bij Soubry. Me taak is simpel, namelijk Vermicelli van 19kg verpakken. Bij me eerste dag al twee kleine verwondingen opgelopen waarbij er één nieuw was :p. De eerste was een normale snee omdat ik even bleef happeren in de buffer met de hand :p (de dag ervoor kreeg ik video over veiligheid…). De tweede gebeurde tijdens het nemen van een houten pallet van een stapel. Die gleed langs me handen en op de één of andere manier kwam er een stukje hout onder me duimnagel terecht. Ik krijg hem er gewoon niet uit ^^ het is dus naar de dokter gaan of wachten tot hij er zelf gaat uit kruipen. Ik ben eens benieuwd hoelang het duurt voor het eruit gaat kruipen.

update

Vandaag naar de dokter. Hij zei dat het 6 maand zou duren en dat er allemaal restjes zouden in blijven zitten. Dus nadat hij me vinger verdoofde (wat best vies was omdat ik die vloeistof voelde in me vinger) begon hij de helft van me nagel eraf te knippen.