cdlib – keep track of your albums
so, tell me something about cdlib
cdlib is a multi-component program for managing a library of cds. originally created as a project for a programming course, it is the first implementation of a generic framework for managing almost any form of data in a library, be it cds, dvds, digital music files, digital films, books, …
ok, tell me something that wasn't on the start page
cdlib consists of two main components. one is an off-line client which queries cddb/freedb for the information pertinent to the disc, then submits it to the other component, which is a web-based library.
this web-based library will eventually not only offer users the possibility of managing their collections, but also to keep track of lending processes.
for more information have a good look at the [rudimentary]
whitepaper (which is in german, we were drinking real beer and
conversing in german at the time) and the [not so rudimentary]
javadoc.
links are →
cool, now tell me how it works!
- client core
-
depending on how you look at it, this is either the most
complicated or the most simple part of the whole project. the
core logic basically handles all the tasks of reading the cd
in the drive, calculating the discid, talking to a cddbp
server to get the track information.
once the core has determined this information it is passed to the gui where the user can review the information gathered. if this information is ok, the user can submit it to his cdlib server.
technologies:- JNI wrapper of libcdparanoia
- custom cddbp client which optionally talks CDDBP or HTTP to a cddb-server
- some form of XML based messaging to the server (SOAP, HTTP POST, … [to be determined when i get to that stage
- application logging is done by a custom LogUtils class controlled by binary loglevels
- (8.jan.07) finish the cddpb client
(14.jan.07) this is now more or less done. - (8.jan.07) make the gui
- (8.jan.07) work out how to submit the data to the server
- libcdparanoia can't handle discID calculation for "enhanced cds." consider creating some custom JNI code to wrap code nicked from grip or xmcd
- client won't work on windows. yet. (consider working out some way of low-level access to cd-drive in windows – will probably also involve some JNI)
- same problem with macs. unless
they're running MacOSX
with the libcdparanoia installed. probably. (as
yet unverified)
(09 jan 07) i just tried this. it won't work. looks like i'll be writing a properly capsuled JNI library at some point that will work on linux and macOSX.
- server side
-
this bit's the easy part. parse information from database,
display in browser, handle client request. lather, rinse
& repeat.
also offer some form of functionality for a client to submit the cd information to the database. and while you're at it, make this whole thing into a generic framework that will handle any form of classified media data.
technologies:- JSP/Servlets
- hibernate for database access and persistance
- XML for data shuffling
- probably webservices for accepting client submissions
- in this incarnation postgresql, but any RDBMS should work (if supported by hibernate)
- AJAX functionality in the web gui when i get round to it
- (8.jan.07) everything
- (8.jan.07) install an application server somewhere
- time :P