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
todo:
  • (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
problems:
  • 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
todo:
  • (8.jan.07) everything
  • (8.jan.07) install an application server somewhere
problems:
  • time :P
copyright © 2007 simon bailey. all rights reserved. powered by not enough sleep