Site Studio

Written by klee on July 7th, 2011

I’ve been really busy with Oracle Development work. To be more specific – UCM.

Just over two weeks to go before my employer launches a new UCM Website that is built with Site Studio. I think the most difficult part of this project was to not develop a site with any pre-conceived notion of how to do it, but to let go, and do things the Site Studio way. Still working on that part.

I believe we will have a successful launch, but I am not completely satisfied with the site. I really like UCM, but Site Studio puts way too many limitations on the contributors who must enter in the content. I’m sure many Oracle folks may balk at that, and yes, there are many easier ways to edit data, but they are fairly pricey and we just couldn’t afford it.

Maybe the next iteration will simply be a Drupal based Web site that uses UCM data via Service calls to get JSON data. I think this would be much more easy, and would have saved a lot of heartache and money.

Then again, this is the last “just over two weeks left” push. Working late seems normal at this point.

I’m sure looking forward to about three weeks from now!


UCM 11g – Upgrade in Process

Written by klee on April 19th, 2011

Just started working on upgrading from Oracle’s UCM 10gR3 to 11g. The upgrade is going well. I am following the migration guide from Oracle. So far so good. I’ll let you know what problems I run into!


RMOUG – First University Session

Written by klee on February 15th, 2011

Went to my first University session today. Brad Brown presented on creating applications for Android devices. The topic was very timely as more organizations are working on a way to display content on mobile devices.

Where the presentation excelled, was in explaining the trials and errors that Brad had gone through in developing mobile applications that would make money. This was very interesting to hear, and Brad really drove the point home that this is a prime market to be in. Can’t wait to start developing! Can’t wait to get my first Droid phone in April!


Server down for upgrades

Written by klee on January 27th, 2011

With the price of hard drives to new lows, I purchased two 2 TB drives for $79.00 each. I also picked up a promise sata II card. I have been spending time at work while my server worked on updating the new drives with data. I now have two 1 TB drives and two 2 TB drives mirrored with raid 1 using mdadm under Ubuntu. Sorry for the downtime!


APEX-O-MATIC – In a Blender with APEX and Web Services

Written by klee on November 1st, 2010

That’s the title of my accepted presentation at RMOUG 2011. I thought it was fun to come up with that one! Hope to see you there!

RMOUG Training Days 2011, February 15-17, in Denver, Colorado

See paper on Downloads page!


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

Written by klee on 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

Written by klee on 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.


Oracle Virtualbox appliance for Database App Development

Written by klee on September 27th, 2010

I use a lot of software, and lately almost all of it has been from Oracle. I had written a note to Todd Trichler of Oracle after last year’s Rocky Mountain Oracle Users Group Training Days, as almost every Oracle presenter used a similar image for presenting material, and I wanted to get a copy of the image. Well, it seems that the image has arrived, and you can download it here.


Keeping track of tasks

Written by klee on July 18th, 2010

At work, I have been using the tool manymoon for tracking todo lists that is well integrated with Google Calendar. It doesn’t matter if you are using gmail or google apps as I am, as the product uses openid to your google account to login. I don’t own stock and actually think the creators could have come up with a better name. I am simply a very satisfied customer!


JDev 10.1.2 Portlet that consumes RSS Feed

Written by klee on May 4th, 2010

Today, I created several servlets that generate RSS feeds from dynamic data in tables. In order to view the data in another page, it made sense to use a simple portlet. When creating the definition, just make sure that you allow for a single parameter, the feed URL, when defining the provider.

This seems to work fairly well, and I have already created several versions that display the data differently. When I get time, I hope to update that code using CSS to format the data, but that will wait for another day.

<%@page contentType="text/html; charset=UTF-8"%>
<%@page import="oracle.portal.provider.v2.ParameterDefinition"%>
<%@page import="oracle.portal.provider.v2.render.PortletRenderRequest"%>
<%@page import="oracle.portal.provider.v2.http.HttpCommonConstants"%>

  PortletRenderRequest pReq = (PortletRenderRequest) request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
  ParameterDefinition params[] = pReq.getPortletDefinition().getInputParameters();
  String sURL = "";
  try {
    sURL = pReq.getParameter("p_url");
    if (sURL == null || sURL.equals("")) {
      System.out.println("sURL could not be determined");
      sURL = "";
  } catch (Exception e) {
      System.out.println("Error:" + e.getMessage());


You may be wondering where the java code is that generates the actual feed. I can post that later, but for those that want this now, here is a link from the site that I based my code from.

Creating an RSS Feed