Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EDT:Tutorial: Access a database with EGL Rich UI Lesson 7"

(New page: = Lesson 7: Create a library of reusable functions<br> = Create a library to format money values and to associate category numbers with descriptions.<br>Libraries contain functions, const...)
 
 
Line 1: Line 1:
= Lesson 7: Create a library of reusable functions<br> =
+
[[EDT:Tutorial: Access a database with EGL Rich UI|Access a database with EGL Rich UI]]
  
Create a library to format money values and to associate category numbers with descriptions.<br>Libraries contain functions, constants, and variables that you can use in multiple locations.
 
  
When you reference a declaration in the library from other logic such as a service or handler, you can include the library name as a prefix. For example, MyLibrary.myLibraryVariable is appropriate if the library name is MyLibrary and the library includes the myLibraryVariable variable. Alternatively, you can include the library name in a use statement in the other logic and avoid the need to qualify every reference. In that case, myLibraryVariable is sufficient to reference that variable.<br><br>
+
{| style="float: right"
 +
|[[EDT:Tutorial: RUI With DataBase Lesson 6|&lt; Previous]] | [[EDT:Tutorial: RUI With DataBase Lesson 8|Next >]]
 +
|}
 +
= Lesson 7: Create a library of reusable functions =
 +
 
 +
Create a library to format money values and to associate
 +
category numbers with descriptions.Libraries contain functions, constants, and variables that
 +
you can use in multiple locations.
 +
 
 +
When you reference a declaration
 +
in the library from other logic such as a service or handler, you
 +
can include the library name as a prefix. For example, <tt>MyLibrary.myLibraryVariable</tt> is
 +
appropriate if the library name is <tt>MyLibrary</tt> and
 +
the library includes the <tt>myLibraryVariable</tt> variable.
 +
Alternatively, you can include the library name in a '''use''' statement
 +
in the other logic and avoid the need to qualify every reference.
 +
In that case, <tt>myLibraryVariable</tt> is sufficient to
 +
reference that variable.
 +
 
 +
== Create a Library part ==
 +
 
  
=== Create a Library part ===
 
  
 
To create a Library part:
 
To create a Library part:
  
Right-click the PaymentClient folder, then click New &gt; Library.<br> In the New EGL Library window, enter the following information:<br> In the EGL source file name field, enter the following name:
+
<ol><li>Right-click the PaymentClient folder,
 +
then click '''New''' &gt; '''Library'''.
 +
<li>In the New EGL Library window, enter
 +
the following information:  
 +
 
 +
<ul><li>In the '''EGL source file name''' field, enter
 +
the following name:
  
 
PaymentLib
 
PaymentLib
  
In the Package field, enter the following name:
+
<li>In the '''Package''' field, enter the following
 +
name:
  
 
libraries
 
libraries
  
Under EGL Library Type, leave the default value of Basic selected.<br> The new Library part opens in the EGL editor.<br> Replace the boilerplate code in the Library part with the following lines:
+
<li>Under '''EGL Library Type''', leave the default
 +
value of '''Basic''' selected.
 +
</ul>
 +
The new Library part opens in the EGL editor.
 +
<li>Replace the boilerplate code in the Library part with the
 +
following lines:  
  
 
package libraries;
 
package libraries;
Line 25: Line 55:
 
end
 
end
  
Save the file.
+
<li>Save the file.
 +
</ol>
  
<br>
+
== Create the categories array ==
  
=== Create the categories array<br> ===
+
Add the following code before the final '''end''' statement:
 +
<code>
 +
      categories string[] =[
 +
 
 +
                      "Rent",          // 1
 +
                      "Food",          // 2
 +
                      "Entertainment", // 3
 +
                      "Automotive",    // 4
 +
                      "Utilities",    // 5
 +
                      "Clothes",      // 6
 +
                      "Other"          // 7
 +
              ];
 +
</code>
 +
The value is an array, and as is true of all arrays
 +
in EGL, the index of the first element is 1, not 0.
  
Add the following code before the final end statement:
+
The array
 +
is used in logic that acts as follows:
  
categories STRING[] = [
+
<ul><li>Places an expense category into the database in integer form,
 +
to save space.
 +
<li>Places the expense category onto the web page in string form,
 +
for clarity.
 +
</ul>
  
"Rent", // 1<br> "Food", // 2<br> "Entertainment", // 3<br> "Automotive", // 4<br> "Utilities", // 5<br> "Clothes", // 6<br> "Other" // 7<br>];
+
== Create the get functions for categories ==
  
The value is an array, and as is true of all arrays in EGL, the index of the first element is 1, not 0.<br>The array is used in logic that acts as follows:
+
The next functions convert between the following two formats
 +
for expense categories: integer and string.
  
Places an expense category into the database in integer form, to save space.<br> Places the expense category onto the web page in string form, for clarity.
+
Add the following code before the final '''end''' statement:
 +
<code>
 +
      function getCategoryDesc(cat int in) returns(string)
 +
          if(cat != 0)      // the integer is not 0
 +
              return(categories[cat]);
 +
          else
 +
              return("");
 +
          end
 +
      end
 +
</code>
 +
The function receives the integer format of an expense
 +
category and returns the related array element. If the input value
 +
is 0, the function returns an empty string.
  
<br>
+
Add the following code before the final '''end''' statement:
 +
<code>
 +
      function getCategoryNum(desc string in) returns(int)
 +
          for(i int from 1 to categories.getSize())
 +
              if(categories[i] == desc)
 +
                  return(i);
 +
              end
 +
          end
 +
          return(0); // no match
 +
      end
 +
</code>
 +
This function receives the string format of an expense
 +
category and returns the integer format, if possible. If no match
 +
is found for the received string, the function returns 0.
  
=== Create the get functions for categories<br> ===
+
== Save your changes ==
  
<br>The next functions convert between the following two formats for expense categories: integer and string.
+
The complete your coding of the payment library:
  
Add the following code before the final end statement:
+
#Format the file.
 +
#Save and close the <tt>PaymentLib</tt> Library. If you see errors in your source file, compare your code to the file contents in [[EDT:Tutorial: RUI With DataBase Lesson 7 Code|Code for PaymentLib.egl after lesson 7]].
  
function getCategoryDesc(cat INT in) returns(STRING)<br> if(cat) // the integer is not 0<br> return(categories[cat]);<br> else<br> return("");<br> end<br> end
+
== Lesson checkpoint ==
  
The function receives the integer format of an expense category and returns the related array element. If the input value is 0, the function returns an empty string.<br> Add the following code before the final end statement:
+
You learned how to complete the following tasks:
 
+
function getCategoryNum(desc STRING in) returns(INT)<br> for(i INT from 1 to categories.getSize())<br> if(categories[i] == desc)<br> return(i);<br> end<br> end <br> return(0); // no match<br> end
+
 
+
This function receives the string format of an expense category and returns the integer format, if possible. If no match is found for the received string, the function returns 0.<br> Format the file.<br> Save and close the PaymentLib Library. If you see errors in your source file, compare your code to the file contents in Finished code for PaymentLib.egl after lesson 7.
+
 
+
Related reference
+
  
Arrays<br>
+
<ul><li>Create a Library part.
 
+
<li>Add functions and a variable to a library.
=== Lesson checkpoint<br> ===
+
</ul>
 
+
You learned how to complete the following tasks:
+
  
*Create a Library part.
+
{| style="float: right"
*Add functions and a variable to a library.
+
|[[EDT:Tutorial: RUI With DataBase Lesson 6|&lt; Previous]] | [[EDT:Tutorial: RUI With DataBase Lesson 8|Next >]]
 +
|}
  
<br><br>
+
[[Category:EDT]]

Latest revision as of 10:43, 30 November 2011

Access a database with EGL Rich UI


< Previous | Next >

Lesson 7: Create a library of reusable functions

Create a library to format money values and to associate category numbers with descriptions.Libraries contain functions, constants, and variables that you can use in multiple locations.

When you reference a declaration in the library from other logic such as a service or handler, you can include the library name as a prefix. For example, MyLibrary.myLibraryVariable is appropriate if the library name is MyLibrary and the library includes the myLibraryVariable variable. Alternatively, you can include the library name in a use statement in the other logic and avoid the need to qualify every reference. In that case, myLibraryVariable is sufficient to reference that variable.

Create a Library part

To create a Library part:

  1. Right-click the PaymentClient folder, then click New > Library.
  2. In the New EGL Library window, enter the following information:
    • In the EGL source file name field, enter the following name: PaymentLib
    • In the Package field, enter the following name: libraries
    • Under EGL Library Type, leave the default value of Basic selected.

    The new Library part opens in the EGL editor.

  3. Replace the boilerplate code in the Library part with the following lines: package libraries; library PaymentLib type BasicLibrary {} end
  4. Save the file.

Create the categories array

Add the following code before the final end statement:

      categories string[] =[
  
                      "Rent",          // 1
                      "Food",          // 2
                      "Entertainment", // 3
                      "Automotive",    // 4
                      "Utilities",     // 5
                      "Clothes",       // 6
                      "Other"          // 7
              ];

The value is an array, and as is true of all arrays in EGL, the index of the first element is 1, not 0.

The array is used in logic that acts as follows:

  • Places an expense category into the database in integer form, to save space.
  • Places the expense category onto the web page in string form, for clarity.

Create the get functions for categories

The next functions convert between the following two formats for expense categories: integer and string.

Add the following code before the final end statement:

      function getCategoryDesc(cat int in) returns(string)
          if(cat != 0)       // the integer is not 0
              return(categories[cat]);
          else
              return("");
          end
      end

The function receives the integer format of an expense category and returns the related array element. If the input value is 0, the function returns an empty string.

Add the following code before the final end statement:

      function getCategoryNum(desc string in) returns(int)
          for(i int from 1 to categories.getSize())
              if(categories[i] == desc)
                  return(i);
              end
          end
          return(0);	// no match
      end

This function receives the string format of an expense category and returns the integer format, if possible. If no match is found for the received string, the function returns 0.

Save your changes

The complete your coding of the payment library:

  1. Format the file.
  2. Save and close the PaymentLib Library. If you see errors in your source file, compare your code to the file contents in Code for PaymentLib.egl after lesson 7.

Lesson checkpoint

You learned how to complete the following tasks:

  • Create a Library part.
  • Add functions and a variable to a library.
< Previous | Next >

Back to the top