Retrieving last changed value in Openbravo Callout

Callout in Openbravo is the feature that enables us to do runtime operations with the data. Callout is generally attached to a field and triggered in the onchange event. Openbravo has implemented a java class file called SimpleCallout.java, that we can extend and use it for implementing Callouts. For more information on implementing callouts, refer here and here.

As Callouts are attached to a field, you can use the field name with the prefix ‘inp’ to retrieve the run time value. Based upon that, you can do manipulations. But using this method, restrict the usage of that callout to a particular field. Say for instance I have a same logic to be implemented across five different fields, then I have to write 5 different callout, as we are hard coding the field names. But there is also a method provided to retrieve the last changed field and then using that, you can retrieve that value.

I have provided below the code, that retrieves the name of the last changed field and then the value of the corresponding field.

package com.fugoconsulting.xxx.erpCommon.ad_callout;

import javax.servlet.ServletException;
import java.util.*;
import java.lang.*;

import org.openbravo.utils.FormatUtilities;
import org.apache.log4j.Logger;
import org.hibernate.criterion.Expression;
import org.openbravo.erpCommon.ad_callouts.SimpleCallout;
import org.openbravo.base.secureApp.VariablesSecureApp;
import org.openbravo.dal.service.OBDal;

public class NameValidation extends SimpleCallout {

	private static final long serialVersionUID = 1L;
	private static Logger log = Logger.getLogger(NameValidation.class);
	@Override
	protected void execute(CalloutInfo info) throws ServletException {

		//Gets the last changed field
		String lastChanged = info.getStringParameter("inpLastFieldChanged",null);

		int length = lastChanged.length();

		//Gets the value of the last changed field
		String lastChangedValue = info.getStringParameter(lastChanged,null);

		log.info("Last field changed:"+lastChanged);
		log.info("Last field length:"+length);

	}
}