Get the Attributes of an Asset Dynamically -

Dermot Butterfield - 06 September 2015

tl;dr

Get the Attributes of an Asset Dynamically

It has often proven useful to gain access to the asset definition so as to access all the attributes of an asset.  In the example below I am looking for the attributes of asset of type MyAddressAsset which has an asset definition called MyAddressDefinition.

I create and instance of the AssetTypeDefManager called assetDefManager and pass it a reference to ics which is the same ics used in ics.GetVar("").   This allows us to create an instance of AssetTypeDef called assetDef.  To create an AssetTypeDef instance we need to specify the asset type and asset definition.  I have called these fatAssetType, fatAssetDefinition respectively.

Using the getAttributeDefs() method of the AssetTypeDef instance assetDef, we retrieve a Java List of all the attributes associate with that asset.
This list can then be iterated (here we use a for loop for clarity but a list iterator is just as valid) and the attributes retrieved. In the example below we print the attribute name each on a new line.  What you do with this is up to you.

String fatAssetType = "MyAddressAsset";
String fatAssetDefinition = "MyAddressDefinition";

//Gets instance of the asset definition manager
AssetTypeDefManager assetDefManager = new AssetTypeDefManagerImpl(ics);  
//Gets fatwire asset type by asset name and definition
AssetTypeDef assetDef = assetDefManager.findByName(fatAssetType, fatAssetDefinition); 

List attrDefsList = assetDef.getAttributeDefs();     
         
for (int i=0; i<attrDefsList.size(); i++) {
	AttributeDef def = (AttributeDef)attrDefsList.get(i);
	out.println("<br />" + ics.GetVar(def.getName()));
}

You may notice that some of the common attributes are returned along with the custom attributes of the FatWire asset definition.  These can be filtered out using the isMetaDataAttribute() method of the returned attribute.  The updated for loop is below.

for (int i=0; i<attrDefsList.size(); i++) {
	AttributeDef def = (AttributeDef)attrDefsList.get(i);
	if (!def.isMetaDataAttribute()) { //only show user created attributes
		out.println("<br />" + ics.GetVar(def.getName()));
	}
}

Contact Us

I hope you found this useful or if you have any questions don't hesitate to leave a comment or contact support[@]tomred[.]net

Articles

Java

This what I have spent most of my time working in over the years and these are the little bits of logic or snippets I have come across. Some of these are things I have needed to search for or I have found I needed to feedback on code reviews.

Oracle WebCenter (FatWire)

During my time working in consulting I was tasked many times with delivering FatWire sites. I took notes due to the lack of useful documentation at the time. These are the results of those notes made and shared.

CSS HTML JS

I believe the majority of time on a project is spent with the UI. Web is no exception. I have compiled a set of articles covering HTML, CSS and JS with the intention of taking the sting out of this work.

DevOps

A space dedicated to all those things you need to know beyond writing code. This covers Linux, Windows, Git and SVN among other hopefully useful nuggets.

Security

I picked up some pointers over the years consulting for government and banking sectors before entering a PCI DSS development environment. This section covers aspects like coding, testing, code review and best practice.

Apps

Apps is a section which offers access to bits and pieces I have put together over the last few years. This includes Random Password Generator and Base64 Encoder.