Inactivating a List Value
I’m having a hard time inactivating a list value and get far with the Agile API guide and this site, so I’m hoping someone else knows who could help. To put it simply, given the Simple List and the values to inactivate, set list children to Inactive.
//I can get the list like so:
IAdmin admin = session.getAdminInstance();
IListLibrary listLib = admin.getListLibrary();
IAdminList list = listLib.getAdminList(“Selection List for 28760”)
//I can add a list value called ‘Pluto’ just fine
IAgileList listchildren = list.getValues()
listchildren.addChild(“Pluto”, “APInamePluto”)
list.setValues(listchildren)
//but then trying to inactivate it, nothing happens:
listchildren.setObsolete(true)
Does anyone know what I am missing?
Thank you Karthik and Antonio.
It looks like I eventually got it. Antonio is partially incorrect as the way to set a list value to Inactive because rather it is quite similar to how you would add a new list value.
Borrowing from what Karthik wrote, I experimented and got this to finally work, though I didn’t see your last comment until just now.
IAgileList listchildren = list.getValues()
IAgileList[] arr =(IAgileList[]) listchildren.getChildren();
arr.each{ listentry ->
if (value == “Neptune”) {
listentry.setObsolete(true) }
listchildren.addChild(listentry) }
list.setValues(listchildren)
You can Interact with the agile list properties only wrapping it as AdminList:
IAdminList adminList = list.getAdminList();
adminList.enable(false);
the setObsolete is valid only if you try to inactivate a single list entry (the same interface) like “Pluto” and cannot be used to the entire list
Oh, I am referring to inactivate a specific list value. I was already able to inactivate an entire list, but am struggling to inactivate a particular list value via API.
For instance, say I was going to inactivate a list value called “Neptune”, found in the adminList, how would I go about doing that? I’ve had little success even after following the API user guide.
Namely, this does not work:
IAdminList list = listLib.getAdminList(“Selection List for 28760”)
IAgileList listchildren = list.getValues()
listchildren.addChild(“Neptune”)
listchildren.setObsolete(true)
Sorry I though the opposite.
If you call addChild, you are not pointing on the just added element but on the list itself. So the setObsolete is called on the list itself in your code (and therefore doesn’t work)
For that it is quite easy. When you call list.addChild(“Neptune”) the API returns the just added value (an IAgileList …). So you have to call setObsolete on this new one and not on the original list.
Example:
IAgileList neptune = (IAgileList) listchildren.addChild(“Neptune”)
neptune.setObsolete(true);
If any question you can check the sdk docs where this is explained quite well:
https://docs.oracle.com/cd/E17287_04/otn/pdf/integration/E17315_01.pdf
Hi Matt,
Please try the below code. It sets all the list values to inactive.
IAdmin admin=session.getAdminInstance();
IListLibrary listLibrary=admin.getListLibrary();
IAdminList adminlist = listLibrary.getAdminList(“Product Line”);
IAgileList values = adminlist.getValues();
IAgileList[] arr=(IAgileList[]) values.getChildren();
for(int i=0;i