Skip fields during duplication

This article describes how to skip the user-defined fields during duplication of a record.
To skip the user-defined fields during duplication of a record, complete the following steps:
  • Extend the existing MBO class, for example XYAsset.java

  • Define a static HashSet that contains the names of the fields whose values need not be copied from the source MBO to the target MBO. This HashSet is loaded in the loadXYSkipFieldCopyHashSet.
·         
private static HashSet<String> skipXYFieldCopy = new HashSet<String> ();

  • Define private boolean variable to check whether the HashSet has already been loaded. The HashSet is loaded only once since it is static. The same hashSet can be used by all duplicate methods after it has been loaded.
·         
private static boolean isXYHashSetLoaded = false;


  • Define method loadXYSkipFieldCopyHashSet() that loads the static HashSet with the names of the fields whose values need not be copied from the source Mbo to the target Mbo when a duplicate operation is performed.

private static void loadXYSkipFieldCopyHashSet() throws MXException,RemoteException

{

     isXYHashSetLoaded = true;

     skipXYFieldCopy.add("fieldname");

}
Override the skipCopyField() in the MBO. While this MBO is being copied, this method checks if each attribute needs to be copied by using the data from the static HashSet skipXYFieldCopy.

boolean skipCopyField(MboValueInfo mvi) throws RemoteException, MXException
{
      if(super.skipCopyField(mvi))
     {
         return true;
     }

      if(skipXYFieldCopy.contains(mvi.getName()))
          {
         return true;
      }
     return false;
}
Override duplicate method in the MBO to skip any user defined fields.
MboRemote duplicate() throws MXException, RemoteException
{
      if(!isXYHashSetLoaded)
        {
         loadXYSkipFieldCopyHashSet ();
        }
           MboRemote dup = super.duplicate();

            return dup;
}

Popular posts from this blog

Jython Script Examples