Blog
Ett enkelt bloggsystem med kommentarer, BB code taggar, bilduppladdning, söktaggar, egen CSS och RSS. Det var ett skolprojekt och jag implementerade all funktionalitet som fanns i specifikationen. Specifikationen bestämde också att vi skulle använda Wicket för frontend, Hibernate för databaskopplingen, Spring för transaktionshanteringen och JAXB för RSS. Det var huvudsakligen ett backend projekt så jag har inte satsat så mycket på att få sidan att se snygg ut, frontenden är bara där för att visa att allt funkar.
Jag gjorde så att en ny medlem först bara har tillgång till att lämna kommentarer på blogginlägg. Användaren kan därefter skapa en blog och då få tillgång till att skapa blogginlägg, en användare kan ha flera bloggar. Varje användare har även ett bildgalleri som kan användas i samband med blog inlägg och kommentarer. Bloggarna har en egen CSS fil som går att redigera med ett enkelt formulär. Om den CSS filen innehåller något så används den stilen på bloggens sidor och blogginläggens sidor. Både blogginlägg och kommentarer kan innehålla BB code taggar och dessa kan även påverkas av bloggens egna CSS fil.
Det var ett kul projekt dels eftersom jag redan var intressarad av att lära mig dependency injection med Spring. Jag använde Spring för all konfiguration av JDBC och Hibernate. Spring tog även hand om att sätta ihop mitt generiska DAO system. Jag undvek en hel del boiler plate kod eftersom Spring tog hand om singletons och dependency injection.
Jag tog också tillfället i akt att lära mig mer om MVC. Min view består av Wicket paneler och sidor som implementerar view interfaces. Controllern består av Wicket sidor. Modellen är uppdelad på två delar, dels DAO systemet tillsammans med bönor och dels modellobjekten. Modellobjekten innehåller all business logik och använder sig av DAO systemet. Min implementation av MVC resulterade i rätt många filer men fördelarna var tydliga när jag var tvungen att ändra något som redan var på plats.
Jag gillar Wicket men det fanns absolut tillfällen där jag hade problem eftersom dokumentationen kan vara lite bristande när det kommer till vissa detaljer. Men förutom det så var det ett väldigt trevligt sätt att strukturera en webbapplikation i OOP. Om jag hade haft lite mer tid hade jag gärna satt mig in i Wicket's AJAX klasser.
Eftersom jag använde Maven för min projektstruktur så sparade jag en hel del setup tid. Förutom att den tar hand om alla .jar filer som behövs för projektet så kunde jag även auto-generara JAXB klasserna med hjälp av en Maven plugin. Jag fick lite erfarenhet med Maven på min praktikperiod hos Seamless AB, det var väldigt värdefult att se hur det används på en arbetsplats.
Även om projektet inte är helt klart så tycker jag att den är bra på att visa min kodstil och mina kunskaper inom det här området. Koden är väldokumenterad och innehåller väldigt lite kodduplicering. Det kommer dessutom vara väldigt användbart för mig när jag använder dessa tekniker härnäst eftersom jag har löst en hel del krångliga problem redan. Jag släpper koden som open source under GPL v3 licensen så att andra också kan ta del av vad jag har lärt mig.
Information till utvecklare
Projektet som ligger i repot är ett Maven projekt men innehåller även ett Eclipse projekt. Lättast är att använda Eclipse i samband med m2eclipse. För att kunna köra applikationen måste man minst köra "mvn generate-sources" för att få JAXB klasserna. Det går också att använde "mvn package" och då får man även .war filen. Glöm inte att ställa in databasen också, man kan köra initdb.sql om man använder MySQL. Dessutom måste "application.properties" filen innehåller rätt information. Den man får ut är inställd för PostgreSQL men jag har även lagt in "mysql_application.properties", för att använda MySQL så är det bara att ändra namnet på den till "application.properties".