Scout/Tutorial/5.0/webservices/Create Company Form
Scout |
Wiki Home |
Website |
Download • Git |
Community |
Forums • Blog • Twitter • G+ |
Bugzilla |
Bugzilla |
Contents
Create Company Form
On the client node, go to Forms. Right click on the node to create the Company Form
As the name of the form, enter Company and choose to create the Form ID which is the primary key of the company.
Click next to choose from the artifacts which also should be created by Scout SDK.
Uncheck all permissions as Authorization 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 Field's:
NameField Type: String Field Name: Name 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.
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
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
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:
NEW menu Name: New company... Class Name: NewCompanyMenu Super Type: AbstractMenu Form to start: CompanyForm Form handler: NewHandler
EDIT menu 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 CompanyService 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 CompanyService by double click on Services > CompanyService.
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 CompanyService extends AbstractService implements ICompanyService { @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; } }
You can continue the webservices tutorial.