Sometimes you need to get detailed information about a page accessing its adapter. Or, in other words: you want to get a detailed list of all the properties and objects which are referenced by your page definition to the corresponding adapter object.
For this reason, there is the class
CheckAccessPath
in the
com.softwareag.cis.server
package providing this
information. The class has a getInstance()
method to
obtain an instance; the class has two additional methods:
public String[] findAccessedObjects(String application, String reference); public String[] findAccessedProperties(String application, String reference);
In both methods, the parameters are "application" and "reference". "application" is the application project in which a page is defined. "reference" is the name of the page itself, without ".xml".
The findAccessedObjects
method returns a
String array of all objects referenced in this page. An object is referenced if
the properties are not directly plugged to the adapter itself but to
subobjects. Example: if you bind a FIELD to the VALUEPROP
"address.street" then
"address" is the returned name.
The findAccessedProperties
method returns a
String array of all properties referenced in the page which are not complex
properties, but simple value properties.
In the cisdemos project (which is part of the installation), there
is a page "ShowAccessPaths" and the corresponding
class ShowAccessPathsAdapter
that shows an example of
how to use the CheckAccessPath
methods. The page
allows you to enter the application name and the page name, and returns a list
of referenced objects and properties:
In the class definition of the corresponding adapter, the code (finding the information about access paths) looks as follows:
// ------------------------------------------------------------------------ // inner classes // ------------------------------------------------------------------------ public class Info { // property >objects[*].name< // property >properties[*].name< String m_name; public String getName() { return m_name; } public void setName(String value) { m_name = value; } } // ------------------------------------------------------------------------ // property access // ------------------------------------------------------------------------ // property >app< String m_app = ""; public String getApp() { return m_app; } public void setApp(String value) { m_app = value; } // property >page< String m_page = ""; public String getPage() { return m_page; } public void setPage(String value) { m_page = value; } // array property >objects[*]< TEXTGRIDCollection m_objects = new TEXTGRIDCollection(); public TEXTGRIDCollection getObjects() { return m_objects; } // array property >properties[*]< TEXTGRIDCollection m_properties = new TEXTGRIDCollection(); public TEXTGRIDCollection getProperties() { return m_properties; } // ------------------------------------------------------------------------ // public usage // ------------------------------------------------------------------------ /** */ public void onShowAccessPath() { // check if (m_app.trim().length() == 0) { outputMessage(MT_ERROR,"Please specify application project"); return; } if (m_page.trim().length() == 0) { outputMessage(MT_ERROR,"Please specify page"); return; } // fill data m_properties.clear(); m_objects.clear(); String[] objects = CheckAccessPath.getInstance().findAccessedObjects(m_app,m_page); String[] properties = CheckAccessPath.getInstance().findAccessedProperties(m_app,m_page); for (int i=0; i<objects.length; i++) { Info info = new Info(); info.m_name = objects[i]; m_objects.add(info); } for (int i=0; i<properties.length; i++) { Info info = new Info(); info.m_name = properties[i]; m_properties.add(info); } } }