Posts

Showing posts from August, 2013

Real World ADF Architecture and Design Principles Course for Oracle Partners in India

See the following link for the original message:  http://app.certain.com/profile/web/index.cfm?PKWebId=0x5212097b73 Date:  25 - 27, Sept 2013 (Wed - Fri) Time: 9:00 am - 5:30 pm Venue: Oracle India Pvt Ltd, Training Room 4J001, Prestige Lexington Tower, Near Prestige St. Johns Woods, Bangalore 560 029, India Exclusively designed for: ADF Developers, Oracle Consulting, Solution Architects Solution Consultants, and Industry Solution Architects This course is absolutely free for Oracle partners and employees.   Who is driving this training and what is there for you in it? In association with and taught by Oracle ADF Product Development. This is an advanced level workshop for Real World ADF Design & Architecture Principles, a 3 day course that will provide a clear understanding of what the term ADF architecture refers to and how to design an ADF application . Topics include :   ADF architectural patterns, options are in putting ADF ...

Groovy expression for assigning DB Sequence value to a String type attribute

You can use Groovy expression to default value for  Key attribute from a database sequence while you create new instance of an entity object. If you have access to my book Oracle ADF Real World Developer’s Guide , see page 76 for details or see the following blog from Timo Hahn   http://tompeez.wordpress.com/2011/09/02/using-groovy-expression-to-set-a-primary-key-with-a-sequence-number/ This post is just meant for sharing a simple tip that I learned today(Thanks to Steve Muench) for assigning database sequence value to a String type attribute. In case if you need to assign the sequence value to an attribute of type String in an entity object(yes, there are such use cases as well), you can add " as String " to the end of the Groovy expression and set it as default value for the entity attribute. Example: (new oracle.jbo.server.SequenceImpl("DEPARTMENTS_SEQ", adf.object.getDBTransaction())).getSequenceNumber() as String

Revisiting the topic : Programmatically disclosing a ShowDetailItem in a <af:panelTabbed>

Sometime back I blogged about Programmatically disclosing a ShowDetailItem in a <af:panelTabbed> . In today's post I'm revisiting this topic to address the same usecase for applications with customization(change persistence) ON . If the customization is enabled you may need to use appropriate ChangeManager APIs for persisting the changes that you do programmatically. Otherwise during rendering  ChangeManager will override your programmatic changes with the state for the component that is persisted in the change manger during the last user interaction. So the code snippet posted in my previous blog post needs to have following ChangeManager APIs as well to make this working for an application that use "Change Persistence/Customization". The precious post has the full code sample. For a complete working sample, you need to change  displaySelectedItem(...)  given in the last post's sample with the code snippet given below. import org.apache.myfac...

Building dynamic UI using af:dynamicComponent

The  ADF Faces 12C release comes with a dynamic component ( af:dynamicComponent ) that determines what components to display, and their values, at run time. So your model (created at run time) can have hints about the type of component as well as other UI related things, which would be picked up by af:dynamicComponent and render the UI at run time as appropriate. For example, if your UI model (AttributesModel) says that component is of LOV type, then af:dynamicComponent will render appropriate LOV for you at run time.  Note that in earlier days your code were deciding the type of the component in such cases. This new component will considerably simplify the effort you need to put for building dynamic UI. You can learn more about this component in  section 21 Determining Components at Runtime in   Developing Web User Interfaces with Oracle ADF Faces . Its well documented, so nothing more to be detailed here :) In this post I'm sharing a example that mak...