Log on:
Powered by Elgg

Feed detail

February 13, 2010

BIRT Crosstab Scripting

BIRT supplies scripting hooks for just about every report element in the palette. You can generally implement an onPrepare, onCreate, and onRender event handler for each of these report items. The onPrepare event fires before data is retrieved and allows you to change the design for a specific report item. The onCreate event fires when the report item is being created by the report engine’s generation task. The onRender event fires when the report item is being rendered by the report engine’s render task. These events and example are described on the BIRT website.

read more


February 12, 2010

Silicon Valley’s in Trouble

The recession may have driven Silicon Valley’s innovation engine straight off the cliff, according to an annual study by two local non-profits, Silicon Valley Network and Silicon Valley Community Foundation. Based on their just-released 76-page 2010 Silicon Valley Index they say the Valley is stalled and that it’s “hard to say is whether we’re stuck in neutral, which has happened before, or whether it’s time now for a complete overhaul.”

read more


Silicon Valley’s in Trouble

The recession may have driven Silicon Valley’s innovation engine straight off the cliff, according to an annual study by two local non-profits, Silicon Valley Network and Silicon Valley Community Foundation. Based on their just-released 76-page 2010 Silicon Valley Index they say the Valley is stalled and that it’s “hard to say is whether we’re stuck in neutral, which has happened before, or whether it’s time now for a complete overhaul.”

read more


February 11, 2010

ADF BC Groovy – Showing Old Values Along with New, Part 2

A while back I posted about using Groovy within our ADF BC EOs to expose the new and old values of a particular attribute. This method described in that post works fine if you've access to the EOs in the same project. However in our current project EOs are segmented in another application workspace project for reuse and ADF Library JARed into our existing "master" ADF BC workspace project. The external EOs are intended to be shared by multiple other sub-systems, and it really didn't seem ideal to include additional transient attributes on all the attributes in the shared EOs just in case some other application needs them, mostly they wont want this specific requirement.

This lead to the requirement to include the same functionality, namely transient attributes based on a Groovy expression to return the old value of the attributes, from our project's VOs instead. In other words, if a VO needs them, it includes 'em.

We immediately hit a problem on implementing this requirement. The EntityImpl.getPostedAttribute(index) method is a protected method, and there is no equivalent ViewRowImpl method. Arguably it should be provided at the ViewRowImpl level, and a search of the JDev OTN forums shows it's an old issue and I guess not likely to change anytime soon.

Without an immediate change to the ADF BC framework, we needed to find another solution. What we came up with:

(As per the original post we'll assume we're looking at the Employees EO and Position attribute)

1) By default extend the ADF Business Components Framework as per section 37.1 Globally Extending ADF Business Components Functionality of the Fusion Guide.

2) In the extended EntityImpl class, say common.model.CommonEntityImpl, create a public exposed version of the getPostedAttribute method

public Object getPostedAttribute(int index) {
return super.getPostedAttribute(index);
}

3) For the specific VO interested in showing the old values of an attribute, create the associated ViewRowImpl (say EmployeesViewRowImpl). Ensure in the generated class an accessor method to access the underlying EntityImpl has been created, ie:
public EntityImpl getEmployees() {
return (EntityImpl)getEntity(0);
}

4) In the local project's VO transient attributes to show the old values base it on the following Groovy expression:

adf.object.getEmployees().getPostedAttribute(model.entities.EmployeesImpl.POSITION)

What it does:

a) adf.object.getEmployees() calls the EmployeesViewRowImpl.getEmployees() method we checked existed in step 3, to retrieve the associated EntityImpl for the current ViewRowImpl

Note if you haven't undertaken step 3 to generate the associated ViewRowImpl, alternatively you could just call getEntity(0) instead in your Groovy expression. However I'd be cautious on doing this as you're relying on future upgrades of the framework not changing what's at position zero.

b) .getPostedAttribute() calls the now publically exposed getPostedAttribute method we created in the common.model.CommonEntityImpl that gives us the ability to get at old attribute values in the EO

c) The parameter model.entities.EmployeesImpl.POSITION grabs the index position of the Surname field in the EO. Note we need to use the EntityImpl field position rather than the ViewRowImpl field positions, as the order of the fields can be different.


Of interest to this post, an old discussion on the ADF Enterprise Methodology Group, was do most projects extend the ADF framework as per section 37.1 Globally Extending ADF Business Components Functionality? As can be seen from this specific blog post this shows another reason to include the extended classes from day 1 of any ADF development.


Final caveat: Please note this post is mostly for self documentation purposes, posted here so others can make use of it, but is not guaranteed to work; honestly I haven't tested this thoroughly nor has it been placed in a production environment yet. As such be careful to check it works for you, your mileage may vary. If you find any problems it would be appreciated if you could post your findings here to assist other readers.

read more


ADF BC Groovy – Showing Old Values Along with New, Part 2

A while back I posted about using Groovy within our ADF BC EOs to expose the new and old values of a particular attribute. This method described in that post works fine if you've access to the EOs in the same project. However in our current project EOs are segmented in another application workspace project for reuse and ADF Library JARed into our existing "master" ADF BC workspace project. The external EOs are intended to be shared by multiple other sub-systems, and it really didn't seem ideal to include additional transient attributes on all the attributes in the shared EOs just in case some other application needs them, mostly they wont want this specific requirement.

This lead to the requirement to include the same functionality, namely transient attributes based on a Groovy expression to return the old value of the attributes, from our project's VOs instead. In other words, if a VO needs them, it includes 'em.

We immediately hit a problem on implementing this requirement. The EntityImpl.getPostedAttribute(index) method is a protected method, and there is no equivalent ViewRowImpl method. Arguably it should be provided at the ViewRowImpl level, and a search of the JDev OTN forums shows it's an old issue and I guess not likely to change anytime soon.

Without an immediate change to the ADF BC framework, we needed to find another solution. What we came up with:

(As per the original post we'll assume we're looking at the Employees EO and Position attribute)

1) By default extend the ADF Business Components Framework as per section 37.1 Globally Extending ADF Business Components Functionality of the Fusion Guide.

2) In the extended EntityImpl class, say common.model.CommonEntityImpl, create a public exposed version of the getPostedAttribute method

public Object getPostedAttribute(int index) {
return super.getPostedAttribute(index);
}

3) For the specific VO interested in showing the old values of an attribute, create the associated ViewRowImpl (say EmployeesViewRowImpl). Ensure in the generated class an accessor method to access the underlying EntityImpl has been created, ie:
public EntityImpl getEmployees() {
return (EntityImpl)getEntity(0);
}

4) In the local project's VO transient attributes to show the old values base it on the following Groovy expression:

adf.object.getEmployees().getPostedAttribute(model.entities.EmployeesImpl.POSITION)

What it does:

a) adf.object.getEmployees() calls the EmployeesViewRowImpl.getEmployees() method we checked existed in step 3, to retrieve the associated EntityImpl for the current ViewRowImpl

Note if you haven't undertaken step 3 to generate the associated ViewRowImpl, alternatively you could just call getEntity(0) instead in your Groovy expression. However I'd be cautious on doing this as you're relying on future upgrades of the framework not changing what's at position zero.

b) .getPostedAttribute() calls the now publically exposed getPostedAttribute method we created in the common.model.CommonEntityImpl that gives us the ability to get at old attribute values in the EO

c) The parameter model.entities.EmployeesImpl.POSITION grabs the index position of the Surname field in the EO. Note we need to use the EntityImpl field position rather than the ViewRowImpl field positions, as the order of the fields can be different.


Of interest to this post, an old discussion on the ADF Enterprise Methodology Group, was do most projects extend the ADF framework as per section 37.1 Globally Extending ADF Business Components Functionality? As can be seen from this specific blog post this shows another reason to include the extended classes from day 1 of any ADF development.


Final caveat: Please note this post is mostly for self documentation purposes, posted here so others can make use of it, but is not guaranteed to work; honestly I haven't tested this thoroughly nor has it been placed in a production environment yet. As such be careful to check it works for you, your mileage may vary. If you find any problems it would be appreciated if you could post your findings here to assist other readers.

read more


February 09, 2010

JavaFX Platform the Official Rich Client Technology for 2010 Winter Games

Oracle has announced that JavaFX and Java platforms are being used as the Official Rich Client Technology by the Vancouver Organizing Committee for the 2010 Olympic and Paralympic Winter Games (VANOC). Sport fans around the globe can now explore the historical Winter Games medal results through an innovative JavaFX application,Medal Wheel, available at http://www.vancouver2010.com/olympic-medals/geo-view/.

read more


JavaFX Platform the Official Rich Client Technology for 2010 Winter Games

Oracle has announced that JavaFX and Java platforms are being used as the Official Rich Client Technology by the Vancouver Organizing Committee for the 2010 Olympic and Paralympic Winter Games (VANOC). Sport fans around the globe can now explore the historical Winter Games medal results through an innovative JavaFX application,Medal Wheel, available at http://www.vancouver2010.com/olympic-medals/geo-view/.

read more


February 07, 2010

Oracle, Sun and the Enterprise CTO

The CTOvision.com assessment of the Oracle Acquisition of Sun: This is positive for the enterprise IT across the board, but the biggest determinate of what it means for your enterprise is what decisions you make now.  If you are an enterprise CTO, the ball is in your court. The following provides a bit more context.  First, [...] Related posts:

  1. What does the Oracle-Sun news mean for enterprise CTOs?
  2. Open Source Software: More reasons it is more secure
  3. Larry Ellison on the Sun-Oracle Close, January 27, 2010

read more


Oracle, Sun and the Enterprise CTO

The CTOvision.com assessment of the Oracle Acquisition of Sun: This is positive for the enterprise IT across the board, but the biggest determinate of what it means for your enterprise is what decisions you make now.  If you are an enterprise CTO, the ball is in your court. The following provides a bit more context.  First, [...] Related posts:

  1. What does the Oracle-Sun news mean for enterprise CTOs?
  2. Open Source Software: More reasons it is more secure
  3. Larry Ellison on the Sun-Oracle Close, January 27, 2010

read more


February 05, 2010

ADF Faces RC: af:document UncommittedDataWarning Property

Thanks to some assistance from Richard Wright from Oracle Corp on the OTN forums a week or so ago, I learnt about the uncommittedDataWarning property in the af:document tag, which I'd like to describe in this post.

This property is useful in the following scenario. Imagine you have a page as follows:


As you can see the page allows the user to change values of the current employee, and behind the scenes this is based on the usual ADFm bindings. In turn note the 3 buttons and their labels. For this screen there is a strict requirement for the developer to either Commit their changes or Undo them, before navigating back to the Home page.

Before the introduction of the uncommittedDataWarning property, the user could select the Go Home button and bypass this requirement. A workaround would be to set the Go Home button's disabled property such that the user couldn't navigate through the button if there were changes to be saved. However this is easily defeated by the user hitting the browser's back button, with the ensuing "JBO-35007: Row currency has changed since the user interface was rendered" mess that confuses users and developers no end.

With the introduction of the uncommitedDataWarning property for the af:document tag, and setting it to "on", if the user selects either the Go Home button (assuming we haven't disabled it) or the browser's back button without committing or undoing their work, they'll see the following browser error:


The dialog gives the user the option to Cancel, which leaves them on the current page, or Ok, which allows them to complete their action.

This is definitely an interesting feature, especially with its browser back button support.

One thing to note is that it only works for data that goes through the ADF binding layer. As such if you've JSF components based on a bean that isn't exposed to the ADF layer through a data control, it won't capture the data change. Thus this is another reason to ensure you don't hack code into the JSF layer, but expose it all through ADF Business Components or the other supported business service layer in ADF.

Also at this time the feature has a couple of limitations worth mentioning:

1) If the dialog displays and the user selects ok, the dialog will continue to display on each further page navigation until the user either commits or rolls back their changes. I can imagine this will become confusing or frustrating for some users, especially if you don't provide commit/rollback buttons on other pages.

2) As noted in this OTN post, I note that it is a warning mechanism and not an error mechanism (or at least, it doesn't have an option to enforce no navigation). It would seem ideal, especially with its back button functionality, to display an error only, leaving the user on the same page and forcing them to do a commit. Obviously this wouldn't be ideal in all cases, but certainly in some. I've raised ER 9299581 with Oracle Support for this.

3) As Richard Wright points out in the same post, "for a similar use case there has been a request to allow the user to continue with either a commit or rollback from the dialog. It would be analogous to the "Save" dialog received when exiting a native app (e.g., Word, Excel, JDev)." Hopefully we'll see these ERs in a future release.

I'm not overly sure when this property became available but I'm guessing the original JDev 11g release. It's definitely available in 11gR1 which this post was written against.

read more


ADF Faces RC: af:document UncommittedDataWarning Property

Thanks to some assistance from Richard Wright from Oracle Corp on the OTN forums a week or so ago, I learnt about the uncommittedDataWarning property in the af:document tag, which I'd like to describe in this post.

This property is useful in the following scenario. Imagine you have a page as follows:


As you can see the page allows the user to change values of the current employee, and behind the scenes this is based on the usual ADFm bindings. In turn note the 3 buttons and their labels. For this screen there is a strict requirement for the developer to either Commit their changes or Undo them, before navigating back to the Home page.

Before the introduction of the uncommittedDataWarning property, the user could select the Go Home button and bypass this requirement. A workaround would be to set the Go Home button's disabled property such that the user couldn't navigate through the button if there were changes to be saved. However this is easily defeated by the user hitting the browser's back button, with the ensuing "JBO-35007: Row currency has changed since the user interface was rendered" mess that confuses users and developers no end.

With the introduction of the uncommitedDataWarning property for the af:document tag, and setting it to "on", if the user selects either the Go Home button (assuming we haven't disabled it) or the browser's back button without committing or undoing their work, they'll see the following browser error:


The dialog gives the user the option to Cancel, which leaves them on the current page, or Ok, which allows them to complete their action.

This is definitely an interesting feature, especially with its browser back button support.

One thing to note is that it only works for data that goes through the ADF binding layer. As such if you've JSF components based on a bean that isn't exposed to the ADF layer through a data control, it won't capture the data change. Thus this is another reason to ensure you don't hack code into the JSF layer, but expose it all through ADF Business Components or the other supported business service layer in ADF.

Also at this time the feature has a couple of limitations worth mentioning:

1) If the dialog displays and the user selects ok, the dialog will continue to display on each further page navigation until the user either commits or rolls back their changes. I can imagine this will become confusing or frustrating for some users, especially if you don't provide commit/rollback buttons on other pages.

2) As noted in this OTN post, I note that it is a warning mechanism and not an error mechanism (or at least, it doesn't have an option to enforce no navigation). It would seem ideal, especially with its back button functionality, to display an error only, leaving the user on the same page and forcing them to do a commit. Obviously this wouldn't be ideal in all cases, but certainly in some. I've raised ER 9299581 with Oracle Support for this.

3) As Richard Wright points out in the same post, "for a similar use case there has been a request to allow the user to continue with either a commit or rollback from the dialog. It would be analogous to the "Save" dialog received when exiting a native app (e.g., Word, Excel, JDev)." Hopefully we'll see these ERs in a future release.

I'm not overly sure when this property became available but I'm guessing the original JDev 11g release. It's definitely available in 11gR1 which this post was written against.

read more


February 04, 2010

Oracle Throws Sun's Wonderland Down the Rabbit Hole

Oracle, sensibly enough from Oracle’s point-of-view, has turned off the tap of development resources on Sun’s Project Wonderland, the 100% Java open source toolkit for creating collaborative 3D virtual worlds. However, a core group of diehard Wonderlanders means to keep the project going and is scouting out for-project and non-profit options for becoming self-sustaining.

read more


Oracle Throws Sun's Wonderland Down the Rabbit Hole

Oracle, sensibly enough from Oracle’s point-of-view, has turned off the tap of development resources on Sun’s Project Wonderland, the 100% Java open source toolkit for creating collaborative 3D virtual worlds. However, a core group of diehard Wonderlanders means to keep the project going and is scouting out for-project and non-profit options for becoming self-sustaining.

read more


February 02, 2010

Andreessen's Makara Launches Cloud Computing Platform

After months under the radar, Makara on Tuesday unveiled a brand new approach to cloud computing's most difficult problem: application deployment and management. Rather than retrofit system management software designed for traditional application environments to the cloud, Makara's Cloud Application Platform leverages the virtual layer to allow developers to rapidly deploy, scale and monitor applications in cloud environments. The product is freely available today as a developer release at www.makara.com. "The widespread adoption of cloud computing is hitting a wall in terms of ROI because companies are not able to effectively manage applications, both inside and outside the enterprise, in a cloud environment. No one's going to run mission-critical apps without management, not in the data center and definitely not in the cloud," said Tim Guleri, Managing Director of Sierra Ventures. "Makara's Cloud Application Platform provides that missing link, enabling developers to deploy their apps and make them work with full management capabilities. Makara will get the cloud past the ROI hurdle."

read more


Andreessen's Makara Launches Cloud Computing Platform

After months under the radar, Makara on Tuesday unveiled a brand new approach to cloud computing's most difficult problem: application deployment and management. Rather than retrofit system management software designed for traditional application environments to the cloud, Makara's Cloud Application Platform leverages the virtual layer to allow developers to rapidly deploy, scale and monitor applications in cloud environments. The product is freely available today as a developer release at www.makara.com. "The widespread adoption of cloud computing is hitting a wall in terms of ROI because companies are not able to effectively manage applications, both inside and outside the enterprise, in a cloud environment. No one's going to run mission-critical apps without management, not in the data center and definitely not in the cloud," said Tim Guleri, Managing Director of Sierra Ventures. "Makara's Cloud Application Platform provides that missing link, enabling developers to deploy their apps and make them work with full management capabilities. Makara will get the cloud past the ROI hurdle."

read more


The Death of Cloud Computing the Birth of Dream Computing

I do dream in color, not always vivid color, but color just the same. Today, I was awakened by one of my 5 boys in the middle of a great dream about the future. In my dream, I was in a big white room just as a door was opening and someone was about to walk in. Who was that? That's when I was awakened. Don't you hate dream interruption? Or Idruption? Quick note, I heard the iPad comes with an Idruption finisher, those guys at Apple are so innovative. What I do recall from my dream was that it was the summer of 2012, and Jeff Bezos, Paul Sagan and I were celebrating the 2 year anniversary of the merger of our three companies. There was a lot of talk about how 50% of the Fortune 1000 had shut down their data centers and moved all their operations onto our Dream Cloud. So much for that Gartner prediction -"By 2012, 20 percent of businesses will own no IT assets." The other thing that was clear from the conversation was that Dream Computing as a category had completely replaced the term Cloud Computing.

read more


The Death of Cloud Computing the Birth of Dream Computing

I do dream in color, not always vivid color, but color just the same. Today, I was awakened by one of my 5 boys in the middle of a great dream about the future. In my dream, I was in a big white room just as a door was opening and someone was about to walk in. Who was that? That's when I was awakened. Don't you hate dream interruption? Or Idruption? Quick note, I heard the iPad comes with an Idruption finisher, those guys at Apple are so innovative. What I do recall from my dream was that it was the summer of 2012, and Jeff Bezos, Paul Sagan and I were celebrating the 2 year anniversary of the merger of our three companies. There was a lot of talk about how 50% of the Fortune 1000 had shut down their data centers and moved all their operations onto our Dream Cloud. So much for that Gartner prediction -"By 2012, 20 percent of businesses will own no IT assets." The other thing that was clear from the conversation was that Dream Computing as a category had completely replaced the term Cloud Computing.

read more


January 29, 2010

Sun Finally Belongs to Oracle

Oracle finally closed on its delayed acquisition of Sun Tuesday, leaving local entities to shift for themselves according to local laws and sidestepping MySQL creator Monty Widenius’ hopes of Russian and Chinese regulators stalling the merger. Widenius will now presumably revert to his quixotic Plan B and appeal the European Commission’s clearance last week, a green light that looked really iffy there for a while.

read more


Sun Finally Belongs to Oracle

Oracle finally closed on its delayed acquisition of Sun Tuesday, leaving local entities to shift for themselves according to local laws and sidestepping MySQL creator Monty Widenius’ hopes of Russian and Chinese regulators stalling the merger. Widenius will now presumably revert to his quixotic Plan B and appeal the European Commission’s clearance last week, a green light that looked really iffy there for a while.

read more


January 27, 2010

Oracle Completes Sun Acquisition

Oracle said this morning that it had finally completed its acquisition of Sun, leaving local entities to shift for them according to local laws and sidestepping MySQL creator Monty Widenius’ hopes that Russian and Chinese regulators could stall the merger. Widenius will now presumably revert to his quixotic Plan B and appeal the European Commission’s week-old clearance of the deal after its prolonged four-and-a-half month investigation that looked dicey there for a while.

read more


Oracle Completes Sun Acquisition

Oracle said this morning that it had finally completed its acquisition of Sun, leaving local entities to shift for them according to local laws and sidestepping MySQL creator Monty Widenius’ hopes that Russian and Chinese regulators could stall the merger. Widenius will now presumably revert to his quixotic Plan B and appeal the European Commission’s week-old clearance of the deal after its prolonged four-and-a-half month investigation that looked dicey there for a while.

read more


Malaysia’s Premier Free-to-Air TV Station Goes Mobile with Netbiscuits

Netbiscuits, a B2B web software platform for the creation, operation and monetization of mobile websites, and Media Prima Berhad, an integrated media investment group in Malaysia, have announced the joint realization of two new mobile web portals for TV3, Malaysia's leading free-to-air TV network, and GUA, the most popular entertainment and lifestyle portal in Malaysia. The new mobile sites are available at mobile.tv3.com.my and mobile.gua.com.my.

read more


Malaysia’s Premier Free-to-Air TV Station Goes Mobile with Netbiscuits

Netbiscuits, a B2B web software platform for the creation, operation and monetization of mobile websites, and Media Prima Berhad, an integrated media investment group in Malaysia, have announced the joint realization of two new mobile web portals for TV3, Malaysia's leading free-to-air TV network, and GUA, the most popular entertainment and lifestyle portal in Malaysia. The new mobile sites are available at mobile.tv3.com.my and mobile.gua.com.my.

read more


January 26, 2010

Getting Started with OpenJPA

If you have not been actively working with J2EE containers, open source or free databases, and obscure Java tools, then getting started with OpenJPA may prove to be more challenging than just learning the API. I am going to work through this from scratch and take you with me. OpenJPA is the open source implementation of the Java Persistence API (JPA).

read more


Getting Started with OpenJPA

If you have not been actively working with J2EE containers, open source or free databases, and obscure Java tools, then getting started with OpenJPA may prove to be more challenging than just learning the API. I am going to work through this from scratch and take you with me. OpenJPA is the open source implementation of the Java Persistence API (JPA).

read more


<< Back Next >>