Jump to: navigation, search

Difference between revisions of "EDT:Tutorial: RUI With DataBase Lesson 8 Code"

 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
 +
[[EDT:Tutorial: Access a database with EGL Rich UI|Access a database with EGL Rich UI]] > [[EDT:Tutorial: RUI With Database Resources|Resources]]
  
[[EDT:Tutorial: Access a database with EGL Rich UI|Access a database with EGL Rich UI]] > [[EDT:Tutorial: RUI With Database Resources|Resources]]
+
= Finished code for PaymentFileMaintenance.egl after lesson 8  =
  
= Finished code for PaymentLib.egl after lesson 8 =
+
The following code is the text of the&nbsp;'''PaymentFileMaintenance.egl''' file after lesson 8. <code></code>
  
The following code is the text of the '''PaymentLib.egl''' file
 
after lesson 8.
 
<code> 
 
 
   package handlers;
 
   package handlers;
 
    
 
    
Line 58: Line 56:
 
                           row = 2, column = 1,
 
                           row = 2, column = 1,
 
                           verticalAlignment = GridLayoutLib.VALIGN_TOP},
 
                           verticalAlignment = GridLayoutLib.VALIGN_TOP},
         selectionListeners ::= cellClicked,
+
         selectionListeners&nbsp;::= cellClicked,
 
         columns =[
 
         columns =[
 
             new DataGridColumn{name = "category", displayName = "Type",  
 
             new DataGridColumn{name = "category", displayName = "Type",  
Line 77: Line 75:
 
       addButton DojoButton{  
 
       addButton DojoButton{  
 
         layoutData = new GridLayoutData{ row = 1, column = 1 },
 
         layoutData = new GridLayoutData{ row = 1, column = 1 },
         text = "Add", onClick ::= addRow };
+
         text = "Add", onClick&nbsp;::= addRow };
 
    
 
    
 
       deleteButton DojoButton{  
 
       deleteButton DojoButton{  
 
         layoutData = new GridLayoutData{ row = 1, column = 2 },
 
         layoutData = new GridLayoutData{ row = 1, column = 2 },
         text = "Delete", onClick ::= deleteRow };
+
         text = "Delete", onClick&nbsp;::= deleteRow };
 
    
 
    
 
       sampleButton DojoButton{  
 
       sampleButton DojoButton{  
 
         layoutData = new GridLayoutData{ row = 1, column = 3 },
 
         layoutData = new GridLayoutData{ row = 1, column = 3 },
         text = "Sample", onClick ::= sampleData };
+
         text = "Sample", onClick&nbsp;::= sampleData };
 
    
 
    
 
       selectedPayment paymentRec;
 
       selectedPayment paymentRec;
Line 288: Line 286:
 
       clearButton DojoButton{  
 
       clearButton DojoButton{  
 
         layoutData = new GridLayoutData{ row = 1, column = 1 },  
 
         layoutData = new GridLayoutData{ row = 1, column = 1 },  
         text = "Clear", onClick ::= clearAllFields };
+
         text = "Clear", onClick&nbsp;::= clearAllFields };
 
    
 
    
 
       saveButton DojoButton{  
 
       saveButton DojoButton{  
 
         layoutData = new GridLayoutData{ row = 1, column = 2 },  
 
         layoutData = new GridLayoutData{ row = 1, column = 2 },  
         text = "Save", onClick ::= selectedPayment_form_Submit };
+
         text = "Save", onClick&nbsp;::= selectedPayment_form_Submit };
 
    
 
    
 
       function start()
 
       function start()
Line 389: Line 387:
 
       end     
 
       end     
 
        
 
        
        function serviceExceptionHandler(ex anyException)
+
      function serviceExceptionHandler(ex anyException)
          try
+
        sysLib.writeStderr("Failure: " + ex.message);
              throw ex;
+
        if (ex isa ServiceInvocationException)
          onException(serviceEx ServiceInvocationException)
+
          sysLib.writeStderr("Detail 1:  " +  
              log("Failure: service invocation, exception = " +
+
              (ex as ServiceInvocationException).detail1);
                              serviceEx.message);
+
          sysLib.writeStderr("Detail 2:  " +  
              log("Detail 1:  " + serviceEx.detail1);
+
              (ex as ServiceInvocationException).detail2);
              log("Detail 2:  " + serviceEx.detail2);
+
          sysLib.writeStderr("Detail 3:  " +  
              log("Detail 3:  " + serviceEx.detail3);
+
              (ex as ServiceInvocationException).detail3);
          onException(anyex anyException)
+
        end
              log("Failure:  service invocation, exception = " + anyex.message);
+
      end    
          end
+
          throw ex;
+
      end
+
 
+
      logActive boolean = true;
+
 
+
      function log(text string in)
+
          if(logActive)
+
              sysLib.writeStderr(text);
+
          end
+
      end
+
     
+
 
   end
 
   end
</code>
 
  
''' Related tasks '''<br />
+
<br>
 +
 
 +
'''Related tasks '''<br>  
  
[[EDT:Tutorial: RUI With DataBase Lesson 8|Lesson 8: Add variables and functions to the Rich UI handler]]
+
[[EDT:Tutorial: RUI With DataBase Lesson 8|Lesson 8: Add variables and functions to the Rich UI handler]]  
  
 
[[Category:EDT]]
 
[[Category:EDT]]

Latest revision as of 14:50, 17 January 2012

Access a database with EGL Rich UI > Resources

Finished code for PaymentFileMaintenance.egl after lesson 8

The following code is the text of the PaymentFileMaintenance.egl file after lesson 8.

  package handlers;
  
  import org.eclipse.edt.rui.mvc.Controller;
  import org.eclipse.edt.rui.mvc.FormField;
  import org.eclipse.edt.rui.mvc.FormManager;
  import org.eclipse.edt.rui.mvc.MVC;
  import org.eclipse.edt.rui.widgets.DataGrid;
  import org.eclipse.edt.rui.widgets.DataGridColumn;
  import org.eclipse.edt.rui.widgets.DataGridLib;
  import org.eclipse.edt.rui.widgets.Div;
  import org.eclipse.edt.rui.widgets.GridLayout;
  import org.eclipse.edt.rui.widgets.GridLayoutData;
  import org.eclipse.edt.rui.widgets.GridLayoutLib;
  import org.eclipse.edt.rui.widgets.TextLabel;
  import dojo.widgets.DojoButton;
  import dojo.widgets.DojoCheckBox;
  import dojo.widgets.DojoComboBox;
  import dojo.widgets.DojoCurrencyTextBox;
  import dojo.widgets.DojoDateTextBox;
  import dojo.widgets.DojoLib;
  import dojo.widgets.DojoTextField;
  import dojo.widgets.DojoTitlePane;
  import eglx.persistence.sql.column;
  import eglx.services.DedicatedService;
  import eglx.services.ServiceLib;
  import eglx.ui.rui.Event;
  import eglx.ui.rui.RUIHandler;
  import eglx.ui.rui.Widget;
  import eglx.ui.rui.view;
  import eglx.ui.rui.widget;
  import libraries.PaymentLib;
  import records.paymentRec;
  import services.SQLService;
  
  handler PaymentFileMaintenance type RUIhandler{
     initialUI =[ui], onConstructionFunction = start, 
     cssFile = "css/PaymentClient.css", title = "PaymentFileMaintenance"}
  
     dbService SQLService?{@dedicatedService};
  
     ui GridLayout{columns = 2, rows = 2, cellPadding = 4, 
                   children =
                      [detailButtonLayout, editPane, buttonLayout, allPayments_ui ]
                  };
  
     allPayments paymentRec[];
  
     allPayments_ui DataGrid{
        layoutData = new GridLayoutData{
                         row = 2, column = 1,
                         verticalAlignment = GridLayoutLib.VALIGN_TOP},
        selectionListeners ::= cellClicked,
        columns =[
           new DataGridColumn{name = "category", displayName = "Type", 
                              width = 90, formatters = [ formatCategory ]},
           new DataGridColumn{name = "description", displayName = "Description", 
                              width = 120},
           new DataGridColumn{name = "amount", displayName = "Amount due", 
                              width = 90, alignment = DataGridLib.ALIGN_RIGHT}
        ], 
        data = allPayments as any[],
        selectionMode = DataGridLib.SINGLE_SELECTION};
  
     buttonLayout GridLayout{ 
        layoutData = new GridLayoutData{ row = 1, column = 1 }, 
        cellPadding = 4, rows = 1, columns = 3,
        children = [ sampleButton, deleteButton, addButton ] };
  
     addButton DojoButton{ 
        layoutData = new GridLayoutData{ row = 1, column = 1 },
        text = "Add", onClick ::= addRow };
  
     deleteButton DojoButton{ 
        layoutData = new GridLayoutData{ row = 1, column = 2 },
        text = "Delete", onClick ::= deleteRow };
  
     sampleButton DojoButton{ 
        layoutData = new GridLayoutData{ row = 1, column = 3 },
        text = "Sample", onClick ::= sampleData };
  
     selectedPayment paymentRec;
  
     editPane DojoTitlePane{ 
        layoutData = new GridLayoutData{ row = 2, column = 2,
                                         verticalAlignment = GridLayoutLib.VALIGN_TOP },
        title = "Payment record",
        isOpen=true, duration=1000, width = "350", 
        children = 
           [ new Div {children = [ selectedPayment_ui ]}]
     };
  
     selectedPayment_ui GridLayout { 
        rows = 9, columns = 2, cellPadding = 4, 
        children = [ selectedPayment_paymentId_nameLabel,
                     selectedPayment_paymentId_field,
                     selectedPayment_category_nameLabel,
                     selectedPayment_category_comboBox,
                     selectedPayment_description_nameLabel,
                     selectedPayment_description_field,
                     selectedPayment_amount_nameLabel,
                     selectedPayment_amount_textBox,
                     selectedPayment_fixedPayment_nameLabel,
                     selectedPayment_fixedPayment_checkBox,
                     selectedPayment_dueDate_nameLabel,
                     selectedPayment_dueDate_textBox,
                     selectedPayment_payeeName_nameLabel,
                     selectedPayment_payeeName_field,
                     selectedPayment_payeeAddress1_nameLabel,
                     selectedPayment_payeeAddress1_field,
                     selectedPayment_payeeAddress2_nameLabel,
                     selectedPayment_payeeAddress2_field ] };
  
     selectedPayment_paymentId_nameLabel TextLabel { 
        text="Key:" , 
        layoutData = new GridLayoutData { row = 1, column = 1} };
  
     selectedPayment_paymentId_field DojoTextField {
        layoutData = new GridLayoutData { row = 1, column = 2},
        readOnly = true };
  
     selectedPayment_paymentId_controller Controller { 
        @MVC {model = selectedPayment.paymentId, 
              view = selectedPayment_paymentId_field}, 
              validStateSetter = handleValidStateChange_selectedPayment};
  
     selectedPayment_paymentId_formField FormField { 
        controller = selectedPayment_paymentId_controller, 
        nameLabel = selectedPayment_paymentId_nameLabel};
  
     selectedPayment_category_nameLabel TextLabel { 
        text="Category:", 
        layoutData = new GridLayoutData { row = 2, column = 1} };
  
     selectedPayment_category_comboBox DojoComboBox { 
        values = [], 
        layoutData = new GridLayoutData { row = 2, column = 2} };
  
     selectedPayment_category_controller Controller { 
        @MVC {model = selectedPayment.category, 
              view = selectedPayment_category_comboBox}, 
        validStateSetter = handleValidStateChange_selectedPayment};
  
     selectedPayment_category_formField FormField { 
        controller = selectedPayment_category_controller, 
        nameLabel = selectedPayment_category_nameLabel};
  
     selectedPayment_description_nameLabel TextLabel { 
        text="Description:" , 
        layoutData = new GridLayoutData { row = 3, column = 1} };
  
     selectedPayment_description_field DojoTextField {
        layoutData = new GridLayoutData { row = 3, column = 2} };
  
     selectedPayment_description_controller Controller { 
        @MVC {model = selectedPayment.description, 
              view = selectedPayment_description_field}, 
        validStateSetter = handleValidStateChange_selectedPayment};
  
     selectedPayment_description_formField FormField { 
        controller = selectedPayment_description_controller, 
        nameLabel = selectedPayment_description_nameLabel};
  
     selectedPayment_amount_nameLabel TextLabel { 
        text="Amount:", 
        layoutData = new GridLayoutData { row = 4, column = 1} };
  
     selectedPayment_amount_textBox DojoCurrencyTextBox { 
        currency = "USD", value = selectedPayment.amount, width = 166, 
        errorMessage="Amount is not valid.", 
        layoutData = new GridLayoutData { row = 4, column = 2} };
  
     selectedPayment_amount_controller Controller { 
        @MVC {model = selectedPayment.amount, 
              view = selectedPayment_amount_textBox}, 
  
     validStateSetter = handleValidStateChange_selectedPayment};
  
     selectedPayment_amount_formField FormField { 
        controller = selectedPayment_amount_controller, 
        nameLabel = selectedPayment_amount_nameLabel};
  
     selectedPayment_fixedPayment_nameLabel TextLabel { 
        text="Fixed pmt:" , 
        layoutData = new GridLayoutData { row = 5, column = 1} };
  
     selectedPayment_fixedPayment_checkBox DojoCheckBox { 
        layoutData = new GridLayoutData { row = 5, column = 2} };
  
     selectedPayment_fixedPayment_controller Controller { 
        @MVC {model = selectedPayment.fixedPayment, 
              view = selectedPayment_fixedPayment_checkBox}, 
        validStateSetter = handleValidStateChange_selectedPayment};
  
     selectedPayment_fixedPayment_formField FormField { 
        controller = selectedPayment_fixedPayment_controller, 
        nameLabel = selectedPayment_fixedPayment_nameLabel};
  
     selectedPayment_dueDate_nameLabel TextLabel { 
        text="Due date:", 
        layoutData = new GridLayoutData { row = 6, column = 1} };
  
     selectedPayment_dueDate_textBox DojoDateTextBox { 
        formatLength = DojoLib.DATEBOX_FORMAT_LONG, 
        value = selectedPayment.dueDate, 
        layoutData = new GridLayoutData { row = 6, column = 2} };
  
     selectedPayment_dueDate_controller Controller { 
        @MVC {model = selectedPayment.dueDate, 
              view = selectedPayment_dueDate_textBox}, 
        validStateSetter = handleValidStateChange_selectedPayment};
  
     selectedPayment_dueDate_formField FormField { 
        controller = selectedPayment_dueDate_controller, 
        nameLabel = selectedPayment_dueDate_nameLabel};
  
     selectedPayment_payeeName_nameLabel TextLabel { 
        text="Payee:", 
        layoutData = new GridLayoutData { row = 7, column = 1} };
  
     selectedPayment_payeeName_field DojoTextField {
        layoutData = new GridLayoutData { row = 7, column = 2} };
     
     selectedPayment_payeeName_controller Controller { 
        @MVC {model = selectedPayment.payeeName, 
              view = selectedPayment_payeeName_field},
        validStateSetter = handleValidStateChange_selectedPayment};
  
     selectedPayment_payeeName_formField FormField { 
        controller = selectedPayment_payeeName_controller,
        nameLabel = selectedPayment_payeeName_nameLabel};
  
     selectedPayment_payeeAddress1_nameLabel TextLabel { 
        text="Address 1:" , 
        layoutData = new GridLayoutData { row = 8, column = 1} };
  
     selectedPayment_payeeAddress1_field DojoTextField {
        layoutData = new GridLayoutData { row = 8, column = 2} };
  
     selectedPayment_payeeAddress1_controller Controller { 
        @MVC {model = selectedPayment.payeeAddress1, 
              view = selectedPayment_payeeAddress1_field},
        validStateSetter = handleValidStateChange_selectedPayment};
  
     selectedPayment_payeeAddress1_formField FormField { 
        controller = selectedPayment_payeeAddress1_controller, 
        nameLabel = selectedPayment_payeeAddress1_nameLabel};
  
     selectedPayment_payeeAddress2_nameLabel TextLabel { 
        text="Address 2:" , 
        layoutData = new GridLayoutData { row = 9, column = 1} };
  
     selectedPayment_payeeAddress2_field DojoTextField {
        layoutData = new GridLayoutData { row = 9, column = 2} };
  
     selectedPayment_payeeAddress2_controller Controller { 
        @MVC {model = selectedPayment.payeeAddress2, 
              view = selectedPayment_payeeAddress2_field}, 
        validStateSetter = handleValidStateChange_selectedPayment};
  
     selectedPayment_payeeAddress2_formField FormField { 
        controller = selectedPayment_payeeAddress2_controller, 
        nameLabel = selectedPayment_payeeAddress2_nameLabel};
  
     selectedPayment_form FormManager {
        entries = [ selectedPayment_paymentId_formField,
                    selectedPayment_category_formField,
                    selectedPayment_description_formField,
                    selectedPayment_amount_formField,
                    selectedPayment_fixedPayment_formField,
                    selectedPayment_dueDate_formField,
                    selectedPayment_payeeName_formField,
                    selectedPayment_payeeAddress1_formField,
                    selectedPayment_payeeAddress2_formField ] };
  
     detailButtonLayout GridLayout{ 
        layoutData = new GridLayoutData{ row = 1, column = 2 }, 
        cellPadding = 4, rows = 1, columns = 2,
        children = [ saveButton, clearButton ] };
  
     clearButton DojoButton{ 
        layoutData = new GridLayoutData{ row = 1, column = 1 }, 
        text = "Clear", onClick ::= clearAllFields };
  
     saveButton DojoButton{ 
        layoutData = new GridLayoutData{ row = 1, column = 2 }, 
        text = "Save", onClick ::= selectedPayment_form_Submit };
  
     function start()
        // allPayments_ui.data =[
        //    new paymentRec{category = 1, description = "test01", 
        //                   amount = 100.00, payeeName = "Someone"},
        //    new paymentRec{category = 2, description = "test02", amount = 200.00},
        //    new paymentRec{category = 3, description = "test03", amount = 300.00}];
        readFromTable();
     end
  
     function cellClicked(myGrid DataGrid in)
        selectedPayment = allPayments_ui.getSelection()[1] as paymentRec;
        selectedPayment_form.publish();
     end
  
     function readFromTable()
        call dbService.getAllPayments() returning to updateAll
           onException serviceExceptionHandler;
     end
  
     function updateAll(retResult paymentRec[] in)
        allPayments = retResult;
        allPayments_ui.data = allPayments as any[];
     end
  
     function addRow(event Event in)
        call dbService.addPayment(new paymentRec) returning to recordAdded
           onException serviceExceptionHandler;
     end
  
     function recordAdded()
        readFromTable();
     end
  
     function deleteRow(event Event in)
  
        for(i INT from 1 to allPayments.getSize())
           if(allPayments[i].paymentID == selectedPayment.paymentID)
              allPayments.removeElement(i);
              exit for;
           end
        end
  
        call dbService.deletePayment(selectedPayment) returning to recordRevised
           onException serviceExceptionHandler;
     end
  
     function recordRevised()
        allPayments_ui.data = allPayments as any[];
     end   
  
     function sampleData(event Event in)
        call dbService.createDefaultTable() returning to updateAll
           onException serviceExceptionHandler;
     end
  
     function selectedPayment_form_Submit(event Event in)
  
        if(selectedPayment_form.isValid())
           selectedPayment_form.commit();
        end
     end
  
     function selectedPayment_form_Publish(event Event in)
        selectedPayment_form.publish();
        selectedPayment_form_Validate();
     end
  
     function selectedPayment_form_Validate()
        selectedPayment_form.isValid();
     end
  
     function handleValidStateChange_selectedPayment(view Widget in, valid boolean in)
  
        for (n int from selectedPayment_form.entries.getSize() to 1 decrement by 1)
           entry FormField = selectedPayment_form.entries[n];
  
           if(entry.controller.view == view)
  
              if(valid)
                 // TODO: handle valid value
              else
                 msg String? = entry.controller.getErrorMessage();
                 // TODO: handle invalid value
              end
           end
        end
     end
  
     function clearAllFields(event Event in)
     end
  
     function formatCategory(class string, value string, rowData any in)
        value = PaymentLib.getCategoryDesc(value as INT);
     end     
     
     function serviceExceptionHandler(ex anyException)
        sysLib.writeStderr("Failure: " + ex.message);
        if (ex isa ServiceInvocationException)
       	   sysLib.writeStderr("Detail 1:  " + 
       	      (ex as ServiceInvocationException).detail1);
       	   sysLib.writeStderr("Detail 2:  " + 
       	       (ex as ServiceInvocationException).detail2);
       	   sysLib.writeStderr("Detail 3:  " + 
       	       (ex as ServiceInvocationException).detail3);
        end
     end     
  end


Related tasks

Lesson 8: Add variables and functions to the Rich UI handler