Adding change notification to the data model
The data model is used to cache business objects on the client. This section explains how to add change notification to the data model.
About this task
To be notified of changes to the data model, you need to:
Procedure
- Create an implementation
of IModelListener and register your listener
to the model object that you want to listen to, for example:
package extensions; import java.text.DateFormat; import java.util.Date; import com.ibm.commerce.telesales.model.IModelListener; import com.ibm.commerce.telesales.model.ModelObjectChangedEvent; import com.ibm.commerce.telesales.model.ModelRoot; import com.ibm.commerce.telesales.model.Store; public class ExtendedModelListener implements IModelListener { public void modelChanged(ModelObjectChangedEvent event) { String propertyName = event.getPropertyName(); if (propertyName != null && propertyName.startsWith(ModelRoot.PROP_OPEN_STORES)) { if (event.getNewData() instanceof Store) { Store store = (Store)event.getNewData(); store.setData("storeOpenedTime", DateFormat.getDateTimeInstance().format(new Date())); } } else if ("storeOpenedTime".equals(propertyName)) { Store store = (Store) event.getParentModelObject(); System.out.println(store.getDescription() + " was opened at " + store.getData("storeOpenedTime")); } } }
- Create an extension to the org.eclipse.ui.startup extension
point. For example, in the extensions plug-in:
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <plugin> <extension point="org.eclipse.ui.startup"> <startup /> </extension> </plugin>
- To hear about all changes to
the model, add your listener to the
ModelRoot object. For example:
package extensions; import org.eclipse.ui.IStartup; import com.ibm.commerce.telesales.model.TelesalesModelManager; public class ExtendedStartup implements IStartup { public void earlyStartup() { TelesalesModelManager.getInstance().getModelRoot().addModelListener(new ExtendedModelListener()); } }