October, 2010

...now browsing by month


Converting .csv file to .hda for importing in Content Server

Friday, October 29th, 2010

One of my peers was talking to me about the pain he was having getting data from another system into UCM. I have done a lot of Java programming, so my thinking was to help out with a java solution. It works. Could this be done differently. Of course! I just picked one way that wouldn’t take up a lot of time. I did including a couple of third party libraries though.

Commons CLI


In the first iteration, I was given a sample csv file, the expected result hda file, and a quick mapping of the metadata fields that were defined in the csv file. The initial idea was that each csv might have a different structure, so having a map file that listed which metadata fields were in the file would solve this. I said, “uh huh.” I left to code this. I put on my headphones and had this working in less than an hour.

I’m laughing because I didn’t give the code to my peer for another three or four hours. Seems simple. Just compile the code, and email a class, and two jar files. Should be simple. Not! Well, maybe it is, but I couldn’t get this to run outside of my development environment (A directory with several sub-directories for src, classes, libs, build, etc.). I kept getting a class not found error. I felt like the dumbest smart person for a while, which can happen a lot, just doesn’t last long in most cases. Well here, the feeling lasted a while. Honestly, I still don’t know what I was doing wrong. I already had a compiled class that worked fine in my ANT environment defined in the build.xml file. I finally created a jar file for the class, and added information in the manifest to point to the main class, and added the two jar files in the classpath. Now it works.

So on with the story.

I send over the three jar files and a quick command line call. With the Commons CLI, I setup the call to include three parameters, -csv, -src, and -out. I was sitting at my desk feeling great for about eight seconds, which was the time it took for my peer to walk over to my desk. Okay, maybe a minute, as he had to run the program before coming over to my desk.

The conversation kind of went like this. “You forgot to set this up to allow default values to be added. Also, there needs to be a way to add another metadata field that actually points to data in the csv file.”

Welcome to the life of a programmer.

On to the next iteration. I added the changes and the code works fine. Not exactly what was asked for, but it gets the job done. There may be another interation or two or three… But the bulk of the code is stable. The file is on the Downloads page. It is only about 130 lines of code, and most of that was for setting up for specific parameters in a specific format. Always those requirements – everything is in the details!

If anyone figures out or knows how to make this work with just the third party jars and the class file, please let me know. Must be something obvious!

You will need to download the commons CLI and opencsv libraries, and add these two jar files. Happy coding!

JDeveloper 11g and Windows 7 64 bit – and a few rants

Thursday, October 7th, 2010

Now I have three development environments: an Intel Mac mini, Fedora Linux on my Dell 630 laptop, and I just installed Windows 7 Professional 64bit on my desktop. I thought it would be fun to re-install all of my applications. Actually I have an old Foxpro application that I need to spend some time on, and decided to setup an actual windows machine. I’ve been using a VM for years. There are other reasons, but suffice it to say, I now have development environments setup using three different operating systems.

The biggest surprise I had was JDeveloper. It doesn’t work with a 64 bit JVM in Windows. Crazy, Insane, I say – but it is true! There is a post about it here. I hear complaints about Linux, but I’ve been running JDeveloper under a 64 bit JVM since I first installed 11g without a problem and love the speed.

I am still in shock, something really simple that Linux just does, and Windows can’t.

So… why not too many posts lately? I have been spending a lot of time converting an Oracle Portal website to use Oracle UCM with Site Studio. The original plan was to use WCI, but the price tag was too high. It has been quite an experience, to say the least. I wish I could say that I like developing with IDOCScript, but really can’t. I remember developing with Vignette, which at the time used tcl with a lot of controversy. Vignette seemed to throw in the towel and offered both a JSP and ASP option, but I’m not sure if that really helped. (back to UCM) I’m torn with IDOCScript. It is another language to work with. Why not use something more mainstream? Behind the scenes, all the code becomes Java, so why all the cloak and dagger?

In the end, I am getting paid to write lines of code. And with that said, I will write in any language when I am getting paid. Another day, another language.