Difference between revisions of "Code Sample:Test of Search using Java API"
From AgileApps Support Wiki
imported>Aeric |
imported>Aeric m (Text replace - '// Error dialog' to '// Error message') |
||
(3 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
:* It creates a test method to run that search, taking advantage of the '''[RunTests]''' button to execute the method.<br>''Learn more:'' [[Unit Test Framework]] | :* It creates a test method to run that search, taking advantage of the '''[RunTests]''' button to execute the method.<br>''Learn more:'' [[Unit Test Framework]] | ||
:* It gets all fields in <tt>searchRecords</tt> and <tt>getRecord</tt>, using the <tt>"*"</tt> wildcard. | :* It gets all fields in <tt>searchRecords</tt> and <tt>getRecord</tt>, using the <tt>"*"</tt> wildcard. | ||
:* It enumerates the names of the fields that are returned, putting them into the [[Debug Log]].<br>'''Note:''' Enumerating things in a JSP [[Page]] would produce a nicer result, without much additional effort. That page could then be named as a [[Web Tab]], which would | :* It enumerates the names of the fields that are returned, putting them into the [[Debug Log]].<br>'''Note:''' Enumerating things in a JSP [[Page]] would produce a nicer result, without much additional effort. That page could then be named as a [[Web Tab]], which would become available for use as a tab in the application. | ||
:* In addition data contained in an Order record, it uses the Java <tt>getRecord</tt> API and the data in the <tt>related_to_Customer</tt> lookup field to get data from the related Customer record.<br>'''Note:''' The [[Java_API:Composite Objects#getRecord|Java API Composite Object getRecord]] method could also be used to specify the customer name as a field to retrieve. But the "wildcard" specifier could not be used for field names, in that case. | :* In addition data contained in an Order record, it uses the Java <tt>getRecord</tt> API and the data in the <tt>related_to_Customer</tt> lookup field to get data from the related Customer record.<br>'''Note:''' The [[Java_API:Composite Objects#getRecord|Java API Composite Object getRecord]] method could also be used to specify the customer name as a field to retrieve. But the "wildcard" specifier could not be used for field names, in that case. | ||
<noinclude> | |||
:''See also:'' More [[searchRecords Examples]] | |||
</noinclude> | |||
:<syntaxhighlight lang="java" enclose="div"> | :<syntaxhighlight lang="java" enclose="div"> | ||
package com.platform.demo.test; | package com.platform.demo.test; | ||
Line 23: | Line 25: | ||
// Some error happened. | // Some error happened. | ||
String msg = "Error during search"; | String msg = "Error during search"; | ||
Logger.info(msg + ":\n" + result.getMessage(), "Search"); // Log details | |||
Functions.throwError(msg + "."); | Functions.throwError(msg + "."); // Error message | ||
return(""); | return(""); | ||
} | } | ||
Line 46: | Line 48: | ||
if (first_time) { | if (first_time) { | ||
for (Object key : params.keySet() ) { | for (Object key : params.keySet() ) { | ||
Logger.info(""+key, "Search"); | |||
} | } | ||
first_time = false; | first_time = false; | ||
Line 58: | Line 60: | ||
// Echo order info | // Echo order info | ||
Logger.info("Order #" + num + " for " + company, "Search"); | |||
} | } | ||
//Result code is the #of records found. | //Result code is the #of records found. |
Latest revision as of 22:30, 10 September 2013
This example does a number of things:
- It defines a search method on the Orders object.
- It creates a test method to run that search, taking advantage of the [RunTests] button to execute the method.
Learn more: Unit Test Framework - It gets all fields in searchRecords and getRecord, using the "*" wildcard.
- It enumerates the names of the fields that are returned, putting them into the Debug Log.
Note: Enumerating things in a JSP Page would produce a nicer result, without much additional effort. That page could then be named as a Web Tab, which would become available for use as a tab in the application. - In addition data contained in an Order record, it uses the Java getRecord API and the data in the related_to_Customer lookup field to get data from the related Customer record.
Note: The Java API Composite Object getRecord method could also be used to specify the customer name as a field to retrieve. But the "wildcard" specifier could not be used for field names, in that case.
- See also: More searchRecords Examples
- <syntaxhighlight lang="java" enclose="div">
package com.platform.demo.test;
import com.platform.api.*;
public class SearchTest {
public String searchOrders() throws Exception { Result result = Functions.searchRecords("Order", "*", ""); //Toss the exception, if one occurs int resultCode = result.getCode(); if (resultCode < 0) { // Some error happened. String msg = "Error during search"; Logger.info(msg + ":\n" + result.getMessage(), "Search"); // Log details Functions.throwError(msg + "."); // Error message return(""); } else if(resultCode == 0) { // No records found. Take action accordingly Functions.throwError("No results returned from search"); return(""); } else { //Records retrieved successfully ParametersIterator iterator = result.getIterator(); boolean first_time = true; while(iterator.hasNext()) { Parameters params = iterator.next(); String num= params.get("order_number"); // List the fields present in the params object if (first_time) { for (Object key : params.keySet() ) { Logger.info(""+key, "Search"); } first_time = false; } // Use the Lookup value in related_to_Customer to get customer info String customerID = params.get("related_to_Customer"); Result customer = Functions.getRecord("Customer", "*", customerID); String company = customer.getParameters().get("customer_name"); // Echo order info Logger.info("Order #" + num + " for " + company, "Search"); } //Result code is the #of records found. return ""+resultCode; } } @TestMethod public void runSearchOrders() throws Exception { String record_count = searchOrders(); RunTest.assertEquals(record_count, "6"); }
} </syntaxhighlight>