Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Scout/Tutorial/3.8/webservices/Create Company Form"
(→Create Form Fields) |
|||
(29 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | {{ScoutPage|cat=Tutorial 3.8}} | ||
== Create Company Form == | == Create Company Form == | ||
− | On the client node, go to 'Forms'. Right click on the node to create the Company {{ScoutLink|Concepts|Form}} [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_1.png]. As the name of the form, enter <code>Company</code> and choose to create the Form ID which is the primary key of the company [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_2.png]. Click next to choose from the | + | On the client node, go to 'Forms'. Right click on the node to create the Company {{ScoutLink|Concepts|Form}} [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_1.png]. As the name of the form, enter <code>Company</code> and choose to create the Form ID which is the primary key of the company [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_2.png]. Click next to choose from the artifacts which also should be created by Scout SDK [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_3.png]. Uncheck all permissions as {{ScoutLink|Concepts|Security|Authorization}} is not part of this tutorial. |
== Create Form Fields == | == Create Form Fields == | ||
Line 8: | Line 9: | ||
Type: String Field [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_5.png] | Type: String Field [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_5.png] | ||
Name: Name [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_6.png] | Name: Name [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_6.png] | ||
− | Class name: NameField | + | Class name: NameField |
'''SymbolField''' | '''SymbolField''' | ||
Line 52: | Line 53: | ||
Because <code>ChangeField</code> represents a procentual value, click on that field and check the property <code>Percent</code> in Scout Property View [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_7.png]. | Because <code>ChangeField</code> represents a procentual value, click on that field and check the property <code>Percent</code> in Scout Property View [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_7.png]. | ||
− | Furthermore, all stock quote specific fields have to be disabled as those fields cannot be modified because data | + | Furthermore, all stock quote specific fields have to be disabled as those fields cannot be modified because data is provided by a webservice. To to so, select all those fields in Scout SDK and uncheck <code>Enabled</code> in Scout Property View [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_11.png]. |
+ | |||
+ | As the stock quote symbol can be maximal 5 characters long, this must be constrained on the <code>SymbolField</code> by selecting the field and set the <code>Max Length</code> property in Scout Property View to 5 [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_13.png]. | ||
== Associate CompanyForm with CompanyTablePage == | == Associate CompanyForm with CompanyTablePage == | ||
To edit and create companies, you have to add an 'EDIT' and 'NEW' menu to the <code>CompanyTablePage</code>. | To edit and create companies, you have to add an 'EDIT' and 'NEW' menu to the <code>CompanyTablePage</code>. | ||
− | On client node, go to the node 'Desktop' | 'Outlines' | ' | + | On client node, go to the node 'Desktop' | 'Outlines' | 'StandardOutline' | 'Child Pages' | 'CompanyTablePage' | 'Table' | 'Menus'. Click on the menu node to create the following 2 menus [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_8.png]: |
'''NEW menu [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_9.png]''' | '''NEW menu [http://wiki.eclipse.org/Image:Org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_9.png]''' | ||
Line 71: | Line 74: | ||
Form to start: CompanyForm | Form to start: CompanyForm | ||
Form handler: ModifyHandler | Form handler: ModifyHandler | ||
+ | |||
+ | In the EDIT menu action, we also have to provide the <code>CompanyNr</code> primary key as argument to the <code>CompanyForm</code>. For that reason, double click the <code>EditCompanyMenu</code> to modify the code in <code>execAction()</code> as follows: | ||
+ | |||
+ | <source lang="java"> | ||
+ | @Override | ||
+ | protected void execAction() throws ProcessingException { | ||
+ | CompanyForm form = new CompanyForm(); | ||
+ | |||
+ | // Add the following line to set the primary key of the selected company to the form | ||
+ | form.setCompanyNr(getCompanyNrColumn().getSelectedValue()); | ||
+ | |||
+ | form.startModify(); | ||
+ | form.waitFor(); | ||
+ | if (form.isFormStored()) { | ||
+ | reloadPage(); | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | == Load and persist company data == | ||
+ | Scout SDK already created a <code>CompanyProcessService</code> in order to load and persist company data. | ||
+ | You only have to implement those operations: | ||
+ | |||
+ | For that reason, go to the server node and open the <code>CompanyProcessService</code> by double click on 'Process Services' | 'CompanyProcessService'. You will find the following method stubs: | ||
+ | |||
+ | '''prepareCreate''' | ||
+ | Is called by <code>CompanyForm#NewHandler</code> prior to open a non-existing company. This is if a company is to be created to show some default values in the form. It is not used by this tutorial. | ||
+ | |||
+ | '''create''' | ||
+ | Is called by <code>CompanyForm#NewHandler</code> to create a company record in database | ||
+ | |||
+ | '''load''' | ||
+ | Is called by <code>CompanyForm#ModifyHandler</code> to load a company record from database | ||
+ | |||
+ | '''store''' | ||
+ | Is called <code>CompanyForm#ModifyHandler</code> to update a company record in database | ||
+ | |||
+ | Please implement those method stubs as following: | ||
+ | |||
+ | <source lang="java"> | ||
+ | public class CompanyProcessService extends AbstractService implements ICompanyProcessService { | ||
+ | |||
+ | @Override | ||
+ | public CompanyFormData prepareCreate(CompanyFormData formData) throws ProcessingException { | ||
+ | // nop | ||
+ | return formData; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public CompanyFormData create(CompanyFormData formData) throws ProcessingException { | ||
+ | formData.setCompanyNr(SQL.getSequenceNextval("GLOBAL_SEQ")); | ||
+ | SQL.insert("" + | ||
+ | "INSERT INTO COMPANY " + | ||
+ | " (COMPANY_NR, " + | ||
+ | " NAME, " + | ||
+ | " SYMBOL) " + | ||
+ | "VALUES (:companyNr, " + | ||
+ | " :name, " + | ||
+ | " :symbol)" | ||
+ | , formData); | ||
+ | |||
+ | return formData; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public CompanyFormData load(CompanyFormData formData) throws ProcessingException { | ||
+ | SQL.selectInto("" + | ||
+ | "SELECT NAME, " + | ||
+ | " SYMBOL " + | ||
+ | "FROM COMPANY " + | ||
+ | "WHERE COMPANY_NR = :companyNr " + | ||
+ | "INTO :name, " + | ||
+ | " :symbol " | ||
+ | , formData); | ||
+ | return formData; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public CompanyFormData store(CompanyFormData formData) throws ProcessingException { | ||
+ | SQL.update("" + | ||
+ | "UPDATE COMPANY " + | ||
+ | "SET NAME = :name, " + | ||
+ | " SYMBOL = :symbol " + | ||
+ | "WHERE COMPANY_NR = :companyNr" | ||
+ | , formData); | ||
+ | |||
+ | return formData; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
Line 82: | Line 175: | ||
[[Image:org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_9.png|thumb|Create the NEW menu]] | [[Image:org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_9.png|thumb|Create the NEW menu]] | ||
[[Image:org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_10.png|thumb|Create the EDIT menu]] | [[Image:org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_10.png|thumb|Create the EDIT menu]] | ||
+ | [[Image:org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_7.png|thumb|Set percent mode for the ChangeField]] | ||
[[Image:org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_11.png|thumb|Disable webservice specific fields]] | [[Image:org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_11.png|thumb|Disable webservice specific fields]] | ||
+ | [[Image:org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_12.png|thumb|Load and persist data in CompanyProcessService]] | ||
+ | [[Image:org.eclipse.scout.tutorial.jaxws.CreateCompanyForm_13.png|thumb|Set maxLength to symbol field]] |
Latest revision as of 03:55, 24 April 2012
The Scout documentation has been moved to https://eclipsescout.github.io/.
Contents
Create Company Form
On the client node, go to 'Forms'. Right click on the node to create the Company The Scout documentation has been moved to https://eclipsescout.github.io/. [1]. As the name of the form, enter Company
and choose to create the Form ID which is the primary key of the company [2]. Click next to choose from the artifacts which also should be created by Scout SDK [3]. Uncheck all permissions as The Scout documentation has been moved to https://eclipsescout.github.io/. is not part of this tutorial.
Create Form Fields
On the CompanyForm
node, go to the 'MainBox'. Right click on the MainBox to create the following 9 Form The Scout documentation has been moved to https://eclipsescout.github.io/.'s [4]:
NameField Type: String Field [5] Name: Name [6] Class name: NameField
SymbolField Type: String Field Name: Symbol Class name: SymbolField
TradeTimeField Type: Date Field Name: Trade time Class name: TradeTimeField
ValueLastField Type: Double Field Name: Value last Class name: ValueLastField
ValueOpenField Type: Double Field Name: Value open Class name: ValueOpenField
ValueLowField Type: Double Field Name: Value low Class name: ValueLowField
ValueHighField Type: Double Field Name: Value high Class name: ValueHighField
VolumeField Type: Long Field Name: Volume Class name: VolumeField
ChangeField Type: Double Field Name: Change Class name: ChangeField
Because ChangeField
represents a procentual value, click on that field and check the property Percent
in Scout Property View [7].
Furthermore, all stock quote specific fields have to be disabled as those fields cannot be modified because data is provided by a webservice. To to so, select all those fields in Scout SDK and uncheck Enabled
in Scout Property View [8].
As the stock quote symbol can be maximal 5 characters long, this must be constrained on the SymbolField
by selecting the field and set the Max Length
property in Scout Property View to 5 [9].
Associate CompanyForm with CompanyTablePage
To edit and create companies, you have to add an 'EDIT' and 'NEW' menu to the CompanyTablePage
.
On client node, go to the node 'Desktop' | 'Outlines' | 'StandardOutline' | 'Child Pages' | 'CompanyTablePage' | 'Table' | 'Menus'. Click on the menu node to create the following 2 menus [10]:
NEW menu [11] Name: New company... Class Name: NewCompanyMenu Super Type: AbstractMenu Form to start: CompanyForm Form handler: NewHandler
EDIT menu [12] Name: Edit company... Class Name: EditCompanyMenu Super Type: AbstractMenu Form to start: CompanyForm Form handler: ModifyHandler
In the EDIT menu action, we also have to provide the CompanyNr
primary key as argument to the CompanyForm
. For that reason, double click the EditCompanyMenu
to modify the code in execAction()
as follows:
@Override protected void execAction() throws ProcessingException { CompanyForm form = new CompanyForm(); // Add the following line to set the primary key of the selected company to the form form.setCompanyNr(getCompanyNrColumn().getSelectedValue()); form.startModify(); form.waitFor(); if (form.isFormStored()) { reloadPage(); } }
Load and persist company data
Scout SDK already created a CompanyProcessService
in order to load and persist company data.
You only have to implement those operations:
For that reason, go to the server node and open the CompanyProcessService
by double click on 'Process Services' | 'CompanyProcessService'. You will find the following method stubs:
prepareCreate
Is called by CompanyForm#NewHandler
prior to open a non-existing company. This is if a company is to be created to show some default values in the form. It is not used by this tutorial.
create
Is called by CompanyForm#NewHandler
to create a company record in database
load
Is called by CompanyForm#ModifyHandler
to load a company record from database
store
Is called CompanyForm#ModifyHandler
to update a company record in database
Please implement those method stubs as following:
public class CompanyProcessService extends AbstractService implements ICompanyProcessService { @Override public CompanyFormData prepareCreate(CompanyFormData formData) throws ProcessingException { // nop return formData; } @Override public CompanyFormData create(CompanyFormData formData) throws ProcessingException { formData.setCompanyNr(SQL.getSequenceNextval("GLOBAL_SEQ")); SQL.insert("" + "INSERT INTO COMPANY " + " (COMPANY_NR, " + " NAME, " + " SYMBOL) " + "VALUES (:companyNr, " + " :name, " + " :symbol)" , formData); return formData; } @Override public CompanyFormData load(CompanyFormData formData) throws ProcessingException { SQL.selectInto("" + "SELECT NAME, " + " SYMBOL " + "FROM COMPANY " + "WHERE COMPANY_NR = :companyNr " + "INTO :name, " + " :symbol " , formData); return formData; } @Override public CompanyFormData store(CompanyFormData formData) throws ProcessingException { SQL.update("" + "UPDATE COMPANY " + "SET NAME = :name, " + " SYMBOL = :symbol " + "WHERE COMPANY_NR = :companyNr" , formData); return formData; } }