Hi,
I tried TUSCANY-1360 related to enumeration facet. Below is the summary of
what was
discussed so far and a few questions.
-------------------------------------------------------------------------------------------------------------------------------------
1) One way to do this is -
public static List<String> getEnumerationFacet(Type type) {
    return ExtendedMetaData.INSTANCE.getEnumerationFacet((EDataType)type);
}

which works very straight forward and gives a list of enums.
-------------------------------------------------------------------------------------------------------------------------------------
2) Another way is -
Do type.getInstanceProperties() and find the Property called "enumeration".

Where, getInstanceProperties() calls
DataObjectUtil.getMetaObjectInstanceProperties(EModelElement metaObject)
in which for the given metaObject its annotations and details of each
annotations are traversed. Each
Annotation Detail is mapped to EStringToStringMapEntryImpl entry like below
-

EStringToStringMapEntryImpl entry =
(EStringToStringMapEntryImpl)iter.next();   //iter is Iterator over current
Annotation's Details
String propertyName = entry.getTypedKey();

Property globalProperty = getGlobalProperty(hc, propertyURI, propertyName);
if (globalProperty != null)
{
   result.add(globalProperty);
}

Result is a UniqueEList which is returned at the end.

Here, when entry.getTypedKey() is "enumeration", entry.getTypedValue() gives
a String having space separated enums

e.g. for
<simpleType name="ExampleRating">
    <restriction base="string">
        <enumeration value=""/>
        <enumeration value="Good"/>
        <enumeration value="Bad"/>
    </restriction>
</simpleType>

it gives,"   Good Bad"

As we see in Property globalProperty = getGlobalProperty(hc, propertyURI,
propertyName); the TypedKey information is
used when forming Property with name "enumeration", but the TypedValue
information is not stored in the Property.
Same thing will be applicable for other facets like MinLenght,
MaxExclusive....
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Questions:

Thus, the question I have is, in case of following 2), what will be the way
to preserve the mapping (key-value)
information available about facets from EMF in the formed Property? And what
will be better approach for TUSCANY-1360
and as such for any other facets?

Regards,
Amita

Reply via email to