It's all about the answers!

Ask a question

How to get dependent enumaration?


pugazhenthi samidurai (26423942) | asked Apr 17 '12, 8:14 a.m.
Hi,

i have found the solution for fetching dependent enumation.

Let me know how to pass configuration value to this function.



public List<Identifier<extends>> getValueSet(IAttribute attribute, IWorkItem workItem, IWorkItemCommon workItemCommon, IConfiguration configuration, IProgressMonitor monitor) throws TeamRepositoryException {
if (workItem == null) {
List<extends> literals= workItemCommon.resolveEnumeration(attribute, monitor).getEnumerationLiterals();
List<Identifier<extends>> identifiers= new ArrayList<Identifier<extends>>();
for (ILiteral l: literals) {
identifiers.add(l.getIdentifier2());
}
return identifiers;
}

IAttribute filterAttribute= findFilterAttribute(attribute, workItem, workItemCommon, configuration, monitor);

if (filterAttribute == null) {
throw new IllegalArgumentException(NLS.bind(Messages.getString("FilteringValueSetProvider.FILTER_ATTRIBUTE_NOT_DEFINED"), workItem.getId(), attribute.getDisplayName())); //$NON-NLS-1$
}
if (!workItem.hasAttribute(filterAttribute)) {
throw new IllegalStateException(NLS.bind(Messages.getString("FilteringValueSetProvider.FILTER_ATTRIBUTE_NOT_FOUND"), workItem.getId(), attribute.getDisplayName())); //$NON-NLS-1$
}

Object filterValue= workItem.getValue(filterAttribute);
if (filterValue instanceof Identifier<?>) {
filterValue= ((Identifier<?>) filterValue).getStringIdentifier();
}
final IEnumeration<extends> enumeration= workItemCommon.resolveEnumeration(attribute, monitor);
if (enumeration == null) {
throw new IllegalStateException(NLS.bind(Messages.getString("FilteringValueSetProvider.ENUMERATION_OF_FILTER_ATTRIBUTE_NOT_FOUND"), workItem.getId(), attribute.getDisplayName())); //$NON-NLS-1$
}

AttributeType attributeType= AttributeTypes.getAttributeType(attribute.getAttributeType());

List<String> literalIds= ValueProviderUtil.getMappedLiterals(configuration, (String) filterValue);
List<ILiteral> literals= new ArrayList<ILiteral>();
for (String literalId: literalIds) {
ILiteral lit= enumeration.findEnumerationLiteral((Identifier<extends>)attributeType.valueOf(literalId, null));
if (lit != null) {
literals.add(lit);
}
}
Collections.sort(literals, new Comparator<ILiteral>() {
public int compare(ILiteral o1, ILiteral o2) {
return enumeration.getEnumerationLiterals().indexOf(o1) - enumeration.getEnumerationLiterals().indexOf(o2);
}
});
List<Identifier<extends>> filteredValues= new ArrayList<Identifier<extends>>();
for (ILiteral lit: literals) {
filteredValues.add(lit.getIdentifier2());
}
return filteredValues;
}

2 answers



permanent link
Ralph Schoon (63.1k33645) | answered Apr 17 '12, 9:55 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
Thanks for sharing!

permanent link
pugazhenthi samidurai (26423942) | answered Apr 18 '12, 12:23 a.m.
Hi,

find the solution for calling above get value method.

IWorkItem workItem1 = null;

ProviderConfiguration providerConfiguration= ((WorkItemCommon) workItemCommon).getProviderConfiguration(attribute, monitor);
IConfiguration configuration= providerConfiguration != null ? providerConfiguration.getValueSetProviderConfiguration() : null;

List<ILiteral> test= obj.getValueSet(attribute,workItem1,workItemCommon,configuration,monitor,getEnumarationLiteral(filterid,filterValue).getStringIdentifier());

Thanks,
Pugazh

Your answer


Register or to post your answer.


Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.