Practice for JEE5 for JDeveloper 11g

Size: px
Start display at page:

Download "Practice for JEE5 for JDeveloper 11g"

Transcription

1 Practice for JEE5 for JDeveloper 11g Using stateless session EJB 3.0 as a business layer, ADF data Model as a model layer and ADF Faces Rich Client as a view layer. Modified by: Dr. Ahmad Taufik Jamil BSc (Med), MD, MPH, MSc(IT) Head, Center of Information Technology UKM Medical Center, Malaysia Revision: 1.1 (13 July 2008) Adapted from: Oracle AS 10g R3: Build J2EE Applications 1, Appendix A, Practice & Solution 1

2 Table of Contents Practice 1 Practice 1-1: Create an Application with Two Projects 3 Practice 1-2: Create the EJB Data Model 4 Practice 1-3: Create the Source Code for Session Bean and Data Control 6 Practice 1-4: Create a Data-Aware JSF Page 11 Practice 2 Practice 2-1: Create an Application and a JSF Diagram 13 Practice 2-2: Add a Managed Bean to the Project 15 Practice 3 Practice 3-1: Create a New Application and EJB Practice 4 Practice 4-1: Create and Use a Data Control 30 Practice 4-2: Modify the Binding 33 Practice 5 Practice 5-1: Create a Template jspx 34 Practice 5-2: Create the SREdit Page and Apply the Template 36 Practice 5-3: Add Data-Aware Components to the SREdit Page 37 Practice 6 Practice 6-2: Add Data Components to the Search Page 40 Practice 6-3: Modify the Default Behavior 42 Practice 7 Practice 7-1: Complete the Edit Page 45 Practice 7-2: Add the Commit Function 51 Practice 8 Practice 8-1: Link SRSearch to SREdit 52 Practice 8-2: Add a Delete Page 57 Practice 8-3: Wire the Buttons 58 2

3 Practice 1 In this practice you create an application using stateless EJB, data control and ADF Faces Rich Client. The practice includes detailed steps for each of the areas of the application. Practices in later lessons have less detailed instructions, but for this introductory practice, we provide step-by-step instructions. Practice 1-1: Create an Application with Two Projects All the components for an application in JDeveloper are contained within a structure called an application. It is accessible through the Applications Navigator. The first step in application development using JDeveloper 11g is to create an application structure. In this section, you create an application and rename the default projects. 1) Open JDeveloper 11g. (You may download the latest version of Oracle JDeveloper 11g from here: i. Double-click the JDeveloper 11g icon. ii. If JDeveloper prompts you to migrate from a previous version, click No. 2) Create an Application. i. Select menu File then New. (Ctrl-N) ii. In the New Gallery dialog box (Current Project Technologies tab), Select General > Applications, then select Application, in Items column. iii. Click OK. iv. Use EJB-ADFFRC as the Application Name. v. Enter sr as the Application Package Prefix. vi. Select Java EE Web Application for the Application Template. vii. Click OK. This creates the EJB-ADFFRC application and includes two projects: Model and ViewController. 3) Rename the default projects. i. Select the Model project in the Applications Navigator. ii. Select menu File > Rename. iii. Enter DataModel for the new name. iv. Click Save All. v. Do the same for the ViewController project in the Applications Navigator, and rename to UserInterface. 3

4 vi. Click Save All. The Applications Navigator now looks like the screenshot shown below: 4

5 Practice 1-2: Create the EJB Data Model In this section, you create the EJB data model, which will be the basis of the application. The first part of this practice is to create a new database connection. 1) In JDeveloper, choose menu View > Database Navigator. 2) Right-click the EJB-ADFFRC node and choose New Connection. 3) In the Connection Name field, enter srconn. 4) Enter the values shown in the following table; Field Connection Type: Username: Password: Deploy Password: Value Oracle (JDBC) SRDEMO Oracle Select the check box 5) For Oracle (JDBC) setting, enter the following values; Field Value Driver thin Host Name localhost This is the default host name if the database is run on the same machine as JDeveloper. If the database is on another machine, enter the name (or IP address) of the computer where the database is located. JDBC Port 1521 SID XE 6) Click Test Connection. If the database is available and the connection details are correct, you will see a success message. If not, check the values. 5

6 7) When the connection is successful, click OK to create the connection. Now that you have a connection, you can create the default Data Model for your application. 8) In the Applications Navigator, right-click DataModel and select New. 9) In the New Gallery, select Business Tier, EJB, Session Bean. 6

7 10) Click OK. This opens the Create Session Bean Wizard. 11) Step 1 of 5: Select EJB version i. Select Enterprise JavaBeans 3.0 (Java EE 5.0). ii. Click Next. 12) Step 2 of 5: EJB Name and Options. i. Enter Products for EJB Name. ii. Accept the default values. iii. Click Next. 13) Step 3 of 5: Class Definitions i. Accept the default values. ii. Click Next. 14) Step 4 of 5: EJB Components Interfaces i. Accept the default values. ii. Click Next then Finish. iii. Click Save. 15) The Applications Navigator should look like the following: 7

8 8

9 Practice 1-3: Create the Source Code for Session Bean and Create Data Control 1) Enter the following source code inside ProductsBean.java //Second Constructor public ProductsBean(int prodid, String name, String image, String description) { this.prodid=prodid; this.name=name; this.image=image; this.description=description; //Dependancy Injection for private DataSource srconndatasource; public void setdatasource(datasource mydb){ this.srconndatasource = mydb; //Variable declaration private int prodid; private String name; private String image; private String description; //Getter & Setter methods public void setprodid(int prodid) { this.prodid = prodid; public int getprodid() { return prodid; public void setname(string name) { this.name = name; public String getname() { return name; public void setimage(string image) { this.image = image; public String getimage() { return image; 9

10 public void setdescription(string description) { this.description = description; public String getdescription() { return description; //Connection to Database private Connection connecttodatabase(){ Connection conn=null; int ret_code; try { conn=srconndatasource.getconnection(); catch (SQLException se) { ret_code = se.geterrorcode(); System.out.println("SQL Error while connecting to the database : "+ se.tostring()); catch (Exception ne) { System.out.println("Other Error while connecting to the database : "+ ne.tostring()); return conn; //Insert Method public void insertproducts(int prodid, String name, String image, String description){ Connection conn = null; PreparedStatement pstmtinsert=null; try { conn = connecttodatabase(); String sqlinsert = "INSERT INTO PRODUCTS (PROD_ID, NAME, IMAGE, DESCRIPTION) VALUES (?,?,?,?)"; pstmtinsert = conn.preparestatement(sqlinsert); pstmtinsert.setint(1, prodid); pstmtinsert.setstring(2, name); pstmtinsert.setstring(3, image); pstmtinsert.setstring(4, description); pstmtinsert.executeupdate(); catch (SQLException e) { System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); 10

11 System.out.println("ERROR: insertproducts()"); finally{ try{ pstmtinsert.close(); conn.close(); catch(sqlexception e2) { System.out.println(e2); public void updateproducts(int prodid, String name, String image, String description){ Connection conn = null; PreparedStatement pstmtupdate=null; try { conn = connecttodatabase(); String sqlupdate = "UPDATE PRODUCTS SET NAME =?, IMAGE =?, DESCRIPTION =? WHERE PROD_ID =?"; pstmtupdate = conn.preparestatement(sqlupdate); pstmtupdate.setstring(1, name); pstmtupdate.setstring(2, image); pstmtupdate.setstring(3, description); pstmtupdate.setint(4, prodid); pstmtupdate.executeupdate(); catch (SQLException e) { System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: updateproducts()"); finally{ try{ pstmtupdate.close(); conn.close(); catch(sqlexception e2) { System.out.println(e2); System.out.println("Error from finally block updateproducts"); 11

12 public List<ProductsBean> findproductsbyid(int prodid){ List<ProductsBean> retval = new ArrayList<ProductsBean>(); Connection connection = null; PreparedStatement pstmtselect=null; ResultSet rs=null; try { connection = connecttodatabase(); String sql = "SELECT * FROM PRODUCTS WHERE PROD_ID =? "; pstmtselect = connection.preparestatement(sql); pstmtselect.setint(1, prodid); rs = pstmtselect.executequery(); CachedRowSetImpl crset = new CachedRowSetImpl(); crset.populate(rs); while (crset.next()) { ProductsBean productsbean = new ProductsBean(crset.getInt("PROD_ID"),crset.getString("NAME"),crset.getString("IMAGE"),crset.getStri ng("description")); retval.add(productsbean); catch (SQLException e) { e.printstacktrace(); System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: findproductsbyid(int productid)"); catch (Exception e1) { e1.printstacktrace(); finally { try{ rs.close(); pstmtselect.close(); connection.close(); catch(sqlexception e2) { System.out.println(e2); 12

13 return retval; public List<ProductsBean> findallproducts(){ List<ProductsBean> retval = new ArrayList<ProductsBean>(); Connection connection = null; PreparedStatement pstmtselect=null; ResultSet rs=null; try { connection = connecttodatabase(); String sql = "SELECT * FROM PRODUCTS"; pstmtselect = connection.preparestatement(sql); rs = pstmtselect.executequery(); CachedRowSetImpl crset = new CachedRowSetImpl(); crset.populate(rs); while (crset.next()) { ProductsBean productsbean = new ProductsBean(crset.getInt("PROD_ID"), crset.getstring("name"), crset.getstring("image"), crset.getstring("description")); retval.add(productsbean); catch (SQLException e) { e.printstacktrace(); System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: findallproducts()"); catch (Exception e1) { e1.printstacktrace(); finally { try{ rs.close(); pstmtselect.close(); connection.close(); catch(sqlexception e2) { System.out.println(e2); return retval; public void removeproducts(int prodid){ 13

14 Connection conn = null; PreparedStatement pstmtupdate=null; try { conn = connecttodatabase(); String sqldelete = "DELETE FROM PRODUCTS WHERE PROD_ID =?"; pstmtupdate = conn.preparestatement(sqldelete); pstmtupdate.setint(1, prodid); pstmtupdate.executeupdate(); catch (SQLException e) { System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: removeproducts(int productid)"); finally{ try{ pstmtupdate.close(); conn.close(); catch(sqlexception e2) { System.out.println(e2); System.out.println("Error from finally block removeproducts(int productid)"); 2) Import the following libraries. import java.sql.connection; import java.sql.preparedstatement; import java.sql.resultset; import java.util.arraylist; import java.util.list; import javax.annotation.resource; import javax.sql.datasource; 3) Compile: Right click ProductsBean.java, and click Make. 4) View ProductBean.java Structure on the lower left panel. You may see like this: 14

15 5) Expose all method into Local and Remote interface: a. Inside ProductsBean.java Structure (Left lower column), right click method findallproducts() > EJB > Properties b. Check both Expose through Local interface and Expose through Remote interface, then click OK c. Repeat the same for the other 4 methods (findallproductsbyid, insertproducts, updateproducts and removeproducts). 15

16 6) Right-click ProductsBean.java in the Applications Navigator and select Create Data Control. 7) Select Local for the interface to use with this EJB data control. Click OK. 8) Click Save All on the JDeveloper toolbar. 16

17 Practice 1-4: Create a Data-Aware JSF Page In this section, you create a simple JSF page that displays data from the ProductsBean object. 1) Double click UserInterface project, Inside Project Properties dialog box, click Technology Scope and move ADF Faces from Available Technologies column to Selected Technologies column. 2) Right-click UserInterface in the Applications Navigator and select New. 3) In the New Gallery, select Web Tier > JSF > JSF Page and click OK. 17

18 3) In Create JSF Page dialog box: i. Enter products.jspx as the File Name: ii. Select Create as XML Document (*.jspx). iii. Select Automatically Expose UI Components in a New Managed Bean. Although you will not use a managed bean in this practice, you can create it anyway. iv. Click OK. 18

19 JDeveloper creates the JSF and opens the new JSF in the Visual Editor. In the next few steps, you add a data-aware component that displays product information. 9) In the Data Controls Palette, which is on the middle left of JDeveloper, expand ProductsLocal. 10) Expand findallproducts() to show the ProductsBean data control. 11) Drag ProductsBean to the Visual Editor. When you drop ProductsBean on the Visual Editor, JDeveloper displays a pop-up menu where you select what type of component you want to use. 12) Select Tables > ADF Table from the pop-up menu. 19

20 13) In the Edit Table Columns dialog box, select Row selection and Sorting. Change the Column Display Label to Product Id, Name, Image and Description and then click OK. 20

21 14) Select af:table srtable from products.jspx - Structure, edit Table srtable - Property Inspector. Set Style > Box > Width and Height to 100 percent. 14) You have now created a data-aware JSF. Right-click anywhere in the Visual Editor and select Run. This starts an internal (or embedded) OC4J instance, and opens your page in a browser. 15) The page should look something like the following: 21

22 16) Experiment with the page you have just created. Here are some ideas: i. Click any of the headings (Description, Name, Product Id) to re-sort the data in the table. ii. You may resize the column width. iii. When you are done, close the browser 17) You may get error when trying to resize, sort the table: 22

23 18) Locate f:validator inside product.jspx Structure, under af:inputtext, and delete all(4) of them. Save All. 23

24 19) Run the page again. No more error. 24

25 Practice 2 In this practice, you build the JSF Navigation diagram for the course application. The application consists of three pages. You also add Case Navigation rules to the pages. In the last part of this practice, you will add a managed bean that is used to store information about the state of the client such as the current Service Request ID. Practice 2-1: Create an Application and a JSF Diagram In this first section, you create a new Application, a JSF diagram, and three JSF page references. 1) Open the JSF Navigation diagram. Expand UserInterface project, Web Content, and then Page Flows. Double click faces-config.xml to open it. 2) Create three JSF Pages with the following names: SRSearch.jsp SREdit.jsp SRDelete.jsp i. Select JSF Diagram Objects in the Component Palette. ii. Click JSF Page. iii. Click anywhere in faces-config.xml. iv. Change the default name of the reference. v. Repeat for each of the pages. 25

26 3) Add a JSF Navigation Case from /SRSearch.jsp to /SREdit.jsp. Set the name of the case to edit. i. Click JSF Navigation Case in the Component Palette (JSF Diagram Objects). ii. Click the /SRSearch.jsp page reference, and then click the /SREdit.jsp page reference. iii. The default name should be success. Click the name and change it to edit. 4) Add a JSF Navigation Case from /SREdit.jsp to /SRSearch.jsp. Accept the default name, which should be success. i. Click JSF Navigation Case in the Component Palette (JSF Navigation Diagram). ii. Click the /SREdit.jsp page reference, and then click the /SRSearch.jsp page reference. iii. The default name should be success; if it is not, click the name and change it to success. 5) Add a JSF Navigation Case from /SRSearch.jsp to / SRDelete.jsp. Set the case name to delete. i. Click JSF Navigation Case in the Component Palette (JSF Navigation Diagram). ii. Click the /SRSearch.jsp page reference, and then click the /SRDelete.jsp page reference. 26

27 iii. The default name should be success. Click the name and change it to delete. 6) Add a JSF Navigation Case from /SRDelete.jsp to /SRSearch.jsp. Set the case name to return. i. Click JSF Navigation Case in the Component Palette (JSF Navigation Diagram). ii. Click the /SRDelete.jsp page reference, and then click the /SRSearch.jsp page reference. iii. The default name should be success. Click the name and change it to return. 7) Add one more JSF Navigation Case from /SRDelete.jsp to / SRSearch.jsp. Set the case name to cancel. i. Click JSF Navigation Case in the Component Palette (JSF Navigation Diagram). ii. Click the /SRDelete.jsp page reference, and then click the /SRSearch.jsp page reference. iii. The default name should be success. Click the name and change it to cancel. 8) Your diagram should look similar to the following: 27

28 Practice 2-2: Create a Managed Bean to the Project In this section, you create a managed bean. 1) Right-click the UserInterface project and select New. 2) In the New Gallery dilog box, Select General > Simple Files > Java Class and click OK. 3) In the Create Java Class dialog box: i. Enter UserSystemState for Name. ii. Set the Package to sr.view. iii. Accept the other defaults and click OK. 4) In the Applications Navigator, expand UserInterface > Application Sources > sr.view. 5) The Applications Navigator should look something like: 28

29 Now that the directory structure is built, you can delete the Java class. 6) Add source code below to UseSystemState.java. private HashMap _settings = new HashMap(7); private static final String CURRENT_SVR_ID = "CURRENT_SVR_ID"; private static final String REFRESH = "REFRESH"; private static final String EDIT_REFRESH = "EDIT_REFRESH"; public UserSystemState() { //define some defaults public boolean isrefresh(){ Boolean refresh = (Boolean)_settings.get(REFRESH); if (refresh == null){ refresh = false; return refresh.booleanvalue(); public boolean iseditrefresh(){ Boolean refresh = (Boolean)_settings.get(EDIT_REFRESH); if (refresh == null){ refresh = false; return refresh.booleanvalue(); 29

30 public Integer getcurrentsvrid(){ return (Integer)_settings.get(CURRENT_SVR_ID); public void setrefresh(boolean flag){ _settings.put(refresh, new Boolean(flag)); public void seteditrefresh(boolean flag){ _settings.put(edit_refresh, new Boolean(flag)); public void setcurrentsvrid(integer svrid){ _settings.put(current_svr_id,svrid); _settings.put(refresh,false); public static void storecurrentsvrid(integer svrid){ FacesContext ctx = FacesContext.getCurrentInstance(); setmanagedbeanvalue(ctx,"userstate.currentsvrid",svrid); public static void refreshneeded(){ FacesContext ctx = FacesContext.getCurrentInstance(); setmanagedbeanvalue(ctx,"userstate.refresh",true); public static void setmanagedbeanvalue(facescontext ctx, String beanname, Object newvalue) { StringBuffer buff = new StringBuffer("#{"); buff.append(beanname); buff.append(""); setexpressionvalue(ctx, buff.tostring(), newvalue); public static void setexpressionvalue(facescontext ctx, String expression, Object newvalue) { Application app = ctx.getapplication(); ValueBinding bind = app.createvaluebinding(expression); Class bindclass = bind.gettype(ctx); if (bindclass.isprimitive() bindclass.isinstance(newvalue)) { 30

31 bind.setvalue(ctx, newvalue); 7) Save All and compile. Now that the Java class is in the project structure, you can add it as a managed bean. 8) Open the JSF Case Navigation diagram (faces-config.xml). 9) Add the UserSystemState class as a managed bean. i. Click the Overview tab, which is at the bottom of the diagram. ii. Select Managed Beans. iii. Click + (New). iv. Bean Name: userstate. v. Click the Browse button for the Class. vi. On the Search tab, enter sr.view as the Match Class Name. vii. Select sr.view.usersystemstate and click OK. viii. Change the scope to Session. ix. Make sure the Generate Class check box is not selected. x. Click OK to register this class as a managed bean. 31

32 Practice 3 In this practice, you will create a default data model using stateless session EJB 3.0. Practice 3-1: Create a New Application and EJB3.0 In this first section, you add a set of EJB 3.0 to the DataModel project you have already been using. 1) Create EJB 3.0: a. In the Applications Navigator, right-click DataModel and select New. b. In the New Gallery dialog box, select Business Tier, EJB, Session Bean. c. Click OK. This opens the Create Session Bean Wizard. d. Step 1 of 5: Select EJB version i. Select Enterprise JavaBeans 3.0 (JEE 5.0). ii. Click Next. e. Step 2 of 5: EJB Name and Options. i. Enter ServiceRequests for EJB Name. ii. Accept the default values. iii. Click Next. f. Step 3 of 5: Class Definitions i. Accept the default values. ii. Click Next. g. Step 4 of 5: EJB Components Interfaces i. Accept the default values. ii. Click Next then Finish. iii. Click Save. 2) Repeat steps 1) a g, to create another EJB, named Users. 3) Enter the following source code for ServiceRequestsBean.java and import all necessary libraries. i. Libraries import java.sql.connection; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import java.util.arraylist; import java.sql.date; import java.util.list; import javax.annotation.resource; import javax.ejb.stateless; import javax.sql.datasource; ii. Source code 32

33 //Second Constructor public ServiceRequestsBean(int svrid,string status,date requestdate,string problemdescription,int prodid,int createdby,int assignedto,date assigneddate) { this.svrid=svrid; this.status=status; this.requestdate=requestdate; this.problemdescription=problemdescription; this.prodid=prodid; this.createdby=createdby; this.assignedto=assignedto; this.assigneddate=assigneddate; //Variable declaration private int svrid; private String status; private Date requestdate; private String problemdescription; private int prodid; private int createdby; private int assignedto; private Date assigneddate; //Dependancy Injection for private DataSource srconndatasource; public void setdatasource(datasource mydb){ this.srconndatasource = mydb; //Getter & setter methods public void setsvrid(int svrid) { this.svrid = svrid; public int getsvrid() { return svrid; public void setstatus(string status) { this.status = status; public String getstatus() { return status; public void setrequestdate(date requestdate) { 33

34 this.requestdate = requestdate; public Date getrequestdate() { return requestdate; public void setproblemdescription(string problemdescription) { this.problemdescription = problemdescription; public String getproblemdescription() { return problemdescription; public void setprodid(int prodid) { this.prodid = prodid; public int getprodid() { return prodid; public void setcreatedby(int createdby) { this.createdby = createdby; public int getcreatedby() { return createdby; public void setassignedto(int assignedto) { this.assignedto = assignedto; public int getassignedto() { return assignedto; public void setassigneddate(date assigneddate) { this.assigneddate = assigneddate; public Date getassigneddate() { return assigneddate; //Connection to Database private Connection connecttodatabase(){ Connection conn=null; int ret_code; 34

35 try { conn=srconndatasource.getconnection(); catch (SQLException se) { ret_code = se.geterrorcode(); System.out.println("SQL Error while connecting to the database : "+ se.tostring()); catch (Exception ne) { System.out.println("Other Error while connecting to the database : "+ ne.tostring()); return conn; public void insertservicerequests(int svrid,string status,date requestdate,string problemdescription,int prodid,int createdby,int assignedto,date assigneddate){ Connection conn = null; PreparedStatement pstmtinsert=null; //java.sql.date sqlrequestdate = new java.sql.date(requestdate.gettime()); //java.sql.date sqlassigneddate = new java.sql.date(assigneddate.gettime()); try { conn = connecttodatabase(); String sqlinsert = "INSERT INTO SERVICE_REQUESTS (SVR_ID, STATUS, REQUEST_DATE, PROBLEM_DESCRIPTION, PROD_ID, CREATED_BY, ASSIGNED_TO, ASSIGNED_DATE) VALUES (?,?,?,?,?,?,?,?)"; pstmtinsert = conn.preparestatement(sqlinsert); pstmtinsert.setint(1, svrid); pstmtinsert.setstring(2, status); pstmtinsert.setdate(3, requestdate); pstmtinsert.setstring(4, problemdescription); pstmtinsert.setint(5, prodid); pstmtinsert.setint(6, createdby); pstmtinsert.setint(7, assignedto); pstmtinsert.setdate(8, assigneddate); pstmtinsert.executeupdate(); catch (SQLException e) { System.out.println(e.getSQLState()); System.out.println(e.getMessage()); 35

36 System.out.println(e.getErrorCode()); System.out.println("ERROR: insertservicerequests()"); finally{ try{ pstmtinsert.close(); conn.close(); catch(sqlexception e2) { System.out.println(e2); public void updateservicerequests(int svrid,string status,date requestdate,string problemdescription,int prodid,int createdby,int assignedto,date assigneddate){ Connection conn = null; PreparedStatement pstmtupdate=null; //java.sql.date sqlrequestdate = new java.sql.date(requestdate.gettime()); //java.sql.date sqlassigneddate = new java.sql.date(assigneddate.gettime()); try { conn = connecttodatabase(); String sqlupdate = "UPDATE SERVICE_REQUESTS SET STATUS =?,REQUEST_DATE =?,PROBLEM_DESCRIPTION =?,PROD_ID =?,CREATED_BY =?,ASSIGNED_TO =?,ASSIGNED_DATE =? WHERE SVR_ID =?"; pstmtupdate = conn.preparestatement(sqlupdate); pstmtupdate.setstring(1, status); pstmtupdate.setdate(2, requestdate); pstmtupdate.setstring(3, problemdescription); pstmtupdate.setint(4, prodid); pstmtupdate.setint(5, createdby); pstmtupdate.setint(6, assignedto); pstmtupdate.setdate(7, assigneddate); pstmtupdate.setint(8, svrid); pstmtupdate.executeupdate(); catch (SQLException e) { 36

37 System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: updateservicerequests()"); finally{ try{ pstmtupdate.close(); conn.close(); catch(sqlexception e2) { System.out.println(e2); System.out.println("Error dari finally block updatepatient"); public List<ServiceRequestsBean> findservicerequestsbyid(int svrid){ List<ServiceRequestsBean> retval = new ArrayList<ServiceRequestsBean>(); Connection connection = null; PreparedStatement pstmtselect=null; ResultSet rs=null; try { connection = connecttodatabase(); String sql = "SELECT * FROM SERVICE_REQUESTS WHERE SVR_ID =? "; pstmtselect = connection.preparestatement(sql); pstmtselect.setint(1, svrid); rs = pstmtselect.executequery(); CachedRowSetImpl crset = new CachedRowSetImpl(); crset.populate(rs); while (crset.next()) { ServiceRequestsBean servicerequestsbean = new ServiceRequestsBean(crset.getInt("SVR_ID"),crset.getString("STATUS"),crset.getDate("REQUEST_DA TE"),crset.getString("PROBLEM_DESCRIPTION"),crset.getInt("PROD_ID"),crset.getInt("CREATED_B Y"),crset.getInt("ASSIGNED_TO"),crset.getDate("ASSIGNED_DATE")); retval.add(servicerequestsbean); 37

38 catch (SQLException e) { e.printstacktrace(); System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: findservicerequestsbyid()"); catch (Exception e1) { e1.printstacktrace(); finally { try{ rs.close(); pstmtselect.close(); connection.close(); catch(sqlexception e2) { System.out.println(e2); return retval; public List<ServiceRequestsBean> findservicerequestsbystatus(string status){ List<ServiceRequestsBean> retval = new ArrayList<ServiceRequestsBean>(); Connection connection = null; PreparedStatement pstmtselect=null; ResultSet rs=null; try { connection = connecttodatabase(); String sql = "SELECT * FROM SERVICE_REQUESTS WHERE STATUS =? "; pstmtselect = connection.preparestatement(sql); pstmtselect.setstring(1, status); rs = pstmtselect.executequery(); CachedRowSetImpl crset = new CachedRowSetImpl(); crset.populate(rs); while (crset.next()) { 38

39 ServiceRequestsBean servicerequestsbean = new ServiceRequestsBean(crset.getInt("SVR_ID"),crset.getString("STATUS"),crset.getDate("REQUEST_DA TE"),crset.getString("PROBLEM_DESCRIPTION"),crset.getInt("PROD_ID"),crset.getInt("CREATED_B Y"),crset.getInt("ASSIGNED_TO"),crset.getDate("ASSIGNED_DATE")); retval.add(servicerequestsbean); catch (SQLException e) { e.printstacktrace(); System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: findservicerequestsbystatus()"); catch (Exception e1) { e1.printstacktrace(); finally { try{ rs.close(); pstmtselect.close(); connection.close(); catch(sqlexception e2) { System.out.println(e2); return retval; public List<ServiceRequestsBean> findallservicerequests(){ List<ServiceRequestsBean> retval = new ArrayList<ServiceRequestsBean>(); Connection connection = null; PreparedStatement pstmtselect=null; ResultSet rs=null; try { connection = connecttodatabase(); String sql = "SELECT * FROM SERVICE_REQUESTS"; 39

40 pstmtselect = connection.preparestatement(sql); rs = pstmtselect.executequery(); CachedRowSetImpl crset = new CachedRowSetImpl(); crset.populate(rs); while (crset.next()) { ServiceRequestsBean servicerequestsbean = new ServiceRequestsBean(crset.getInt("SVR_ID"),crset.getString("STATUS"),crset.getDate("REQUEST_DA TE"),crset.getString("PROBLEM_DESCRIPTION"),crset.getInt("PROD_ID"),crset.getInt("CREATED_B Y"),crset.getInt("ASSIGNED_TO"),crset.getDate("ASSIGNED_DATE")); retval.add(servicerequestsbean); catch (SQLException e) { e.printstacktrace(); System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: findallservicerequests()"); catch (Exception e1) { e1.printstacktrace(); finally { try{ rs.close(); pstmtselect.close(); connection.close(); catch(sqlexception e2) { System.out.println(e2); return retval; public List<ServiceRequestsBean> searchservicerequests(string status, String problemdescription){ 40

41 List<ServiceRequestsBean> retval = new ArrayList<ServiceRequestsBean>(); Connection connection = null; PreparedStatement pstmtselect=null; ResultSet rs=null; /* if(status==null){ status="%"; if(problemdescription==null){ problemdescription="%"; */ String statusp = "%"+status+"%"; String problemdescriptionp ="%"+problemdescription+"%"; try { connection = connecttodatabase(); String sql = "SELECT * FROM SERVICE_REQUESTS WHERE (STATUS LIKE UPPER(?) OR STATUS LIKE LOWER(?) OR STATUS LIKE INITCAP(?)) AND (PROBLEM_DESCRIPTION LIKE LOWER(?) OR PROBLEM_DESCRIPTION LIKE UPPER(?) OR PROBLEM_DESCRIPTION LIKE INITCAP(?))"; pstmtselect = connection.preparestatement(sql); pstmtselect.setstring(1, statusp); pstmtselect.setstring(2, statusp); pstmtselect.setstring(3, statusp); pstmtselect.setstring(4, problemdescriptionp); pstmtselect.setstring(5, problemdescriptionp); pstmtselect.setstring(6, problemdescriptionp); rs = pstmtselect.executequery(); CachedRowSetImpl crset = new CachedRowSetImpl(); crset.populate(rs); while (crset.next()) { ServiceRequestsBean servicerequestsbean = new ServiceRequestsBean(crset.getInt("SVR_ID"),crset.getString("STATUS"),crset.getDate("REQUEST_DA TE"),crset.getString("PROBLEM_DESCRIPTION"),crset.getInt("PROD_ID"),crset.getInt("CREATED_B Y"),crset.getInt("ASSIGNED_TO"),crset.getDate("ASSIGNED_DATE")); retval.add(servicerequestsbean); catch (SQLException e) { e.printstacktrace(); System.out.println(e.getSQLState()); System.out.println(e.getMessage()); 41

42 System.out.println(e.getErrorCode()); System.out.println("ERROR: searchservicerequests()"); catch (Exception e1) { e1.printstacktrace(); finally { try{ rs.close(); pstmtselect.close(); connection.close(); catch(sqlexception e2) { System.out.println(e2); return retval; public void removeservicerequests(int svrid){ Connection conn = null; PreparedStatement pstmtupdate=null; try { conn = connecttodatabase(); String sqldelete = "DELETE FROM SERVICE_REQUESTS WHERE SVR_ID =?"; pstmtupdate = conn.preparestatement(sqldelete); pstmtupdate.setint(1, svrid); pstmtupdate.executeupdate(); catch (SQLException e) { System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: removeservicerequests()"); 42

43 finally{ try{ pstmtupdate.close(); conn.close(); catch(sqlexception e2) { System.out.println(e2); System.out.println("Error from finally block removeservicerequests"); public List<ServiceRequestsBean> findservicerequestsbycreatedby(int createdby){ List<ServiceRequestsBean> retval = new ArrayList<ServiceRequestsBean>(); Connection connection = null; PreparedStatement pstmtselect=null; ResultSet rs=null; try { connection = connecttodatabase(); String sql = "SELECT * FROM SERVICE_REQUESTS WHERE CREATED_BY =? "; pstmtselect = connection.preparestatement(sql); pstmtselect.setint(1, createdby); rs = pstmtselect.executequery(); CachedRowSetImpl crset = new CachedRowSetImpl(); crset.populate(rs); while (crset.next()) { ServiceRequestsBean servicerequestsbean = new ServiceRequestsBean(crset.getInt("SVR_ID"),crset.getString("STATUS"),crset.getDate("REQUEST_DA TE"),crset.getString("PROBLEM_DESCRIPTION"),crset.getInt("PROD_ID"),crset.getInt("CREATED_B Y"),crset.getInt("ASSIGNED_TO"),crset.getDate("ASSIGNED_DATE")); retval.add(servicerequestsbean); catch (SQLException e) { 43

44 e.printstacktrace(); System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: findservicerequestsbycreatedby()"); catch (Exception e1) { e1.printstacktrace(); finally { try{ rs.close(); pstmtselect.close(); connection.close(); catch(sqlexception e2) { System.out.println(e2); return retval; 4) Enter the following source code for UsersBean.java and import all necessary libraries. i. Libraries import java.sql.connection; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import java.util.arraylist; import java.util.list; import javax.annotation.resource; import javax.ejb.stateless; import javax.sql.datasource; ii. Source code private int userid; private String userrole; private String ; 44

45 private String firstname; private String lastname; private String streetaddress; private String city; private String stateprovince; private String postalcode; private String countryid; public UsersBean(int userid, String userrole, String , String firstname, String lastname, String streetaddress, String city, String stateprovince, String postalcode, String countryid) { this.userid=userid; this.userrole=userrole; this. = ; this.firstname=firstname; this.lastname=lastname; this.streetaddress=streetaddress; this.city=city; this.stateprovince=stateprovince; this.postalcode=postalcode; this.countryid=countryid; //Dependancy Injection for private DataSource srconndatasource; public void setdatasource(datasource mydb){ this.srconndatasource = mydb; public void setuserid(int userid) { this.userid = userid; public int getuserid() { return userid; public void setuserrole(string userrole) { this.userrole = userrole; public String getuserrole() { return userrole; public void set (string ) { this. = ; 45

46 public String get () { return ; public void setfirstname(string firstname) { this.firstname = firstname; public String getfirstname() { return firstname; public void setlastname(string lastname) { this.lastname = lastname; public String getlastname() { return lastname; public void setstreetaddress(string streetaddress) { this.streetaddress = streetaddress; public String getstreetaddress() { return streetaddress; public void setcity(string city) { this.city = city; public String getcity() { return city; public void setstateprovince(string stateprovince) { this.stateprovince = stateprovince; public String getstateprovince() { return stateprovince; public void setpostalcode(string postalcode) { this.postalcode = postalcode; public String getpostalcode() { return postalcode; 46

47 public void setcountryid(string countryid) { this.countryid = countryid; public String getcountryid() { return countryid; private Connection connecttodatabase(){ Connection conn=null; int ret_code; try { conn=srconndatasource.getconnection(); catch (SQLException se) { ret_code = se.geterrorcode(); System.out.println("SQL Error while connecting to the database : "+ se.tostring()); catch (Exception ne) { System.out.println("Other Error while connecting to the database : "+ ne.tostring()); return conn; public void insertusers(int userid, String userrole, String , String firstname, String lastname, String streetaddress, String city, String stateprovince, String postalcode, String countryid){ Connection conn = null; PreparedStatement pstmtinsert=null; try { conn = connecttodatabase(); String sqlinsert = "INSERT INTO USERS (USER_ID, USER_ROLE, , FIRST_NAME, LAST_NAME, STREET_ADDRESS, CITY, STATE_PROVINCE, POSTAL_CODE, COUNTRY_ID) VALUES (?,?,?,?,?,?,?,?,?,?)"; pstmtinsert = conn.preparestatement(sqlinsert); pstmtinsert.setint(1, userid); pstmtinsert.setstring(2, userrole); 47

48 pstmtinsert.setstring(3, ); pstmtinsert.setstring(4, firstname); pstmtinsert.setstring(5, lastname); pstmtinsert.setstring(6, streetaddress); pstmtinsert.setstring(7, city); pstmtinsert.setstring(8, stateprovince); pstmtinsert.setstring(9, postalcode); pstmtinsert.setstring(10, countryid); pstmtinsert.executeupdate(); catch (SQLException e) { System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: insertusers()"); finally{ try{ pstmtinsert.close(); conn.close(); catch(sqlexception e2) { System.out.println(e2); public void updateusers(int userid, String userrole, String , String firstname, String lastname, String streetaddress, String city, String stateprovince, String postalcode, String countryid){ Connection conn = null; PreparedStatement pstmtupdate=null; try { conn = connecttodatabase(); String sqlupdate = "UPDATE USERS SET USER_ROLE =?, =?,FIRST_NAME =?,LAST_NAME =?,STREET_ADDRESS =?,CITY =?,STATE_PROVINCE =? POSTAL_CODE =?,COUNTRY_ID=? WHERE USER_ID =?"; pstmtupdate = conn.preparestatement(sqlupdate); pstmtupdate.setstring(1, userrole); 48

49 pstmtupdate.setstring(2, ); pstmtupdate.setstring(3, firstname); pstmtupdate.setstring(4, lastname); pstmtupdate.setstring(5, streetaddress); pstmtupdate.setstring(6, city); pstmtupdate.setstring(7, stateprovince); pstmtupdate.setstring(8, postalcode); pstmtupdate.setstring(9, countryid); pstmtupdate.setint(10, userid); pstmtupdate.executeupdate(); catch (SQLException e) { System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: updateusers()"); finally{ try{ pstmtupdate.close(); conn.close(); catch(sqlexception e2) { System.out.println(e2); System.out.println("Error from finally block updateusers"); public List<UsersBean> findallusers(){ List<UsersBean> retval = new ArrayList<UsersBean>(); Connection connection = null; PreparedStatement pstmtselect=null; ResultSet rs=null; try { connection = connecttodatabase(); String sql = "SELECT * FROM USERS"; pstmtselect = connection.preparestatement(sql); rs = pstmtselect.executequery(); 49

50 CachedRowSetImpl crset = new CachedRowSetImpl(); crset.populate(rs); while (crset.next()) { UsersBean usersbean = new UsersBean(crset.getInt("USER_ID"),crset.getString("USER_ROLE"),crset.getString(" "),crset.get String("FIRST_NAME"),crset.getString("LAST_NAME"),crset.getString("STREET_ADDRESS"),crset.ge tstring("city"),crset.getstring("state_province"), crset.getstring("postal_code"), crset.getstring("country_id")); retval.add(usersbean); catch (SQLException e) { e.printstacktrace(); System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: findallusers()"); catch (Exception e1) { e1.printstacktrace(); finally { try{ rs.close(); pstmtselect.close(); connection.close(); catch(sqlexception e2) { System.out.println(e2); return retval; public void removeuser(int userid){ Connection conn = null; PreparedStatement pstmtupdate=null; try { 50

51 conn = connecttodatabase(); String sqldelete = "DELETE FROM USERS WHERE USER_ID =?"; pstmtupdate = conn.preparestatement(sqldelete); pstmtupdate.setint(1, userid); pstmtupdate.executeupdate(); catch (SQLException e) { System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: removeusers()"); finally{ try{ pstmtupdate.close(); conn.close(); catch(sqlexception e2) { System.out.println(e2); System.out.println("Error from finally block removeusers"); public List<UsersBean> findusersbyuserid(int userid){ List<UsersBean> retval = new ArrayList<UsersBean>(); Connection connection = null; PreparedStatement pstmtselect=null; ResultSet rs=null; try { connection = connecttodatabase(); String sql = "SELECT * FROM USERS WHERE USER_ID=?"; pstmtselect = connection.preparestatement(sql); pstmtselect.setint(1, userid); rs = pstmtselect.executequery(); 51

52 CachedRowSetImpl crset = new CachedRowSetImpl(); crset.populate(rs); while (crset.next()) { UsersBean usersbean = new UsersBean(crset.getInt("USER_ID"),crset.getString("USER_ROLE"),crset.getString(" "),crset.get String("FIRST_NAME"),crset.getString("LAST_NAME"),crset.getString("STREET_ADDRESS"),crset.ge tstring("city"),crset.getstring("state_province"), crset.getstring("postal_code"), crset.getstring("country_id")); retval.add(usersbean); catch (SQLException e) { e.printstacktrace(); System.out.println(e.getSQLState()); System.out.println(e.getMessage()); System.out.println(e.getErrorCode()); System.out.println("ERROR: findallusers()"); catch (Exception e1) { e1.printstacktrace(); finally { try{ rs.close(); pstmtselect.close(); connection.close(); catch(sqlexception e2) { System.out.println(e2); return retval; 5) Exposed all methods through Local & Remote interface for both ServiceRequestsBean.java and UsersBean.java, using steps mentioned previously. 6) Compile both ServiceRequestsBean.java and UsersBean.java. 52

53 Practice 4 In this practice, you create a data control based on the Session EJB. You then create a simple ADF Faces Rich Client page and use the data control to bind data to the page. Practice 4-1: Create and Use a Data Control In this section, you create a data control based on an existing EJB model. You then create a simple master-detail page that consumes the data control. The page is based on Users as the master and displays all the ServiceRequests that belong to the user as the detail. 1) Create a data control based on the ServiceRequestsBean.java and UsersBean.java in the DataModel project. i. Right-click ServiceRequestsBean.java in the DataModel project and select Create Data Control. ii. Select Local for the EJB interface type. iii. Click OK. iv. Notice the files that are created in the DataModel project. v. Save All your work. vi. Do the same for UsersBean.java vii. This is what you will see. 53

54 2) Open the JSF Navigation diagram in the UserInterface project by double-click faces-config.xml, inside folder Page flows. 3) Add a JSF Page reference to the diagram and name it usersservicerequests.jspx. i. Click JSF Page on the Component Palette and click anywhere on the diagram. ii. Enter the name usersservicerequests.jspx. 4) Create the JSF. i. Double-click the JSF reference on the JSF Navigation diagram. ii. Name it usersservicerequests. iii. Make it a JSP Document (*.jspx) iv. Include an automatic backing bean. 5) Add an ADF Read-only Form based on the Users collection. i. Open the Visual Editor for the usersservicerequests.jspx. ii. From the Data Control Palette, drag UsersLocal >findallusers >UsersBean to the usersservicerequests.jspx (in design view). iii. Select Forms >ADF Read-only Form from the pop-up menu. iv. In the Edit Form Fields dialog box, select Include Navigation Controls and click OK. v. Save your work. 6) Run the page to see the User data. Right-click anywhere in the Visual Editor and click Run. 7) Your page should look something like: 54

55 8) Add a data control for the detail portion of the page. i. In the Data Control Palette, drag ServiceRequestsLocal > findservicerequestsbycreatedby > ServiceRequestsBean to the bottom of the form on your page. ii. Select Tables> ADF Read-only Table, then OK. iii. In the Action Binding Editor, click pulldown button, button inside Value column and click Show EI Expression Builder iv. In the Variable dialog box, expand ADF Bindings > Bindings, select userid and click button Insert Into Expression to move it to the expression column, then OK and OK (Action Binding Editor). 9) Run the page. You have to scroll through some Users to find one with Requests. 10) Your page should look something like: 55

56 56

57 Practice 5 In this practice, you use various ADF Faces Layout components to create a template that you use in all the other pages you create. Practice 5-1: Create a Template jspx In this section, you create a template.jspx page and add layout components that help make all your pages look the same. Start this practice with your application from the previous practice. 1) In Windows Explorer (or the equivalent if you are using another operating system), navigate to the MiscFiles directory, which is in the same directory as the practice workspaces. 2) Copy the images subdirectory and paste it in EJB-JSF > ViewController > public_html. 3) The directory structure should look like: 4) Click the refresh button on the Applications Navigator to see the properties file. It will be under a Resources node. 5) Right-click on UserInterface project > New, in New Gallery dialog box, Web Tier > JSF and select JSF Page Template, then OK. 6) Create the page with the following attributes: File Name: template.jspx Page Template Name: template For Facet Definitions tab, Add 4 entry: Name Header Left Main Footer Descriptions for logo etc for link/menu button for tab for copyright etc 57

58 Click OK. 9) Add an ADF Faces > Layout > Panel Splitter component to the page. i. Click the ADF Faces > Layout page in the Component Palette. ii. Click, drag & drop Panel Splitter. 10) In the Panel Splitter - Property Inspector, enter: Common > Orientation: vertical Common > Splitter position: 320 Style > Box > Width: 100 percent Style > Box > Hight: 100 percent 58

59 11) Add second Panel Splitter and drop inside first facet. In the Panel Splitter - Property Inspector, enter: Common > Orientation: vertical Common > Splitter position: 70 Style > Box > Width: 100 percent Style > Box > Width: 100 percent 59

60 12) Add third Panel Splitter and drop inside second (middle) facet. In the Property Inspector, enter: Style > Box > Width: 100 percent Style > Box > Height: 100 percent 60

61 13) Click, drag & drop Facet Ref from ADF Faces > Common Components to header facet (top most panel). Inside Insert Facet Ref dialog box, choose Header for Facet Name. Do the same for the other 3 panel/facet and choose Left, Main and Footer for Facet Name. 61

62 14) Add image from ADF Faces > Common Components to header facet. For Source, choose file /images/banner3.jpg from image folder. 15) Add Output Text from ADF Faces > Common Components to footer. In Property Inspector, add: Common > Value: Copyright PPUKM, 2008 (Pusat Teknologi Maklumat, PPUKM), all right reserved. Style > Text > Color: Blue Style > Text > Size: Small Style > Text > Bold: Bold 16) Drag & drop Panel Group Layout from ADF Faces > Layout, to Left facet. Set Common >Layout to vertical in the Property Inspector. 17) Drag & drop Spacer from ADF Faces > Layout to Panel Group Layout. Set Common > Height to 4, in the Property Inspector. 18) Drag & drop Toolbar Button from ADF Faces > Layout beneath Spacer. Repeat steps 17 & 18 two times. 19) Change Common > Text for each button, in the Property Inspector to Laboratory Order, Radiology Order and Diet Order respectively. 20) Save All. 62

63 63

64 Practice 5-2: Create the SREdit Page and Apply the Template In this section, you create the SREdit page and apply the template you just created. 1) Open the JSF Navigation diagram (faces-config.xml). 2) Create the SREdit.jspx with the following attributes: i. Double-click /SREdit.jsp on the JSF Navigation diagram. ii. Use Page Template: template iii. Select Create as XML Document (*.jspx). iv. Select Automatically Expose UI Components in a New Managed Bean. v. Click OK to create the page. 3) Drag & drop Panel Tabbed from ADF Faces > Layout to Main facet/panel. 4) Select af:paneltabbed inside SREdit.jspx structure pane. In the Property Inspector, change Style>Box>Width: to 100, so as Height: to ) Right Click at ShowDetailItem 1 > Insert after Show Detail Item ShowDetailItem 1 > ShowDetailItem. This will add new tab (ShowDetailItem 2). From the Property Inspector, change Common > Text from ShowDetailItem 2 to View All. Do the same to ShowDetailItem 1 to Edit. 6) Save All. The page should look something like this: 64

65 Practice 5-3: Add Data-Aware Components to the SREdit Page In this section, you add an ADF Form component that will display a service request. 1) Inside the Data Control palette and expand ServiceRequestsLocal. Scroll down to select findservicerequestbyid(int) > ServiceRequestsBean and drag it to the Edit tab, inside the Main panel/facet. 2) In the pop-up menu, select Forms > ADF Form. 3) In the Edit Form Fields dialog box, reorder the columns as follows: svrid, requestdate, status, assigneddate, and problemdescription. Do not close the dialog box yet. 4) Still in the dialog box, click the Component to Use field to the right of svrid, and from the drop-down list, select ADF Output Text w/label. Do the same for the requestdate field. Click OK. 5) In the Action Binding Editor dialog box, set the value for svrid to 100. This is temporary so that it queries a row when you test the page. Click OK. 6) Select the problemdescription field and, in the Property Inspector, set the Appearance > Rows property to 4 to make this a multiline item so that a user has space to provide a textual description of the appliance problem. 7) Change the Appearance > Columns property to 40. 8) In the Structure pane, expand /template.jspx facets > Main > af:paneltabbed>af:showdetailitem Edit>Panel Form Layout facets > footer. Select Panel Group Layout, in the ADF Faces > Layout palette, and drag it to the footer facet of the Panel Form Layout facets. 65

66 In the Property Inspector, change Common > Layout to horizontal. Select Spacer from ADF Faces > Layout palette, and drag it to Panel Group Layout. Change the Common > Width to 40 in Property Inspector. Select Button in the ADF Faces> Common Component palette, and drag it to the Panel Group Layout. Select another Spacer from ADF Faces > Layout palette, and drag it to Panel Group Layout. Change the Common > Width to 40 in Property Inspector. 9) Add second Button to Panel Group Layout. In the Property Inspector, set their properties to the values in the following: ID Text cancelbutton Cancel commitbutton Save 10) The Structure pane should look like: 11) The design view should look like this: 66

67 12) Right-click anywhere on the page and select Run. The page should run and display Service Request 100 and look something like: 67

68 Practice 6 In this practice, you add a form to the SRSearch page. The form is based on a method in EJB. Practice 6-1: Add Data Components to the Search Page In this section, you create the SRSearch page and add a Parameter Form that uses the searchservicerequests method to the Search page. 1) Open the JSF Navigation diagram. 2) Create the SRSearch.jspx with the following attributes: i. Double-click /SRSearch.jsp on the JSF Navigation diagram. ii. Use Page Template: Template. iii. Select Create as XML Document (*.jspx). iv. Select Automatically Expose UI Components in a New Managed Bean. v. Click OK to create the page. 3) Add Panel Tabbed, as what you have done in step 5-2, 3-5. But the first tab you define as Search and second tab you defined as View All. Next, add a parameterized form to the page. 4) On the Data Control Palette, expand the ServiceRequestsLocal Data control, and locate searchservicerequests(string, String). 68

69 5) Add the searchservicerequests as a Parameter Form. i. Select searchservicerequests(string, String) and drag it to Search tab. ii. Select Parameters ADF Parameter Form from the pop-up menu. iii. Click OK in the Edit Form Fields dialog box to accept the defaults. iv. Click OK in the Edit Action Binding dialog box. These actions add a form with two fields and a Search button. 6) Change the Label property (Common > Label) of the description af:inputtext component to Problem Description:. You can either enter the value or use the Binding Editor. 7) Change the Label property (Common > Label) of the status af:inputtext component to Status:. 8) Change the Text property (Common > Text) of the Search button to Search. Now that you have a form that executes the query, you need to add a component to display the results. 9) In the Data Control Palette, expand searchservicerequests(string, String) and drag the subnode ServiceRequestsBean below the form in the Search tab. 10) In the pop-up menu, select Tables > ADF Read-only Table. This table displays the search results. You see the Edit Table Columns window, where you can change the display label, the binding value, and the type of component used to display it. The default values originate from those defined in the data model. 11) Using the Top, Up, Down, and Bottom buttons, reorder the columns of the table to the following: srvid, problemdescription, status, requestdate, and assigneddate. Delete the last 3 column (prodid, createdby and assignedto). 69

70 11) Select the Row selection check box and accept the defaults. Click OK to continue. 12) With the af:table selected in the Structure window, change the Id (Common > Id) property to srtable. Set size of the af:table by setting this parameter: Style > Box >Width: 100 percent 13) Click View All tab to activate it. 14) Drag & drop Output Label from ADF Faces > Common Components to the View All tab. In the Property Inspector, change Common>Value to Service Request, Style > Text > Color: Navy, Style > Text>Size: medium & Style > Text > Bold: bold. 15) Drag & drop Separator, below Output Label, just now. 16) In the Data Control Palette, expand findallservicerequests() and drag the subnode ServiceRequestsBean to the View All tab. 17) In the pop-up menu, select Tables > ADF Read-only Table. In the Edit Table Columns, select the Sorting check box and accept the defaults. Click OK to continue. 70

71 18) With the af:table selected in the Structure window, set size of the af:table by setting this parameter:style > Box >Width: 100 percent 19) Save All. 71

72 Practice 6-2: Modify the Default Behavior The default behavior of the parameter form is to simply accept the values the user enters and execute the query. This means the user must put a value or a wildcard in each of the fields for the query to return results. That is probably fine if it is a two-field form, but more than that would present usability issues to users. In this section, you add Expression Language (EL) to the page-definition parameters that insert a wildcard if the user does not enter a value in the field. You add this code to each of the parameters so that the user can enter either or both parameters. 1) Select the page definition for the SRSearch page in the Applications Navigator. You could also rightclick anywhere on the SRSearch page and select Go to Page Definition and go to Source view. 2) In the Structure window, expand bindings > searchservicerequests. 3) Click the problemdescription and see the Property Inspector. 4) For the NDValue in the NamedData Properties dialog box, click the arrow button then edit. The expression is what populates the parameter before it is passed to the query for execution. By default, the parameter is populated from the related field on the parameter form. The code you are about to add checks for a value and returns a wildcard ( % ) if the parameter is either null or blank. 5) Replace the default expression for problemdescription with the following code: ${((bindings.searchservicerequests_problemdescription== null) (bindings.searchservicerequests_problemdescription== ''))? '%' : bindings.searchservicerequests_problemdescription 72

73 The preceding code tests problemdescriptionfor null and for blank (''). If either is true, the expression returns a wildcard ('%'). If problemdescription is not null, the expression returns the value that the user entered. 6) Click OK to accept the changes and to close the dialog box. 7) Click the status property. 8) For the NDValue in the NamedData Properties dialog box, click the arrow button then edit. 9) Replace the default expression for status with the following code: ${((bindings.searchservicerequests_status== null) (bindings.searchservicerequests_status== ''))? '%' : bindings.searchservicerequests_status 73

74 Click OK to accept the changes and to close the dialog box 10) Run the page. Right-click SRSearch.jspx in the Applications Navigator and select Run, or right-click anywhere in the SRSearch.jspx Visual Editor and select Run. 11) Click the Search button without entering values in either of the fields. The result should show all the service requests. 12) Enter open in the status field and click Search. The result should be all the open service requests. 13) Enter a value in the description field (for example, wash ), and then click Search. You should now see the rows with wash somewhere in the description with a status of open. 14) Clear the status field and click Search. You should now see all the rows with wash somewhere in the description. 74

75 When you first ran the page, the query was executed when the page was loaded. Because you added the code to substitute wildcards for null values, the initial query returns and displays all rows. In the final few steps, you add a refresh condition that keeps the form from executing the query until the user clicks the Search button. 15) Select the page definition for the SRSearch page in the Applications Navigator. 16) In the Structure pane, expand executables. 17) Click searchservicerequestsiterator. 18) In the Properties Inspector, change the Advanced > RefreshCondition to ${adffacescontext.postback. This prevents the Iterator from executing unless the request is a postback. 19) Go back to SRSearch.jspx, select af:table srtable on the Structure pane, in the Property Inspector, set value for Behaviour > ContentDelivery to immediate. 19) Run the page. Right-click SRSearch.jspx in the Applications Navigator and select Run, or rightclick anywhere in the SRSearch.jspx Visual Editor and select Run. 75

76 20) Notice that the detail table does not display any rows until you click Search. 76

77 Practice 7 In this practice, you complete the Edit page by adding some lookup fields and adding the commit functionality. Practice 7-1: Complete the Edit Page In this section, you complete the SREdit page. You add some lookup fields that make the page more user-friendly. You also add a button that will commit any changes you make to the displayed row. In the next few steps, you add a couple of lookup fields that shows the user that created the requests and the technician that is assigned to the request. The and attributes of the ServiceRequest object are actually createdby, assignedto child-object accessors. In the following steps, you bind the relevant name attributes from these child objects into the page. Start this practice with your application from the previous practice. 1) Open the SREdit.jspx page in the Visual Editor. 2) Click Edit tab to activate it. Drag & drop Output Label from ADF Faces > Common Components beneath af:showdetailitem Edit. In the Property Inspector, change Common>Value to Search Service Request, Style > Text > Color: Navy, Style >Text> Size: medium & Style > Text > Bold: bold. 3) Drag & drop Separator, below Output Label, just now. 4) The first component you add contains the first and last names of the user who created the service request. Select PanelLabelAndMessage in the ADF Faces > Common Component palette, and in the Visual Editor, drag it to the page beneath the svrid field. 5) The second component contains the first and last names of the technician to whom the service request is assigned. Drag and drop a second PanelLabelAndMessage component beneath the requestdate field. 77

78 6) Drop a Panel Group Layout inside each af:panellabelandmessage component. This ensures that the firstname and lastname attributes appear side by side instead of vertically. Set Common > Layout to horizontal, inside Property Inspector. In the next few steps, you add and bind data components for the first and last name of the created by and assigned to users to the user interface. 7) In the Data Control Palette, expand the UsersLocal >findusersbyuserid(int) > UsersBean node, and select the firstname attribute. i. Drag it to the first panelgrouplayout, and drop it as Texts > ADF Output Text. ii. Action Binding Editor dialog box will appear, click [ ] button inside Value field, iii. Inside Variables dialog box, expand ADF Bindings > bindings and select assignedto, click button > to move it to column Expression and click OK and iv. Click OK in Action Binding Editor dialog box 78

79 8) Select a Spacer from the ADF Faces > Layout palette. Drag it to the Panel Group Layout separator facet of the Structure window (expand the Panel Group Layout facets node if necessary). Set its Width property to 4. 9) Repeat the step 7 with the lastname attribute, placing it in the af: panelgrouplayout component. 10) In the Data Control Palette, expand the UsersLocal >findusersbyuserid(int) > UsersBean node, and select the firstname attribute. Drag it into the second af: panelgrouplayout, and drop it as Texts > ADF Output Text. 11) Add a Spacer to the separator facet of this Panel Group Layout as you did earlier. Again, set its width to 4. 12) Repeat step 10 above with the lastname attribute, placing it in the af: panelgrouplayout component. Next, change the labels of the panellabelandmessage components. 13) Select the first panellabelandmessage component and change the Label property to Created By:. 14) Select the second panellabelandmessage component and change the Label property to Assigned To:. 15) Save the page. At this point, the page should look something like the following: 79

80 16) Run the page to see the results. The page should look something like: 80

81 The status field should offer the user a drop-down list of the different statuses available. The last few steps in this section change the status field from a plain text field to a drop-down list. 17) Delete both the label and input text for the existing status field from the page. 18) In the Data Control Palette, expand ServiceRequestLocal > findservicerequestbyid > ServiceRequestsBean, and select the status attribute. Drag it to its old position in the page, and drop it as Single Selections > ADF Select One Choice. The selectonechoice component creates a menu-style component that enables the user to select a single value from a list of items. 19) In the List Binding Editor, select the Fixed List option. Set the Base Data Source Attribute to status. 20) In the Set of Values box, enter the following values, each on a new line: Open Pending Closed 81

82 These values are displayed at run time. 21) Set the No Selection Item field to Selection Required. Click OK. 82

83 22) In the Property Inspector, for the new af:selectonechoice, set the ID property of the new list component to statusselection, and save the page. 23) Change the Label property to Status:. 24) Run the page to see the results. The page should look something like the following: 83

84 84

85 Practice 7-2: Add the Commit Function The buttons you added are just buttons that are not linked to any action or method. In this section, you bind the Save button to the action you want to perform when the user clicks Save. When the user clicks the Save button, you need to save the changes to the database. 1) In the Data Control Palette, expand ServiceRequestLocal and locate the updateservicerequest(int, String, Date, String, int, int, int, Date) method. Drag it to the Visual Editor and drop it on the Save button that you have created earlier. 2) In the Action Binding Editor, click in the Value field, and then click the [ ] that appear. In the Variables dialog box, expand the ADF Bindings node and then the bindings node. Enter Value column according to table below. Click OK. Name Value svrid ${binding.svrid status ${binding.status.selectedvalue requestdate ${binding. requestdate problemdescription ${binding. problemdescription prodid ${binding. prodid createdby ${binding. createdby assignedto ${binding. assignedto assigneddate ${binding. assigneddate For Confirm Component Rebinding, check the first row, then OK. 85

86 3) Save the page. 4) Run the page and change the status value from Closed to Open. 5) Click Save. 6) In JDeveloper, click the Connections tab. 7) Expand Database > srconn > SRDEMO table. 8) Double-click SERVICE_REQUESTS to open the database table viewer. 9) Click the Data tab to see that the first row (SVR_ID 100) has a status of Open. 86

87 Practice 8 In this practice, you wire-up the SRSearch page to the SREdit page. When users query rows on the Search page, they can click the Edit button, which directs them to the Edit page. In addition to directing them to the Edit page, the Edit button also stores the current servicerequestid in a managed bean. The Edit page retrieves the row using the stored servicerequestid. You also add a delete function and page to the application. Practice 8-1: Link SRSearch to SREdit In this section, you edit the SRSearch page to add functionality to the Edit button. You need to add code to the backing bean that retrieves the ServiceRequests ID from the currently selected row and stores it in the UserState managed bean. You also add a return statement that specifies which JSF Navigation Case to use. Start this practice with your application from the previous practice. 1) Open SRSearch.jspx in the Visual Editor. 2) In the structure window, find af:table srtable. 3) Right-click af:table srtable > Insert After af:table srtable > Panel Group Layout. Set Common > Layout to horizontal. 4) Right-click Panel Group Layout > Insert Inside af: PanelGroupLayout - horizontal > Button. Repeat the previous step to add a second Button. 5) Select the first Button either in the Visual Editor or the Structure window. 6) In the Properties Inspector, change the ID to editbutton. 7) Change the Text property to Edit. 8) Select the second Button either in the Visual Editor or the Structure window. 9) In the Properties Inspector, change the ID to deletebutton. 10) Change the Text property to Delete. 87

88 Next, you add code to the Edit button that will store the current servicerequestid in the userstate managed bean and return the navigation case. 11) In the Visual Editor, double-click the Edit button to invoke the backing bean. 12) In the Bind Action Property dialog box, click OK to add the editbutton_action method to the backing bean. 13) In the backing bean file, replace the generated code in the editbuttonaction method with the following code to specify its navigation path. Note: You can use the Structure window to find the editbutton_action()method. setcurrentsvridfromrow(); return "edit"; 14) The setcurrentsvridfromrow method does not yet exist. Click the CodeAssist icon (the light bulb in the left margin) to create it. 15) Implement the setcurrentsvridfromrow method by adding the following code: RichTable table = getsrtable(); Iterator selection = table.getselectedrowkeys().iterator(); FacesCtrlHierNodeBinding obj = (FacesCtrlHierNodeBinding)table.getSelectedRowData(); DCIteratorBinding rowiter = obj.getdciteratorbinding(); Object oldkey = table.getrowkey(); Row row=null; Integer svrid =null; while (selection.hasnext()) { List rowkey = (List)selection.next(); row = rowiter.findrowbykeystring(((key)rowkey.get(0)).tostringformat(true)); svrid = (Integer)row.getAttribute("svrId"); System.out.println(svrId); table.setrowkey(rowkey); 88

89 UserSystemState.storeCurrentSvrID(svrId); 16) Accept the default import statements. Next, you need to add an action that will refresh the table when the user returns from the Edit page. 17) Open the Page Definition for the SRSearch page. 18) In the Structure window, right-click the executables node, and choose Insert inside executables > invokeaction. 19) In the Insert invokeaction dialog box, enter tablerefresh as the id, and in the Binds field, choose searchservicerequests from the drop-down list. Click Finish. 20) In the Property Inspector, set the Refresh property is to IfNeeded. This controls whether a refresh should take place. 21) In the RefreshCondition property, enter ${!adffacescontext.postback. 22) Save the page definition file. 23) Run the page. Right-click SRSearch.jspx in the Applications Navigator and select Run, or right-click anywhere in the SRSearch.jspx Visual Editor and select Run. 24) Enter values for the query, or just click Search. 25) If you click Edit, you will navigate to the Edit page but because you have not changed the default value in the Edit page query, it will return row 100. Next, you need change the SREdit page to retrieve the svrid from the userstate managed bean. The calling page (SRSearch) sets the svrid value in the userstate bean from the currently selected row. The SREdit page executes a query using the value of that bean property. Earlier, you set it to 100 just for temporary testing. Now you set it to the bean property value. 27) Open the SREdit page definition. 28) Expand bindings > findservicerequestbyid. 29) Select svrid and change the NDValue to ${userstate.currentsvrid. You can either enter the value in the Properties Inspector, or use the EL editor. 30) Run the page and test that when you select a row and click Edit, the Edit page displays that row. When a user clicks the Cancel button on the Edit page, you discard the changes by not saving them. You then need to take the user back to the Search page. 31) Open SREdit Page Definition. 32) In the Structure window, right-click the executables node, and choose Insert inside executables > 89

90 invokeaction. 33) In the Insert invokeaction dialog box, enter explicitrefresh as the id, and in the Binds field, choose findservicerequestbyid from the drop-down list. Click Finish. 34) Inside Property Inspector, set the Refresh property is set to IfNeeded. This controls whether a refresh should take place. 35) In the RefreshCondition property, enter ${!adffacescontext.postback. 36) Save the page definition file. Set an actionlistener to fire when the user clicks the Cancel button, and trigger the refresh. 38) On the SREdit page, right-click the Cancel button and, from the shortcut menu, choose Insert inside Button - Cancel > ADF Faces > Set Action Listener, click OK. In the Insert Set Action Listener dialog box, enter #{true in the From* field and #{userstate.refresh in the To* field. When fired, this listener populates the user state refresh property with the value of #{true. Click Finish. 39) In the Property Inspector, for the Cancel button, set the Action property to success. Now repeat the same process for the Save button. 40) In the Property Inspector, for the Save button, set the Action property to success. 41) As in the previous section, set an actionlistener to fire when the user clicks the Save button and trigger a refresh. 42) Right-click the Save button and, from the shortcut menu, choose Insert inside Button - Save > ADF Faces > SetActionListener. 43) In the Insert SetActionListener dialog box, enter #{true in the From* field and #{userstate.refresh in the To* field. Click Finish. 44) You can now test the page. Right-click anywhere on the SRSearch page and select Run. 45) Enter values for the query, or just click Search. 46) Select any row and click Edit. 47) Change a value and click Save. Notice that you are directed back to the SRSeach page and that your changes are shown. 48) Repeat the testing in any combination you choose. 90

91 Practice 8-2: Add a Delete Page In this section, you create the SRDelete page and apply the template. 1) Open the JSF Navigation diagram. 2) Create the SRDelete.jspx with the following attributes: i. Double-click /SRDelete.jsp on the JSF Navigation diagram. ii. Use Page Template: template. iii. Select Create as XML Document (*.jspx). iv. Select Automatically Expose UI Components in a New Managed Bean. v. Click OK to create the page. 3) Now add the data to the page. Select the Data Control Palette and expand ServiceRequestsLocal. Scroll down to select findservicerequestbyid(int) > ServiceRequestsBean and drag it to the Main facet/panel. 4) In the pop-up menu, select Forms > ADF Read-only Form. 5) Accept the defaults in the Edit Form Fields dialog box and click OK. 6) In the Edit Action Binding dialog box, set the value for svrid to ${userstate.currentsvrid. You can either enter the value directly or use the Binding Editor. Click OK. 7) In the Structure pane, find af:panelformlayout. Select Panel Group Layout in the ADF Faces > Layout palette, and drag it to the af:panelformlayout. 8) Drag two Buttons from the ADF Faces > Common Components palette to the af:panelgrouplayout. 9) Change the Text properties of the first button to Cancel, and the second button to Delete. 10) The page should look something like: 91

92 Practice 8-3: Wire the Buttons In this section, you bind the Delete button to the removeservicerequests(int) method to complete the delete. You also specify the navigation case for the Cancel button. In the last few steps of this section, you edit the Delete button on the Search page to have it store the current service request ID so the Delete page can query the current row. 1) In the Data Control Palette, inside ServiceRequestLocal, locate the removeservicerequests(int) method. Drag it to the Visual Editor and drop it on the Delete button. 2) In the Edit Action Binding, in the Value field, enter ${userstate.currentsvrid. Click OK, and then click OK again. In the Confirm Component Rebinding, check the first row, OK. 3) Select the Delete button and change the Action property to return. 4) Select the Cancel button and change its Action property to cancel. In these last few steps, you add code to the Delete button on the SRSearch page to set the currentsvrid in the userstate bean to the currently selected row and return the navigation case to go to the Delete page. 5) Open the SRSearch page in the Visual Editor. 6) Double-click the Delete button and click OK to accept the proposed method. 7) Replace the default code with the following: 92

Practice for JEE5. Using stateless session EJB 3.0 as a business layer, ADF data Model as a model layer and ADF faces as a view layer. Version 1.

Practice for JEE5. Using stateless session EJB 3.0 as a business layer, ADF data Model as a model layer and ADF faces as a view layer. Version 1. Practice for JEE5 Using stateless session EJB 3.0 as a business layer, ADF data Model as a model layer and ADF faces as a view layer. Version 1.1 Modified by: Dr. Ahmad Taufik Jamil BSc (Med), MD, MPH,

More information

Oracle Retail Accelerators for WebLogic Server 11g

Oracle Retail Accelerators for WebLogic Server 11g Oracle Retail Accelerators for WebLogic Server 11g Micro-Applications Development Tutorial October 2010 Note: The following is intended to outline our general product direction. It is intended for information

More information

CIS 764 Tutorial: Log-in Application

CIS 764 Tutorial: Log-in Application CIS 764 Tutorial: Log-in Application Javier Ramos Rodriguez Purpose This tutorial shows you how to create a small web application that checks the user name and password. Overview This tutorial will show

More information

Oracle Application Development Framework. Tutorial for Forms/4GL Developers ( )

Oracle Application Development Framework. Tutorial for Forms/4GL Developers ( ) Oracle Application Development Framework Tutorial for Forms/4GL Developers (10.1.3.1.0) Revised, January 2008 Oracle Application Development Framework: Tutorial for Forms/4GL Developers (10.1.3.1.0) Copyright

More information

ADF Hands-On. Understanding Task Flow Activities / 2011 ADF Internal Enterprise 2.0 Training. Abstract:

ADF Hands-On. Understanding Task Flow Activities / 2011 ADF Internal Enterprise 2.0 Training. Abstract: ADF Hands-On Understanding Task Flow Activities Abstract: In this hands-on you create a bounded task flows to run as an ADF Region in an ADF Faces page. Within this hands-on you create and use the following

More information

Oracle WebCenter Hands-On Practices. A Practical Introduction to Oracle WebCenter

Oracle WebCenter Hands-On Practices. A Practical Introduction to Oracle WebCenter Oracle WebCenter Hands-On Practices A Practical Introduction to Oracle WebCenter Table of Contents Before You Start... 3 Estimated timings for the practices... 3 Accessing the hands-on setup files... 3

More information

ADF Code Corner How-to bind custom declarative components to ADF. Abstract: twitter.com/adfcodecorner

ADF Code Corner How-to bind custom declarative components to ADF. Abstract: twitter.com/adfcodecorner ADF Code Corner 005. How-to bind custom declarative components to ADF Abstract: Declarative components are reusable UI components that are declarative composites of existing ADF Faces Rich Client components.

More information

PART 1. Eclipse IDE Tutorial. 1. What is Eclipse? Eclipse Java IDE

PART 1. Eclipse IDE Tutorial. 1. What is Eclipse? Eclipse Java IDE PART 1 Eclipse IDE Tutorial Eclipse Java IDE This tutorial describes the usage of Eclipse as a Java IDE. It describes the installation of Eclipse, the creation of Java programs and tips for using Eclipse.

More information

Developing an ADF 11g client for Agile PLM. Developing an ADF 11g client for Agile PLM

Developing an ADF 11g client for Agile PLM. Developing an ADF 11g client for Agile PLM Table of Contents 1 LAB OVERVIEW... 3 2 GETTING STARTED... 4 2.1 Starting Oracle JDeveloper 11gR1... 4 3 CREATE THE ADF CLIENT... 5 3.1 Create the ADF Application... 5 3.2 Create the Web Service Data Control...

More information

TUTORIAL: ADF Faces (Part 1-Modified) Passing parameter values between JSF pages By: Dr.Ahmad Taufik Jamil, Pusat Teknologi Maklumat, HUKM

TUTORIAL: ADF Faces (Part 1-Modified) Passing parameter values between JSF pages By: Dr.Ahmad Taufik Jamil, Pusat Teknologi Maklumat, HUKM TUTORIAL: ADF Faces (Part 1-Modified) Passing parameter values between JSF pages By: Dr.Ahmad Taufik Jamil, Pusat Teknologi Maklumat, HUKM This tutorials below will show you how to pass parameter value

More information

Oracle Fusion Middleware

Oracle Fusion Middleware Oracle Fusion Middleware Tutorial for Oracle WebCenter Developers 11g Release 1 (11.1.1) E10273-01 May 2009 Oracle Fusion Middleware Tutorial for Oracle WebCenter Developers, 11g Release 1 (11.1.1) E10273-01

More information

ADF Code Corner. 64. How-to implement a Select Many Shuttle with pre- selected values. Abstract: twitter.com/adfcodecorner

ADF Code Corner. 64. How-to implement a Select Many Shuttle with pre- selected values. Abstract: twitter.com/adfcodecorner ADF Code Corner 64. How-to implement a Select Many Shuttle with pre- selected Abstract: The ADF binding layer currently only supports a single current row which works for single select lists updating he

More information

Oracle ADF: The technology behind project fusion. Lynn Munsinger Principal Product Manager Application Development Tools Oracle Corporation

Oracle ADF: The technology behind project fusion. Lynn Munsinger Principal Product Manager Application Development Tools Oracle Corporation Oracle ADF: The technology behind project fusion Lynn Munsinger Principal Product Manager Application Development Tools Oracle Corporation Agenda Application Development Framework (ADF) Overview Goals

More information

Oracle Developer Day

Oracle Developer Day Oracle Developer Day Sponsored by: Session 2 Oracle Application Development Framework Speaker Speaker Title Page 1 1 Agenda Development Environment Expectations Challenges Oracle ADF Architecture Business

More information

Oracle Fusion Middleware 11g: Build Applications with ADF I

Oracle Fusion Middleware 11g: Build Applications with ADF I Oracle University Contact Us: +966 1 1 2739 894 Oracle Fusion Middleware 11g: Build Applications with ADF I Duration: 5 Days What you will learn This course is aimed at developers who want to build Java

More information

IBM. IBM WebSphere Application Server Migration Toolkit. WebSphere Application Server. Version 9.0 Release

IBM. IBM WebSphere Application Server Migration Toolkit. WebSphere Application Server. Version 9.0 Release WebSphere Application Server IBM IBM WebSphere Application Server Migration Toolkit Version 9.0 Release 18.0.0.3 Contents Chapter 1. Overview......... 1 Chapter 2. What's new........ 5 Chapter 3. Support..........

More information

Creating your first JavaServer Faces Web application

Creating your first JavaServer Faces Web application Chapter 1 Creating your first JavaServer Faces Web application Chapter Contents Introducing Web applications and JavaServer Faces Installing Rational Application Developer Setting up a Web project Creating

More information

JSF Tools Reference Guide. Version: M5

JSF Tools Reference Guide. Version: M5 JSF Tools Reference Guide Version: 3.3.0.M5 1. Introduction... 1 1.1. Key Features of JSF Tools... 1 2. 3. 4. 5. 1.2. Other relevant resources on the topic... 2 JavaServer Faces Support... 3 2.1. Facelets

More information

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc. Chapter 1 GETTING STARTED SYS-ED/ Computer Education Techniques, Inc. Objectives You will learn: The IDE: Integrated Development Environment. MVC: Model-View-Controller Architecture. BC4J: Business Components

More information

Injection Of Datasource

Injection Of Datasource Injection Of Datasource Example injection-of-datasource can be browsed at https://github.com/apache/tomee/tree/master/examples/injection-of-datasource Help us document this example! Click the blue pencil

More information

ADF Mobile Code Corner

ADF Mobile Code Corner ADF Mobile Code Corner m05. Caching WS queried data local for create, read, update with refresh from DB and offline capabilities Abstract: The current version of ADF Mobile supports three ADF data controls:

More information

Lyudmil Pelov, A-Team, Oracle December Development Lifecycle for Task Flows in Oracle WebCenter Portal 11gR1 version

Lyudmil Pelov, A-Team, Oracle December Development Lifecycle for Task Flows in Oracle WebCenter Portal 11gR1 version Lyudmil Pelov, A-Team, Oracle December 2013 Development Lifecycle for Task Flows in Oracle WebCenter Portal 11gR1 version 11.1.1.8.0 Table of Contents Introduction...3 About the Examples Used in This Paper...3

More information

Creating a PDF Report with Multiple Queries

Creating a PDF Report with Multiple Queries Creating a PDF Report with Multiple Queries Purpose This tutorial shows you how to create a PDF report that contains a table and graph utilizing two report queries. Time to Complete Approximately 15 minutes

More information

Just Get It Written: Deploying Applications to WebLogic Server Using JDeveloper and WLS Console Hands on Practice

Just Get It Written: Deploying Applications to WebLogic Server Using JDeveloper and WLS Console Hands on Practice This hands on practice describes the steps for deploying an existing Java EE application written with Oracle ADF technologies. Although the practice refers to specific features and files in a sample application

More information

Oracle Fusion Middleware 11g: Build Applications with ADF I

Oracle Fusion Middleware 11g: Build Applications with ADF I Oracle University Contact Us: Local: 1800 103 4775 Intl: +91 80 4108 4709 Oracle Fusion Middleware 11g: Build Applications with ADF I Duration: 5 Days What you will learn Java EE is a standard, robust,

More information

JBuilder. Getting Started Guide part II. Preface. Creating your Second Enterprise JavaBean. Container Managed Persistent Bean.

JBuilder. Getting Started Guide part II. Preface. Creating your Second Enterprise JavaBean. Container Managed Persistent Bean. Getting Started Guide part II Creating your Second Enterprise JavaBean Container Managed Persistent Bean by Gerard van der Pol and Michael Faisst, Borland Preface Introduction This document provides an

More information

Oracle Fusion Middleware

Oracle Fusion Middleware Oracle Fusion Middleware Java EE Developer's Guide for Oracle Application Development Framework 11g Release 1 (11.1.1.7.0) E16272-05 March 2013 Documentation for Oracle Application Development Framework

More information

How to Develop a Simple Crud Application Using Ejb3 and Web Dynpro

How to Develop a Simple Crud Application Using Ejb3 and Web Dynpro How to Develop a Simple Crud Application Using Ejb3 and Web Dynpro Applies to: SAP Web Dynpro Java 7.1 SR 5. For more information, visit the User Interface Technology homepage. Summary The objective of

More information

DbSchema Forms and Reports Tutorial

DbSchema Forms and Reports Tutorial DbSchema Forms and Reports Tutorial Contents Introduction... 1 What you will learn in this tutorial... 2 Lesson 1: Create First Form Using Wizard... 3 Lesson 2: Design the Second Form... 9 Add Components

More information

ADF Mobile Code Corner

ADF Mobile Code Corner ADF Mobile Code Corner m03. Abstract: Dependent lists is a common functional requirement for web, desktop and also mobile applications. You can build dependent lists from dependent, nested, and from independent,

More information

Oracle 10g: Java Programming

Oracle 10g: Java Programming Oracle 10g: Java Programming Volume 1 Student Guide D17249GC12 Edition 1.2 July 2005 D19367 Author Kate Heap Technical Contributors and Reviewers Ken Cooper Brian Fry Jeff Gallus Glenn Maslen Gayathri

More information

3 Connecting to Applications

3 Connecting to Applications 3 Connecting to Applications 3 Connecting to Applications...1 3.1 Prerequisites...1 3.2 Introduction...1 3.2.1 Pega, the Widget Supplier...2 3.2.2 Mega, the Widget Procurer...2 3.3 Create Requisition...3

More information

Oracle WebCenter Suite Integrating Secure Enterprise Search

Oracle WebCenter Suite Integrating Secure Enterprise Search Oracle WebCenter Suite Integrating Secure Enterprise Search An Oracle White Paper January 2007 Oracle WebCenter Suite Integrating Secure Enterprise Search INTRODUCTION As organizations continually reinvent

More information

DbSchema Forms and Reports Tutorial

DbSchema Forms and Reports Tutorial DbSchema Forms and Reports Tutorial Introduction One of the DbSchema modules is the Forms and Reports designer. The designer allows building of master-details reports as well as small applications for

More information

JSF Tools Reference Guide. Version: beta1

JSF Tools Reference Guide. Version: beta1 JSF Tools Reference Guide Version: 3.0.0.beta1 1. Introduction... 1 1.1. Key Features of JSF Tools... 1 1.2. Other relevant resources on the topic... 2 2. JavaServer Faces Support... 3 2.1. Facelets Support...

More information

Seam Tools Tutorial. Version: Final-SNAPSHOT

Seam Tools Tutorial. Version: Final-SNAPSHOT Seam Tools Tutorial Version: 4.2.0.Final-SNAPSHOT 1. Create a Seam Application... 1 1.1. Start Development Database... 1 2. 3. 4. 5. 1.2. Create and deploy Seam Web Project... 3 1.3. Start JBoss Application

More information

1. PhP Project. Create a new PhP Project as shown below and click next

1. PhP Project. Create a new PhP Project as shown below and click next 1. PhP Project Create a new PhP Project as shown below and click next 1 Choose Local Web Site (Apache 24 needs to be installed) Project URL is http://localhost/projectname Then, click next We do not use

More information

Lab1: Stateless Session Bean for Registration Fee Calculation

Lab1: Stateless Session Bean for Registration Fee Calculation Registration Fee Calculation The Lab1 is a Web application of conference registration fee discount calculation. There may be sub-conferences for attendee to select. The registration fee varies for different

More information

Oracle 10g: Build J2EE Applications

Oracle 10g: Build J2EE Applications Oracle University Contact Us: (09) 5494 1551 Oracle 10g: Build J2EE Applications Duration: 5 Days What you will learn Leading companies are tackling the complexity of their application and IT environments

More information

Chapter 2 FEATURES AND FACILITIES. SYS-ED/ Computer Education Techniques, Inc.

Chapter 2 FEATURES AND FACILITIES. SYS-ED/ Computer Education Techniques, Inc. Chapter 2 FEATURES AND FACILITIES SYS-ED/ Computer Education Techniques, Inc. Objectives You will learn: JDeveloper features. Java in the database. Simplified database access. IDE: Integrated Development

More information

Appendix C WORKSHOP. SYS-ED/ Computer Education Techniques, Inc.

Appendix C WORKSHOP. SYS-ED/ Computer Education Techniques, Inc. Appendix C WORKSHOP SYS-ED/ Computer Education Techniques, Inc. 1 Preliminary Assessment Specify key components of WSAD. Questions 1. tools are used for reorganizing Java classes. 2. tools are used to

More information

Perceptive Nolij Web. Administrator Guide. Version: 6.8.x

Perceptive Nolij Web. Administrator Guide. Version: 6.8.x Perceptive Nolij Web Administrator Guide Version: 6.8.x Written by: Product Knowledge, R&D Date: June 2018 Copyright 2014-2018 Hyland Software, Inc. and its affiliates.. Table of Contents Introduction...

More information

Oracle WebCenter Portal 11g Developer Workshop

Oracle WebCenter Portal 11g Developer Workshop Oracle WebCenter Portal 11g Developer Workshop Lab 10 Creating a Custom Portlet Page 1 of 27 Overview WebCenter Portal offers a few different development strategies for transactional features; portlets

More information

ADF Code Corner How-to build a reusable toolbar with Oracle ADF Declarative Components. Abstract: twitter.com/adfcodecorner

ADF Code Corner How-to build a reusable toolbar with Oracle ADF Declarative Components. Abstract: twitter.com/adfcodecorner ADF Code Corner 024. How-to build a reusable toolbar with Oracle ADF Abstract: This article explains how to use Oracle ADF declarative components to build a reusable toolbar that can be used throughout

More information

Quick Web Development using JDeveloper 10g

Quick Web Development using JDeveloper 10g Have you ever experienced doing something the long way and then learned about a new shortcut that saved you a lot of time and energy? I can remember this happening in chemistry, calculus and computer science

More information

Java EE 6: Develop Web Applications with JSF

Java EE 6: Develop Web Applications with JSF Oracle University Contact Us: +966 1 1 2739 894 Java EE 6: Develop Web Applications with JSF Duration: 4 Days What you will learn JavaServer Faces technology, the server-side component framework designed

More information

Managing Your Database Using Oracle SQL Developer

Managing Your Database Using Oracle SQL Developer Page 1 of 54 Managing Your Database Using Oracle SQL Developer Purpose This tutorial introduces Oracle SQL Developer and shows you how to manage your database objects. Time to Complete Approximately 50

More information

If you wish to make an improved product, you must already be engaged in making an inferior one.

If you wish to make an improved product, you must already be engaged in making an inferior one. Oracle JDeveloper 10g with ADF Faces and JHeadstart: Is it Oracle Forms Yet? Peter Koletzke Technical Director & Principal Instructor Survey Forms development 1-2 years? 3-9 years? More than 9 years? Designer

More information

Oracle SQL Developer Workshop

Oracle SQL Developer Workshop Oracle SQL Developer Workshop 0419 904 458 www.sagecomputing.com.au Edition AUSOUG Conference 2006 SAGE Computing Services 2005-2006 SAGE Computing Services believes the information in this documentation

More information

Oracle Middleware 12c: Build Rich Client Applications with ADF Ed 1 LVC

Oracle Middleware 12c: Build Rich Client Applications with ADF Ed 1 LVC Oracle University Contact Us: Local: 1800 103 4775 Intl: +91 80 67863102 Oracle Middleware 12c: Build Rich Client Applications with ADF Ed 1 LVC Duration: 5 Days What you will learn This Oracle Middleware

More information

Tutorial. Unit: Interactive Forms Integration into Web Dynpro for Java Topic: Dynamically generated forms

Tutorial. Unit: Interactive Forms Integration into Web Dynpro for Java Topic: Dynamically generated forms Tutorial Unit: Interactive Forms Integration into Web Dynpro for Java Topic: Dynamically generated forms At the conclusion of this exercise, you will be able to: Generate a dynamic form within a Web Dynpro

More information

Simple sets of data can be expressed in a simple table, much like a

Simple sets of data can be expressed in a simple table, much like a Chapter 1: Building Master and Detail Pages In This Chapter Developing master and detail pages at the same time Building your master and detail pages separately Putting together master and detail pages

More information

EJB - ACCESS DATABASE

EJB - ACCESS DATABASE EJB - ACCESS DATABASE http://www.tutorialspoint.com/ejb/ejb_access_database.htm Copyright tutorialspoint.com EJB 3.0, persistence mechanism is used to access the database in which container manages the

More information

Customizing Oracle Identity Governance: Populating Request Attributes

Customizing Oracle Identity Governance: Populating Request Attributes Customizing Oracle Identity Governance: Populating Request Attributes Page 1 of 29 Customizing Oracle Identity Governance : Populating Request Attributes Overview When creating requests for application

More information

Basic Intro to ETO Results

Basic Intro to ETO Results Basic Intro to ETO Results Who is the intended audience? Registrants of the 8 hour ETO Results Orientation (this training is a prerequisite) Anyone who wants to learn more but is not ready to attend the

More information

Building reports using the Web Intelligence HTML Report Panel

Building reports using the Web Intelligence HTML Report Panel Building reports using the Web Intelligence HTML Report Panel Building reports using the Web Intelligence HTML Report Panel Copyright 2008 Business Objects. All rights reserved. Business Objects owns the

More information

Introduction to Eclipse Rich Client Platform Support in IBM Rational HATS. For IBM System i (5250)

Introduction to Eclipse Rich Client Platform Support in IBM Rational HATS. For IBM System i (5250) Introduction to Eclipse Rich Client Platform Support in IBM Rational HATS For IBM System i (5250) 1 Lab instructions This lab teaches you how to use IBM Rational HATS to create a rich client plug-in application

More information

Prototyping a Swing Interface with the Netbeans IDE GUI Editor

Prototyping a Swing Interface with the Netbeans IDE GUI Editor Prototyping a Swing Interface with the Netbeans IDE GUI Editor Netbeans provides an environment for creating Java applications including a module for GUI design. Here we assume that we have some existing

More information

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Copyright 2012, Oracle and/or its affiliates. All rights reserved. 1 ADF Mobile The Data Layer 2 Mobile Device Device Services ADF Mobile Architecture Device Native Container HTML5 & JavaScript Presentation Phone Gap Native View ADF Mobile XML View ADF Controller Local

More information

Introduction to Eclipse Rich Client Platform Support in IBM Rational HATS For IBM System i (5250)

Introduction to Eclipse Rich Client Platform Support in IBM Rational HATS For IBM System i (5250) Introduction to Eclipse Rich Client Platform Support in IBM Rational HATS For IBM System i (5250) Introduction to Eclipse Rich Client Platform Support in IBM Rational HATS 1 Lab instructions This lab teaches

More information

Getting Started With the Cisco PAM Desktop Software

Getting Started With the Cisco PAM Desktop Software CHAPTER 3 Getting Started With the Cisco PAM Desktop Software This chapter describes how to install the Cisco PAM desktop client software, log on to Cisco PAM, and begin configuring access control features

More information

Oracle Fusion Middleware

Oracle Fusion Middleware Oracle Fusion Middleware Desktop Integration Developer's Guide for Oracle Application Development Framework 11g Release 1 (11.1.1.6.0) E10139-05 November 2011 Documentation for Oracle ADF Desktop Integration

More information

ADF Code Corner How-to use the af:autosuggestbehavior component tag with ADF bound data sources. Abstract: twitter.

ADF Code Corner How-to use the af:autosuggestbehavior component tag with ADF bound data sources. Abstract: twitter. ADF Code Corner 062. How-to use the af:autosuggestbehavior component tag Abstract: The ADF Faces auto suggest behavior tag implements dynamic value suggest for input text fields, as many users know it

More information

Elixir Repertoire Designer

Elixir Repertoire Designer Aggregation and Transformation Intelligence on Demand Activation and Integration Navigation and Visualization Presentation and Delivery Activation and Automation Elixir Repertoire Designer Tutorial Guide

More information

The Tie That Binds: An Introduction to ADF Bindings

The Tie That Binds: An Introduction to ADF Bindings The Tie That Binds: An Introduction to ADF Bindings Bindings Are Like This Peter Koletzke Technical Director & Principal Instructor 2 Survey Traditional Oracle development (Forms, Reports, Designer, PL/SQL)

More information

WEB SERVICES EXAMPLE 2

WEB SERVICES EXAMPLE 2 INTERNATIONAL UNIVERSITY HCMC PROGRAMMING METHODOLOGY NONG LAM UNIVERSITY Instructor: Dr. Le Thanh Sach FACULTY OF IT WEBSITE SPECIAL SUBJECT Student-id: Instructor: LeMITM04015 Nhat Tung Course: IT.503

More information

Different color bars chart with Popup Box in ADF

Different color bars chart with Popup Box in ADF Different color bars chart with Popup Box in ADF Department wise employee count graph with popup Box in ADF: (popup box shows Employees names and manager name for particular department). I am going to

More information

Access Review. 4. Save the table by clicking the Save icon in the Quick Access Toolbar or by pulling

Access Review. 4. Save the table by clicking the Save icon in the Quick Access Toolbar or by pulling Access Review Relational Databases Different tables can have the same field in common. This feature is used to explicitly specify a relationship between two tables. Values appearing in field A in one table

More information

Achieving the Perfect Layout with ADF Faces RC

Achieving the Perfect Layout with ADF Faces RC Premise and Objective Achieving the Perfect Layout with ADF Faces RC Peter Koletzke Technical Director & Principal Instructor Every new technology uses a different strategy for UI layout Oracle Forms,

More information

User s Guide 12c (12.2.1)

User s Guide 12c (12.2.1) [1]Oracle Enterprise Pack for Eclipse User s Guide 12c (12.2.1) E66530-01 October 2015 Documentation that describes how to use Oracle Enterprise Pack for Eclipse, which is a set of plugins for Eclipse,

More information

OracleAS 10g R3: Java Programming

OracleAS 10g R3: Java Programming OracleAS 10g R3: Java Programming Volume I Student Guide D18382GC20 Edition 2.0 April 2007 D50171 Authors Patrice Daux Kate Heap Technical Contributors and Reviewers Ken Cooper C Fuller Vasily Strelnikov

More information

Using SQL Developer. Oracle University and Egabi Solutions use only

Using SQL Developer. Oracle University and Egabi Solutions use only Using SQL Developer Objectives After completing this appendix, you should be able to do the following: List the key features of Oracle SQL Developer Identify menu items of Oracle SQL Developer Create a

More information

Oracle Developer Day

Oracle Developer Day Oracle Developer Day Sponsored by: Session 3 Familiar Techniques: Modeling and Frameworks Speaker Speaker Title Page 1 1 Agenda Forms as a Framework Mapping Forms to Oracle ADF Familiar Concepts Phases

More information

Links to Activities ACTIVITY 4.1. Links to Activities Links to Activities

Links to Activities ACTIVITY 4.1. Links to Activities Links to Activities ACCESS SUMMARIZING DATA AND CALCULATING IN FORMS AND REPORTS Section 4 Skills Use functions in a query to calculate statistics Summarize data in a crosstab query Summarize data in a PivotTable Summarize

More information

Layout and display. STILOG IST, all rights reserved

Layout and display. STILOG IST, all rights reserved 2 Table of Contents I. Main Window... 1 1. DEFINITION... 1 2. LIST OF WINDOW ELEMENTS... 1 Quick Access Bar... 1 Menu Bar... 1 Windows... 2 Status bar... 2 Pop-up menu... 4 II. Menu Bar... 5 1. DEFINITION...

More information

"Charting the Course... Java Programming Language. Course Summary

Charting the Course... Java Programming Language. Course Summary Course Summary Description This course emphasizes becoming productive quickly as a Java application developer. This course quickly covers the Java language syntax and then moves into the object-oriented

More information

Oracle Business Intelligence Publisher

Oracle Business Intelligence Publisher Oracle Business Intelligence Publisher Using Oracle BI Publisher Extension for Oracle JDeveloper 11g Release 1 (11.1.1) E48204-01 March 2014 This document describes how to add a BI Publisher report to

More information

OIG 11G R2 Field Enablement Training

OIG 11G R2 Field Enablement Training OIG 11G R2 Field Enablement Training Appendix-A How to Create a TaskFlow Disclaimer: The Virtual Machine Image and other software are provided for use only during the workshop. Please note that you are

More information

Developing Applications with Java EE 6 on WebLogic Server 12c

Developing Applications with Java EE 6 on WebLogic Server 12c Developing Applications with Java EE 6 on WebLogic Server 12c Duration: 5 Days What you will learn The Developing Applications with Java EE 6 on WebLogic Server 12c course teaches you the skills you need

More information

Oracle 1Z Oracle WebCenter 11g Essentials.

Oracle 1Z Oracle WebCenter 11g Essentials. Oracle 1Z0-541 Oracle WebCenter 11g Essentials http://killexams.com/exam-detail/1z0-541 Answer: B, C QUESTION: 58 To use Oracle SES to search group spaces, lists, pages, or wikis, one of the steps is to

More information

Oracle Application Development Framework Overview

Oracle Application Development Framework Overview An Oracle White Paper July 2009 Oracle Application Development Framework Overview Introduction... 1 Oracle ADF Making Java EE Development Simpler... 2 THE ORACLE ADF ARCHITECTURE... 3 The Business Services

More information

Oracle Fusion Middleware

Oracle Fusion Middleware Oracle Fusion Middleware Java EE Developer's Guide for Oracle Application Development Framework 11g Release 2 (11.1.2.4.0) E17272-05 March 2013 Documentation for Oracle Application Development Framework

More information

Java Database Connectivity (JDBC) 25.1 What is JDBC?

Java Database Connectivity (JDBC) 25.1 What is JDBC? PART 25 Java Database Connectivity (JDBC) 25.1 What is JDBC? JDBC stands for Java Database Connectivity, which is a standard Java API for database-independent connectivity between the Java programming

More information

Java SE7 Fundamentals

Java SE7 Fundamentals Java SE7 Fundamentals Introducing the Java Technology Relating Java with other languages Showing how to download, install, and configure the Java environment on a Windows system. Describing the various

More information

IBM Security Access Manager Version 9.0 October Federation Administration topics IBM

IBM Security Access Manager Version 9.0 October Federation Administration topics IBM IBM Security Access Manager Version 9.0 October 2015 Federation Administration topics IBM IBM Security Access Manager Version 9.0 October 2015 Federation Administration topics IBM ii IBM Security Access

More information

WebSphere. Clips and Tacks: Getting started with the IBM BPM suite of products

WebSphere. Clips and Tacks: Getting started with the IBM BPM suite of products WebSphere Clips and Tacks: Getting started with the IBM BPM suite of products ii IBM WebSphere Clips and Tacks: Getting started with the IBM BPM suite of products Contents Chapter 1. Introduction........

More information

212Posters Instructions

212Posters Instructions 212Posters Instructions The 212Posters is a web based application which provides the end user the ability to format and post content, abstracts, posters, and documents in the form of pre-defined layouts.

More information

HYPERION SYSTEM 9 BI+ GETTING STARTED GUIDE APPLICATION BUILDER J2EE RELEASE 9.2

HYPERION SYSTEM 9 BI+ GETTING STARTED GUIDE APPLICATION BUILDER J2EE RELEASE 9.2 HYPERION SYSTEM 9 BI+ APPLICATION BUILDER J2EE RELEASE 9.2 GETTING STARTED GUIDE Copyright 1998-2006 Hyperion Solutions Corporation. All rights reserved. Hyperion, the Hyperion H logo, and Hyperion s product

More information

NetBeans IDE Field Guide

NetBeans IDE Field Guide NetBeans IDE Field Guide Copyright 2005 Sun Microsystems, Inc. All rights reserved. Table of Contents Extending Web Applications with Business Logic: Introducing EJB Components...1 EJB Project type Wizards...2

More information

Introducing Gupta Report Builder

Introducing Gupta Report Builder Business Reporting Chapter 1 Introducing Gupta Report Builder You can use Report Builder to design reports. This chapter describes: Our approach to building reports. Some of the reports you can build.

More information

Overview. Principal Product Manager Oracle JDeveloper & Oracle ADF

Overview. Principal Product Manager Oracle JDeveloper & Oracle ADF Rich Web UI made simple an ADF Faces Overview Dana Singleterry Dana Singleterry Principal Product Manager Oracle JDeveloper & Oracle ADF Agenda Comparison: New vs. Old JDeveloper Provides JSF Overview

More information

Module Road Map. 7. Version Control with Subversion Introduction Terminology

Module Road Map. 7. Version Control with Subversion Introduction Terminology Module Road Map 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging 6. Testing with JUnit 7. Version Control with Subversion Introduction Terminology

More information

You can use Dreamweaver to build master and detail Web pages, which

You can use Dreamweaver to build master and detail Web pages, which Chapter 1: Building Master and Detail Pages In This Chapter Developing master and detail pages at the same time Building your master and detail pages separately Putting together master and detail pages

More information

Oracle Fusion Middleware 11g: Build Applications with Oracle Forms

Oracle Fusion Middleware 11g: Build Applications with Oracle Forms Oracle University Contact Us: +381 11 2016811 Oracle Fusion Middleware 11g: Build Applications with Oracle Forms Duration: 5 Days What you will learn This course teaches students how to use Oracle Forms

More information

EMC Documentum Forms Builder

EMC Documentum Forms Builder EMC Documentum Forms Builder Version 6 User Guide P/N 300-005-243 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748-9103 1-508-435-1000 www.emc.com Copyright 1994-2007 EMC Corporation. All rights

More information

CHAPTER. Introduction to the Oracle Application Development Framework

CHAPTER. Introduction to the Oracle Application Development Framework CHAPTER 4 Introduction to the Oracle Application Development Framework 104 Oracle JDeveloper 10g Handbook Your scheme must be the framework of the universe; all other schemes will soon be ruins. Henry

More information

Oracle Fusion Middleware

Oracle Fusion Middleware Oracle Fusion Middleware Developing Applications with Oracle ADF Data Controls 12c (12.1.3) E41270-01 May 2014 Documentation for Oracle Application Development Framework (Oracle ADF) developers that describes

More information

NetBeans 5.5 Web Services Consumption in Visual Web Pack Specification

NetBeans 5.5 Web Services Consumption in Visual Web Pack Specification NetBeans 5.5 Web Services Consumption in Visual Web Pack Specification NetBeans 5.5 Web Services Consumption in Visual Web Pack Version 1.0. 08/18/06 - initial version - Sanjay Dhamankar revised 01/28/07

More information

Hello Worldwide Web: Your First JSF in JDeveloper

Hello Worldwide Web: Your First JSF in JDeveloper Now I Remember! Hello Worldwide Web: Your First JSF in JDeveloper Peter Koletzke Technical Director & Principal Instructor There are three things I always forget. Names, faces, and the third I can t remember.

More information

Including Dynamic Images in Your Report

Including Dynamic Images in Your Report Including Dynamic Images in Your Report Purpose This tutorial shows you how to include dynamic images in your report. Time to Complete Approximately 15 minutes Topics This tutorial covers the following

More information