Re: [SDO] questions about support for Enumeration facet

2008-01-10 Thread kelvin goodson
Amita,
   thanks for the patches.  I've had a good look,  but still haven't made up
my mind which way to go.  First off is I think that you should not have
different test cases in your patches.  I believe the test case should always
test for 3 enumerations,  and the patch using the commons.sdo#Strings type
approach should be shown to fail.  This is my preferred approach if it can
be made to work.  I was digging down to see if this is an EMF bug,  but have
not proved it yet.  I was hoping to show that EcoreUtil's encoding for
Strings to String is not always the inverse of it's own String to Strings
mapping,  but we don't seem to use EcoreUtil for both directions of the
mapping.  I may adopt the alternative patsh as a tactical approach,  and
mark the code to keep a handle on the issue,  but I'd like to investigate a
bit further before I make that choice.

Kelvin.

On 10/01/2008, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
>
> Please see the 2 patches attached to JIRA-1360 and give comments.
>
> Regards,
> Amita
>
> On Jan 1, 2008 4:11 PM, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
>
> > Hi Kelvin,
> > Yes , below is the change I tried to see to make a Property of type
> > Strings, in DataObjectUtil -
> >
> >   protected static Property getGlobalProperty(HelperContext hc, String
> > uri, String name)
> >   {
> > Property property;
> > if (ExtendedMetaData.ANNOTATION_URI.equals(uri)) {
> >   if ("minExclusive".equals(name) ||...
> >   "enumeration".equals(name) ||
> >   "pattern".equals(name))
> >   {
> >   if("enumeration".equals(name) || "pattern".equals(name)) {
> >   property = SDOUtil.createOpenContentProperty(hc, uri,
> name,
> > ((ModelFactoryImpl)ModelFactory.INSTANCE).getStrings());
> >   } else {
> >   property = SDOUtil.createOpenContentProperty(hc, uri,
> name,
> > ((ModelFactoryImpl)ModelFactory.INSTANCE).getString());
> >   }
> >   }
> >   else
> >   {
> > property = null;
> >   }
> > }
> > else
> > {
> >   property = hc.getTypeHelper().getOpenContentProperty(uri, name);
> >   if (property == null)
> >   {
> > property = SDOUtil.createOpenContentProperty(hc, uri, name,
> > ((ModelFactoryImpl)ModelFactory.INSTANCE).getString());
> >   }
> > }
> > return property;
> >   }
> >
> > Regards,
> > Amita
> >
> >
> > On Dec 21, 2007 4:31 PM, kelvin goodson <[EMAIL PROTECTED] >
> > wrote:
> >
> > > Amita,
> > >  I'm a little unclear what you have changed.  Have you altered the
> > > enumeration facet Property type to commonj.sdo.{Strings}?
> > > Regards, Kelvin.
> > >
> > > On 21/12/2007, Amita Vadhavkar <[EMAIL PROTECTED] > wrote:
> > > >
> > > > This looks quite easy with one small difference in the behavior -
> > > >
> > > > For enum like below -
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > >
> > > > 1) below returns size as 3 i.e. conuts for the null value
> > > >   if(metaObject instanceof EDataTypeImpl){
> > > >   System.out.println("metaObject instance of EDataTypeImpl");
> > > >   if( property.getName().equals("enumeration")) {
> > > >   System.out.println
> > > >
> > >
> (((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet());
> > > >   List enumVals =
> > > >
> > >
> ((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet();
> > > >   System.out.println("enum size from
> > > **EMF**"+enumVals.size());
> > > >   }
> > > >   }
> > > >
> > > > 2) whereas below returns size as 2, i.e. does not count for null
> > > > result = SDOUtil.createFromString (getInstanceProperty(type,
> > > > "enumeration").getType(), type.get(getInstanceProperty(type,
> > > > "enumeration")).toString());
> > > > System.out.println("Frank:enumeration"+result+", result
> > > > type:"+result.getClass().getName()+", size-"+ ((java.util.ArrayList
> > > > )result).size());
> > > >
> > > > in 2) the EMF call is made to EcoreUtil.createFromString
> > > > ((EDataType)dataType,
> > > > literal);
> > > > and assumed that DataObjectUtil.getGlobalProperty() checks for enum
> > > and
> > > > does
> > > > SDOUtil.createOpenContentProperty() for Strings.
> > > >
> > > > Suggestions?
> > > >
> > > > Regards,
> > > > Amita
> > > >
> > > > On Dec 17, 2007 4:10 PM, kelvin goodson <[EMAIL PROTECTED]>
> > > wrote:
> > > >
> > > > > Amita,
> > > > >
> > > > >   I think Frank's note in this thread is key to the solution,  in
> > > that
> > > > the
> > > > > line ...
> > > > > return SDOUtil.createFromString(property.getType(), value);
> > > > > will create a List if the type of the Property is set to "
> > > > > commonj.sdo{Strings}"
> > > > >
> > > > >
> > > > > Regards, Kelvin.
> > > > >
> > > > >
> > > > > On 14/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
> > > > > >
> > > > > > Tried to do little more analysis to see what is the way to reach
> > > > > > ExtendedMetadata 

Re: [SDO] questions about support for Enumeration facet

2008-01-10 Thread Amita Vadhavkar
Please see the 2 patches attached to JIRA-1360 and give comments.

Regards,
Amita

On Jan 1, 2008 4:11 PM, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:

> Hi Kelvin,
> Yes , below is the change I tried to see to make a Property of type
> Strings, in DataObjectUtil -
>
>   protected static Property getGlobalProperty(HelperContext hc, String
> uri, String name)
>   {
> Property property;
> if (ExtendedMetaData.ANNOTATION_URI.equals(uri)) {
>   if ("minExclusive".equals(name) ||...
>   "enumeration".equals(name) ||
>   "pattern".equals(name))
>   {
>   if("enumeration".equals(name) || "pattern".equals(name)) {
>   property = SDOUtil.createOpenContentProperty(hc, uri, name,
> ((ModelFactoryImpl)ModelFactory.INSTANCE).getStrings());
>   } else {
>   property = SDOUtil.createOpenContentProperty(hc, uri, name,
> ((ModelFactoryImpl)ModelFactory.INSTANCE).getString());
>   }
>   }
>   else
>   {
> property = null;
>   }
> }
> else
> {
>   property = hc.getTypeHelper().getOpenContentProperty(uri, name);
>   if (property == null)
>   {
> property = SDOUtil.createOpenContentProperty(hc, uri, name,
> ((ModelFactoryImpl)ModelFactory.INSTANCE).getString());
>   }
> }
> return property;
>   }
>
> Regards,
> Amita
>
>
> On Dec 21, 2007 4:31 PM, kelvin goodson <[EMAIL PROTECTED] >
> wrote:
>
> > Amita,
> >  I'm a little unclear what you have changed.  Have you altered the
> > enumeration facet Property type to commonj.sdo.{Strings}?
> > Regards, Kelvin.
> >
> > On 21/12/2007, Amita Vadhavkar <[EMAIL PROTECTED] > wrote:
> > >
> > > This looks quite easy with one small difference in the behavior -
> > >
> > > For enum like below -
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > >
> > > 1) below returns size as 3 i.e. conuts for the null value
> > >   if(metaObject instanceof EDataTypeImpl){
> > >   System.out.println("metaObject instance of EDataTypeImpl");
> > >   if( property.getName().equals("enumeration")) {
> > >   System.out.println
> > >
> > (((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet());
> > >   List enumVals =
> > >
> > ((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet();
> > >   System.out.println("enum size from
> > **EMF**"+enumVals.size());
> > >   }
> > >   }
> > >
> > > 2) whereas below returns size as 2, i.e. does not count for null
> > > result = SDOUtil.createFromString (getInstanceProperty(type,
> > > "enumeration").getType(), type.get(getInstanceProperty(type,
> > > "enumeration")).toString());
> > > System.out.println("Frank:enumeration"+result+", result
> > > type:"+result.getClass().getName()+", size-"+ ((java.util.ArrayList
> > > )result).size());
> > >
> > > in 2) the EMF call is made to EcoreUtil.createFromString
> > > ((EDataType)dataType,
> > > literal);
> > > and assumed that DataObjectUtil.getGlobalProperty() checks for enum
> > and
> > > does
> > > SDOUtil.createOpenContentProperty() for Strings.
> > >
> > > Suggestions?
> > >
> > > Regards,
> > > Amita
> > >
> > > On Dec 17, 2007 4:10 PM, kelvin goodson <[EMAIL PROTECTED]>
> > wrote:
> > >
> > > > Amita,
> > > >
> > > >   I think Frank's note in this thread is key to the solution,  in
> > that
> > > the
> > > > line ...
> > > > return SDOUtil.createFromString(property.getType(), value);
> > > > will create a List if the type of the Property is set to "
> > > > commonj.sdo{Strings}"
> > > >
> > > >
> > > > Regards, Kelvin.
> > > >
> > > >
> > > > On 14/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
> > > > >
> > > > > Tried to do little more analysis to see what is the way to reach
> > > > > ExtendedMetadata from DataObjectUtil. Please see the findings
> > below.
> > > > >
> > > > > DataObjectUtil.getMetaObjectInstanceProperty (EModelElement,
> > Property)
> > > > can
> > > > > be
> > > > > reached from
> > > > > AttributeImpl(EAttributeImpl), ClassImpl(EClassImpl),
> > > > > DataTypeImpl(EDataTypeImpl), ReferenceImpl(EReferenceImpl).
> > > > >
> > > > > Below is the inheritance for EAttributeImpl -
> > > > > java.lang.Object
> > > > >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> > > > >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> > > > >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> > > > >   extended by
> > org.eclipse.emf.ecore.impl.FlatEObjectImpl
> > > > >   extended by
> > > > > org.eclipse.emf.ecore.impl.EModelElementImpl**
> > > > >   extended by
> > > > > org.eclipse.emf.ecore.impl.ENamedElementImpl
> > > > >   extended by
> > > > > org.eclipse.emf.ecore.impl.ETypedElementImpl
> > > > >   extended by
> > > > > org.eclipse.emf.ecore.impl.EStructuralFeatureImpl
> > > > >   extended b

Re: [SDO] questions about support for Enumeration facet

2008-01-01 Thread Amita Vadhavkar
Hi Kelvin,
Yes , below is the change I tried to see to make a Property of type Strings,
in DataObjectUtil -

  protected static Property getGlobalProperty(HelperContext hc, String uri,
String name)
  {
Property property;
if (ExtendedMetaData.ANNOTATION_URI.equals(uri)) {
  if ("minExclusive".equals(name) ||...
  "enumeration".equals(name) ||
  "pattern".equals(name))
  {
  if("enumeration".equals(name) || "pattern".equals(name)) {
  property = SDOUtil.createOpenContentProperty(hc, uri, name,
((ModelFactoryImpl)ModelFactory.INSTANCE).getStrings());
  } else {
  property = SDOUtil.createOpenContentProperty(hc, uri, name,
((ModelFactoryImpl)ModelFactory.INSTANCE).getString());
  }
  }
  else
  {
property = null;
  }
}
else
{
  property = hc.getTypeHelper().getOpenContentProperty(uri, name);
  if (property == null)
  {
property = SDOUtil.createOpenContentProperty(hc, uri, name,
((ModelFactoryImpl)ModelFactory.INSTANCE).getString());
  }
}
return property;
  }

Regards,
Amita

On Dec 21, 2007 4:31 PM, kelvin goodson <[EMAIL PROTECTED]> wrote:

> Amita,
>  I'm a little unclear what you have changed.  Have you altered the
> enumeration facet Property type to commonj.sdo.{Strings}?
> Regards, Kelvin.
>
> On 21/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
> >
> > This looks quite easy with one small difference in the behavior -
> >
> > For enum like below -
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> >
> > 1) below returns size as 3 i.e. conuts for the null value
> >   if(metaObject instanceof EDataTypeImpl){
> >   System.out.println("metaObject instance of EDataTypeImpl");
> >   if(property.getName().equals("enumeration")) {
> >   System.out.println
> >
> (((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet());
> >   List enumVals =
> > ((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet();
> >   System.out.println("enum size from **EMF**"+enumVals.size());
> >   }
> >   }
> >
> > 2) whereas below returns size as 2, i.e. does not count for null
> > result = SDOUtil.createFromString(getInstanceProperty(type,
> > "enumeration").getType(), type.get(getInstanceProperty(type,
> > "enumeration")).toString());
> > System.out.println("Frank:enumeration"+result+", result
> > type:"+result.getClass().getName()+", size-"+ ((java.util.ArrayList
> > )result).size());
> >
> > in 2) the EMF call is made to EcoreUtil.createFromString
> > ((EDataType)dataType,
> > literal);
> > and assumed that DataObjectUtil.getGlobalProperty() checks for enum and
> > does
> > SDOUtil.createOpenContentProperty() for Strings.
> >
> > Suggestions?
> >
> > Regards,
> > Amita
> >
> > On Dec 17, 2007 4:10 PM, kelvin goodson <[EMAIL PROTECTED]>
> wrote:
> >
> > > Amita,
> > >
> > >   I think Frank's note in this thread is key to the solution,  in that
> > the
> > > line ...
> > > return SDOUtil.createFromString(property.getType(), value);
> > > will create a List if the type of the Property is set to "
> > > commonj.sdo{Strings}"
> > >
> > >
> > > Regards, Kelvin.
> > >
> > >
> > > On 14/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
> > > >
> > > > Tried to do little more analysis to see what is the way to reach
> > > > ExtendedMetadata from DataObjectUtil. Please see the findings below.
> > > >
> > > > DataObjectUtil.getMetaObjectInstanceProperty(EModelElement,
> Property)
> > > can
> > > > be
> > > > reached from
> > > > AttributeImpl(EAttributeImpl), ClassImpl(EClassImpl),
> > > > DataTypeImpl(EDataTypeImpl), ReferenceImpl(EReferenceImpl).
> > > >
> > > > Below is the inheritance for EAttributeImpl -
> > > > java.lang.Object
> > > >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> > > >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> > > >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> > > >   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
> > > >   extended by
> > > > org.eclipse.emf.ecore.impl.EModelElementImpl**
> > > >   extended by
> > > > org.eclipse.emf.ecore.impl.ENamedElementImpl
> > > >   extended by
> > > > org.eclipse.emf.ecore.impl.ETypedElementImpl
> > > >   extended by
> > > > org.eclipse.emf.ecore.impl.EStructuralFeatureImpl
> > > >   extended by
> > > > org.eclipse.emf.ecore.impl.EAttributeImpl
> > > >
> > > > Below is the inheritance for EClassImpl -
> > > > java.lang.Object
> > > >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> > > >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> > > >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> > > >   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
> > > >   exte

Re: [SDO] questions about support for Enumeration facet

2007-12-21 Thread kelvin goodson
Amita,
  I'm a little unclear what you have changed.  Have you altered the
enumeration facet Property type to commonj.sdo.{Strings}?
Regards, Kelvin.

On 21/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
>
> This looks quite easy with one small difference in the behavior -
>
> For enum like below -
> 
> 
> 
> 
> 
> 
> 
>
> 1) below returns size as 3 i.e. conuts for the null value
>   if(metaObject instanceof EDataTypeImpl){
>   System.out.println("metaObject instance of EDataTypeImpl");
>   if(property.getName().equals("enumeration")) {
>   System.out.println
> (((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet());
>   List enumVals =
> ((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet();
>   System.out.println("enum size from **EMF**"+enumVals.size());
>   }
>   }
>
> 2) whereas below returns size as 2, i.e. does not count for null
> result = SDOUtil.createFromString(getInstanceProperty(type,
> "enumeration").getType(), type.get(getInstanceProperty(type,
> "enumeration")).toString());
> System.out.println("Frank:enumeration"+result+", result
> type:"+result.getClass().getName()+", size-"+ ((java.util.ArrayList
> )result).size());
>
> in 2) the EMF call is made to EcoreUtil.createFromString
> ((EDataType)dataType,
> literal);
> and assumed that DataObjectUtil.getGlobalProperty() checks for enum and
> does
> SDOUtil.createOpenContentProperty() for Strings.
>
> Suggestions?
>
> Regards,
> Amita
>
> On Dec 17, 2007 4:10 PM, kelvin goodson <[EMAIL PROTECTED]> wrote:
>
> > Amita,
> >
> >   I think Frank's note in this thread is key to the solution,  in that
> the
> > line ...
> > return SDOUtil.createFromString(property.getType(), value);
> > will create a List if the type of the Property is set to "
> > commonj.sdo{Strings}"
> >
> >
> > Regards, Kelvin.
> >
> >
> > On 14/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
> > >
> > > Tried to do little more analysis to see what is the way to reach
> > > ExtendedMetadata from DataObjectUtil. Please see the findings below.
> > >
> > > DataObjectUtil.getMetaObjectInstanceProperty(EModelElement, Property)
> > can
> > > be
> > > reached from
> > > AttributeImpl(EAttributeImpl), ClassImpl(EClassImpl),
> > > DataTypeImpl(EDataTypeImpl), ReferenceImpl(EReferenceImpl).
> > >
> > > Below is the inheritance for EAttributeImpl -
> > > java.lang.Object
> > >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> > >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> > >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> > >   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
> > >   extended by
> > > org.eclipse.emf.ecore.impl.EModelElementImpl**
> > >   extended by
> > > org.eclipse.emf.ecore.impl.ENamedElementImpl
> > >   extended by
> > > org.eclipse.emf.ecore.impl.ETypedElementImpl
> > >   extended by
> > > org.eclipse.emf.ecore.impl.EStructuralFeatureImpl
> > >   extended by
> > > org.eclipse.emf.ecore.impl.EAttributeImpl
> > >
> > > Below is the inheritance for EClassImpl -
> > > java.lang.Object
> > >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> > >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> > >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> > >   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
> > >   extended by
> > > org.eclipse.emf.ecore.impl.EModelElementImpl**
> > >   extended by
> > > org.eclipse.emf.ecore.impl.ENamedElementImpl
> > >   extended by
> > > org.eclipse.emf.ecore.impl.EClassifierImpl
> > >   extended by
> > > org.eclipse.emf.ecore.impl.EClassImpl
> > >
> > > Below is the inheritance for EDataTypeImpl -
> > > java.lang.Object
> > >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> > >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> > >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> > >   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
> > >   extended by
> > > org.eclipse.emf.ecore.impl.EModelElementImpl**
> > >   extended by
> > > org.eclipse.emf.ecore.impl.ENamedElementImpl
> > >   extended by
> > > org.eclipse.emf.ecore.impl.EClassifierImpl
> > >   extended by
> > > org.eclipse.emf.ecore.impl.EDataTypeImpl
> > >
> > > Below is the inheritance for EReferenceImpl -
> > > java.lang.Object
> > >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> > >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> > >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> > >   extended by org.eclipse.

Re: [SDO] questions about support for Enumeration facet

2007-12-21 Thread Amita Vadhavkar
This looks quite easy with one small difference in the behavior -

For enum like below -








1) below returns size as 3 i.e. conuts for the null value
  if(metaObject instanceof EDataTypeImpl){
  System.out.println("metaObject instance of EDataTypeImpl");
  if(property.getName().equals("enumeration")) {
  System.out.println
(((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet());
  List enumVals =
((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet();
  System.out.println("enum size from **EMF**"+enumVals.size());
  }
  }

2) whereas below returns size as 2, i.e. does not count for null
result = SDOUtil.createFromString(getInstanceProperty(type,
"enumeration").getType(), type.get(getInstanceProperty(type,
"enumeration")).toString());
System.out.println("Frank:enumeration"+result+", result
type:"+result.getClass().getName()+", size-"+ ((java.util.ArrayList
)result).size());

in 2) the EMF call is made to EcoreUtil.createFromString((EDataType)dataType,
literal);
and assumed that DataObjectUtil.getGlobalProperty() checks for enum and does
SDOUtil.createOpenContentProperty() for Strings.

Suggestions?

Regards,
Amita

On Dec 17, 2007 4:10 PM, kelvin goodson <[EMAIL PROTECTED]> wrote:

> Amita,
>
>   I think Frank's note in this thread is key to the solution,  in that the
> line ...
> return SDOUtil.createFromString(property.getType(), value);
> will create a List if the type of the Property is set to "
> commonj.sdo{Strings}"
>
>
> Regards, Kelvin.
>
>
> On 14/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
> >
> > Tried to do little more analysis to see what is the way to reach
> > ExtendedMetadata from DataObjectUtil. Please see the findings below.
> >
> > DataObjectUtil.getMetaObjectInstanceProperty(EModelElement, Property)
> can
> > be
> > reached from
> > AttributeImpl(EAttributeImpl), ClassImpl(EClassImpl),
> > DataTypeImpl(EDataTypeImpl), ReferenceImpl(EReferenceImpl).
> >
> > Below is the inheritance for EAttributeImpl -
> > java.lang.Object
> >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> >   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EModelElementImpl**
> >   extended by
> > org.eclipse.emf.ecore.impl.ENamedElementImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.ETypedElementImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EStructuralFeatureImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EAttributeImpl
> >
> > Below is the inheritance for EClassImpl -
> > java.lang.Object
> >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> >   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EModelElementImpl**
> >   extended by
> > org.eclipse.emf.ecore.impl.ENamedElementImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EClassifierImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EClassImpl
> >
> > Below is the inheritance for EDataTypeImpl -
> > java.lang.Object
> >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> >   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EModelElementImpl**
> >   extended by
> > org.eclipse.emf.ecore.impl.ENamedElementImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EClassifierImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EDataTypeImpl
> >
> > Below is the inheritance for EReferenceImpl -
> > java.lang.Object
> >   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
> >   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
> >   extended by org.eclipse.emf.ecore.impl.EObjectImpl
> >   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EModelElementImpl**
> >   extended by
> > org.eclipse.emf.ecore.impl.ENamedElementImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.ETypedElementImpl
> >   extended by
> > org.eclipse.emf.ecore.impl.EStructuralFeatureImpl
> >   extended by
> > or

Re: [SDO] questions about support for Enumeration facet

2007-12-17 Thread kelvin goodson
Amita,

   I think Frank's note in this thread is key to the solution,  in that the
line ...
return SDOUtil.createFromString(property.getType(), value);
will create a List if the type of the Property is set to "
commonj.sdo{Strings}"


Regards, Kelvin.


On 14/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
>
> Tried to do little more analysis to see what is the way to reach
> ExtendedMetadata from DataObjectUtil. Please see the findings below.
>
> DataObjectUtil.getMetaObjectInstanceProperty(EModelElement, Property) can
> be
> reached from
> AttributeImpl(EAttributeImpl), ClassImpl(EClassImpl),
> DataTypeImpl(EDataTypeImpl), ReferenceImpl(EReferenceImpl).
>
> Below is the inheritance for EAttributeImpl -
> java.lang.Object
>   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
>   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
>   extended by org.eclipse.emf.ecore.impl.EObjectImpl
>   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
>   extended by
> org.eclipse.emf.ecore.impl.EModelElementImpl**
>   extended by
> org.eclipse.emf.ecore.impl.ENamedElementImpl
>   extended by
> org.eclipse.emf.ecore.impl.ETypedElementImpl
>   extended by
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl
>   extended by
> org.eclipse.emf.ecore.impl.EAttributeImpl
>
> Below is the inheritance for EClassImpl -
> java.lang.Object
>   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
>   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
>   extended by org.eclipse.emf.ecore.impl.EObjectImpl
>   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
>   extended by
> org.eclipse.emf.ecore.impl.EModelElementImpl**
>   extended by
> org.eclipse.emf.ecore.impl.ENamedElementImpl
>   extended by
> org.eclipse.emf.ecore.impl.EClassifierImpl
>   extended by
> org.eclipse.emf.ecore.impl.EClassImpl
>
> Below is the inheritance for EDataTypeImpl -
> java.lang.Object
>   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
>   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
>   extended by org.eclipse.emf.ecore.impl.EObjectImpl
>   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
>   extended by
> org.eclipse.emf.ecore.impl.EModelElementImpl**
>   extended by
> org.eclipse.emf.ecore.impl.ENamedElementImpl
>   extended by
> org.eclipse.emf.ecore.impl.EClassifierImpl
>   extended by
> org.eclipse.emf.ecore.impl.EDataTypeImpl
>
> Below is the inheritance for EReferenceImpl -
> java.lang.Object
>   extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
>   extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
>   extended by org.eclipse.emf.ecore.impl.EObjectImpl
>   extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
>   extended by
> org.eclipse.emf.ecore.impl.EModelElementImpl**
>   extended by
> org.eclipse.emf.ecore.impl.ENamedElementImpl
>   extended by
> org.eclipse.emf.ecore.impl.ETypedElementImpl
>   extended by
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl
>   extended by
> org.eclipse.emf.ecore.impl.EReferenceImpl
>
> In this heirarchy,  DataObjectUtil.getMetaObjectInstanceProperty() sticks
> to
> EModelElementImpl as is it common in all these 4 cases.
> But in case of EDataTypeImpl there is further hierarchy which is useful
> when
> it comes to facets - which is EClassifierImpl.
> EClassifierImpl has getExtendedMetaData() returning
> BasicExtendedMetaData.EClassifierExtendedMetaData. This one has all the
> methods
> for getting different facet informations like - java.util.List<
> java.lang.String> getEnumerationFacet() , int getMinLengthFacet()
> and so on.
>
> So a way out to get the enum facet value as a list can be - in
> DataObjectUtil.getMetaObjectInstanceProperty() - do as below -
>
>   if(metaObject instanceof EDataTypeImpl/EClassifierImpl){
>   if(property.getName().equals("enumeration")) {
>   List enumVals =
> ((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet();
>   return enumVals;
>   }
>   }
>
> Same can be the way to get value of "getPatternFacet() as this is the only
> other facet which returns a list" (ref
> emfBasicExtendedMetaData.EClassifierExtendedMetaData).
>
> For all other facets as they return a single value, the current SDO code
> may
> be enough {OR for all facets on EDataTypeImpl, we can
> reach ((EDataTypeImpl)metaObject).getExtendedMetaData() and call
> patricular
> getFacet methods, not sure if this is required - suggestions?}
>
> DataObjectUti

Re: [SDO] questions about support for Enumeration facet

2007-12-14 Thread Amita Vadhavkar
Tried to do little more analysis to see what is the way to reach
ExtendedMetadata from DataObjectUtil. Please see the findings below.

DataObjectUtil.getMetaObjectInstanceProperty(EModelElement, Property) can be
reached from
AttributeImpl(EAttributeImpl), ClassImpl(EClassImpl),
DataTypeImpl(EDataTypeImpl), ReferenceImpl(EReferenceImpl).

Below is the inheritance for EAttributeImpl -
java.lang.Object
  extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
  extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
  extended by org.eclipse.emf.ecore.impl.EObjectImpl
  extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
  extended by org.eclipse.emf.ecore.impl.EModelElementImpl**
  extended by
org.eclipse.emf.ecore.impl.ENamedElementImpl
  extended by
org.eclipse.emf.ecore.impl.ETypedElementImpl
  extended by
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl
  extended by
org.eclipse.emf.ecore.impl.EAttributeImpl

Below is the inheritance for EClassImpl -
java.lang.Object
  extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
  extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
  extended by org.eclipse.emf.ecore.impl.EObjectImpl
  extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
  extended by org.eclipse.emf.ecore.impl.EModelElementImpl**
  extended by
org.eclipse.emf.ecore.impl.ENamedElementImpl
  extended by
org.eclipse.emf.ecore.impl.EClassifierImpl
  extended by
org.eclipse.emf.ecore.impl.EClassImpl

Below is the inheritance for EDataTypeImpl -
java.lang.Object
  extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
  extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
  extended by org.eclipse.emf.ecore.impl.EObjectImpl
  extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
  extended by org.eclipse.emf.ecore.impl.EModelElementImpl**
  extended by
org.eclipse.emf.ecore.impl.ENamedElementImpl
  extended by
org.eclipse.emf.ecore.impl.EClassifierImpl
  extended by
org.eclipse.emf.ecore.impl.EDataTypeImpl

Below is the inheritance for EReferenceImpl -
java.lang.Object
  extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
  extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
  extended by org.eclipse.emf.ecore.impl.EObjectImpl
  extended by org.eclipse.emf.ecore.impl.FlatEObjectImpl
  extended by org.eclipse.emf.ecore.impl.EModelElementImpl**
  extended by
org.eclipse.emf.ecore.impl.ENamedElementImpl
  extended by
org.eclipse.emf.ecore.impl.ETypedElementImpl
  extended by
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl
  extended by
org.eclipse.emf.ecore.impl.EReferenceImpl

In this heirarchy,  DataObjectUtil.getMetaObjectInstanceProperty() sticks to
EModelElementImpl as is it common in all these 4 cases.
But in case of EDataTypeImpl there is further hierarchy which is useful when
it comes to facets - which is EClassifierImpl.
EClassifierImpl has getExtendedMetaData() returning
BasicExtendedMetaData.EClassifierExtendedMetaData. This one has all the
methods
for getting different facet informations like - java.util.List<
java.lang.String> getEnumerationFacet() , int getMinLengthFacet()
and so on.

So a way out to get the enum facet value as a list can be - in
DataObjectUtil.getMetaObjectInstanceProperty() - do as below -

  if(metaObject instanceof EDataTypeImpl/EClassifierImpl){
  if(property.getName().equals("enumeration")) {
  List enumVals =
((EDataTypeImpl)metaObject).getExtendedMetaData().getEnumerationFacet();
  return enumVals;
  }
  }

Same can be the way to get value of "getPatternFacet() as this is the only
other facet which returns a list" (ref
emfBasicExtendedMetaData.EClassifierExtendedMetaData).

For all other facets as they return a single value, the current SDO code may
be enough {OR for all facets on EDataTypeImpl, we can
reach ((EDataTypeImpl)metaObject).getExtendedMetaData() and call patricular
getFacet methods, not sure if this is required - suggestions?}

DataObjectUtil.getMetaObjectInstanceProperties() can remain unchanged.

With the above change in DataObjectUtil.getMetaObjectInstanceProperty(), we
can add a new method in SDOUtil -

public static List getEnumerationFacet(Type type) {
   Property enumProperty = getInstanceProperty(type, "enumeration");
   return DataObjectUtil.getMetaObjectInstanceProperty(type, enumProperty);
}

This way for a DataTypeImpl enum facet values will come out as a List.
Please give suggestions.
I can open another JIRA and fix patternFacet too in same

Re: [SDO] questions about support for Enumeration facet

2007-12-12 Thread kelvin goodson
By the way, until the wiki has been used to update the websitre then the FAQ
can be seen at

http://cwiki.apache.org/confluence/display/TUSCANY/Tuscany+SDO+Java+-+FAQ

Kelvin.

On 12/12/2007, kelvin goodson <[EMAIL PROTECTED]> wrote:
>
> It occurred to me that there's a bit of a knack to debugging into EMF
> code,  so I just wrote an FAQ to describe how to do this.  Comments are
> welcome on its clarity or accuracy.
>
> Regards, Kelvin.
>
> On 11/12/2007, kelvin goodson <[EMAIL PROTECTED]> wrote:
> >
> > Amita,
> >
> > It feels like option 1 is the easy way to do things, and option 2 is the
> > right way given the introduction of instance properties on metadata provided
> > for this purpose (but doesn't currently work).
> >
> > Here's the results of my digging around.  Let's start with what I found
> > last since it might prove to be the answer.  It seems highly likely to be
> > so,  but there is more thinking to be done.  So after quite a bit of digging
> > to see how things are handled in EMF I saw the TODO in DataObjectUtil 
> >
> >   public static Object getMetaObjectInstanceProperty(EModelElement
> > metaObject, Property property)
> >   {
> > String value = EcoreUtil.getAnnotation(metaObject,
> > property.getContainingType().getURI(), property.getName ());
> > //TODO if (property.isMany()) ... // create list of values from from
> > string
> > return SDOUtil.createFromString(property.getType(), value);
> >   }
> >
> > So there's a couple of things I haven't got my head round yet that
> > perhaps you could take a look at since I must divert my attention for a
> > while.  The first is that the instance Property for the Type's enumeration
> > is isMany = false.  So even if we handled the TODO we wouldn't get the
> > desired result.  The second is that we must ensure a generic string
> > tokenizer here,  but I'm not yet confident that the tokenizing that we want
> > to satisfy the current issue would be the same for all Properties.  What I
> > mean by this is that for the example you give,  it starts with the separator
> > "space" indicating that the first literal that should be returned from
> > tokenizing is the empty string.  Would this be true for all Property values,
> > or is it the case that sometimes we would consider trimming leading white
> > space?
> >
> > I had been going down a track of investigating storage and retrieval of
> > the enumeration facets inside EMF,  which may yet prove to be the way to fix
> > this issue.  The facets seem to be stored in two ways.  Once as an
> > annotation on the metadata artifact directly, in concatenated string form,
> > and once as a vector on the extended metadata associated with the eDataType
> > (See setEnumerationFacet(EDataType,List) of BasicExtendedMetaData.  The bulk
> > of code in setEnumerationFacet is devoted to concatenating the string
> > literals and hanging the annotation on the eDataType (Type),  but the last
> > line then squirrels the original input vector of enumerations away on the
> > extended metadata.
> >
> > Now there is a basicGetEnumerationFacet method on the nested class
> > EDataTypeExtendedMetaDataImpl,  which is contained in BasicExtendedMetaData
> > which has all the reverse logic for unpacking the vector of enumerations
> > from the concatenated string,  but it never gets called in the scenario you
> > described.  Given the piece of code I included above, that wouldn't work
> > anyway, given the EcoreUtil .getAnnotation returns a single String.
> >
> > I don't have a solution yet,  but I'll think on it.  Any suggestions you
> > may have are welcome.
> >
> > Regards, Kelvin.
> >
> >
> >
> >
> >
> > On 11/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
> > >
> > > 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 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 It

Re: [SDO] questions about support for Enumeration facet

2007-12-12 Thread kelvin goodson
It occurred to me that there's a bit of a knack to debugging into EMF code,
so I just wrote an FAQ to describe how to do this.  Comments are welcome on
its clarity or accuracy.

Regards, Kelvin.

On 11/12/2007, kelvin goodson <[EMAIL PROTECTED]> wrote:
>
> Amita,
>
> It feels like option 1 is the easy way to do things, and option 2 is the
> right way given the introduction of instance properties on metadata provided
> for this purpose (but doesn't currently work).
>
> Here's the results of my digging around.  Let's start with what I found
> last since it might prove to be the answer.  It seems highly likely to be
> so,  but there is more thinking to be done.  So after quite a bit of digging
> to see how things are handled in EMF I saw the TODO in DataObjectUtil 
>
>   public static Object getMetaObjectInstanceProperty(EModelElement
> metaObject, Property property)
>   {
> String value = EcoreUtil.getAnnotation(metaObject,
> property.getContainingType().getURI(), property.getName ());
> //TODO if (property.isMany()) ... // create list of values from from
> string
> return SDOUtil.createFromString(property.getType(), value);
>   }
>
> So there's a couple of things I haven't got my head round yet that perhaps
> you could take a look at since I must divert my attention for a while.  The
> first is that the instance Property for the Type's enumeration is isMany =
> false.  So even if we handled the TODO we wouldn't get the desired result.
> The second is that we must ensure a generic string tokenizer here,  but I'm
> not yet confident that the tokenizing that we want to satisfy the current
> issue would be the same for all Properties.  What I mean by this is that for
> the example you give,  it starts with the separator "space" indicating that
> the first literal that should be returned from tokenizing is the empty
> string.  Would this be true for all Property values, or is it the case that
> sometimes we would consider trimming leading white space?
>
> I had been going down a track of investigating storage and retrieval of
> the enumeration facets inside EMF,  which may yet prove to be the way to fix
> this issue.  The facets seem to be stored in two ways.  Once as an
> annotation on the metadata artifact directly, in concatenated string form,
> and once as a vector on the extended metadata associated with the eDataType
> (See setEnumerationFacet(EDataType,List) of BasicExtendedMetaData.  The bulk
> of code in setEnumerationFacet is devoted to concatenating the string
> literals and hanging the annotation on the eDataType (Type),  but the last
> line then squirrels the original input vector of enumerations away on the
> extended metadata.
>
> Now there is a basicGetEnumerationFacet method on the nested class
> EDataTypeExtendedMetaDataImpl,  which is contained in BasicExtendedMetaData
> which has all the reverse logic for unpacking the vector of enumerations
> from the concatenated string,  but it never gets called in the scenario you
> described.  Given the piece of code I included above, that wouldn't work
> anyway, given the EcoreUtil .getAnnotation returns a single String.
>
> I don't have a solution yet,  but I'll think on it.  Any suggestions you
> may have are welcome.
>
> Regards, Kelvin.
>
>
>
>
>
> On 11/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
> >
> > 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 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 separa

Re: [SDO] questions about support for Enumeration facet

2007-12-11 Thread kelvin goodson
Amita,

It feels like option 1 is the easy way to do things, and option 2 is the
right way given the introduction of instance properties on metadata provided
for this purpose (but doesn't currently work).

Here's the results of my digging around.  Let's start with what I found last
since it might prove to be the answer.  It seems highly likely to be so,
but there is more thinking to be done.  So after quite a bit of digging to
see how things are handled in EMF I saw the TODO in DataObjectUtil 

  public static Object getMetaObjectInstanceProperty(EModelElement
metaObject, Property property)
  {
String value = EcoreUtil.getAnnotation(metaObject,
property.getContainingType().getURI(), property.getName());
//TODO if (property.isMany()) ... // create list of values from from
string
return SDOUtil.createFromString(property.getType(), value);
  }

So there's a couple of things I haven't got my head round yet that perhaps
you could take a look at since I must divert my attention for a while.  The
first is that the instance Property for the Type's enumeration is isMany =
false.  So even if we handled the TODO we wouldn't get the desired result.
The second is that we must ensure a generic string tokenizer here,  but I'm
not yet confident that the tokenizing that we want to satisfy the current
issue would be the same for all Properties.  What I mean by this is that for
the example you give,  it starts with the separator "space" indicating that
the first literal that should be returned from tokenizing is the empty
string.  Would this be true for all Property values, or is it the case that
sometimes we would consider trimming leading white space?

I had been going down a track of investigating storage and retrieval of the
enumeration facets inside EMF,  which may yet prove to be the way to fix
this issue.  The facets seem to be stored in two ways.  Once as an
annotation on the metadata artifact directly, in concatenated string form,
and once as a vector on the extended metadata associated with the eDataType
(See setEnumerationFacet(EDataType,List) of BasicExtendedMetaData.  The bulk
of code in setEnumerationFacet is devoted to concatenating the string
literals and hanging the annotation on the eDataType (Type),  but the last
line then squirrels the original input vector of enumerations away on the
extended metadata.

Now there is a basicGetEnumerationFacet method on the nested class
EDataTypeExtendedMetaDataImpl,  which is contained in BasicExtendedMetaData
which has all the reverse logic for unpacking the vector of enumerations
from the concatenated string,  but it never gets called in the scenario you
described.  Given the piece of code I included above, that wouldn't work
anyway, given the EcoreUtil .getAnnotation returns a single String.

I don't have a solution yet,  but I'll think on it.  Any suggestions you may
have are welcome.

Regards, Kelvin.





On 11/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
>
> 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 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
> 
> 
> 
> 
> 
> 
> 
>
> 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
>
> -

Re: [SDO] questions about support for Enumeration facet

2007-12-11 Thread Frank Budinsky
I think it should be isMany=false but of type "commonj.sdo{Strings}". Then 
get() or getList() would return List. Only getString() would 
convert to the space-separated value we're returning today.

Frank.

[EMAIL PROTECTED] wrote on 12/11/2007 06:44:22 AM:

> Hi Amita,
> 
>   thanks for looking at this.  I'm a bit surprised, on digging a little 
way
> in, that the enumeration Property is isMany==false.  I'll dig a bit
> further,  but I had expected to be able to find the Property named
> enumeration and get a list of entries.
> 
> Kelvin.
> 
> On 11/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
> >
> > 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 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
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> >
> > 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
> >


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [SDO] questions about support for Enumeration facet

2007-12-11 Thread kelvin goodson
Hi Amita,

  thanks for looking at this.  I'm a bit surprised, on digging a little way
in, that the enumeration Property is isMany==false.  I'll dig a bit
further,  but I had expected to be able to find the Property named
enumeration and get a list of entries.

Kelvin.

On 11/12/2007, Amita Vadhavkar <[EMAIL PROTECTED]> wrote:
>
> 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 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
> 
> 
> 
> 
> 
> 
> 
>
> 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
>