• Blog
  • Info Support
  • Career
  • Training
  • International Group
  • Info Support
  • Blog
  • Career
  • Training
  • International Group
  • Search
logo InfoSupport
  • Latest blogs
  • Popular blogs
  • Experts
      • Alles
      • Bloggers
      • Speakers
  • Meet us
  • About us
    • nl
    • en
    • .NET
    • Advanced Analytics
    • Agile
    • Akka
    • Alexa
    • Algorithms
    • Api's
    • Architectuur
    • Artificial Intelligence
    • ATDD
    • Augmented Reality
    • AWS
    • Azure
    • Big Data
    • Blockchain
    • Business Intelligence
    • Cloud
    • Code Combat
    • Cognitive Services
    • Communicatie
    • Containers
    • Continuous Delivery
    • CQRS
    • Cyber Security
    • Dapr
    • Data
    • Data & Analystics
    • Data Science
    • Data Warehousing
    • Databricks
    • DevOps
    • Digital Days
    • Docker
    • eHealth
    • Enterprise Architecture
    • Hacking
    • Infrastructure & Hosting
    • Innovatie
    • Integration
    • Internet of Things
    • Java
    • Machine Learning
    • Microservices
    • Microsoft
    • Microsoft Bot Framework
    • Microsoft Data Platform
    • Mobile Development
    • Mutation Testing
    • Open source
    • Pepper
    • Power BI
    • Privacy & Ethiek
    • Python
    • Quality Assistance & Test
    • Quality Assurance & Test
    • Requirements Management
    • Scala
    • Scratch
    • Security
    • SharePoint
    • Software Architecture
    • Software development
    • Software Factory
    • SQL Server
    • SSL
    • Start-up
    • Startup thinking
    • Stryker
    • Test Quality
    • Testing
    • TLS
    • TypeScript
    • Various
    • Web Development
    • Web-scale IT
    • Xamarin
    • Alles
    • Bloggers
    • Speakers
Home » Behold! A session planner for JavaOne…
  • Behold! A session planner for JavaOne...

    • By Oud-medewerkers
    • Various 16 years ago
    • Various 0 comments
    • Various Various
    Behold! A session planner for JavaOne...

    As I have been very busy lately I couldn’t find any time to write a blog entry, so it’s about time now.


    About a week ago I attended a businesspartner meeting organized by the Dutch Java User Group (NL-JUG). One of the topics was this year’s JavaOne visit and of course we talked a little about the terrible session planner (see my other post) and the problems that Klaasjan (NL-JUG chair) and I had with it. Reminded us of the good old times you had this ‘all sessions at a glance’ overview thingie.


    Instead of spending all my energy biling the current session planner, why not come up with something better? Or at least, something that works better for me. So I sat down and gave myself a two hour deadline to come up with something useful.


    Let me share something with you. If you give yourself a two hour deadline, one comes up with crazy ideas. Some of them which I can’t really state here, risking being fired by my employer :o) Well, after ten minutes of evil thoughts I decided to take the following approach:


    1. Open a browser and head to the fantastic Session Builder tool at the JavaOne website.


    2. After logging in with my personal JavaOne id, I used the infamous querytool to show me an overview of all sessions by day, starting Monday.


    3. Next, simply select all sessions, or BOFs that you find of any interest. Take your time to check out the abstracts if you’re not immediately seduced by the session’s title.


    4. When you’re done for Monday, add your selection to MySchedule. Maybe the tool starts nagging that you have selected multiple sessions in the same timeslot, but I regard my selection as a shortlist, making my final decision the evening before a conference day.


    5. Repeat steps 2 – 4 until you’ve had all conference days.


    6. Select the MySchedule tab and click ‘Save MySchedule’ and notice the truly awesome ‘export to CSV’ button. In case some of you don’t know what CSV is, maybe you should take a minute to introduce yourself to this new technology that is most certain gonna wipe out XML in the enterprise. Okay…use the button to download the CSV file containing your schedule and save it to disk.


    7. Next, we unleash the true power of Microsoft Excel on the poor CSV file. Open the CSV file with Excel and immediately, within the same mouse move select File -> Save As… -> Save as type: XML Spreadsheet (*.xml) -> OK. Exit Excel as fast as you can. Phfew…that was close! Could you feel the dark side?


    8. We lost about half an hour now to create the schedule. Time is running out, so we need a simple XML parser. I decided to use something I’m familiar with, so I chose JDOM. Actually there’s lots of options, so pick your favorite. The XML spreadsheet has a very straightforward format. Use a text editor or browser to take a peek at it. Time for my next bold move. Instead of using Eclipse I thought it would be fun to take NetBeans 4.1 for a spin. Not that I am a true believer, but all of the current marketing power made me just a little curious. Just a little! I won’t go into a NetBeans vs. Eclipse shakeout here, but take it from me that NetBeans has some nice features that you’ll like, although in the end I still choose Eclipse, or WSAD (RAD) for that matter :o)


    So where did I leave you? Ahh..we were about to parse the XML MySchedule and time is running out. Here we go:


    Use JDOM’s SaxBuilder and load the schedule file from disk. SaxBuilder outputs a Document that can be processed with a simple iterator to obtain the worksheet from the XML document. Next, I wrote some methods to process tables and rows. The processRows() method actually contains all the good stuff because it has access to the actual data that we’re interested in. The structure of a row is the following: SESSIONID, STARTDATE, STARTTIME, ENDTIME, ROOM, TITLE. All you have to do here is write some tedious code, parsing all of the mentioned elements. I put the data into a ‘Session’ object, which in turn is being added to a collection of sessions. Next step is to perform a little sorting. We don’t want our planner to be as messy as the real thing, do we? :o) Sorting algorithms are kind of my weak spot. Maybe I should have asked my coworker Martin to get his hands dirty. I suspect him of performing a manual bubblesort when brushing his teeth. No offense Martin, lets just hope he’s not reading this :o) Anyway, my sorting algorithm doesn’t deserve a Nobel prize, or a Duke Award for that matter. I created a few ArrayLists and a switch to find out which day a session belongs to. This also involved a very crappy implementation of getDay() on the Session object. Nothing to be proud of here. Now that we’ve got everything sorted out it’s time to present our schedule in a somehow nicer format than the original. My first attempt was HTML. Create a method that outputs a few HTML statements that make up a simple TABLE and output all of the session info into this table. Repeat this for all conference days and there you have it, your own ‘everything at a glance’ schedule! You can fancy things up here with some coloring. I chose different colors for different types of sessions. Here’s an example of what the output looks like:



    9. Alright, so this step 8 was one big step for mankind. I’ve got only one problem left. Time! Still got 30 minutes to the deadline. Time for a little stress now. The HTML table is nice, you can use Word or some pretty printing tool to output the schedule to your printer. But wait…I also own this HP iPAQ. Actually I mainly use it to run TomTom GPS Navigation in my car, but I could also use it as my handheld schedule at JavaOne. Unfortunately there is no good J2ME implementation on iPAQ that I know of. So workaround with the dark side once again. Lets call in the help of Google and do a search on ‘vCal specification’. Like always, first hit is a winner. This vCal specification is a very simple text-based format for describing calendar events. It uses EDI like syntax. Oh my…CSV, XML, EDI…where is this gonna get me? Back to NetBeans…alter the Session object to contain a toVCal() method and output the session data as a single vCal Event. According to the specification, events can also be bundled into a vCalendar. All I had to do was add a few lines of text. Result: a VCS file, containing all of the JavaOne sessions as calendar events.


    10. Well we’re finally there. Minor disappointment is that uploading the VCS file using Bluetooth to my PDA didn’t have the expected result. Unfortunately the Calendar application on my iPAQ is unable to import the VCS file, or recognize the incoming Bluetooth data as a series of Calendar events. Once again a workaround here. Use Microsoft Outlook to import the VCS file into Outlook’s Calendar. When you’re done use ActiveSync to synchronize Outlook with the PDA and you’re all set! If you happen to own a Palm instead of an iPAQ, you can also use the Palm Desktop application to handle the VCS file for you. Here’s the final result showing in Outlook:



    Alright, time’s up! So much for my ’ten steps to make the most out of the JavaOne 2005 Session Planner’. Download the code here and do with it whatever you like. You need JDOM in order to compile and run. Get JDOM here.


    Some suggestions left as a reader’s exercise… If you’re a real masochist, or master the art to split yourself up and attend all sessions at the same time (there is no spoon!) you could also return to the MySchedule tool and select all sessions. Don’t hold me responsible for side effects, like your hand feeling really numb after selecting 300 BOFs!


    See you at JavaOne!

    Share this

Oud-medewerkers

View profile

IT Training at Info Support

Which training fits you?

Consultancy

Consultancy

Related blogs

  • Video Conferencing en OBS Studio koppelen: online prese…

    Video Conferencing en OBS Studio koppelen: online prese… Maaike Brouwer - 1 year ago

  • Verantwoordelijkheid pakken in jouw eigen persoonlijke …

    Verantwoordelijkheid pakken in jouw eigen persoonlijke … Stephan Versteegh - 1 year ago

  • Tips voor als je gaat afstuderen

    Tips voor als je gaat afstuderen Bart Renders - 2 years ago

Related downloads

  • Beslisboom voor een rechtmatig ‘kopietje productie’

  • Klantreferentie: Remmicom zet wetgeving om in intellige…

  • Klantreferentie RDW: Samenwerken voor veilig en vertrou…

  • Klantreferentie BeFrank: Strategische IT voor een innov…

  • Wie durft te experimenteren met data in de zorg?

Related videos

  • mijnverzekeringenopeenrij.nl

    mijnverzekeringenopeenrij.nl

  • Winnaar | Innovation Projects 2017

    Winnaar | Innovation Projects 2017

  • Explore | Info Support & HAN & Poliskluis

    Explore | Info Support & HAN & Poliskluis

  • LifeApps bij HagaZiekenhuis

    LifeApps bij HagaZiekenhuis

  • Info Support | Bedrijfsfilm

    Info Support | Bedrijfsfilm

Nieuwsbrief

* verplichte velden

Contact

  • Head office NL
  • Kruisboog 42
  • 3905 TG Veenendaal
  • T +31 318 552020
  • Call
  • Mail
  • Directions
  • Head office BE
  • Generaal De Wittelaan 17
  • bus 30 2800 Mechelen
  • T +32 15 286370
  • Call
  • Mail
  • Directions

Follow us

  • Twitter
  • Facebook
  • Linkedin
  • Youtube

Newsletter

Sign in

Extra

  • Media Library
  • Disclaimer
  • Algemene voorwaarden
  • ISHBS Webmail
  • Extranet
Beheer cookie toestemming
Deze website maakt gebruik van Functionele en Analytische cookies voor website optimalisatie en statistieken.
Functioneel
Altijd actief
De technische opslag of toegang is strikt noodzakelijk voor het legitieme doel het gebruik mogelijk te maken van een specifieke dienst waarom de abonnee of gebruiker uitdrukkelijk heeft gevraagd, of met als enig doel de uitvoering van de transmissie van een communicatie over een elektronisch communicatienetwerk.
Voorkeuren
De technische opslag of toegang is noodzakelijk voor het legitieme doel voorkeuren op te slaan die niet door de abonnee of gebruiker zijn aangevraagd.
Statistieken
De technische opslag of toegang die uitsluitend voor statistische doeleinden wordt gebruikt. De technische opslag of toegang die uitsluitend wordt gebruikt voor anonieme statistische doeleinden. Zonder dagvaarding, vrijwillige naleving door uw Internet Service Provider, of aanvullende gegevens van een derde partij, kan informatie die alleen voor dit doel wordt opgeslagen of opgehaald gewoonlijk niet worden gebruikt om je te identificeren.
Marketing
De technische opslag of toegang is nodig om gebruikersprofielen op te stellen voor het verzenden van reclame, of om de gebruiker op een website of over verschillende websites te volgen voor soortgelijke marketingdoeleinden.
Beheer opties Beheer diensten Beheer leveranciers Lees meer over deze doeleinden
Voorkeuren
{title} {title} {title}