November 18, 2012

Reading and updating Mbo's attributes

This entry is part of the Maximo Java Development series.

In this post I have explained how to query and fetch MBOs from the database. In this small article I will show how to get and set the attributes of an Mbo.


How to read attributes

To read the attributes of an Mbo you can use teh following getXxxx methods:
  • getBoolean
  • getByte
  • getBytes
  • getDate
  • getDouble
  • getFloat
  • getInt
  • getLong
  • getString

All these methods accept only one argument which is the name of the attribute to be retrieved from the Mbo.
Here is a a small example showing how to retrieve the ASSETNUM and ASSETID of an asset.

String assetnum = asset.getString("ASSETNUM");
int assetid = asset.getInt("ASSETID");

The is also a special technique to retrieve multiple attributes using the getMboValueData method as described in this post.

How to set attributes

To modify the value of a field you can use setValue methods. The setValueNull method can be used to set a null value. Here is a a small example showing how to set the DESCRIPTION and INSTALLDATE of an asset.

asset.setValue("DESCRIPTION", "New description");
asset.setValue("INSTALLDATE", new Date());

All setValue methods have a second version that accepts some flags. The valid flags are defined in the MboConstants class. Here are the most important ones:
  • NOVALIDATION: suppress validation
  • NOACTION: suppress action
  • NOVALIDATION_AND_NOACTION: suppress validation and action
  • NOACCESSCHECK: suppress access control checks

They can be merged with the bitwise OR operator '|'.

asset.setValue("DESCRIPTION", "d1", NOVALIDATION);
asset.setValue("DESCRIPTION", "d1", NOVALIDATION | NOACCESSCHECK);


3 comments:

  1. how to compare one filed value of tobeadded mbo to set other field value?

    ReplyDelete
  2. Is there anything special to setting attribute values when the attribute type is a TABLEVALUE.
    For instance, to set an attribute that uses the People table, and the attribute specified for the attribute is DISPLAYNAME, can you just add a valid string for a DISPLAYNAME?

    ReplyDelete
  3. hi Bruno in this article your title is Reading and updating Mbo's attributes but ı think you explained Reading and setting Mbo's attributes
    ı mean how can I update one record or can I? for example MboSetRemote assetMboSet = session.getMboSet("ASSET");
    assetMboSet.setOrderBy("ASSETNUM");
    assetMboSet.setWhere("LOCATION='BEDFORD'");

    MboRemote assetMbo;
    for(int j=0; ((assetMbo = assetMboSet.getMbo(j)) != null); j++)
    {
    assetMbo.setValue("DESCRIPTION", "New description");

    }
    Can I?

    ReplyDelete