Using user-defined properties (Java Integration stage in DataStage)

You can use your Java™ code to define custom properties and use these property values in your Java code.

At job design time, the Java Integration stage editor calls thegetUserPropertyDefinitions() method in your Processor class to get a list of user-defined property definitions and then show the properties in the editor panel to allow the users to specify the string value for each property.

The following example shows the sample implementation of the getUserPropertyDefinitions() method.
public List<propertyDefinition> getUserPropertyDefinitions()
{
    List<PropertyDefinition> list = new ArrayList<PropertyDefinition>();
    propList.add(new PropertyDefinition
		("NumOfRecords",                                          
		"10", 
    "Number of Records", 
    "Specifies the number of record to be generated.",
    PropertyDefinition.Scope.STAGE)); 

    propList.add(new PropertyDefinition
		("WaveCount",
      "5", 
      "Wave Count", 
  			"Specifies the number of record to be processed 
			before writing end-of-wave marker.",
      PropertyDefinition.Scope.OUTPUT_LINK_ONLY));    
    return list;
 }

The getUserProperties() method of the Configuration interface returns a set of user-defined properties which forms as key=value pair. The getUserProperties() method of the Link interface returns a set of user-defined link properties which forms as key=value pair.

The following code gets the value of the NumOfRecords property which is set as stage properties, and the WaveCount property which is set as link properties.
public boolean validateConfiguration(
  Configuration configuration, boolean isRuntime) throws Exception
{
  // Specify current link configurations.
  m_outputLink = configuration.getOutputLink(0);

  Properties userStageProperties = configuration.getUserProperties();
  String propValue;
  // Fetch the value of "NumOfRecords" user property.
  // If it is not specified, use default value 10.
  // The minimum number of NumOfRecords is 0.
  // The maximum number of NumOfRecords is 100.
  // If specified value is out of range, return error.
  propValue = userStageProperties.getProperty("NumOfRecords");
  if (propValue != null)
  {
    m_numOfRecords = Integer.valueOf(propValue);
  }
  if (m_numOfRecords < 0 || m_numOfRecords > 100)
  {
    m_errors.add("Please set the NumOfRecords value between 1 to 100.");
  }

  // Fetch the value of "WaveCount" user property.
  // If it is not specified, use default value 5.
  // The minimum number of WaveCount is 0.
  // The maximum number of WaveCount is 100.
  // If specified value is out of range, return error.
  Properties userLinkProperties = m_outputLink.getUserProperties();
  propValue = userLinkProperties.getProperty("WaveCount");
  if (propValue != null)
  {
    m_waveCount = Integer.valueOf(propValue);
  }
  if (m_waveCount < 0 || m_waveCount > 100)
  {
    m_errors.add("Please set the waveCount value between 1 to 100.");
  }