Java API:Enumerated Fields

From AgileApps Support Wiki
Revision as of 01:08, 27 September 2011 by imported>Aeric (→‎Define Mapping for a Dependent Picklist)

About Enumerated Fields

There are multiple types of enumerated fields. The type is specified using FieldMetaDataBean.setType(String type). These are the possible values. (They are passed within quotes, as strings):

  • PICK_LIST
  • GLOBAL_PICK_LIST
  • DEPENDENT_PICK_LIST
  • MULTI_PICK_LIST
  • RADIO_BUTTON
  • MULTI_CHECK_BOX

The standard field methods are used to work with enumerated fields:

  • Functions.addFieldMetaData(FieldMetaDataBean fmdb);
  • Functions.updateFieldMetaData(FieldMetaDataBean fmdb);
  • Functions.deleteFieldMetaData(FieldMetaDataBean fmdb);
Considerations
  • Add/update/delete is not supported for global picklists. All other enumeration types are supported.

Retrieving Field Metadata

<syntaxhighlight lang="java" enclose="div">

import com.platform.beans.EnumerationDetailsBean.*;

//Retrieving the FieldMetaData FieldMetaDataBean fmdb = getFieldMetaData("someField", "picklist"); StringBuilder sb = new StringBuilder();

//Get the database column date String tableColumn = fmdb.getTableColumn();

//Get the field type // (PICK_LIST, DEPENDENT_PICK_LIST, RADIO_BUTTON, MULTI_CHECK_BOX, GLOBAL_PICKLIST) String fieldType = fmdb.getType();

//String object Id String objectId = fmdb.getObjectId();

//Title of the Field String title = fmdb.getTitle(); sb.append("Field Name -> " + tableColumn + "\n") ; sb.append("Field Type -> " + fieldType + "\n"); sb.append("Object Id -> " + objectId + "\n"); sb.append("Title -> " + title + "\n");

//Enuemration Details EnumerationDetailsBean enumerationDetails = fmdb.getEnumerationDetails();

//Internal Id of the Enumerated Type field String name = enumerationDetails.getName(); sb.append("Internal Picklist Id -> " + name + "\n");

//Sort flag Boolean sortFlag = enumerationDetails.getSortFlag(); sb.append("Sort flag -> " + sortFlag + "\n");

//Show first value as default flag Boolean showFirstValAsDefaultFlag = enumerationDetails.getShowFirstValueAsDefault();

//Get the list of Enumeration Items List<EnumerationItemBean> enumerationItems = enumerationDetails.getEnumerationItems();

//Extracting the Item details for(EnumerationItemBean item : enumerationItems) {

   //Enumeration Item Id
   String id = item.getId();	
   sb.append("Enumeration Item Id -> " + id + "\n");
   //Enumeration Item label
   String enumeratedItemLabel = item.getPicklistLabel();
   sb.append("Enumeration Item Label -> " + enumeratedItemLabel + "\n");
   //Enumeration Item Value
   String enumeratedItemValue = item.getPicklistValue();	
   sb.append("Enumeration Item Value -> " + enumeratedItemValue + "\n");
   //Text color of the Enumeration Item Label
   String textColor = item.getTextColor();
   sb.append("Enuemration Label text color -> " + textColor + "\n");
   //Text background color of the Enumeration Item label
   String textBackgroundColor = item.getTextBgColor();	
   sb.append("Enumeration Label text background color -> " + textBackgroundColor + "\n");
   //Show only image flag
   Boolean showOnlyImageFlag = item.getShowOnlyImage();	
   sb.append("Show only image flag -> " + showOnlyImageFlag + "\n");
   //Indicates if the item is an option group laabel
   Boolean flagIsOptGroup = item.getFlagIsOptgroup();	
   sb.append("Is options group flag -> " + flagIsOptGroup + "\n");
   //Order of the Item
   Integer itemOrder = item.getItemOrder();	
   sb.append("Item order -> " + itemOrder + "\n");

}

Functions.debug(sb.toString()); </syntaxhighlight>

Adding a Picklist Field

To create an enumerated field:

  1. Add the new field to the object using Functions.addFieldMetaData().
  2. Add the list of items, using the Functions.updateFieldMetaData().
<syntaxhighlight lang="java" enclose="div">

//Instantiate FieldMetaDataBean FieldMetaDataBean fmdb = new FieldMetaDataBean();

//Setting the objectId fmdb.setObjectId("myField");

//Setting the database column name fmdb.setTableColumn("picklist");

//Setting the field type fmdb.setType("PICK_LIST");

//Setting the field title fmdb.setTitle("Picklist");

//Setting enumeration details EnumerationDetailsBean enumDetails = new EnumerationDetailsBean();

//Sorting the enuerated values enumDetails.setSortFlag(true);

fmdb.setEnumerationDetails(enumDetails);

//On successful addition of the field, the database column name is returned String tableColumn = Functions.addFieldMetaData(fmdb);

Functions.debug("Added field " + tableColumn); </syntaxhighlight>

Updating a Picklist

To update a specific item in an enumeration, it's ID must be specified.

To update the entire field:

  • The new list of items replaces the old one. All existing enumeration items must be included in the list, or they are not preserved.
  • For dependent picklists, all existing items plus the ParentToChildMapping beans must be provided.
<syntaxhighlight lang="java" enclose="div">

import com.platform.beans.EnumerationDetailsBean.*;

//Instantiate FieldMetaDataBean FieldMetaDataBean fmdb = getFieldMetaData("someField", "picklist");

//Setting enumeration details EnumerationDetailsBean enumDetails = new EnumerationDetailsBean();

//Sorting the enuerated values enumDetails.setSortFlag(true);

//Creating a list of Enumeration items List<EnumerationItemBean> listEnumItems = new ArrayList<EnumerationItemBean>();

//Setting up an enumeration item EnumerationItemBean enumItemBean = new EnumerationItemBean();

//Specify the ID of the enumeration item to be update, //where ENUMERATION_ITEM_ID is retrieved using getFieldMetaData() //enumItemBean.setId(ENUMERATION_ITEM_ID)

//setting the label of the Enumerated item enumItemBean.setPicklistLabel("Label 1");

//setting the value of the Enumerated item enumItemBean.setPicklistValue("value1");

//Setting the text color of the Enumerated item label enumItemBean.setTextColor("#000000");

//Setting the Back ground color of the Enumerated item label enumItemBean.setTextBgColor("#FFFFFF");

//Adding enumeration item to the list. In a similar way we can add more items listEnumItems.add(enumItemBean);

//Setting the list of Enumeration Items in the EnumerationDetailsBean enumDetails.setEnumerationItems(listEnumItems);

//Setting in the Enumeration details in the FieldMetaDataBean fmdb.setEnumerationDetails(enumDetails);

//On successful addition of the field, the database column name is returned String tableColumn = Functions.updateFieldMetaData(fmdb); </syntaxhighlight>

Define Mapping for a Dependent Picklist

A Dependent Picklist is one where the list of choices depends on a selection made in a parent field (another field of type enumerated). This sample code maps each choice in a parent picklist to the list of values in the dependent picklist.

<syntaxhighlight lang="java" enclose="div">

import com.platform.beans.EnumerationDetailsBean.*;

//Retrieve the metadata for the dependent picklist FieldMetaDataBean dependentPicklistMeta = getFieldMetaData("myObject", "dependentField");

String parentFieldName = dependentPicklistMeta.getParentPicklistTableColumn(); FieldMetaDataBean parentEnumeratedFieldMeta = getFieldMetaData("myObject", parentFieldName); EnumerationDetailsBean parentEnumerationDetails =

   parentEnumeratedFieldMeta.getEnumerationDetails();

List<EnumerationItemBean> parentEnumerationItemList =

   parentEnumerationDetails.getEnumerationItems();

Map<String,String> parentItemValToItemIdMap = new HashMap<String,String>();

for(EnumerationItemBean item : parentEnumerationItemList) {

   String itemValue = item.getPicklistValue();
   String itemLabel = item.getPicklistLabel();
   String itemId = item.getId();
   parentItemValToItemIdMap.put(itemValue,itemId);

}

EnumerationDetailsBean dependentEnumerationDetails =

   dependentPicklistMeta.getEnumerationDetails();

List<EnumerationItemBean> dependentEnumerationItemList =

   dependentEnumerationDetails.getEnumerationItems();

Map<String,String> dependentItemValToItemIdMap = new HashMap<String,String>();

for(EnumerationItemBean item : dependentEnumerationItemList) {

   String itemValue = item.getPicklistValue();
   String itemLabel = item.getPicklistLabel();
   String itemId = item.getId();
   dependentItemValToItemIdMap.put(itemValue,itemId);

}

List<ParentToChildMapping> pTc = new ArrayList<ParentToChildMapping>(); String dependentItemId = dependentItemValToItemIdMap.get("dep1"); String parentItemId = parentItemValToItemIdMap.get("value1"); ParentToChildMapping tmpPTCMap = new ParentToChildMapping(); tmpPTCMap.setDependentPicklistItemId(dependentItemId); tmpPTCMap.setParentPicklistItemId(parentItemId); pTc.add(tmpPTCMap); dependentEnumerationDetails.setParentToChildMapping(pTc);

String response = Functions.updateFieldMetaData(dependentPicklistMeta); </syntaxhighlight>