Populating Address Book List and Creating the Data Control

In this section you will populate the address book list and create the data control.

  1. Add the following connection fields and constants to AddressBookDC.java

        // Session
        private E1UserSessionBean userBean;
        private LoginEnvironment  loginEnv;
        private boolean runningInJDEADFContainer = true;
        
        // Hard coded connection values.
        private static final String AIS_SERVER = "http://host:port";
        private static final String USER_NAME = "username";
        private static final String PASSWORD = "password";
        private static final String DEVICE = "E1ADFApps";
        private static final String ROLE = "role";
        private static final String ENVIRONMENT = "environment";
    
  2. Add the code shown below to AddressBookDC.java:

    public AddressBookDC()
    {
    	    ADFContext.getCurrent().getPageFlowScope().put("showDetail", "false");
    	    String handshakeId = (String) ADFContext.getCurrent().getPageFlowScope().get("handshakeId");
        	if (handshakeId == null || (handshakeId != null && handshakeId.length() == 0))
    	    {
            		runningInJDEADFContainer = false;
            		userBean = new E1UserSessionBean(AIS_SERVER, USER_NAME, PASSWORD, ENVIRONMENT, ROLE, DEVICE);
        	}
    	    else
        	{
    		        // Initialize application for about properties, only do this when running in the container
    		        E1AdfUtils.intializeAppInstance("/com/oracle/e1/E01012/");
    	    }
     
        	loginEnv = E1AdfUtils.getLoginEnvironment(userBean);
     
    	    if (loginEnv != null)
    	    {
            		List<String> reqCapabilities = loginEnv.getRequiredCapabilities();
    		reqCapabilities.add("processingOption");
     
    		        retrievePOValues();
    	    }
    	    else
    	    {
    		        processConnectionException();
    	    }
    }
     
    private void retrievePOValues()
    {
    	    try
    	    {
    		        // Retrieve E01012 proxy application's processing options
            		String appName = (String) ADFContext.getCurrent().getPageFlowScope().get("appName");
    		        String appVersion = (String) ADFContext.getCurrent().getPageFlowScope().get("appVersion");
     
    		        ProcessingOptionRequest e01012PORequest = new ProcessingOptionRequest(loginEnv);
    		        if ((appName == null) || (appName.length() == 0))
    		        {
    			            appName = "E01012";
            		}
    		        e01012PORequest.setApplicationName(appName);
     
    		        if ((appVersion == null) || (appVersion.length() == 0))
    		        {
     
                			appVersion = "ZJDE0001";
    		        }
    		        e01012PORequest.setVersion(appVersion);
     
    		        String response = JDERestServiceProvider.jdeRestServiceCall(loginEnv, e01012PORequest, JDERestServiceProvider.POST_METHOD, JDERestServiceProvider.PO_SERVICE);
    		        ProcessingOptionsSet e01012POSet = loginEnv.getObjectMapper().readValue(response, ProcessingOptionsSet.class);
     
    		        if (e01012POSet != null)
    		        {
                			p01012Version = (String) e01012POSet.getOptionValue("szP01012Version_1");
    			            if (p01012Version == null)
    			            {
    				                p01012Version = "ZJDE0001";
    			            }
    		        }
            		else
    		        {
    			            p01012Version = "ZJDE0001";
    		        }
     
    		        // Retrieve Address Book (P01012) processing options.
    		ProcessingOptionRequest p01012PORequest = new ProcessingOptionRequest(loginEnv);
    		        p01012PORequest.setApplicationName("P01012");
     
    		        p01012PORequest.setVersion(p01012Version);
            String response1 = JDERestServiceProvider.jdeRestServiceCall(loginEnv, p01012PORequest, JDERestServiceProvider.POST_METHOD, JDERestServiceProvider.PO_SERVICE);
    		        ProcessingOptionsSet p01012POSet = loginEnv.getObjectMapper().readValue(response1, ProcessingOptionsSet.class);
     
    		        if (p01012POSet != null)
    		        {
    			            hideTax = (String) p01012POSet.getOptionValue("HideTax_4");
                displaySupplierMaster = (String) p01012POSet.getOptionValue("GoToSupplierMaster_5");
    			            displayCustomerMaster = (String) p01012POSet.getOptionValue("GoToCustomerMaster_6");
    			            searchTypeDefault = (String) p01012POSet.getOptionValue("SearchTypeDefault_7");
                			displayCSMS = (String) p01012POSet.getOptionValue("GoToCSMS_8");
    			            p0100041Version = (String) p01012POSet.getOptionValue("Version_9");
    			            selfServiceMode = (String) p01012POSet.getOptionValue("cSelfServiceMode_10");
    			            typeCode = (String) p01012POSet.getOptionValue("cTypeCode_11");
    			            postalCodeValidate = (String) p01012POSet.getOptionValue("cPostalCodeValidate_12");
    			            postalAddressRetrieval = (String) p01012POSet.getOptionValue("cPostalAddressRetrieval_13");
                			p03013Version = (String) p01012POSet.getOptionValue("szCustMasterVersion_VER_14");
    			            p04012Version = (String) p01012POSet.getOptionValue("szSuppMasterVersion_VER_15");
    		        }
    	    }
    	    catch (CapabilityException e)
    	    {
    		        // Processing Option cability is not supported on AIS.  Use default search type.
    		        searchTypeDefault = "E";
    	    }
    	    catch (JDERestServiceException e)
    	    {
    		        processErrorException(JDERestServiceProvider.handleServiceException(e));
    	    }
    	    catch (Exception e)
    	    {
            		processErrorException(e);
    	    }
    }
     
    public void retrieveAddressBookList()
    {
    	    if (loginEnv != null)
    	    {   
    		        FormRequest formRequest = new FormRequest(loginEnv);
            formRequest.setFormName("P01012_W01012B");
    		        formRequest.setVersion(p01012Version);
    		        formRequest.setMaxPageSize("600");
    		        formRequest.setFormServiceAction("R");
    
    		        FSREvent w01012BFSREvent = new FSREvent();
     
    		        // Set search type based on the processing option of P01012.
    		w01012BFSREvent.setFieldValue("54", searchTypeDefault);
     
            		String alphaNameFilter = (String) ADFContext.getCurrent().getPageFlowScope().get("alphaNameFilter");
    		        if (alphaNameFilter != null && alphaNameFilter.trim().length() > 0)
    		        {
    			            w01012BFSREvent.setFieldValue("58", "*" + alphaNameFilter + "*");
            		}
    		        else
    		        {
                			w01012BFSREvent.setFieldValue("58", "**");
    		        }
     
    		        w01012BFSREvent.doControlAction("15");      // Trigger the Find Button
    		        formRequest.addFSREvent(w01012BFSREvent);   // Add the events to the form request
     
    		        try
    		        {
    			            String response = JDERestServiceProvider.jdeRestServiceCall(loginEnv, formRequest, JDERestServiceProvider.POST_METHOD, JDERestServiceProvider.FORM_SERVICE_URI);
     
    			            P01012_W01012B_FormParent temp_p01012_W01012B_FormParent = loginEnv.getObjectMapper().readValue(response, P01012_W01012B_FormParent.class);
    			addressBook.getFs_P01012_W01012B().getData().getGridData().setRowset
    			(temp_p01012_W01012B_FormParent.getFs_P01012_W01012B().getData().getGridData().getRowset());
     
                			if (addressBook.getFs_P01012_W01012B().getData().getGridData().getRowset().size() > 0)
    			            {
    				                ADFContext.getCurrent().getPageFlowScope().put("selectedRowKey", "0");
     
    				                // Display Address Book detail for first record in list.
    				processSelectedAddress(0);
    			            }
    			            else
                			{
    				                // Clear detail fields.
    				                addressBookDetail.clear();
                    				ADFContext.getCurrent().getPageFlowScope().put("showDetail", "false");
                			}
    		        }
    		        catch (JDERestServiceException e)
    		        {
                processErrorException(JDERestServiceProvider.handleServiceException(e));
    		        }
    		        catch (IOException e)
    		        {
    			            processErrorException(e);
    		        }
    	    }
    	    else
    	    {
    		        processConnectionException();
    	    }
    }
     
    public void processSelectedAddress(int rowIndex)
    {
    	    if (rowIndex >= 0)
    	    {
    		        selectedAddressBook = addressBook.getFs_P01012_W01012B().getData().getGridData().getRowset().get(rowIndex);
    		        setSelectedAddressNumber(selectedAddressBook.getMnAddressNumber_19().getValue());
     
    		        ADFContext.getCurrent().getPageFlowScope().put("showDetail", "true");
    	    }
    	    else
    	    {
            		ADFContext.getCurrent().getPageFlowScope().put("showDetail", "false");
    	    }
     
    	    retrieveAddressBookDetail(selectedAddressNumber);
    }
     
    private void retrieveAddressBookDetail(String addressNumber)
    {
        	if (loginEnv != null)
    	    {
    		        FormRequest formRequest = new FormRequest(loginEnv);
    		        formRequest.setFormName("P01012_W01012A");
    		        formRequest.setVersion("ZJDE0001");
            		formRequest.setFormServiceAction("R");
    		        formRequest.addToFISet("12", addressNumber);
     
    		        try
    		        {
    			            String response = JDERestServiceProvider.jdeRestServiceCall(loginEnv, formRequest, JDERestServiceProvider.POST_METHOD, JDERestServiceProvider.FORM_SERVICE_URI);
     
    			            P01012_W01012A_FormParent tempDetail = loginEnv.getObjectMapper().readValue(response, P01012_W01012A_FormParent.class);
                			if (tempDetail != null)
    			            {
    				                P01012_W01012A_FormData form = tempDetail.getFs_P01012_W01012A().getData();
    				                setSelectedAddressNumber(form.getTxtAddressNumber_21().getValue());
    				                addressBookDetail.setAddressNumber(form.getTxtAddressNumber_21().getValue());
    				                addressBookDetail.setAlphaName(form.getTxtAlphaName_28().getValue());
    				                addressBookDetail.setMailingName(form.getTxtMailingName_38().getValue());
    				                addressBookDetail.setAddress(form.getTxtAddressLine1_40().getValue());
    				                addressBookDetail.setCity(form.getTxtCity_52().getValue());
    				                addressBookDetail.setState(form.getTxtState_54().getValue());
    				                addressBookDetail.setZipCode(form.getTxtPostalCode_50().getValue());
    				                addressBookDetail.setTaxId(form.getTxtTaxID_34().getValue());
    				                addressBookDetail.setBusinessUnit(form.getTxtBusinessUnit_62().getValue());
                    				addressBookDetail.setSearchType(form.getTxtSearchType_36().getValue());
                			}
    			            else
    			            {
    				                addressBookDetail.clear();
    			            }
    		        }
    		        catch (JDERestServiceException e)
            {
                			processErrorException(JDERestServiceProvider.handleServiceException(e));
            		}
    		        catch (IOException e)
    		        {
    			            processErrorException(e);
            		}
    	    }
    	    else
    	    {
    		        processConnectionException();
        	}
    }
     
    public void clearFields()
    {
    	    addressBookDetail.clear();
    }
     
    public void launchE1App()
    {
    	    E1FormInterconnect form = new E1FormInterconnect();
    	    form.setApplication("P01012");
    	    form.setForm("W01012B");
        	form.setVersion("ZJDE0001");
    	    form.addFormInterconnectValue("2", "C");
        	E1AdfUtils.launchE1Application(form);
    }
     
    private void processErrorException(String msg)
    {
        	displayMessage("Error", msg);
    }
     
    private void processErrorException(Exception e)
    {
    	    displayMessage("Error", e.getMessage());
    }
     
    private void processConnectionException()
    {
    	    displayMessage("Connection Error", "Connection failed. Please contact your system administrator");
    }
     
    private void displayMessage(String title, String msg)
    {
    	    if (runningInJDEADFContainer)
        	{
            		E1AdfUtils.addErrorMessage(msg);
    		        E1AdfUtils.launchMessagePopup();
    	    }
    	    else
    	    {
            ELContext elCtxt = ADFContext.getCurrent().getELContext();
            ExpressionFactory expFactory = ADFContext.getCurrent().getExpressionFactory();
            ValueExpression ve = expFactory.createValueExpression(elCtxt, "#{addressBookListenerBean}", Object.class);
            if (ve.getValue(elCtxt) != null)
            {
                MethodExpression me = expFactory.createMethodExpression(elCtxt, "#{addressBookListenerBean.displayLocalMessage}", Void.class, new Class[] {String.class, String.class});
                        me.invoke(elCtxt, new Object[] {title, msg});
            }
    	    }
    }
     
  3. Right-click the AddressBookDC in the Projects Panel and select Create Data Control.

  4. Accept the defaults and click Next, Next, and Finish.