Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Configuration for Tables(How to tell Teneo to go to this particular table and save)
Configuration for Tables [message #634139] Wed, 20 October 2010 15:50 Go to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
<?xml version="1.0" encoding="utf-8"?>
<persistence-mapping xmlns="http://www.eclipse.org/emft/teneo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<epackage
namespace-uri=" http://www.eclipse.org/emf/teneo/hibernate/examples/extlibra ry">
<eclass name="Library">
<table name="theLibraryTable"/>
</eclass>
</epackage>
</persistence-mapping>


Above was the in the example.

I want to know

A) How to configure for the existing tables? Is there any Teneo configuration
file, i have gone through wiki, but could not find means to configure it.

B) If it is inheritance, how to do that? As the below link , does not mention
where to put it ?

http://wiki.eclipse.org/Teneo/Hibernate/ModelRelational/Tene o_Annotation_Examples#Inheritance_and_Discriminator_Annotati ons

C) Does this ie
<epackage
namespace-uri=" http://www.eclipse.org/emf/teneo/hibernate/examples/extlibra ry">

can be used other projects too, if not , what can be uri. or which way to have xml as we have in classic hibernate ie hbm?

D) Does Teneo store everything as String ? If so, do we need to have mapper
class or some utility.
[Teneo]Re: Configuration for Tables [message #634176 is a reply to message #634139] Wed, 20 October 2010 16:01 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
Comments inline.

gr. Martin

On 10/20/2010 05:50 PM, tenor wrote:
> <?xml version="1.0" encoding="utf-8"?>
> <persistence-mapping xmlns="http://www.eclipse.org/emft/teneo"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>
> <epackage
> namespace-uri=" http://www.eclipse.org/emf/teneo/hibernate/examples/extlibra ry">
>
> <eclass name="Library">
> <table name="theLibraryTable"/>
> </eclass>
> </epackage>
> </persistence-mapping>
>
> Above was the in the example.
>
> I want to know
>
> A) How to configure for the existing tables? Is there any Teneo
> configuration
> file, i have gone through wiki, but could not find means to configure it.
MT>> the example above showed how to influence the mapping logic through a separate xml document. Another way is to add
annotations in the ecore model itself (see the wiki for some examples).
If you have existing tables then you need to manually map them to the model using the xml-approach you show above or
through annotations, Teneo does not automatically support so-called meet-in-the-middle approaches, so manual I am afraid.

>
> B) If it is inheritance, how to do that? As the below link , does not
> mention
> where to put it ?
>
> http://wiki.eclipse.org/Teneo/Hibernate/ModelRelational/Tene o_Annotation_Examples#Inheritance_and_Discriminator_Annotati ons
MT>> the example shows how to specify/override the inheritance mapping through annotations in the xsd or through a
separate xml file, the annotations in the xsd can also be applied to the ecore model.
See also here:
http://wiki.eclipse.org/Teneo/Hibernate/ModelRelational/Inhe ritance_Mapping

>
>
> C) Does this ie
> <epackage
> namespace-uri=" http://www.eclipse.org/emf/teneo/hibernate/examples/extlibra ry">
>
>
> can be used other projects too, if not , what can be uri. or which way
> to have xml as we have in classic hibernate ie hbm?
MT>> I am not sure what your question is..., can you elaborate a bit?

>
> D) Does Teneo store everything as String ? If so, do we need to have mapper
> class or some utility.
MT>> no, teneo tries to map type specific, you can also use custom types if you need those:

http://wiki.eclipse.org/Teneo/Hibernate/ModelRelational/Asso ciation_Mapping#Storing_external_references_.28to_non-persis ted_objects.29.2C_customizing_persisting_references
http://wiki.eclipse.org/Teneo/Hibernate/ModelRelational/Tene o_Annotation_Examples

>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo]Re: Configuration for Tables [message #634589 is a reply to message #634176] Fri, 22 October 2010 10:58 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
I have added as

props.setProperty("teneo.mapping.extra_annotation_sources", "annotations.xml");
to read annotations.xml , but somehow it is not reading it.

Please guide how to make aware to Teneo to read the custom mapping file and if need be override some of teneo features?

Thanks.
Re: [Teneo]Re: Configuration for Tables [message #634591 is a reply to message #634589] Fri, 22 October 2010 11:18 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
You should use this property: teneo.mapping.persistence_xml
The annotations file is read as a resource/classpath resource, so you need to make sure that it is present in the build
output folder. If you use a plugin then it must be specified in the build.properties of the plugin also.

I always forget the syntax but I think the correct syntax (if the file is in the top of the build folder is):
props.setProperty("teneo.mapping.persistence_xml", "/annotations.xml");

gr. Martin

On 10/22/2010 12:58 PM, tenor wrote:
> I have added as
>
> props.setProperty("teneo.mapping.extra_annotation_sources",
> "annotations.xml");
> to read annotations.xml , but somehow it is not reading it.
>
> Please guide how to make aware to Teneo to read the custom mapping file
> and if need be override some of teneo features?
>
> Thanks.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo]Re: Configuration for Tables [message #634647 is a reply to message #634591] Fri, 22 October 2010 15:00 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
Thanks , i managed to hit the table, but there is a problem.

As my Asset object directly extends Eobject so while trying to save Asset object(by just having one field ie AssetId), it pulls e_version, edtype etc from Eobject.
It Results in ORACLE, table or view not found error!!
I even tried different Inheritance strategy(only 3) but that does not help!

How to instruct Teneo NOT to pull the base object ?

Thanks.
Re: [Teneo]Re: Configuration for Tables [message #634654 is a reply to message #634647] Fri, 22 October 2010 15:35 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
It is not pulling the base object. Teneo adds these fields as they are needed for Hibernate to work at its best. To get
the least extra intruisive columns set these options:
* use inheritance strategy joined: set option teneo.mapping.inheritance to "JOINED"
* teneo.mapping.always_version to "false" (note: you won't have Hibernate optimistic locking then)
* teneo.mapping.disable_econtainer to "false"

To read about the meaning of this last option, read this wiki page:
http://wiki.eclipse.org/Teneo/Hibernate/ModelRelational/Asso ciation_Mapping#Storing_container_relation

gr. Martin

On 10/22/2010 05:00 PM, tenor wrote:
> Thanks , i managed to hit the table, but there is a problem.
>
> As my Asset object directly extends Eobject so while trying to save
> Asset object(by just having one field ie AssetId), it pulls e_version,
> edtype etc from Eobject.
> It Results in ORACLE, table or view not found error!!
> I even tried different Inheritance strategy(only 3) but that does not help!
>
> How to instruct Teneo NOT to pull the base object ?
>
> Thanks.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: [Teneo]Re: Configuration for Tables [message #634666 is a reply to message #634654] Fri, 22 October 2010 16:12 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
Now getting this error ie

Hibernate: insert into "osp_am_asset" ("id", e_id) values (?, ?)


This needs to be done
props.setProperty("teneo.naming.default_id_column", " ");

Though played around with it, but it does not help!
What gives way?

Thanks.
Re: Configuration for Tables [message #634810 is a reply to message #634139] Sat, 23 October 2010 22:02 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
I get e_id error if i dont do

props.setProperty("teneo.naming.default_id_column", " ");

Hibernate: insert into "osp_am_asset" ("id", e_id) values (?, ?)

if i do
i run into



log4j:WARN No appenders could be found for logger (org.eclipse.emf.teneo.hibernate.HbHelper).
log4j:WARN Please initialize the log4j system properly.
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Documents%20and%20Settings/kumarae/Desktop/lib /slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder. class]
SLF4J: Found binding in [jar:file:/C:/Documents%20and%20Settings/kumarae/Desktop/lib /slf4j-nop-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.clas s]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at org.hibernate.mapping.Column.setName(Column.java:84)
at org.hibernate.cfg.HbmBinder.bindColumns(HbmBinder.java:1089)
at org.hibernate.cfg.HbmBinder.bindColumnsOrFormula(HbmBinder.j ava:1547)
at org.hibernate.cfg.HbmBinder.bindSimpleValue(HbmBinder.java:1 143)
at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:413)
at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonVal ues(HbmBinder.java:356)
at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:295 )
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:166)
at org.hibernate.cfg.Configuration.add(Configuration.java:716)
at org.hibernate.cfg.Configuration.addXML(Configuration.java:48 7)
at org.eclipse.emf.teneo.hibernate.HbSessionDataStore.mapModel( HbSessionDataStore.java:200)
at org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ e(HbSessionDataStore.java:82)
at com.ses.osp.am.external.persist.TeneoHibernateTest.main(Tene oHibernateTest.java:59)


How to solve this dilemma ?

what is the fundamental with e_id, if i donot have it or my schema does not allow it.
Re: Configuration for Tables [message #634811 is a reply to message #634810] Sat, 23 October 2010 22:09 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
You need at least one attribute in your model class annotated with @Id
else Teneo will create e_id.

Tom

Am 24.10.10 00:02, schrieb tenor:
> I get e_id error if i dont do
> props.setProperty("teneo.naming.default_id_column", " ");
>
> Hibernate: insert into "osp_am_asset" ("id", e_id) values (?, ?)
>
> if i do
> i run into
>
>
>
> log4j:WARN No appenders could be found for logger
> (org.eclipse.emf.teneo.hibernate.HbHelper).
> log4j:WARN Please initialize the log4j system properly.
> SLF4J: Class path contains multiple SLF4J bindings.
> SLF4J: Found binding in
> [jar:file:/C:/Documents%20and%20Settings/kumarae/Desktop/lib
> /slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder. class]
> SLF4J: Found binding in
> [jar:file:/C:/Documents%20and%20Settings/kumarae/Desktop/lib
> /slf4j-nop-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.clas s]
> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
> explanation.
> Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
> String index out of range: 0
> at java.lang.String.charAt(Unknown Source)
> at org.hibernate.mapping.Column.setName(Column.java:84)
> at org.hibernate.cfg.HbmBinder.bindColumns(HbmBinder.java:1089)
> at org.hibernate.cfg.HbmBinder.bindColumnsOrFormula(HbmBinder.j
> ava:1547)
> at org.hibernate.cfg.HbmBinder.bindSimpleValue(HbmBinder.java:1 143)
> at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:413)
> at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonVal
> ues(HbmBinder.java:356)
> at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:295 )
> at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:166)
> at org.hibernate.cfg.Configuration.add(Configuration.java:716)
> at org.hibernate.cfg.Configuration.addXML(Configuration.java:48 7)
> at org.eclipse.emf.teneo.hibernate.HbSessionDataStore.mapModel(
> HbSessionDataStore.java:200)
> at org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ
> e(HbSessionDataStore.java:82)
> at com.ses.osp.am.external.persist.TeneoHibernateTest.main(Tene
> oHibernateTest.java:59)
>
> How to solve this dilemma ?
>
> what is the fundamental with e_id, if i donot have it or my schema does
> not allow it.
>
Re: Configuration for Tables [message #634812 is a reply to message #634810] Sat, 23 October 2010 22:10 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Teneo will create a default id column if you don't flag any of the model efeatures as being the id of an eclass/entity.
The default id column name is set using this property. I would not set it at a space that won't work (most databases
can't handle column names which are just a space...)...

In any case it is best to flag one of your efeatures of your model (per eclass) as being the id/primary key, You do this
using the @Id annotation. If you create a model from scratch then I would create a supereclass which contains the id and
version efeature and let the other eclasses inherit from it.

gr. Martin

On 10/24/2010 12:02 AM, tenor wrote:
> I get e_id error if i dont do
> props.setProperty("teneo.naming.default_id_column", " ");
>
> Hibernate: insert into "osp_am_asset" ("id", e_id) values (?, ?)
>
> if i do
> i run into
>
>
>
> log4j:WARN No appenders could be found for logger
> (org.eclipse.emf.teneo.hibernate.HbHelper).
> log4j:WARN Please initialize the log4j system properly.
> SLF4J: Class path contains multiple SLF4J bindings.
> SLF4J: Found binding in
> [jar:file:/C:/Documents%20and%20Settings/kumarae/Desktop/lib
> /slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder. class]
> SLF4J: Found binding in
> [jar:file:/C:/Documents%20and%20Settings/kumarae/Desktop/lib
> /slf4j-nop-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.clas s]
> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
> explanation.
> Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
> String index out of range: 0
> at java.lang.String.charAt(Unknown Source)
> at org.hibernate.mapping.Column.setName(Column.java:84)
> at org.hibernate.cfg.HbmBinder.bindColumns(HbmBinder.java:1089)
> at org.hibernate.cfg.HbmBinder.bindColumnsOrFormula(HbmBinder.j ava:1547)
> at org.hibernate.cfg.HbmBinder.bindSimpleValue(HbmBinder.java:1 143)
> at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:413)
> at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonVal
> ues(HbmBinder.java:356)
> at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:295 )
> at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:166)
> at org.hibernate.cfg.Configuration.add(Configuration.java:716)
> at org.hibernate.cfg.Configuration.addXML(Configuration.java:48 7)
> at org.eclipse.emf.teneo.hibernate.HbSessionDataStore.mapModel(
> HbSessionDataStore.java:200)
> at org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ
> e(HbSessionDataStore.java:82)
> at com.ses.osp.am.external.persist.TeneoHibernateTest.main(Tene
> oHibernateTest.java:59)
>
> How to solve this dilemma ?
>
> what is the fundamental with e_id, if i donot have it or my schema does
> not allow it.
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Configuration for Tables [message #634815 is a reply to message #634812] Sat, 23 October 2010 22:35 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
You should add that one should annotate the supereclass with
@MappedSuperclass.

Tom

Am 24.10.10 00:10, schrieb Martin Taal:
> Teneo will create a default id column if you don't flag any of the model
> efeatures as being the id of an eclass/entity. The default id column
> name is set using this property. I would not set it at a space that
> won't work (most databases can't handle column names which are just a
> space...)...
>
> In any case it is best to flag one of your efeatures of your model (per
> eclass) as being the id/primary key, You do this using the @Id
> annotation. If you create a model from scratch then I would create a
> supereclass which contains the id and version efeature and let the other
> eclasses inherit from it.
>
> gr. Martin
>
> On 10/24/2010 12:02 AM, tenor wrote:
>> I get e_id error if i dont do
>> props.setProperty("teneo.naming.default_id_column", " ");
>>
>> Hibernate: insert into "osp_am_asset" ("id", e_id) values (?, ?)
>>
>> if i do
>> i run into
>>
>>
>>
>> log4j:WARN No appenders could be found for logger
>> (org.eclipse.emf.teneo.hibernate.HbHelper).
>> log4j:WARN Please initialize the log4j system properly.
>> SLF4J: Class path contains multiple SLF4J bindings.
>> SLF4J: Found binding in
>> [jar:file:/C:/Documents%20and%20Settings/kumarae/Desktop/lib
>> /slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder. class]
>> SLF4J: Found binding in
>> [jar:file:/C:/Documents%20and%20Settings/kumarae/Desktop/lib
>> /slf4j-nop-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.clas s]
>> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
>> explanation.
>> Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
>> String index out of range: 0
>> at java.lang.String.charAt(Unknown Source)
>> at org.hibernate.mapping.Column.setName(Column.java:84)
>> at org.hibernate.cfg.HbmBinder.bindColumns(HbmBinder.java:1089)
>> at org.hibernate.cfg.HbmBinder.bindColumnsOrFormula(HbmBinder.j ava:1547)
>> at org.hibernate.cfg.HbmBinder.bindSimpleValue(HbmBinder.java:1 143)
>> at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:413)
>> at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonVal
>> ues(HbmBinder.java:356)
>> at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:295 )
>> at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:166)
>> at org.hibernate.cfg.Configuration.add(Configuration.java:716)
>> at org.hibernate.cfg.Configuration.addXML(Configuration.java:48 7)
>> at org.eclipse.emf.teneo.hibernate.HbSessionDataStore.mapModel(
>> HbSessionDataStore.java:200)
>> at org.eclipse.emf.teneo.hibernate.HbSessionDataStore.initializ
>> e(HbSessionDataStore.java:82)
>> at com.ses.osp.am.external.persist.TeneoHibernateTest.main(Tene
>> oHibernateTest.java:59)
>>
>> How to solve this dilemma ?
>>
>> what is the fundamental with e_id, if i donot have it or my schema does
>> not allow it.
>>
>
>
Re: Configuration for Tables [message #634886 is a reply to message #634815] Sun, 24 October 2010 20:58 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
<class name="com.ses.osp.am.external.domain.impl.AssetImpl" entity-name="Asset" abstract="false" lazy="false" table="`osp_am_asset`">
<meta attribute="eclassName" inherit="false">Asset</meta>
<meta attribute="epackage" inherit="false">http:///com/ses/osp/am/external/domain</meta>
<id type="long" name="e_id" column="e_id" access=" org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie rPropertyHandler "> <meta attribute="syntheticId" inherit="false">true</meta>
<generator class="native"/>


That is still coming along though i have

props.setProperty("teneo.mapping.always_version", "false");
props.setProperty("teneo.mapping.disable_econtainer", "true");/ I tried for false too, as you had suggested but that is default but that too has no effect.
props.setProperty("PersistenceOptions.INHERITANCE_MAPPING", "JOINED");
props.setProperty("PersistenceOptions.ID_FEATURE_AS_PRIMARY_KEY ", "false");



http://wiki.eclipse.org/Teneo/Hibernate/Annotations/Teneo_An notation_Examples

I also checked ie

Library.name: has a @Id annotation, the EStructuralFeature is used as the primary key/id by Hibernate.

But i see there only True/False values.

so i fail to understand where to do @Id as you suggest ie , "You do this using the @Id
annotation"

Plz clarify
A) This @Id has to be at model level, but it creates Id interface if i do that.
B) If it has to happen in annotations.xml, how to have it?

Thanks.

[Teneo]Re: Configuration for Tables [message #634938 is a reply to message #634886] Mon, 25 October 2010 07:54 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
Can you prefix the subject with [Teneo] then I won't miss your replies?

See comments inline marked with MT>>


On 10/24/2010 10:58 PM, tenor wrote:
> <class name="com.ses.osp.am.external.domain.impl.AssetImpl"
> entity-name="Asset" abstract="false" lazy="false" table="`osp_am_asset`">
> <meta attribute="eclassName" inherit="false">Asset</meta>
> <meta attribute="epackage"
> inherit="false">http:///com/ses/osp/am/external/domain</meta>
> <id type="long" name="e_id" column="e_id" access="
> org.eclipse.emf.teneo.hibernate.mapping.identifier.Identifie
> rPropertyHandler "> <meta attribute="syntheticId"
> inherit="false">true</meta>
> <generator class="native"/>
>
> That is still coming along though i have
> props.setProperty("teneo.mapping.always_version", "false");
> props.setProperty("teneo.mapping.disable_econtainer", "true");/ I tried
> for false too, as you had suggested but that is default but that too has
> no effect.
MT>> you need to set this to false if you don't want extra econtainer columns in the database. These are added
dynamically at runtime to the mapping, therefore you won't see them in the generated hbm.

> props.setProperty("PersistenceOptions.INHERITANCE_MAPPING", "JOINED");
> props.setProperty("PersistenceOptions.ID_FEATURE_AS_PRIMARY_KEY ",
> "false");
>
>
>
> http://wiki.eclipse.org/Teneo/Hibernate/Annotations/Teneo_An notation_Examples
>
>
> I also checked ie
>
> Library.name: has a @Id annotation, the EStructuralFeature is used as
> the primary key/id by Hibernate.
>
> But i see there only True/False values.
MT>> Hmm, ha, the example project and wiki are not in sync, I removed this specific remark from the wiki.
To specify that a certain efeature is the id do something like this in xml:
<epackage namespace-uri=" http://www.eclipse.org/emf/teneo/samples/emf/annotations/emb eddedid">

<eclass name="Person">
<property name="name">
<id />
</property>
</eclass>
</epackage>

If you would enter the annotation directly in ecore or the xsd then you would use the @Id annotation.

Did you read this page?
http://wiki.eclipse.org/Teneo/Hibernate/ModelRelational/Anno tations_Format


> so i fail to understand where to do @Id as you suggest ie , "You do this
> using the @Id
> annotation"
>
> Plz clarify A) This @Id has to be at model level, but it creates Id
> interface if i do that.
MT>> An annotation is not the same as an eclass (if that's what you think). Please read this page:
http://wiki.eclipse.org/Teneo/Hibernate/ModelRelational/Anno tations_Format

> B) If it has to happen in annotations.xml, how to have it?
MT>> See above
>
> Thanks.
>
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Teneo [message #634957 is a reply to message #634938] Mon, 25 October 2010 08:47 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
<?xml version="1.0" encoding="utf-8"?>
<persistence-mapping xmlns="http://www.eclipse.org/emft/teneo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<epackage namespace-uri=" http://www.eclipse.org/emf/teneo/samples/emf/annotations/emb eddedid">
<eclass name="Asset">
<!--<table name="OSP_AM_ASSET"/>
--><!--<inheritance>JOINED</inheritance>
--><property name="assetId"><!--
<embedded-id/>
--><id/>
<!--<column name="ID" unique="true" length="25"/>
--></property>
</eclass>
</epackage>

</persistence-mapping>


(I have tried commented out options too)

And I have

props.setProperty("teneo.mapping.persistence_xml", "annotations.xml");
props.setProperty("teneo.mapping.always_version", "false");
props.setProperty("teneo.mapping.disable_econtainer", "false");
props.setProperty("PersistenceOptions.INHERITANCE_MAPPING", "JOINED");
props.setProperty("PersistenceOptions.ID_FEATURE_AS_PRIMARY_KEY ", "false");

But still e_id is coming along !!

Plz help out.
Thanks.
Re: Teneo [message #634961 is a reply to message #634957] Mon, 25 October 2010 09:13 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
The xml is not very readable with all these commented out parts...
Anyway, is the annotations.xml present in the output path, do you see any warning/error in the log?

The e_id can still be there for other eclasses.

gr. Martin

On 10/25/2010 10:47 AM, tenor wrote:
> <?xml version="1.0" encoding="utf-8"?>
> <persistence-mapping xmlns="http://www.eclipse.org/emft/teneo"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>
> <epackage
> namespace-uri=" http://www.eclipse.org/emf/teneo/samples/emf/annotations/emb eddedid">
>
> <eclass name="Asset">
> <!--<table name="OSP_AM_ASSET"/>
> --><!--<inheritance>JOINED</inheritance>
> --><property name="assetId"><!--
> <embedded-id/>
> --><id/>
> <!--<column name="ID" unique="true" length="25"/>
> --></property>
> </eclass>
> </epackage>
>
> </persistence-mapping>
>
> (I have tried commented out options too)
>
> And I have
> props.setProperty("teneo.mapping.persistence_xml", "annotations.xml");
> props.setProperty("teneo.mapping.always_version", "false");
> props.setProperty("teneo.mapping.disable_econtainer", "false");
> props.setProperty("PersistenceOptions.INHERITANCE_MAPPING", "JOINED");
> props.setProperty("PersistenceOptions.ID_FEATURE_AS_PRIMARY_KEY ",
> "false");
>
> But still e_id is coming along !!
>
> Plz help out.
> Thanks.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635006 is a reply to message #634961] Mon, 25 October 2010 12:02 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
This is stack trace and indeed it is on classpath


http://pastebin.com/JPCgX7Aw


<?xml version="1.0" encoding="utf-8"?>
<persistence-mapping xmlns="http://www.eclipse.org/emft/teneo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<epackage
> namespace-uri=" http://www.eclipse.org/emf/teneo/samples/emf/annotations/emb eddedid">

<eclass name="Asset">
<property name="assetId
<id/>
</property>
</eclass>
</epackage>

</persistence-mapping>


If this is not through, we are in serious trouble!!
Thanks.
Re: Teneo [message #635042 is a reply to message #635006] Mon, 25 October 2010 14:13 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
MT

Do you mean to have something like embeddedid in our package ?

Plz clarify.

Thanks.
Re: Teneo [message #635063 is a reply to message #635042] Mon, 25 October 2010 14:46 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
No not embedded-id (why do you think that?)

One thing I noticed in your xml is that you use the namespace uri of the embeddedid package
<epackage namespace-uri=" http://www.eclipse.org/emf/teneo/samples/emf/annotations/emb eddedid">

the namespace-uri should be set to the namespace uri of your epackage, in your case that's
http:///com/ses/osp/am/external/domain

gr. Martin

On 10/25/2010 04:13 PM, tenor wrote:
> MT
>
> Do you mean to have something like embeddedid in our package ?
>
> Plz clarify.
>
> Thanks.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635090 is a reply to message #635063] Mon, 25 October 2010 15:35 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
<?xml version="1.0" encoding="utf-8"?>
<persistence-mapping xmlns="http://www.eclipse.org/emft/teneo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<epackage namespace-uri="http:///com/ses/osp/am/external/domain">
<eclass name="Asset">
<table name="OSP_AM_ASSET"/>
<inheritance>TABLE_PER_CLASS</inheritance>
<property name="assetId">
<column name="ID" unique="true" length="25"/>
</property><!--
eclass>

</epackage>

</persistence-mapping>


Even i have tried with this, it does not help!!
even with putting <id/> too.
What gives way?

Thanks.
Re: Teneo [message #635101 is a reply to message #635090] Mon, 25 October 2010 16:00 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
The correct table (OSP_AM_ASSET) is used?

Setting the column for assetId won't help to prevent e_id from appearing, for that you need to have the <id/> part.

Here is a description where the e_id comes from:
http://wiki.eclipse.org/Teneo/Hibernate/EMF_Hibernate_Integr ation_Details#Synthetic_ID_and_Version_properties

Can you debug the code?
If so, you need to set a breakpoint in PersistenceMappingBuilder class in line 145 then see if the system enters the
if-statement and reads the file.

Btw, the xml you pasted below contains a <!-- without a closing comment-tag, but it may be a copy-paste error...

gr. Martrin

On 10/25/2010 05:35 PM, tenor wrote:
> <?xml version="1.0" encoding="utf-8"?>
> <persistence-mapping xmlns="http://www.eclipse.org/emft/teneo"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>
> <epackage namespace-uri="http:///com/ses/osp/am/external/domain">
> <eclass name="Asset">
> <table name="OSP_AM_ASSET"/>
> <inheritance>TABLE_PER_CLASS</inheritance>
> <property name="assetId">
> <column name="ID" unique="true" length="25"/>
> </property><!--
> eclass>
>
> </epackage>
>
> </persistence-mapping>
>
> Even i have tried with this, it does not help!!
> even with putting <id/> too.
> What gives way?
>
> Thanks.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635120 is a reply to message #635101] Mon, 25 October 2010 16:44 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
sorry for copy/paste .

I have correct table.

I have seen it enters that if part .

where we are goofing up?

Thanks.

Re: Teneo [message #635136 is a reply to message #635120] Mon, 25 October 2010 17:23 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Okay, can you one more time paste the content of the annotations.xml that gets read? (does it have the <id/> part?)

gr. Martin

On 10/25/2010 06:44 PM, tenor wrote:
> sorry for copy/paste .
> I have correct table.
>
> I have seen it enters that if part .
>
> where we are goofing up?
>
> Thanks.
>
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635161 is a reply to message #635090] Mon, 25 October 2010 19:38 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
<?xml version="1.0" encoding="utf-8"?>
<persistence-mapping xmlns="http://www.eclipse.org/emft/teneo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<epackage namespace-uri="http:///com/ses/osp/am/external/domain">
<eclass name="Asset">
<table name="OSP_AM_ASSET"/>
<inheritance>TABLE_PER_CLASS</inheritance>
<property name="assetId">
<id/>
<column name="ID" unique="true" length="25"/>
</property>
eclass>

</epackage>

</persistence-mapping>


and i have no other @Id notation anywhere.
Plz suggest NOT to have e_id .

Thanks.
Re: Teneo [message #635176 is a reply to message #635161] Mon, 25 October 2010 20:39 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hmm, strange, this looks good. Does Asset inherit from another eclass maybe?

gr. Martin

On 10/25/2010 09:38 PM, tenor wrote:
> <?xml version="1.0" encoding="utf-8"?>
> <persistence-mapping xmlns="http://www.eclipse.org/emft/teneo"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>
> <epackage namespace-uri="http:///com/ses/osp/am/external/domain">
> <eclass name="Asset">
> <table name="OSP_AM_ASSET"/>
> <inheritance>TABLE_PER_CLASS</inheritance>
> <property name="assetId">
> <id/>
> <column name="ID" unique="true" length="25"/>
> </property>
> eclass>
>
> </epackage>
>
> </persistence-mapping>
>
> and i have no other @Id notation anywhere.
> Plz suggest NOT to have e_id .
>
> Thanks.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635178 is a reply to message #635176] Mon, 25 October 2010 21:07 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
In our domain, Asset is root object ,just like Addressable example. From Asset, all other model(entity) derives, ie transponder, multiplex etc.

And Asset Extends from EObject, which in turn extends Notifier.

So where to tell, NOT to pull e_id.
Not at machine right now, so looking at grepcode

http://grepcode.com/file/repository.grepcode.com/java/eclips e.org/3.5/org.eclipse.emf/teneo/1.1.0/org/eclipse/emf/teneo/ annotations/mapper/PersistenceMappingBuilder.java#Persistenc eMappingBuilder.buildMapping%28java.lang.String%5B%5D%2Corg. eclipse.emf.teneo.PersistenceOptions%2Corg.eclipse.emf.teneo .extension.ExtensionManager%29


and


http://grepcode.com/file/repository.grepcode.com/java/eclips e.org/3.5/org.eclipse.emf.teneo/hibernate/1.1.0/org/eclipse/ emf/teneo/hibernate/mapping/identifier/IdentifierCacheHandle r.java#IdentifierCacheHandler.getID%28java.lang.Object%29


Does not give clue either?

Does ID need to be set anything, by defaul it is false perhaps. I even toggled it either way but it does not help either!!

Plz suggest.

Thanks.


Re: Teneo [message #635188 is a reply to message #635178] Mon, 25 October 2010 22:05 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
Hmm, ok, can you zip your development project and send it to me (by email), or put it a downloadable location?

gr. Martin

On 10/25/2010 11:07 PM, tenor wrote:
> In our domain, Asset is root object ,just like Addressable example. From
> Asset, all other model(entity) derives, ie transponder, multiplex etc.
>
> And Asset Extends from EObject, which in turn extends Notifier.
>
> So where to tell, NOT to pull e_id.
> Not at machine right now, so looking at grepcode
>
> http://grepcode.com/file/repository.grepcode.com/java/eclips e.org/3.5/org.eclipse.emf/teneo/1.1.0/org/eclipse/emf/teneo/ annotations/mapper/PersistenceMappingBuilder.java#Persistenc eMappingBuilder.buildMapping%28java.lang.String%5B%5D%2Corg. eclipse.emf.teneo.PersistenceOptions%2Corg.eclipse.emf.teneo .extension.ExtensionManager%29
>
>
>
> and
>
>
> http://grepcode.com/file/repository.grepcode.com/java/eclips e.org/3.5/org.eclipse.emf.teneo/hibernate/1.1.0/org/eclipse/ emf/teneo/hibernate/mapping/identifier/IdentifierCacheHandle r.java#IdentifierCacheHandler.getID%28java.lang.Object%29
>
>
>
> Does not give clue either?
>
> Does ID need to be set anything, by defaul it is false perhaps. I even
> toggled it either way but it does not help either!!
>
> Plz suggest.
>
> Thanks.
>
>
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635257 is a reply to message #635188] Tue, 26 October 2010 08:16 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
MT,Thanks, Perhaps i wont be permitted to do that.

But within agreeable limits, let us analyze the "usual suspects"

a) Does ID at each of subclass(Through model), has to be set anything other than default.

b) Just like Library example, which is trying to save Library(as in annotations.xml), i am trying to save Asset(which is equivalent of Addressable), and it is surely reading annotations.xml as if you see earlier pastebin, it is hitting at osp_am_asset.But it says table of view not found, what can be reasons to it, table literally not found or after having found, it is not as per Teneo schema!

c) If i have to live with e_id(it will be huge overhead all along), what is the best way to have it, as i am trying to hit my own table, not in example of library,where it creates tables on the fly(which is ruled out in our scheme of things, ie creating afresh).

Plz guide.

Much Thanks.

Re: Teneo [message #635266 is a reply to message #635257] Tue, 26 October 2010 08:40 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Tenor,
Let me make a small example with 2-3 eclasses which uses an annotations.xml to flag the id efeature. I will zip it up
and send it to you. The example will be a plugin project, you can work with that? Or do you use Teneo using straight jar
files (like in a web app)?

Will probably be end of day before I can send it (I am in central-european time zone).

Other comments below.

On 10/26/2010 10:16 AM, tenor wrote:
> MT,Thanks, Perhaps i wont be permitted to do that.
>
> But within agreeable limits, let us analyze the "usual suspects"
>
> a) Does ID at each of subclass(Through model), has to be set anything
> other than default.
MT>> the id efeature should be defined in the root of the class hierarchy. The disadvantage of a root eclass is that
with SINGLE_TABLE inheritance mapping everything is stored in one table, to prevent this one can annotate the root
eclass with MappedSuperclass (for the meaning of MappedSuperClass see the jpa spec).
>
> b) Just like Library example, which is trying to save Library(as in
> annotations.xml), i am trying to save Asset(which is equivalent of
> Addressable), and it is surely reading annotations.xml as if you see
> earlier pastebin, it is hitting at osp_am_asset.But it says table of
> view not found, what can be reasons to it, table literally not found or
> after having found, it is not as per Teneo schema!
MT>> I assumed that the table is already present, if not then you have to tell Hibernate to automatically create the
table. Another reason could be that the database table are defined using a so-called schema qualifier, if so then
Hibernate has to be told (see the hibernate configuration options) which schema to use.
Also with some databases the default schema of a database user is different than the schema used for the actual table in
the database.

>
> c) If i have to live with e_id(it will be huge overhead all along), what
> is the best way to have it, as i am trying to hit my own table, not in
> example of library,where it creates tables on the fly(which is ruled out
> in our scheme of things, ie creating afresh).
MT>> You don't need to live with e_id, surely not. We will find out what the issue is here. Actually I always advice
people to use explicitly flag the id efeature.

>
> Plz guide.
>
> Much Thanks.
>
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635272 is a reply to message #635266] Tue, 26 October 2010 08:54 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
Many thanks MT.

No i dont use it straight off jar as in web app.
It is our first venture into Teneo and it HAS to work, otherwise whatever we have bidded so far, will be in serious serious trouble!

hmm, so you are not in Holland,was thinking of bumping into you , once there in next year summer. Wink

Thanks a lot.
Re: Teneo [message #635280 is a reply to message #635272] Tue, 26 October 2010 09:06 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
No worries, this should work and if it is not it is a small issue which I can solve easily,
indeed my base in The Netherlands :-)

gr. Martin

On 10/26/2010 10:54 AM, tenor wrote:
> Many thanks MT.
>
> No i dont use it straight off jar as in web app.
> It is our first venture into Teneo and it HAS to work, otherwise
> whatever we have bidded so far, will be in serious serious trouble!
>
> hmm, so you are not in Holland,was thinking of bumping into you , once
> there in next year summer. ;)
>
> Thanks a lot.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635403 is a reply to message #635280] Tue, 26 October 2010 16:31 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
http://pastebin.com/MUJm7YDD

Doing select , it results in so many extra tables and errors, plz clarify.

Thanks.
Re: Teneo [message #635417 is a reply to message #635403] Tue, 26 October 2010 17:24 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
It is incredible what a google search using the error message can do for you:
http://www.google.com/search?sourceid=chrome&client=ubun tu&channel=cs&ie=UTF-8&q=ORA-00972:+identifier+i s+too+long

It will give all the extra knowledge you need to ask more detailed questions...

And then to solve this particular issue set this option:
teneo.naming.max_sql_name_length

to 30
For a short description on this option see this page:
http://wiki.eclipse.org/Teneo/Hibernate/Configuration_Option s

gr. Martin

On 10/26/2010 06:31 PM, tenor wrote:
> http://pastebin.com/MUJm7YDD
>
> Doing select , it results in so many extra tables and errors, plz clarify.
>
> Thanks.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635439 is a reply to message #635417] Tue, 26 October 2010 19:12 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
Thanks for the link, in fact, i was at those links.

select asset0_."ID" as ID1_0_, asset0_."CARRIERID" as CARRIERID3_0_, asset0_."NAME" as NAME4_0_, asset0_."CARRIERTYPE" as CARRIERT5_0_, asset0_."PARENTTRANSPONDERID" as PARENTTR6_0_, asset0_."TRANSPONDER_PARENTTRANSPONDER_ASSETID" as TRANSPON7_0_, asset0_."CARRIERCONTENTID" as CARRIERC8_0_, asset0_."PARENTCARRIERID" as PARENTCA9_0_, asset0_."CARRIERCONTENTTYPE" as CARRIER10_0_, asset0_."CARRIER_PARENTCARRIER_ASSETID" as CARRIER11_0_, asset0_."MULTIPLEXID" as MULTIPL12_0_, asset0_."MAXAVAILABLEBITRATE" as MAXAVAI13_0_, asset0_."ACTUALUSEDTOTALBITRATE" as ACTUALU14_0_, asset0_."ACTUALUNUSEDCAPACITY" as ACTUALU15_0_, asset0_."ACTUALFILLRATEPERCENTAGE" as ACTUALF16_0_, asset0_."COMMERCIALUSEDTOTALBITRATE" as COMMERC17_0_, asset0_."COMMERCIALUNUSEDCAPACITY" as COMMERC18_0_, asset0_."COMMERCIALFILLRATEPERCENTAGE" as COMMERC19_0_, asset0_."STATISTICALMAPPINGS" as STATIST20_0_, asset0_."STARTSID" as STARTSID21_0_, asset0_."ENDSID" as ENDSID22_0_, asset0_."SATELLITEID" as SATELLI23_0_, asset0_."TRANSPONDERID" as TRANSPO24_0_, asset0_."PARENTSATELLITEID" as PARENTS25_0_, asset0_."SATELLITE_PARENTSATELLITE_ASSETID" as SATELLITE26_0_, asset0_.DTYPE as DTYPE0_ from "OSP_AM_ASSET" asset0_ where asset0_."ID"='938901E20EF09913E040EA9E115A391E'


From above, some are sure candidates like

TRANSPONDER_PARENTTRANSPONDER_ASSETID which well goes beyond 30 characters!
From where these are coming as those are not in EMF models!

I NEED to know

a) So many tables are created by Teneo on the fly, just like Addressale example. Do we have to live with that, if NOT, how?

b)If we are turning off so many of EFeatures like e_id, e_version, what are its long term impact? Should we align our table according to EMF model?

c) if so much of Teneo features we need to override, will it be best to point it to hibernate.hbm.xml and work from that onwards? Can we map Ecore models there?

4) What inheritance is best to work with? How we can save only one class in one single table, as it creats whole hierarchy of tables, so if we have 120 tables, is it during save of single model object, we might end up with 150 or so tables eventually. if so, what are pros and cons as we might be needing tables created on the fly.

Plz throw light on 4 Qs.

Much Thanks MT.
Re: Teneo [message #635449 is a reply to message #635439] Tue, 26 October 2010 19:52 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
First, I won't be able to provide an example of the id-annotations this evening, hopefully thursday morning.

For the rest see answers inline.

gr. Martin

On 10/26/2010 09:12 PM, tenor wrote:
> Thanks for the link, in fact, i was at those links.
>
> select asset0_."ID" as ID1_0_, asset0_."CARRIERID" as CARRIERID3_0_,
> asset0_."NAME" as NAME4_0_, asset0_."CARRIERTYPE" as CARRIERT5_0_,
> asset0_."PARENTTRANSPONDERID" as PARENTTR6_0_,
> asset0_."TRANSPONDER_PARENTTRANSPONDER_ASSETID" as TRANSPON7_0_,
> asset0_."CARRIERCONTENTID" as CARRIERC8_0_, asset0_."PARENTCARRIERID" as
> PARENTCA9_0_, asset0_."CARRIERCONTENTTYPE" as CARRIER10_0_,
> asset0_."CARRIER_PARENTCARRIER_ASSETID" as CARRIER11_0_,
> asset0_."MULTIPLEXID" as MULTIPL12_0_, asset0_."MAXAVAILABLEBITRATE" as
> MAXAVAI13_0_, asset0_."ACTUALUSEDTOTALBITRATE" as ACTUALU14_0_,
> asset0_."ACTUALUNUSEDCAPACITY" as ACTUALU15_0_,
> asset0_."ACTUALFILLRATEPERCENTAGE" as ACTUALF16_0_,
> asset0_."COMMERCIALUSEDTOTALBITRATE" as COMMERC17_0_,
> asset0_."COMMERCIALUNUSEDCAPACITY" as COMMERC18_0_,
> asset0_."COMMERCIALFILLRATEPERCENTAGE" as COMMERC19_0_,
> asset0_."STATISTICALMAPPINGS" as STATIST20_0_, asset0_."STARTSID" as
> STARTSID21_0_, asset0_."ENDSID" as ENDSID22_0_, asset0_."SATELLITEID" as
> SATELLI23_0_, asset0_."TRANSPONDERID" as TRANSPO24_0_,
> asset0_."PARENTSATELLITEID" as PARENTS25_0_,
> asset0_."SATELLITE_PARENTSATELLITE_ASSETID" as SATELLITE26_0_,
> asset0_.DTYPE as DTYPE0_ from "OSP_AM_ASSET" asset0_ where
> asset0_."ID"='938901E20EF09913E040EA9E115A391E'
>
>
> From above, some are sure candidates like
>
> TRANSPONDER_PARENTTRANSPONDER_ASSETID which well goes beyond 30 characters!
> From where these are coming as those are not in EMF models!
MT>> Teneo generates names for foreign keys for many-to-one as well as one-to-many (list) associations, although the
above name may come over as being too large, it is one of the nice hidden features that Teneo can do this and does a
fairly good job in generating stable but unique foreign key column names. Generating unique foreign key names is not
trivial taking into account multiple inheritance and that one efeature can end up in many eclasses, also taking into
account that the generated names should not change due to trivial/unrelated model changes.

By setting the max length option (see my previous reply) to 30, you tell Teneo to not generate names longer than 30
characters, there is a danger of name clashes ofcourse then.

>
> I NEED to know
>
> a) So many tables are created by Teneo on the fly, just like Addressale
> example. Do we have to live with that, if NOT, how?
MT>> There can be many tables because:
- as a default Teneo will create a join table for each non-containment single-directional association. This is
controlled by this option:
teneo.mapping.join_table_for_non_contained_associations
setting it to false will result in less tables. Also make sure to read this page:
http://wiki.eclipse.org/Teneo/Hibernate/ModelRelational/Asso ciation_Mapping

Another reason that there can be many tables is because of the inheritance mapping. See my reply below.

>
> b)If we are turning off so many of EFeatures like e_id, e_version, what
> are its long term impact? Should we align our table according to EMF model?
MT>> No not necessarily, turning of e_id is actually an adviced approach! The only reason that e_id is there is to
support tutorial like cases where there is no explicit id efeature, all the applications I have developed and all the
applications I have seen *always* have an explicit id efeature (so no e_id). Disabling the e_version is less nice
because you loose optimistic locking from hibernate, but it is still survivable. Disabling econtainer columns is okay
for many applications which don't have a very deep containment structure.
Teneo offers options for disabling these functions because it makes sense to disable them :-), so I would not say that
disabling these functions is strange at all.
And yes it is easier to let Teneo/Hibernate generate the database schema, but you can also work with your own schema but
then need to map the model to the dbschema.

>
> c) if so much of Teneo features we need to override, will it be best to
> point it to hibernate.hbm.xml and work from that onwards? Can we map
> Ecore models there?
MT>> You can let Teneo generate the hbm and then adapt it manually, but if you change the model you are a bit stuck
because you need to regenerate the hbm and apply the manual changes again. So I would try to do as much possible through
setting options and annotations.

>
> 4) What inheritance is best to work with? How we can save only one class
> in one single table, as it creats whole hierarchy of tables, so if we
> have 120 tables, is it during save of single model object, we might end
> up with 150 or so tables eventually. if so, what are pros and cons as we
> might be needing tables created on the fly.
MT>> I like combing the MappedSuperclass annotation with joined or single table. The following example:
root eclass: Root which has an id-efeature and version efeature
child1 inherits from root
child2 inherits from root

Then with different inheritance mappings:
1- Table-per-class will give you three tables: root, child1 and child2
2- joined will give you also three tables: root, child1 and child2 with child1 and child2 refering to root (which holds
the root efeatures)
3- single table will give you 1 table: root which stores all instances of root, child1 and child2

The first 2 give you more tables, the third gives you in the worst case only one table which stores everything (not nice
either).

Therefore I like the MappedSuperclass approach.

If you annotated the root eclass with MappedSuperclass you get a different result:
both joined and single table will result in 2 tables: child1 and child2

child1 and child2 will both have all efeatures of the root.

So using MappedSuperclass makes it possible to store the class hierarchy in a flattened table structure.


>
> Plz throw light on 4 Qs.
>
> Much Thanks MT.
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635714 is a reply to message #635449] Wed, 27 October 2010 19:32 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
Hope to have sample example . Wink

a) Does it have mapping through Composition as there is serious question being raised about Inheritance mapping as it pulls whole bunch of queries !

b)For composition, if we allow Teneo to generate tables on the fly, what are prerequisites for it, ie do we require

1) a separate xml or
2) say i have asset, satellite and transponder and we should have reference ie Asset asset in Satellite/Elist <Transponder> kind of thing in Ecore models?

Hope such concerns are reflected in your sample example.

Much Thanks. MT.
Re: Teneo [message #635728 is a reply to message #635714] Wed, 27 October 2010 20:31 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
Sorry to limit your expectations, the sample app will only check the id annotation issue. If you want an extensive
sample app covering more scenarios below then I am available on a commercial consulting basis... (just so you know, I
don't get paid for giving support on this forum, neither do other committers..., incredible isn't is as the response
times are often less than an hour, I can hardly believe it myself... ;-)

Other comments below.

gr. Martin

On 10/27/2010 09:32 PM, tenor wrote:
> Hope to have sample example . ;)
>
> a) Does it have mapping through Composition as there is serious question
> being raised about Inheritance mapping as it pulls whole bunch of queries !
MT>> How does composition relate to inheritance mapping? Joined inheritance mapping can result in many joins with deep
hierarchies. That's also why I often propose a combination of MappedSuperclass with single table inheritance mapping.

>
> b)For composition, if we allow Teneo to generate tables on the fly, what
> are prerequisites for it, ie do we require
> 1) a separate xml or
> 2) say i have asset, satellite and transponder and we should have
> reference ie Asset asset in Satellite/Elist <Transponder> kind of thing
> in Ecore models?
MT>> Hmm I don't understand your question I think, I would model composition in the ecore model, hibernate
generates/updates the db schema, you can pass in an existing hbm.xml to Teneo or let Teneo generate the mapping.

>
> Hope such concerns are reflected in your sample example.
>
> Much Thanks. MT.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635732 is a reply to message #635728] Wed, 27 October 2010 21:22 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
Many A Thanks for support. Indebted.

I want to know, as in hibernate

There is 2 approach ie inheritance and composition.

Teneo supports Inheritance, does it support composition too.
If so , where to do composition as in classical POJOs we do by storing reference, properties, ids etc of other POJOs.Does same kind of approach is applicable in Teneo ?

In Any case, we have to live with Spurious table(s) which Teneo schema generates ?As it has impact later on data migration etc.

Thanks MT.
Re: Teneo [message #635737 is a reply to message #635732] Wed, 27 October 2010 21:36 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
Do you mean composition or component? Both are supported by Teneo, the first uses the EMF containment concept, for the
second you have to annotate the association with the relevant jpa annotation.

What are spurious tables?

gr. Martin

On 10/27/2010 11:22 PM, tenor wrote:
> Many A Thanks for support. Indebted.
>
> I want to know, as in hibernate
>
> There is 2 approach ie inheritance and composition.
>
> Teneo supports Inheritance, does it support composition too.
> If so , where to do composition as in classical POJOs we do by storing
> reference, properties, ids etc of other POJOs.Does same kind of approach
> is applicable in Teneo ?
>
> In Any case, we have to live with Spurious table(s) which Teneo schema
> generates ?As it has impact later on data migration etc.
>
> Thanks MT.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635844 is a reply to message #635732] Thu, 28 October 2010 10:49 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------090407060803060202060207
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Here is the test project, works for me. There is one testcase, you can comment out one line to see the mapping without
or with e_id used.
The example both shows how the @Id is set through xml and directly in the model. See the output.txt file in the project
to see what output I get.

gr. Martin

On 10/27/2010 11:22 PM, tenor wrote:
> Many A Thanks for support. Indebted.
>
> I want to know, as in hibernate
>
> There is 2 approach ie inheritance and composition.
>
> Teneo supports Inheritance, does it support composition too.
> If so , where to do composition as in classical POJOs we do by storing
> reference, properties, ids etc of other POJOs.Does same kind of approach
> is applicable in Teneo ?
>
> In Any case, we have to live with Spurious table(s) which Teneo schema
> generates ?As it has impact later on data migration etc.
>
> Thanks MT.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org

--------------090407060803060202060207
Content-Type: application/zip;
name="IdExample.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="IdExample.zip"

UEsDBAoAAAAAAEBlXD0AAAAAAAAAAAAAAAAKABwASWRFeGFtcGxlL1VUCQAD d1PJTCZUyUx1
eAsAAQToAwAABOgDAABQSwMECgAAAAAACGNcPQAAAAAAAAAAAAAAABMAHABJ ZEV4YW1wbGUv
TUVUQS1JTkYvVVQJAANQT8lM9VHJTHV4CwABBOgDAAAE6AMAAFBLAwQKAAAA AAASZVw9AAAA
AAAAAAAAAAAADgAcAElkRXhhbXBsZS9iaW4vVVQJAAMjU8lML1TJTHV4CwAB BOgDAAAE6AMA
AFBLAwQKAAAAAAC0ZFw9AAAAAAAAAAAAAAAAEAAcAElkRXhhbXBsZS9tb2Rl bC9VVAkAA3NS
yUwvVMlMdXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAALVkXD0AAAAAAAAAAAAA AAAOABwASWRF
eGFtcGxlL3NyYy9VVAkAA3ZSyUwvVMlMdXgLAAEE6AMAAAToAwAAUEsDBAoA AAAAALVkXD0A
AAAAAAAAAAAAAAAVABwASWRFeGFtcGxlL2Jpbi9pZHRlc3QvVVQJAAN2UslM L1TJTHV4CwAB
BOgDAAAE6AMAAFBLAwQKAAAAAAC1ZFw9AAAAAAAAAAAAAAAAFQAcAElkRXhh bXBsZS9zcmMv
aWR0ZXN0L1VUCQADdlLJTC9UyUx1eAsAAQToAwAABOgDAABQSwMECgAAAAAA tWRcPQAAAAAA
AAAAAAAAABoAHABJZEV4YW1wbGUvYmluL2lkdGVzdC91dGlsL1VUCQADdlLJ TC9UyUx1eAsA
AQToAwAABOgDAABQSwMECgAAAAAAtWRcPQAAAAAAAAAAAAAAABoAHABJZEV4 YW1wbGUvYmlu
L2lkdGVzdC9pbXBsL1VUCQADdlLJTC9UyUx1eAsAAQToAwAABOgDAABQSwME CgAAAAAAtWRc
PQAAAAAAAAAAAAAAABoAHABJZEV4YW1wbGUvc3JjL2lkdGVzdC91dGlsL1VU CQADdlLJTC9U
yUx1eAsAAQToAwAABOgDAABQSwMECgAAAAAAtWRcPQAAAAAAAAAAAAAAABoA HABJZEV4YW1w
bGUvc3JjL2lkdGVzdC9pbXBsL1VUCQADdlLJTC9UyUx1eAsAAQToAwAABOgD AABQSwMEFAAA
AAgAxGRcPT0u8stlAAAAggAAABQAHABJZEV4YW1wbGUvcGx1Z2luLnhtbFVU CQADkFLJTJFS
yUx1eAsAAQToAwAABOgDAACzsa/IzVEoSy0qzszPs1Uy1DNQUkjNS85PycxL t1UKDXHTtVCy
t+OysU9NzsksKE5FKDUGKgXKcNko6upyKdgk5xdUFmWmZ5TYATn6SDwuBRXP FBUuXV2Q2oKc
0vTMPBBLH8YEAFBLAwQUAAAACADwZFw9Puu0CJMAAAAHAQAAGgAcAElkRXhh bXBsZS9idWls
ZC5wcm9wZXJ0aWVzVVQJAAPkUslM5VLJTHV4CwABBOgDAAAE6AMAAHWPsQ4C IRBE+/0KEq9U
+AE1sdDkCq0sbRA2JwZYskCify9YaU63ezO7k1lYiLWh9GQ33coWGqlPbMIw 2gHg6qJ00fhq
MYuNkMsLiO8JZNGruX7cn3er8XT4YSVfp5b7CP6vl5gScnGY5yuZjdIxUtHF Ucw9B+6aszQU
kvMoiS1ybwuZKhuUskG/Aqol1fLm9pmCF1BLAwQUAAAACAAIY1w9q7wVE1EA AABhAAAAGwAc
AElkRXhhbXBsZS9wbHVnaW4ucHJvcGVydGllc1VUCQADUE/JTFJPyUx1eAsA AQToAwAABOgD
AADjUlawSc4vqCzKTM8oseMC8vSRuUABFc8UFS6ugpzS9Mw8v8TcVAVbhaDU vJLEHAXf/JTU
HK6CovyyzJTUIqhceXm5XmpFYm5BTqpeflE6FwBQSwMEFAAAAAgAYmJcPZS4 /mLMAAAAbwEA
ABQAHABJZEV4YW1wbGUvLmNsYXNzcGF0aFVUCQADF07JTB9OyUx1eAsAAQTo AwAABOgDAACV
kEFrAjEQhc/6K5bcna1CoYddpZQtKNQW3XqVmAzrtOkknSSl/vtWWlEKFbzN G773ZnjV5PPN
FR8okTzXaghXqkA23hJ3tXpu7wc3ajLuV8bpGINO23G/dxTISXbFK7GtVRSj iv3yZyz/BY3n
A+ilAzSOQkR4sQmczmy236dhtmjWd4/z9nY6bxblX444obB2YHGTO8j060SB ZdJstdjVQ7sL
WM5Gy2YwhOvL/wkWwXhBEHzPJGifXO6I45kkn1PI6RC2Id6zVXnS3RdQSwME FAAAAAgAYmJc
PU9SdkTlAAAAggIAABIAHABJZEV4YW1wbGUvLnByb2plY3RVVAkAAxdOyUwf TslMdXgLAAEE
6AMAAAToAwAAvZLNagIxFIXX9Slk9iZ25yKO0Gqhi4qgPkBMbsdI/kgy4uN7 MxNFBUEodHfO
ybn5QhI2Oxk9PEKIytlp9U7G1RCscFLZZlptN1+jSTWrB8wHdwCR5hBFUD5h uR68McsN1N9y
ceLGa2C085gLZwzYVDN6URiWLWLW9NbsWqXl2oNAU9wnjnErc1AoLjQEhFY+ AjnIRIQLKPiR
d30IVzgO8NC0mRp7S+88o4+EV5BeAvnhVv1CTB//RlyLPRj+Z14JyhUjKrUB +mqvn99uv57R
Xe/JSD7rSreNssvH/kUi7vrqd7/oDFBLAwQUAAAACACCZVw99vIJnTEDAACr EQAAFAAcAElk
RXhhbXBsZS9vdXRwdXQudHh0VVQJAAPzU8lM81PJTHV4CwABBOgDAAAE6AMA AO1W224TMRB9
7n6F8QtUana5qBKqNuXWIiL1JtFW8ESd9SRr8NqLPZs0fD1jZ5M0baBUKkVC 6UPjy3jOzPEc
7xwoj55hCcw2WDfIemwIyMYKSyaMjAPaobGxKFBZ49PLSrMnHiAe08oAG5eq KFkhDOsDK2xV
gUGQwSVTJpqdgseePAHnCRBMQYdppRAeNpNk92H/kuNpqm2SS4ntJPmrkN8o RGpNlz9Ln3JG
AVupzLDLz07fd17yV7tJ/mjv+N3p55N9Vqo+OCMQOpWoa7JiJ2dvD3rvGO9k 2YfZ5mLEDluz
vdM99iJ9mmX7R5zxErHeybK5t9TbxhUwsG4IqQHMbuB06HAqUfLdJMlvRiEa tB1V1dZhlw+E
9kCGG3mhhfeUESqcdIyooMt78s2chffOVvuFdcCZ6Ht0oqDT6Bqaa/FjMvPE pPKFU5UiSOs6
I6GbXztC0de0e6Hkgu0BbUPYvghRbeQVoGAC0al+g2QMMc4jio9TDZXg1CKL lTB5Flys9lWL
4psYrvDUkj4ej1MCVLWHlPjOoBpkVKVgMyVDnV7xrSSbkmZiaDipafxVjESq hRmmHwnUDGNK
RLXVTWUYhdoxjdYzHhujvge2Wian7i7CzwXPIgjBxt8lklssvwohupDBIOQo 4bLLV5Ldmmgw
Qyy7/Pn2Nr8eXhvBEnRcaiXRgsGXds7ZNIilJVEU4H2XE5lzYonUNJKaLmq8 rdW0drYGh5P0
fOrhpJ1/oDdIg2uzvX6vfmLobUFVnM9wr99vyOjK5WVtgEEHWSywP1TEp8OD +9BDdPMrNdCz
cw9aIIi1En6vBCJ6rYMbOshvfmB2/+mneUXbsRUuiVoVajmmmmClIOV+oVJ8 gqXAx20rY0IX
YtBZrakN6U/i6jVfm1txNbH038UjwVdYet2TV4xnHUxlJei2J9I6LLnwcSa/ eiwmPnQ+gTZY
9EwhrjRZNxTrhuK/fEbXDcW6obhvJUwrUluqx3lZKHm1IsLsrsWgZLiLgQKX 9ubDO1ZET95W
DBv5kPBdVFbkN0ga1QjWrczDKHAjn2EuvahLqlLGg5sLrqmlCKjT2S3P6l96 mWcx39qL/QRQ
SwMEFAAAAAgAwWRcPUDqvwo+AQAAkAIAAB4AHABJZEV4YW1wbGUvTUVUQS1J TkYvTUFOSUZF
U1QuTUZVVAkAA4lSyUyKUslMdXgLAAEE6AMAAAToAwAAjZJNT8JAEIbv/RUN iTe7oYDGLOGg
pgeNGKKJ9+3uUAb3o+xHQ/n1tpQCRki87eZ95n1ndnbONC7B+eQLrEOjaZyS YfQUtJCQzA/i
URv1yjtTQOObUoYCdXvphc9a5UYi74AXkW2ZKiVMHepCgm9MZt6GI36eesp9 lsy5BfMrGpMT
qYWxbaY1FQqw56lvhjOJO+b3Xl1XvfYBm4AWmk6AhxbIdIXWaAXa0/h19Jkl KbmLsm1prE8W
jH+zomkdhW8mjw7VSWdGY2MLAlxi6YBwY4HYoD0quI1+SaCWzbnRpxU6zFGi r+nMAuxTrsFk
q/C/BR40GLLCHKxmHqZ5N23VPehskJKUjAaHwuvYmIxPmDBqsr7gdE/So5Pb SJFfYB7IsGfW
QaOf/GEm7YoH/Voeucdqv7BF+19qGku2q6MfUEsDBBQAAAAIAJBlXD2V0rI5 CwQAAN4HAAAl
ABwASWRFeGFtcGxlL2Jpbi9UZXN0SWRQZXJzaXN0ZW5jZS5jbGFzc1VUCQAD EFTJTBVUyUx1
eAsAAQToAwAABOgDAACVVetWG1UU/k64zJAOFtJyVVootCaQZrxURVKrCEWo w6UEoVgrnsyc
hkPnEmcmVXwq5Ue6Vl36AL6K7+Byn5lIWohL4cecnX325dt7f2fzx18vfwfw LuoaMgyDOyKK
15wtEUYyioVvCw3dDANH/Dk3Xe7XzM3qkbBjht670pfxPYaufGGXoXspcEQW Xegz0INehsuW
9MVGw6uKcIdXXcGQswKbu7s8lOp3S9kdH8qI4Yp1LnGZcjiBUjOMbTf8WHpi V0aS3BZ9P4h5
LAOfXAesIKyZRw1CYyrrchaUy8AVXCUUdih4LJZ5zCtxEFJCM19IHITtynok TOE9NSmfCMxD
SVh9sjZXq6cOZQ3DDFeT+huxdM2tMKiLMJYiymIIfTrGGKZOXUt24PvUH4JW ckL5XIQHtsuj
SMebDEOUt3QYfe861dKRU7WXEwMVZsLANVxnuBSJuJXgmGE+b7X7XolD6dfK 5zUF6+xwyjqm
GCY6gmpESucJHdMMmYjruMkw2tk0dHW8zTCisC6kuBc84S24shry8FhH4d+y 1KnkH4LQ0THH
AB23iVltQ0dylww1mNQ6NYt251tX5mrlobWcylki5/sa3qNhtgtdUk01cAcf MGg1EW9QSTSm
fOF8f3R8RDCTEZc8Xq+TrlRv0+zgR4/K/Jii8zarSqTsQxmfaLjLkP9vvqwK l2IauIdPGfS1
jcrO4sbSfYbZ/8G11JdwLhLjpRMTh7OUe8nAMijESErhbVFTiMNXqLzYgR8X I3cWX2BNwyrD
3AXcDDzAlwz9bbLSa6BH2oJz5pmUC7sa1hmunc0gbIpl3t/i9jNeE33YxEMN WzTFtAfmWnK0
rg1so8LQJ9q9HbY6GSY1fWVgF3sMBkH8JwEhnMk/Ptee11EQWOW/b+BrtcSy ascRDeVPhO8b
fKvhyWvLsHJMI/EMHOA7WoQiDOmRp02QAbVA+jGNRXAvAVU1YCu+9hNf11Mi Plq3shCoaXhK
O7CDo4FDSKJ4Xalcn8J3mjnt3546NTxSTek4A1q0h1WH7m9fiB/UgUrQCG2x ItWyHj63pEsq
G6Zo43ZB/XWRROufvhr9Mumk94+e2RfQfyEhgyx9exOlgUvJNzGgs59Ohjfo NoPLLasBOlWg
O61AvRRocK8dKUsnyKoHg69E621Fy6j/AS0of5KNguj9iqH9Fxix5nKjufEm 3tqby03mbqTC
TO5WKuRzs6lQzJWaeCeVP8zNK+EEC7nPmvh8vTjXxEqx+zdY+10n2Kg0sVNs 4tEJHtPBm3CK
P58CXSGAIDA6LftBDGMcI5jGKIoYoy6NU4FjmMcEFnGdXv0k1uh8QH3dxA08 wQw4buIZbiVF
TqaFtIrUiT9HdMfIfhou6TMk+0nm4G9QSwMEFAAAAAgAEmVcPdQ8FijjAAAA dwEAAB0AHABJ
ZEV4YW1wbGUvYmluL2Fubm90YXRpb25zLnhtbFVUCQADI1PJTCZTyUx1eAsA AQToAwAABOgD
AAB9kE1rwzAMhs8p9D8E3xOl22UUp2WXQmE77bKrcdTULP7AUpfu30/52GEw BsZYvI/e15I+
3v1QfmImF0OrdnWjSgw2di70rbrxpXpSx8N2o9OEEIuGlTcpiV5Ka6BWXZnT HmAcxxrt4BJh
HXMP6C8M0oBRbTfFzO7v5H7x4+OMPjTNDt5fX97sFb2pXCA2EqQkuJCjMRn7 YXosg/FIUmB1
y+6/5CUYXMdIPPuIix0M0ezRqnP3HEJkwzL3KUcv6QtW6JSjTMtfKzndq1Ro 18FKwQ+2mMPi
PhXyXv87LQ7+2NzhG1BLAwQUAAAACACnZFw9nZ7An4IBAAD8AwAAHAAcAElk RXhhbXBsZS9t
b2RlbC9pZHRlc3QuZWNvcmVVVAkAA1lSyUxiUslMdXgLAAEE6AMAAAToAwAA 1ZNNT8MwDIbv
+xVROLNs44KqdXxPmgQSgiFxNak7Am1SEncd/x6nlLJJ0y6cyKGVm9dP7NfN 9GxTFmKNPhhn
UzkejqRAq11m7CqVT8v58ak8mw2mqJ3H5OYe9DusUGxKk/RJE04aCF6MsiHh vVS+ElWJUk3T
DF25Gjq/Us93C/kjCbuS5qRVTEajMctuH/UrlnBsbCCwGrfhbR07uagLUwVs AVjmETJRN1Em
hYWSxSYjDPRNseHpYXEwn9CiU10O6+895mbTU2aMmeJVASGY3LAFgptJ6LPi gzqT2s2fwxfZ
hbWOgNiquXdlVxm8BPKgKZXka2ypkfvIkabaQzFH4DfuwV8QefNSU99ffEpR W/NRc5RDETgs
XIP+0tU246l+9x4XLrdR10AQP4jDfp7EoUTdkVJcIf8aXcGx5N/2ggiu9prx rYfDtwp6HSsz
JDBFEO/4mUqoKmNzJ8Uailj1+SKTqoeqbWrnjdpjTjsMtT2Nv46HG/3/w1H7 fOF45w7PBl9Q
SwMEFAAAAAgAtGRcPdQKhM+WAQAA7gMAAB8AHABJZEV4YW1wbGUvbW9kZWwv aWR0ZXN0Lmdl
bm1vZGVsVVQJAANzUslMilLJTHV4CwABBOgDAAAE6AMAAL1TS4vbMBC+51cY 9VwrDRSKibMs
u3EJbEoOLexVK0+coXqYkfLYf9+x5CSbFtoeSn2SPN9jvpE0vztZUxyAAnpX iw/lVBTgtG/R
dbX49rV5/0ncLSbzDpz1LZjqM7j1sChOFqsLb8a8ScEfq7lQca0Wuxj7Ssrj 8Vh625WeOvm8
XokRAtoT3IBAG+wDJCDYrZxNpzO5HGBvpc+N/Jl67lQUifCIBDp6eq2FXLXL k7K9ARlIZ/WE
2Zh9h271WIsLYmR/URaGvxFCFAXa3lMEGpDsefFn7/JcK+HauvYshcppeILD 0PvHYc7a96+E
3S42CKYNtdgqE0AsmDLfMhe7HGCByTYLzuVNacDySDZKf1cdhKIn2OLp2mmL ofdBvRjYkD9g
C9SocQqR9pwuiY70Wrx1eidTK9ngwagQWB9twuVOMzmVfqbyiO+d81FFvh8N eZsPMgtmyQZU
3BNrauIVPOzQtLfKI6IWaVct72MkfNlHKP7GTDo+MyHHDPIa4h+mel4//a9M bPXbRGl/vgf8
YuUvT3Yx+QFQSwMEFAAAAAgAkGVcPQllvJIVAgAAwQQAACQAHABJZEV4YW1w bGUvc3JjL1Rl
c3RJZFBlcnNpc3RlbmNlLmphdmFVVAkAAxBUyUwUVMlMdXgLAAEE6AMAAATo AwAAlVRdb9ow
FH1OfsUVT1Sq3HeqSUNNJCJRxgibJlVT5SSXYObYmW3YWMV/37UDJaibxp4w Puee+3Uc0bTa
OBCVQ+tYFn7mvPzGa7yPY9GhG77jbOuEZHOjWzROoD2j2tQMSylaiwybFZ21 QZa+qvyF5lCh
ZnM0Vlg6l/ihdUIr+4+AtSjQKO6QTYqEO547yvYfMROU1MFFwBkuVzVL1U4Y rRpU7oK12Srh
2JLmQ62320KKEkrJrQV/l1W9TuAljqP3/jqOjsydFhVU2t8NbwiPotIgpXxt YXhzH0cHimuN
2BEAvfbgDTcorITiEs4rgZaOFt6Bwh+966AcBYxZdEdgP+w1ypJF9jld3MIg zMN+l1XBNlVR
JlQMmsEVCp/yEG/5VeTFlLg+wahLNmqwGUlRGG721wjMx3lOCtdQk2w8TR+W t0SMost1V4JL
LB2b5B+nyfEcVspqdDPe0KApAQXe3UGpGy8HeuvArYUFKRSC02ARAZ9pu7xt kRtYaQOaIL0i
HkFBEO3oj4W+tT+bp4s8y5fp7CF9/vLo58SV0o536M9GDrqauu33XbIuKr/9 k8dZNsuXY5IJ
nbPOQwusfT5z9tKge/vdKL1Er0DvnlD0BXh62nbojXb69/QVXuDiA8LwVAEc upqDgqB3RMMW
vzrPR/meCmoYGsPI+8pJNQw82sEjzVSomsYQNhFFBt3WqNBpeC6H+DdQSwME FAAAAAgAEmVc
PdQ8FijjAAAAdwEAAB0AHABJZEV4YW1wbGUvc3JjL2Fubm90YXRpb25zLnht bFVUCQADI1PJ
TCNTyUx1eAsAAQToAwAABOgDAAB9kE1rwzAMhs8p9D8E3xOl22UUp2WXQmE7 7bKrcdTULP7A
Upfu30/52GEwBsZYvI/e15I+3v1QfmImF0OrdnWjSgw2di70rbrxpXpSx8N2 o9OEEIuGlTcp
iV5Ka6BWXZnTHmAcxxrt4BJhHXMP6C8M0oBRbTfFzO7v5H7x4+OMPjTNDt5f X97sFb2pXCA2
EqQkuJCjMRn7YXosg/FIUmB1y+6/5CUYXMdIPPuIix0M0ezRqnP3HEJkwzL3 KUcv6QtW6JSj
TMtfKzndq1Ro18FKwQ+2mMPiPhXyXv87LQ7+2NzhG1BLAwQUAAAACAC1ZFw9 jBhab+sBAAB+
AwAAMQAcAElkRXhhbXBsZS9iaW4vaWR0ZXN0L0lkdGVzdFBhY2thZ2UkTGl0 ZXJhbHMuY2xh
c3NVVAkAA3ZSyUx2UslMdXgLAAEE6AMAAAToAwAAfZLPb9MwFMe/3krbdIZu Y5SV/WAbBVrY
FjgPIUWllSKl6bRVExcUua1XZaQJSlz+L0Ac4LAjB04c+WsQz2YTQkqJFL+v k/c+fv7a3399
vQTwHM9KWGDYCsdKZsp2TTgWo7diIhteqGQqoqyEAsPyhXgv7EjEE7s/vJAj xbDuvgoc3+8P
nIHb94PuSb8XdNr9kw7DtpekE1uOovBdJm05PSedpNLutCORZUeUMK82CHyn R4S9eQRHqTQc
zpQkSi2H8rrnMWzm/7iGl18QNw7VS4bFZuuModBOxtJCFSslLDOs5fnBsYrb DJZ0/dOB47eJ
U/PyEo+WCHSHo4a7ZNJEKnfsxHGihAqTuJsm047eCcNOs/V/myww1DluoKiJ Gxyb2KLDmkcM
fDElbGM+9q93Gn2fo4SyRu9y7Olmazlosk0nNzisP3084nis+9jITzZd6IoW RwVlhqoXxtKf
TYcyHYhhRB2ueslIRGciDfX86mPlNJmlI9kNTcY/hh7qu8fA3TiWqbFGZnSI 1/ezyGi1RbrO
BdS1WaTqemcmWlfziplTFZbAKd6k2RuK+jn4iFtfsMbwCetG3tNy28gdLR8Y +VDL5gcqWMAT
Gmu0GHBJwG+kf2AXP7GPz3hqMvS7b8YDHFKsQLdZhV20fgNQSwMEFAAAAAgA tWRcPZpVJeth
AgAA1AQAACgAHABJZEV4YW1wbGUvYmluL2lkdGVzdC9JZHRlc3RQYWNrYWdl LmNsYXNzVVQJ
AAN2UslMllLJTHV4CwABBOgDAAAE6AMAAHVU2W7TQBQ90yVOQkpLKSGhCwVC m7LElO2BIiQr
JJKl1KmyVH2zJukQXBw7sidUfBbiBfHAB/BRiOupS5vIsTRz59x15twZ//n7 6zeAfbzVMMew
5pxKEUrdVOKI97/wgdCwwLByxr9y3eXeQG/2zkRfakgxbPnBQBd91xmFQhfD T7T2A6HX4kiG
RWEZhzWG1cZVfFsGjjc4YFiq+l4ouSePuTsWadxgSF1sgEETVtvutsw0bjLs fpZy9E7Xz8/P
K3G1iqpMFaXwhK9fhmWjsKNWrW6eMGSEabU7hlWlDeQbSUejTRTMj7ZhWc2O 0TGbll1vNQ/t
WrXZohhmzhM3oGPO8rHti+PtzHSo14xOl2S12bU6UTpGe0nwPjlsMGwkGy6r lGaYJ2owpN8T
RZ4jPzDMl/eOGRaq/qnI4j4eaNhm2IyZcIYjd5IOkzQ5PMQjiokyEDvlvWTi MkTL4xxWcIth
ueF4whoPeyLo8J4ronb7fe4e88CJcKwsDIQ0Tw3P8yWXju/VA39Yi+4LwzaV mXGVqi4PQ+rT
5qxo2+JDSlGancKQdON6Yxm1O5+QRnG/nmyIs68oa0RAnfelH3xLoCa2UJFs 2x8HfVF3FBcT
xFWid8CQMz1PBOpsItTw+qorE96lhiNFwN2Qunq5pGdHjaWxiCyK0JCmdYZu 1pzCuWt4ifDy
lJ06RusiVnH7v36N8J0pnL+G7xIuTOHilP+9CXuKqq5jgzSbpHlKMvq0n9j6 gdJ35bRDc5Yk
cEDuG9hV2uhfU8aekk8oMJLPYvw8xhXoyveFmvfxUmVieEXjTSrzD1BLAwQU AAAACAC1ZFw9
JvfOoSUBAADMAQAAKAAcAElkRXhhbXBsZS9iaW4vaWR0ZXN0L0lkdGVzdEZh Y3RvcnkuY2xh
c3NVVAkAA3ZSyUwJU8lMdXgLAAEE6AMAAAToAwAAbVFbSwJBFP6OmaubpalZ CvWsCA09F0GI
giAWKL6P62kZ24usa9DPil6ih35APyo6u+2L4MC5fTPnO5f5+f36BnCDtoUc oWGWMW9iNUrN
UDtxGL1ZyBOqK/2qlacDVz0uVuzEFgqEqzByFTueWW9Ysf8sfhixGmSZhBKP JtPZw6Q/IDTH
+9hvCcU7YQhMfE846HTnhHw/XLKNY1QsnBAuszzjr73d5JEgZVRxKjkJA+Gi 091fpgRCvQwL
RUJlbAKebP0FRzO98JhQG4eO9uY6MkmcgVWX43+SJ+28aJf30Gc3MoU9DbeR w0OT8u0Uv06W
J+uS+UQORVpJI7L4nOgSbEGOJOqJTY71ifIHau/pg4ZoWyzQRgF1nKVo8idN nIsvTaVI6w9Q
SwMEFAAAAAgAtWRcPZ+sxu22AAAA9gAAAC4AHABJZEV4YW1wbGUvYmluL2lk dGVzdC9JZEFu
bm90YXRpb25Gcm9tWE1MLmNsYXNzVVQJAAN2UslMC1PJTHV4CwABBOgDAAAE 6AMAAG2PuwoC
MRBFb3zFJ1goiGC/2xisrSwUBB+FILZxHZfIbiLZ6MdZ+AF+lJhFxEKLgeHO meHM43m7Axih
xVFg6KuDo8yJ+WGitXHSKaNn1qS75YKjxNA+yasUidSxWO9PFDmOCsPA2FhQ lKhzRoLSo++N
JTF9Iww8JreSKTF0gnDxPbFxVul47IHsA3SD33m4ZahvzMVGNFOJh3p/9Ib5 mndhKPoq+58K
3pejity7hrpPGBp5juYLUEsDBBQAAAAIALVkXD0qH5DBtQAAAPoAAAAwABwA SWRFeGFtcGxl
L2Jpbi9pZHRlc3QvSWRBbm5vdGF0aW9uRnJvbUVjb3JlLmNsYXNzVVQJAAN2 UslMC1PJTHV4
CwABBOgDAAAE6AMAAG2PuwoCMRBFb3zFJ1hoI9prY7C2slAQRAvBPq7jEtlN JBv9OAs/wI8S
ZxGx0GJgmDl3OPN43u4AJmhJFAT65hAoC2p5mFnrgg7G2YV36TxyniRKAu2T vmqVaBurzf5E
UZCoCAycjxVFiTlnpCg9cs8BNX8jAjKmsNYpCXSGo9X3xDZ4Y+MpA9kH6A5/ 96OdQH3rLj6i
hUkY6v0VHOdBthEocpX5rwIbS1SRm9dQ54lAI5+j+QJQSwMEFAAAAAgAtWRc PUcmh2EsAgAA
dAUAAC0AHABJZEV4YW1wbGUvc3JjL2lkdGVzdC9JZEFubm90YXRpb25Gcm9t WE1MLmphdmFV
VAkAA3ZSyUx3UslMdXgLAAEE6AMAAAToAwAAnVPLbtswEDxLX7F1AviBSron iuEcWsBAX2hy
6K2gxJXMhiIVPpIYQf69JEXbcSAfkhMl7nJ2ODMsFosUFlDWst8q1m7MMvwW R/9+63xNz91a
pD2p70iLwKhBbS7TlHW9VAakanOsOes15tg17lsqzL/8rP5h7duKOOlTlkGF LROZ1agyKmvI
sjD1GhT2CjUKQwyTAmQDZoPQSYocZACCaYndsqyWawrXQsjY+VXJDv58/1YW 1bIsXMc03w9D
Qd+OCrU+DL11AxrJuXxkooUGibGOAhCFoG3vb4b0IvRbHg4AlJwtn1ecibso Qr6mBy6eimNy
1qL5QToEz9d/BFovZeEODxJHvLLod5RWGvEA6Zdfg9gebGTGbB5ODfqQShtF anM1McriJFRa
FKiIu8HgnK04q4EJg6ohNcIIJOCTcYJpiMbBc5p45xIH9xudNkIHTx4It7gz aOfJcM2dA0CM
UayyBvNw/JTzSTTDr+voOBLh7XiNv9fwFTAwLaYGao5EfQ4Art05p5BwvgW9 kZZTN9NFSAW2
BCjqWrE+pMb35nlkV0QK45nxlZUKApy4/xi/ATrYeqaHPMxuXE2080PlHYb/ DQjx7GC7Feze
4tWkIVzjBCgx5Hbbu43x9/jU8dy4ej7QmDip7i1TSHexSY5zk/jgJEMzxEjP 5u4571Nxg2Ys
Eh99IO+LzWmveqJIFzl5QgIfP2Da/sbjujxIRuHY2GGIV+gFimLsiaX/AVBL AwQUAAAACAC1
ZFw9mzsX2EQCAACyBQAALwAcAElkRXhhbXBsZS9zcmMvaWR0ZXN0L0lkQW5u b3RhdGlvbkZy
b21FY29yZS5qYXZhVVQJAAN2UslMd1LJTHV4CwABBOgDAAAE6AMAAJ1UyW7b MBA9W18xdQJ4
QSXdW9lwDingS1s0uReUOJKZUCRDUlkQ5N/LzUsK+ZD4Qkkz8+bNvEeXy2UG S6gaqV4063Z2
HV7Ld+/+0+WWXrqzzBRp7kmHwKhFY79nGeuV1Bak7gpsOFMGC+xb9yw1Fte/ 6jtsfFqZOn3J
c6ixYyIfDOqcygbyPHS9Ao1Ko0FhiWVSgGzB7hB6SZGDDEAwq7BfV/V6S+FK CJkyf2jZw7Xv
WJX1uipdzqw4tENB/28WYiq0vXUtWsm5fGKigxaJHRwJIBrBDMrPhvRbyB94 KACoOFu/bjgT
92kNxZYe2XgygctFh/Yn6RE8Z/8QiL1VpSuPa06IVan2pDYG8Qjqj99x4R5s tMt8Eerilkht
rCaNXU2tHnAaIh0K1MRNEfUbas4aYMKibkmDMAoK+Gzd2gwkAeE1m3gFJw7w D7oNCRO0eSR8
wL1Qe23iqHsdgFirWT1YLEL5OQdMkiT+3CblkQgvyin+YY8nwMCMmFloOBL9 NQC4dDeERsL5
C5idHDh1PZ2VdGBLgKJpNFPBPT63KBK7MlEYd46PbHRYwJn5x/hF6CDthYme mN+4mOgWx8iH
RP8bMFJ1lH4Q7GHA1bQl3OAUKLHk9kW5D+M387nnhXXxIhKZumU9DEwj3Vtn EqwefuRAwAWd
m2RxpwgQpZho5Wq22dJZzD/x2sSbbRLBIV2E+cL9ERx8dIN2zESfv1gfs9p5 fRXRpE+sPCWB
T58Q+jDz+GYeJaPw3gyxid/RG5Tl+MXM/gFQSwMEFAAAAAgAtWRcPXQ9CbBW AQAAGQMAACcA
HABJZEV4YW1wbGUvc3JjL2lkdGVzdC9JZHRlc3RGYWN0b3J5LmphdmFVVAkA A3ZSyUx3UslM
dXgLAAEE6AMAAAToAwAArVLBSsQwED23XzHCHnQhzQe4Loqs0Msiuj+QJtM0 2E1KMhUX8d9N
01boyh4ET0lm3sx7byZ8vc5hDRvpupM3uqFtevLFewitSrWKJ887Id+ERjCK MNBtnptj5zyB
87pA2ZouYIHHOt6dx2L3JCQ5f4o4PlFdMQYVamNZH9Az5SQwlmgPDcKm2k4l G15toXYeKIaP
TmFbDKCSoPPu3SgMIEB6FBTTSI1TCY1CNmCdZaIK5GMrkK0IAVx91igJQat+ ybgPONsrynQ8
j55TUqNFHznVOI2+ao0EYwl9LSTCWDBZAPygyBBgHgN85tkwh2xyG4zVLZKz sUMgYWODSWc9
FhQJemlm2UUb2VJqNmjNzrSV+9fDw/5xB3ez27jKtligyiFirKHrm7jCH+0v SL23ISmdP0To
u+EjoILqFBMm/IsHn5j+QnTB9rRD0EiLQDL2BZwvfOffUEsDBBQAAAAIALVk XD3zENli/gMA
AKYXAAAnABwASWRFeGFtcGxlL3NyYy9pZHRlc3QvSWR0ZXN0UGFja2FnZS5q YXZhVVQJAAN2
UslMd1LJTHV4CwABBOgDAAAE6AMAANVYXW/aShB9tn/F3LRS2uhit683FAWl IFlqoCJE6hta
7IH4xuyi9aI0ivLfO+tvHH9AgVZ5MuyOd8+cOTPrWfviwoQL6Lpi/ST95b3q RX/trf966L3j
vaenba6Z+8CWCL6nMFSXpumv1kIqEHJpoRv46xAtXC3ot5BoDfpKSX++UXjZ YngdsDBsM/oe
b0672gnwfzodmOPS551NiLLjCRc6nciJ6T1Cd95LXuna8x4shARFwyvhYWBp I0eBK7hiPg+B
uS6GoZBhboeKgZj/j64KQQmQuJYYIlfR1psg2gegG/g9ZO49uNqHf7s2/S/N LJCpjUQQC2ix
RL5ZlScY9+LXPEaA1NMaM4OuncCImEDuveLhKsQ0WpYTPYbMVUI+RZMRFfDg c+/LWRLas2hi
iRwlU+jFUd/MA98FnyuUC+YixCsl5AL+VLR1CGmA4Nk0dISMJA6paDhboRWN 1gXOqHXF2EZl
aFjGLamLLwFH/ZsBfIGz2M8zEkjt/uFa47+bOKcBcjujpTWUe6XW/9n24+Nj pmRStU1qtoks
FPbOWE/H2u3s+2QwdH40UBeSZYBKcAp+qBh3IxGrHOhRkZVk5Yxup/3RtQ5t omCqD4G1ZeXo
EZ/76sPHMvZC/tL7WVqfP18FPn8oLdnnXCimfMGHUqwGuuDopaGLq57jQT4N eh4igy6Fs/dy
HqfzQUQUkrQZT515iZF3S1SVa3z4WM08pTY4X2f90Wg87U+d8Wg2nIxvZoPr 8UTT/6nMbVrR
irxqqqjkjkivut5G7JwDS4+A4ykFroT0UO4EfjZLisMrF6jSzlFqOYdKblxy hwWpX2Gq8vPW
+B8j/L/v3XDQn97R83p8N5qSl5+PmAQ/br41pQBN/7kESLAcIH9aYU/x0xtV jL4F6RP0Ewk/
jfrfkr32rEr0uYsTJEfog670CRcFK8JcFn9lodyl8B/kvIxgNqFsLz3Wq3yo 9KVa9fE3N9Sf
FJc7kqrHMqnvRK7OT50rEclx0pyU0BLCrV13JTHFnBYRbb/3MZs3RLW8z+JN diV/J0XrStZa
xf+OmrN60h4GMt1XyVHRP4mOaeU3puIC4jYNN5yVzQrW1blZv4u4+6TfjJpv SacOxhNpf5Gd
QEmbfhwuf2vbmv4kaaBj/wsD2043Yf6KC5/TloFPDTUL6q4cNNb80sFIbx2M +muH0lTTvUPJ
tHDxkM/U3TwY2dXDng1efoPwLXX92TRizqq+WBOC/kDv1hiyBi/3bd+O0L+V mY2pTatgQxeX
NdRW86G/RzxaPnxTBR5KcIW3eR1qbf3a/S4UreOKcf8e6qRCzNqog/uovUUY d1ONochO67cv
wGID1uZzQXwvpvkCtr0VCPMXUEsDBBQAAAAIALVkXD04lW05eAQAADILAAAs ABwASWRFeGFt
cGxlL2Jpbi9pZHRlc3QvdXRpbC9JZHRlc3RTd2l0Y2guY2xhc3NVVAkAA3ZS yUx2UslMdXgL
AAEE6AMAAAToAwAApVXZchtFFD0tK1YkD/GSxFu8EpvI8iJjswTL2LIVmSgZ K4uECUkIGUtj
eYKkcUmjUPkA/oAXfgCqeDKhypQpispbqvgoitOtycSLJBegh57W7XvPPff0 nTt//f37nwDe
x24APoF+K++YVSdac6xiNKX2mW8tJ8dTv0DXM+O5ES0a5UL0zvYzM+cIaCU7 bxbvGrlvjIIp
0Ku7APVY1x4TaF+2ypazItAWntoS8CcYFkIbOjQEcD4IgXc0nEN7EJ3oDqBL 4FIjJA09aBcI
mql0JruWTiQFOnWrbKZrpW2zkjW2iyTRo9s5o7hlVCz53zX6nV2rKjCoN6sw JtkfC3yx9yZ4
tGnUcjYbW2Ho+bxdNwgshnW7UoiauaK1VzWjZmmHe7tiRpN10WJT+kkdCRDM WIWy4dQqTDdx
JgKzdmAEYwGMCgy3dNYwjnd5AWaiaFSpwFh4qhm68oiFeBkTGgYwKXCvKZO6 73+pNOTsmsk3
/TN6BoLA+v+koKSKYCaAaYGhVlAaZjFHfmbCLjsGu6oiMN5cLTeBBJ/X+AYt sBcLpqOgrB3L
rKRuqHZPSUE/kIJ+yGc49e81kyk+1nAdnwhcYIpkprbHbmd/8j4nGzDM2aWS Xa53a1K3qhIi
hk8DWCaAgldH8kTDClYFAlY1WdpzXijGDyXjNQ3rGBToyJs7Rq3oJIyqKVFu aEhig34kInA5
nGrczvKS3Y4baX2BTGEeLahLP86QDvMnTMutEeULOXm20OyMANJsCm/SrJXL tmM4ll3eqNil
pHSXUtzVcA/3BQZy1KChl8BCWG8F0+haA8hyIDWJerCpy9RbGr7AA4G+Rqnp Q22aJuZx4zdQ
yx3rUZHiPVqNyxppXRXnSsWssjvk1G2Q6eJJWEV5qBVjdhYvRuDqWYIqr3bb HSTjrWVQzqGM
XavkzA1LzvTuo2N8TnIXCC9nl06XsXLaxJlKnvxwUkz52eIuwD0/ZVyD/Pcl n4LP7shvCL2E
9hrBl7jwK7RfaGzDRa498HOd4TqLEObQhXlcokWrB+IyevnsO2bpVykHMAgf rnDvw5BKd5+Y
PukZmT7EsMD0Aa7ue5naVfySQu+t+7nocvcervH8bR7NzeOXnwAvT1jl+YOI knWcaaYEWNiP
6JQ5owIzB1jc5/YjgfTsIZYEfkBHhNb4T+iJzLYdIuHDK0jLEW4jFA2cKBo2 mDWFUdxmLp1a
bGIVtxTnSD2nxzmOz3BTcY0r9j5GjTP2FjH7vBrjbh31s9uKOWewV5EuKxJ+ 7s7xf/bKzwp7
E/WfcLVfmHmFzXRk9gB3lvwD/tcIqZLkfp9HGXX0+akjtXtbZYQ3LJuiH48w jMeYwFes8AkW
YXCsb7PSHBnmkcaOqvimUiXrVZxl7EPFKetWPMyTR0RqI1Yn0Z6wuuu0fY2n tK16NlnDmGrV
rKtH3d/g2aq3E3LAecpsq7uWCksdfeJkJz0/0kk+j6OPNTw+1kk+r2M5wzz0 /Bno3zVFf9oE
ff3U+9Ac/fum6NcaovtgqnXHxS/8A1BLAwQUAAAACAC1ZFw954ORWoICAADY BgAANgAcAElk
RXhhbXBsZS9iaW4vaWR0ZXN0L3V0aWwvSWR0ZXN0QWRhcHRlckZhY3Rvcnkk MS5jbGFzc1VU
CQADdlLJTHZSyUx1eAsAAQToAwAABOgDAACVVF1PE0EUPQOVQl0FEflQkAoF 26IsBT9IICSk
KdqkqAmE+DpshzJku0N2pxr+lSaKiQ/+AH+U8c6w6QNsWeimu3fv3HPm3DMz +/ff7z8AKljP
oo9hTja1iLTb0dJ36zbebvJTLcId7mkVnhUqWWQYJq/W7X2V2jtmGNDHMiqs EFcjjWyDqjdl
IPUWw0Ixvbx0wJCpqqYYAsNdB3cwkEM/7jnI4j5Df9EUDDdkID502oci3OeH vmAYbSiP+wc8
lOY9TmaMTIZC6qyFCsmc8ngk6s3tIFCaa6mCnVC1a54KieldV3liwUapocKW KzxfnkbCFe0j
11PttgpcKpVHZ2483UYO45jMYoIhn6bJwRQek8NeKLhO1hUDGErFmwqg1VCH J8LTDE+vb4lh
IsmQz7sNhlpPO2j4VmbkHTwzbeaT2yS6bpPT181Je6UpjnjH11USzfC+eEWE MG25tY+2/VuJ
XHTw3IgcuxAZU3SFzaZMxbCaun1O+Bfu+jxouTEoR9t/ycFDjDGspTeTiF92 MI8Cw0rKciWC
Kw5m8JQht6c6oSd2pDlRU0k7ddngGYb2ZCvgumPOSzXhyF18PDZv6PsW2TZc CzxfRTJo7Qp9
rJoMTj0IRFj1eRSJCHmS2U9fNjYyYr4TFGXtf5DyQxSto48uIFde+km3X3C+ 01sfhk3OjjDC
1TFCkUOxyT7AqM2T8THLJj1N7WD5B3LnePStyzFgMQ2LH7+oifEmeoJpGmfG xWSm2ctMn3oy
zVkmWsxkpoXLTPs9mYrk1jZ1V4qZFmOPBspL5yhf5mGWh8YJM48XSZiX12Fm 4CZhVnpikMGq
jdbwyj5f443NjtP9rV0hZhH0+w9QSwMEFAAAAAgAtWRcPW7rkn8oAwAAMwcA ADQAHABJZEV4
YW1wbGUvYmluL2lkdGVzdC91dGlsL0lkdGVzdEFkYXB0ZXJGYWN0b3J5LmNs YXNzVVQJAAN2
UslMdlLJTHV4CwABBOgDAAAE6AMAAI1V21LTUBRdp5SGtsEicpGbIhbtBYiI qFBAa23HztSq
A8N4eUrTQwm2SU1THZ78AL/AH/DJB8XboDMOPjnjRznupKECDZfJzDkn++y9 1t4r+5z8+fv9
J4BppAV4GEbVoslrplQ31bKUtdfJolw1uZGRFVM3NgV4GWZ1oyRxpaxWa1zi lTVJ0SsVXZM0
3VTXNiW1Ui1L+8OyZGIQK3qRlx/KynO5xBn6cg5bg8ixJxiCtt/yK9VU1hkG c61JNfbI1b+s
ljTZrBuElzrUcSF3dMZOsoklQvQtqJpqLjG0RaKrDN4U5RJAG0IighAFnGYY O06l8HQAXThj
RfQwjEdcEtsfkIiu+kGKiBDQYa3OimiHz49BDAsYYuhxk0rECHykAc/ml1eS +VSaIZRTNZ6v
VwrcWJELZVKlO6crcnlVNlTr3TF6zXW1RoUcnxhDl1pzXjK6sbJZpfDeSG5D filLZVkrSQ8K
G1wxE9GnAsYZRg4qzRXd4FK64RVEGJdFRBAloXmqLNcoi9FItOX7OFG2RyKI OCYFTDAMH+Un
YgoSdU+Jm+lmk40dDv6/4Xy6nZ0lVktdDJ2KwWWTO8IwPIoc0055a1Kpn1qp 3fsugFncEHCd
vvthLSziJuYYOor67rmYaU1jn9bE3lKMAKpn/ERJkSqmbJCWDCeul+RuaJUt JjXalE1V1zKG
XklbiTWBoy7fxF0Yag53wMf3c024noaLU3bTHFjW64bCM6rV8ANuzT1l6UPX UlbTuGG3EK/h
Ap2+NroSPbCPIK281qEkq9+2BsjGrKuAxk6yPKN9RvNI7BtOxX6g6wktur+g dwv9v+HfwsAn
9H+0Q8/ROGhDRinoHsFn6ZqIoY/6exiTOE87YgMMo5QIaD2Giw6RRggemmNx Qn6Hdu/7+C+E
32IovoPwNi4xbCPGsLvZRk+TtY+4gDkqZJ7KWCDWRTqEt2zGvgaqw2itrtD/ gNFzFTMOd8rh
DsU+o9fi+4prO5j/0CTw2WkX9gCGmoAhIly0AZeIsgE4Yb9TNDuI8WKPDJ6m DLdPEPnaNTJ5
gsg3LpEe3LHHFO7SHKC9Lrsa/ANQSwMEFAAAAAgAtWRcPed0SJUtBwAAmRAA ADEAHABJZEV4
YW1wbGUvYmluL2lkdGVzdC9pbXBsL0lkdGVzdFBhY2thZ2VJbXBsLmNsYXNz VVQJAAN2UslM
CFPJTHV4CwABBOgDAAAE6AMAAJVXa3AbVxX+riVba/umcZTGzaNJajupbbWx UvdBqZ0Q49pU
RHGD7diN29KupbW9ibRSV6smDY9CyqsQIDxSCFDe0NBnHo1Tt9NO6Exhpn9h YIYf8Jfn8Js/
DN/dXT0ir+wgjfZx7j3nnvOd75x79f5/33wHwB14I4IGga1m2jEKTtzM5jPx hPt8UE8d1eeN
BCURhAW6c/Z83EhlzHzBiBvZOT7nbMPTGLlmcpPAjb69a0wJbDHTQ5aVc3TH zFmjdi47omyM
DGf0QkFgWzJ4CW98QGBTrfpDB5IlZc0sJCzTMdICYkag2SwM24buvq/xhkw9 Y55Q79ogl6Bg
r0Cop3dKIDycSxvNEIhKtKBVYG3StIyxYnbWsCf12Qw9jyZzKT0zpdumeveF TYOuGQ03EZ4F
x8nfF48fO3aszw+hzw2HYTiGZeTiHiTN2IQtEWyuxWhUTzk5+ymJm7GV7huJ sYnJobHhEYH2
ZNDEgRaEsF1iA24RuLsneUR/Uo9ndGs+PuHYpjU/UA/Mkn7vlIq4UyICTT3t kGj2nm6VkGhV
Tz0SaxQeYWfBJMbbkyvShBkKK0AENvb0JoMYMNCMPuyOIF6XTiUm7Rg35s2C owC5A/3MWQWP
3nqR1aoOtHK1uyTuxj0CrfOGM1Im4l0BgK1m1zV3r8QHcR+JQ3NEqtrMg7NH jJRDM8tELYRy
UKVqbTP2Yl8EHxLYFbzY8Wwm7jyVN+Kk9iTv/tqKFkMC8Tou1tGix3sxLHE/ CFuT4VfKLT11
I/UKTbn7EYkHsFZgQ8qtIt/gcM4il52CmvFRif1qxiazXFsBsw5IjKlZTXO2 YZwwFIQHJT6G
cUKYLxLCewMgvC5QBdqcBaOmwWxkWhJBPYYtrt7QY2N6luM76sMy5JAhs0VH AfoQZiI4LHDz
ShBKPIxHWLmKc2RXMeUUbT0zSiSLtsEU7AxYK5XLZnNWvOiY7KdJEpiLfRyP R/CYQMeqkxUt
daarJxEAVQQppn214Dx/ayEio9i3gwd85Nrc0areFNAAKl1LwJQ4gqMC6xU8 /kDCKji6laK1
zvp5qDaSlbCQE5AeQUvbQIcCYFV2PyFhg7PbfOUqDDp7VlZP9E5pKJLQXnjK 2jGJ42DQkYLh
eIhsCGovU2ruJyQ+qea2qrmFg7YxZx5X8k9LPK3kmis/NJ7Q8NmVN5X+3bvv LNV7BM+QkWXA
A0iu4fN0K3BILf9FiS/hWYEWVcwlLNOrQFEV4zKBH/TMzMx1pOMrEocwpZrV VyW+hq9z/yM1
PBMCXfUJcb/u6Cr+AQ3f4OZjEXxl71sS38YZgRvcaKqSe65uRJUSX9Fdc840 7IA4l0sSiWXw
zPif6+gzEXxHYHOdhDLpGs6yfgIGVPjflzDgsu15iR/iRwTC4/m4UcgVbVVk e/6P/c/2teIl
dTdnP5H4qWrs7Z7pSXXEqXhD9qxjd752O9LwC2bWPQz1HcnrEbzACqx1Q8Ov WEl6Pm9aczkN
L3Gf2JdIqxVfkXgVr/E4p6er4uYWUzepqhjTIxkjy90oIEUPBxUpK7sEUnT5 OCtkwh0dNdUB
sH3ZGahPqbArJSzLsN20G4UIFnm4XflwwcovHVvQwWBD/DXy26COZzyoN6jD Ge8t6oDqvkv/
vsa9t3L0BqylVhvfenlXn8bQJay74E5b7yo38DqMME8TN7pS9dtQVnvEXRbY Fou2X8TGK3wQ
l9GhLl2x0GXsVJfuir3NaOJ1gK51cvFeyp7HRlzBVgy69qVnjSMx3ptxG273 V3rFXyl1EevO
Yt1F7Iq2L+HOBlxF43n/7QMN+DXEWbRV3l9Ay1sQh69g4CrE/vAlpblnCR8W mI4tYpS/BH9J
VyG2hAdDlJ8vu3srXQDG6dohOjiNfZhBAo/iAB7niSRF6Tx0LJRdH0Q3JlzX BSYx4rse5125
3hh7HR0V402u8ImquBv9uIVqbr7yHs5WY+uV8hKmmeglPKrCnq01daLK1Pqy qXSgH121ys8E
+mEE+tG1sh+nAv2YI1aeqX7fD43IL1zFplr9M1X6Wln/gTLpHJ8K/XRl51mE L8TCimmx0CIy
inwKKT7nY7GwK+lSki4lqRBxG6sEZIeGc6yHl9COl7Gd3aIHr/Hvw/kqD/rL Huwve/AfXlUp
nKHh7pIH3bGos4gn3esJ1sMiPqVo9RmfpXuTrmPRk9HPhUN07AvTMcb/5duW cIqN47QIh6Mn
Q6FwiB+OfnPadTr6XPS7VbO/Vz37uWtmq/V+oDj940qQ9zA0sCQ0vMun9yj7 Df9L/paBvo9d
+B1z+nseO/+Ao/gjnsWfcBp/5jb4Fzf4di9AP/hdJPnPMMTww6qJ+zAcJYhq 1pboz5NeMI1v
45eHQ9FzE4fD0RcnFvFyxZlOtxv9lbn7G438nW//YHX9k8b+hZso24x/Vy28 xV84xPZwHhe4
YAMuurYu4XW3MQn+MbiMK03N/wNQSwMEFAAAAAgAtWRcPTkzxjjTAwAACggA ADEAHABJZEV4
YW1wbGUvYmluL2lkdGVzdC9pbXBsL0lkdGVzdEZhY3RvcnlJbXBsLmNsYXNz VVQJAAN2UslM
CVPJTHV4CwABBOgDAAAE6AMAAI1VWXfTRhT+JovlRSx1ErMFcENaL5SoZSvF EAiJ05q4Js1i
mu6KPDhDZclHGpPyr9I8JAdyTssTD/yont6RFRscO+2DpFnu/e53V7375/Vf AL4A1zDEcFHU
JPelIRpN2ygF60XTkq73skQnGkYYMq5XN7hli6bPDd54RmvX422N4gfCEYbx EO8DKIYR4QjJ
cDabK/cTKJDEvFvjMSRwQoM+0Ghx2bR+N+t8eoXXhS+9lzpO4hRDtFRZXZur zBcZcuX/qVqI
4iMytCVl865hbG9vz4RKMwEAKUrucNdoE04QtTEd45hgSNS5LHZ8u5ktPzdf mIZtOnVjVXrC
qRcGkjh0OIYzOKfhLEO2v2TTbtWFYxTVZjlYK1fPM+QHQB9VKMTJyKSOi7jE MGy7dYaJ97k+
2XzOLVnIVeNgSOv4GFMMkXsqVbOkkM1VNUwzjHU1in9YvCmF6zCcKguHV1qN Te6tmZs2Z0iW
Xcu0q6Yn1D48PC23eE8tpAaVQIx34SfKfaySQ8NIU63ILeEzXC4fW7yEGLE8 bkqi8SA7KCHz
tun7g/MVxihBDXNDw3WGyeNwdNzELYoN1UewF88E90oLQTBLGr5kmOq6VbJt XjftOa/eanBH
drzU8BXDmd6SetQSdo17UZBbibUtnraUgXQmjju4r3I325Pdw0qsKu4Pdczh EYNGzCpmgyIy
Tq14RFiBLegoYpFiZzab3KkxXOtb3wP4UVN9w3AhkxZ+2nFl2ky/MG1Ra7MN wqFsPNaxpOhE
pdvWjuM27pNNHoSN4dLx6aK6IkfaGQ/bus9wCW8KqrxXdKxiLWzdjspU9r+m RUFDtXeqddTj
BNbdLPCmxy0qN4rZuZWWI0WDV4UvqA/mHIqFqZLrq/rvxq6rQxNhHT/p+Bm/ qE7ozrNUf6fI
4Krb8iy+KFSfpY6U/4yywqCXHId7Qdi4r8Gi2B7vMWXlcEJSVVHp0jNKf4xR xKAhSrsY7SSG
aAVM7yKePP0KySG8wehS/i1O5HeWdpHK7+HCAdjGPi7vBJJjNDuvkNYntD6P CL2naKBdQRLT
dJPBBLKYRB6f0k2K5E6STIbOQDcacnQDwqEZFTK4QV+FO5rfx9U/adGGjtMX 1IYjuBVA6W0h
fIZrAcAMjBDApFMlm7v6Cp8zPD3A7Y0D3NlI3t3HPTp7wLCH+eTX9NpDaR/l v3uMzBKvhx2+
BBQaUatvUQn4PcFyaO56yDdKkfnuDdZ3OmiR4Pzxe3SjIVIMT0l/GN8HqBuh 7A/BDcU+kAVG
dvFjL9p6gDYUPL8G79/IYcWcegCbqEVi/wJQSwMEFAAAAAgAtWRcPRrpAzoJ BQAA4wkAADcA
HABJZEV4YW1wbGUvYmluL2lkdGVzdC9pbXBsL0lkQW5ub3RhdGlvbkZyb21Y TUxJbXBsLmNs
YXNzVVQJAAN2UslMdlLJTHV4CwABBOgDAAAE6AMAAI1VW28TVxD+TrLJJmaB ACEEkkAcDLWd
FJdCbzil5OLQbR0nJSYQ0zbd2MdhYb0b1msuUlWpatW+VlVf8lL1JiFVPABt E6lIVZ9aqT+q
6szuxnGcBNWSvWfnzHzfN3PmjP/59/c/AJzFiooWgZNmyZNVL2VWVqyUXhqz bcczPNOxp1yn
cn06q5NdhSJw2nGXU7JomStVmZKVMq0dVwZxmZmlW7LoBb7tAsdC0B3wBPbm xqYzi5nJzNTY
1Wxe4GD2lnHXSFmGvZya81zTXk4LKLZRkQIdo0Rom95FgdZ4Yp7sE05JdkJg nwYVHQL7s6Yt
c7XKknTzxpIlGc8pGta84Zr8HhrbR32YCFpxSMMB7GGMwxo6GUPxbppVgVPZ /1EL0qbJOTYX
JyyjSmGD8UR259pkfI90J/owoKJfYKBeF37MGsXbxrKMZU1PuoZV1XAcJwR6 9MnFsVxuJj+W
12dyi1NXZqYX/cIdfz6NgLosvZxft27StENV1eqGw+H49v3EfISKckrDabxA HjLneGbZLPoV
uCLv1ExXlvxzKKhICIw8ryEaY7lsEcQxzIUfEZiN75KIblMhbMMK2ymt6w0i Q9t2SyD7jIYU
XqIUA9kPBFLbaYpOpeLYKdv3SDVqTHNzqba8F5RHdaxSsFLkZekJHInrhUJi OzlTv6phEFFu
rdc1nMN5gc6yNLyaK/VJAaETnCurjnWX4ESBmpqTzT9Y8dHnGL0nvkOmiXkV YwJdzefElBMa
hnCSKTMaLuItAiXt84ZVk1svVIhFF0BetavMpcR1rlgr3tXwNnTe0atzGzuF CC5hRsMs3uOd
OzXqy6Zu2ZBXYJA5DVlME73nbKqb13CNW6iDkGdd5/4D9lzQkEdUxQ1Ktzml 8Vq5LN0ICviA
e+RkBxYpejDOQ+DCINsNDUsokiRjZUXa1IYjOzXwNlMAnGYEyQhlgb74xHP9 FoiEjqtmUUV6
d3MUiMw5Nbcop0yeLv27DIszHE4DQ7dt6fq3VFZV2HQ/dxoElPLGKFCiVMZW +rahBf086Whk
Kzyt6Bmh3wj20K5Gbwl68qdN/IK9T2jRgv2+U4u/qVBvdvlWBjhQD7tIFg7U kus4mHyKvb+h
ezN6H5EDaYo4RxGjPoIW+KMHR3ysXhwNsc7Qk/eUpzj2uI7R7tsyDbFKGCv4 voSxqTC2Lfkr
upuDcw3BbfVg6vwwuEqVYKGnOHg6OUw5JNcQW0VP8hniC0mldYR31kHWFzez 6yEwUIu24TrV
aYGqUkAMN3yywQAwJOPVWSLhgxjEy7TiqtEdDwXcoZwUekb7fva9e7H5OUSk rzxO9vUPrOO1
zcyC0pbQjTIV8KZPmgxA6qRRvIELftZROoRR//CieJNW3BN030N6l94ZLRbS 92+hH/kTl9Yw
/iTZN7KOyeb0XVLgUUQNA7hHFb3fkH6sriRWVxLDFC776dPUCPnL9M7ahkL+ vi381FQB/Tre
aWb/lNg/I//PScEXlNuXPntPgFZnHwrZBQ+ZkPOTkHM85Ew3chLl39TOdOZ/ QVUe4mjrQxwm
I1vWkFuFSgZFecSarjxqOpOvSNPXVONvGrSM17WM17Xk6837McWx13k66qur 6KC7dP3xMxQW
eLGO97PDBz9cw0fXhgN+WnQl1lC6NryG5c2OOEbdDnxLiN9RA32PE/iB/i1/ pKvxU4OS86GS
XqrYTZikoAW3fIzbsMAXnmYbKnDaO/8DUEsDBBQAAAAIALVkXD3Vd/8bDAUA AO0JAAA5ABwA
SWRFeGFtcGxlL2Jpbi9pZHRlc3QvaW1wbC9JZEFubm90YXRpb25Gcm9tRWNv cmVJbXBsLmNs
YXNzVVQJAAN2UslMdlLJTHV4CwABBOgDAAAE6AMAAI1VW28TVxD+TrLJJma5 hRACSSAGA7aT
4lLoDaeUXBy6reOkiQnEtE039nFYWO+G9ZqLVFWqWtHXqupLXqreJKSKB6Bt IhWp6lMr9UdV
ndndOI4TUC3Ze3bOzPd9M2fO+J9/f/8DwFmsqGgROGmWPFn1UmZlxUrppVHb djzDMx170nUq
maLjSp12VCgCpxx3OSWLlrlSlSlZKdOatoPIzPTSTVn0At92gf4QdkdEgd25 0anMYmYiMzl6
JZsX6MreNO4YKcuwl1Nznmvay2kBxTYq5NsxQpS26V0UaI0n5sk+7pRkJwT2 aFDRIbA3a9oy
V6ssSTdvLFmS8ZyiYc0brsnvobF9xIeJoBUHNOzHLsY4qKGTMRTvhlkVOJ39 X/UgdZqc443i
uGVUKXAwnsjuXJ+M75HuRB8GVPQLDNRrw48Zo3jLWJaxrOlJ17CqGo7imECv PrE4mstN50fz
+nRucXJ2emoxMz49mxE4+mIiAXVZejm/dt2kaofKqtUNh4Px7fuJ+QgV5qSG UzhNHjLneGbZ
LPpVmJW3a6YrS/5ZFFQkBIZf1BaNsVy4COIY4uIPC8zEn5OIblMpbMMKmyqt 6w0iQ9t2SyD7
jIYUXqYUA9n3BVLbaYpOpeLYKdv3SDVqTHODqba8G5RHdaxSsFLkZekJHIrr hUJiOzlTv6Zh
EFFurzc0nMN5gc6yNLwatcyEgNAJzpVVx7pDcKJAjc3J5u+v+OhzjN4T3yHT xLyKUYF9zefE
lOMajuMEU2Y0XMTbBEra5w2rJrdeqhCLLoG8YleZS4nrXLFWvKfhHei8o1fn NnYKEVzCtIYZ
vM87t2vUmU3dsiGvwCBzGrKYInrP2VQ3r+Eqt1AHIc+4zr377LmgIY+oiuuU bnNKY7VyWboR
FPAh98iJDixS9GCcB8GFQbYbGpZQJEnGyoq0qQ2Hd2rgbaYAOM0IkhHKAn3x 8Rf6LRAJHVfN
oor0Ps9RIDLn1NyinDR5whx97sA4wwA0NHTblq5/T2VVhU03dKdhQElvjAMl SoVspW8bWtDP
846Gt8Izi54R+o1gF+1q9JagJ3/axC/Y/YQWLdjrO7X4mwp15z7fygD762EX ycKBWnIdXcmn
2P0bujej9xA5kKaIcxQx4iNogT96cMjH6sXhEOsMPXlPeYojj+sY7b4t0xCr hLGCb0wYmwpj
25K/ors5ONcQ3FYPpt4Pg6tUCRZ6koOnkkOUQ3INsVX0JJ8hvpBUWod5Zx1k fWkzux4CAzVp
G65RnRaoKgXEcN0nGwwAQzJenSUSPohBvEIrrhrd8lDAbcpJoWe072ffuxeb nwNE+urjZF//
wDpe38wsKG0J3ShTAW/4pMkApE4axZu44GcdpUMY8Q8virdoxT1BNz6kd+md 0WIhff8W+uE/
cWkNY0+SfcPrmGhO3yUFHkXUMIC7VNF7DenH6kpidSUxTOKynz7NjZC/TO+s 7XjI37eFn5oq
oF/Hu83snxH75+T/BSl4QLl96bP3BGh19uMhu+AxE3J+GnKOhZzpRk6i/Jva mc78L6jKQxxu
fYiDZGTLGnKrUMmgKI9Y0+yjpjP5ijR9TTX+pkHLWF3LWF1Lvt68n1Ace52n o76yig66S9ce
P0NhgRfr+CA71PXRGj6+OhTw02JfYg2lq0NrWN7siCPU7cC3hPgdNdD3OIYf 6P/yR7oaPzUo
OR8q6aWK3YBJClpw08e4BQt84Wm6oQKnvfM/UEsDBBQAAAAIALVkXD2D0QLF yAMAAPAOAAAz
ABwASWRFeGFtcGxlL3NyYy9pZHRlc3QvdXRpbC9JZHRlc3RBZGFwdGVyRmFj dG9yeS5qYXZh
VVQJAAN2UslMd1LJTHV4CwABBOgDAAAE6AMAAO1WXWvjOBR9dn6FFgaaFuL8 gKahpbQQ2G2X
nT70VbGvE83YkpGUyYah/33vla4Tu3HSdNp9GzDYlq50j865HxpfXAzEhZhk pt5YtVj6afgd
d/5p6Mss/4Lv8aCW2Xe5AKFyD86nK6/Ky8FAVbWxvhm82I0Yu0ghK1XtIIWq SDNTVUan2nhV
bNKbXNYe7OVp1g/0UmR+mj0alY2Le5l5YzczHDq8HDJjIb17nH+DzKPZmNn5 YzQSc1goPVo5
sKPcZGI0Ckw9LUFM5lN2ItjLZDyfisJY4XG6MjmUKRnPvKit+aFycEJqIXkR kp/DNLMgPTw/
PxP5+C8q8EuTh21AZkuRldI5YYpXmwZwoPM9aNcOtirNwuvvKF2YXIAGiw7z KOpqXqqMXUTj
Lm8C/vXoxIl9OsXPQUJEJUxHhmAhjwgFR0saZg/xmBw8RtKFmhDWBDn0qA/6 cF56hN05XXTM
P6jhFtttIDgwrzSu1Bk0bDZKFPFUn4s2UttH6vCcuEtUIYZt0OLqSuhVWcbZ pDvVPWwKs4ev
TzcPt3eXaPoywGd34H/Ar6x2Yr3ESAIKRuWaIwr8lHWNyOS8hG2s+k29JcWE LHibiyfallIN
KtAkiNHCsusY2t6uoIlq1d6cUIBicKzcmWuCBtMzwGzrFZd1k+ANQSKWz2Bh T9vrxx9gLebz
Vua5MSUQYsca3xv7hNsNHxl5eO105wOh4m2ZWXlGTvSxvO01DSkIlCtWd9lw 2Ayz0xRuKb+H
5+kC/B27whh85bxxxdsUsnQ01o4sSnO3Vh6rkl9KL3AxLEJyeRNYO1rS3P9U DWJmfA24Jpxp
03i0OCiu8Fga1v2WnI1tUZNG1qa+Z9LBLL/R2GBCoN9bU91R0xj2jnbk3jIa aeldwH6G5yRC
UOHdcJ7/+nMPDI69BwqavxNIDoVclf4W8TRRd8whm+w7eTlQsLcFmjOU64q0 GMkcXB8Kqlpa
WYm4X7s+YTgH12mnlHRaxluITigaWznDgRtWmtsOw4pEMoJWUKe5iR+7fOcF MWl7+BSUA+0D
IMO7yhovAWc/r0ulv+8uEH3hPYFqOsvFbkrQnAiTkzFOvpyd2D84gA71EWqH wplYbdZ0x9B4
KXKqxBK+0ASFUsFdhg2Vxx6CbopVSQKygQwm1Aaon2AnULGlrBVunUkqDxK/ /JL3QlI2a7k5
tb3QuhatrH3nCtbD4NErQzcsjteLdnAQWa8K9mdKT8XkgPA49Vv247IjRR8Q vV2Zf1lywtwQ
T2f+PK0+xtpJjLxuHf0svIjxuO/GPfgPUEsDBBQAAAAIALVkXD16OcNkJAQA AK4SAAArABwA
SWRFeGFtcGxlL3NyYy9pZHRlc3QvdXRpbC9JZHRlc3RTd2l0Y2guamF2YVVU CQADdlLJTHdS
yUx1eAsAAQToAwAABOgDAADtV9tu4kgQfTZfUasdKSYKZp/DZSdiGAlpBlYJ D3mLGrvAPbG7
LXd7IjTKv2/1xWCCSTa7O9E8RELC7kv1qVOnqsv98/MOnMMwlsW25JtUj+1r /+DdDH2YJR/o
v98pWHzPNgg80ah0VGmeDTodnhey1PXg+X7kG/vO7KLoC1d6Py7LTYRxxguF EeZrepYlRtNJ
xpQavLBosfqGsbHV9+h/6/VghRsuepXCspfIGHo968kyRRiuxjcPXMfpsL8a w1qWoGk0lwlm
Zwq4SLHkmokYIeVYsjJOt5HZO9OgqsIAUXZHzLIMfnzMuLiH3xPpbIYeTRd2 I9INPBobWtIB
3+U9WgtEc4LjmCm8vb01JNMb5KhTmVhcyOIUYkMByPUe5YWxpDQrNRcboENS O8diXbHscL07
26xnIoGilDFiYnZVhZ1v9dYsrwTFCBgIKXqiIkdLVFVGEVX0pKtSYGJhPKSc MHLHiF/jz1bW
/WgXERTJUTw+KtxJZ2b//nJ6spMbFARJY+KUVq0yHnv/3GIfx+UYfnQCE/3A xzgm5jBxdIGX
qJ08pY3gJMrgEElgoATEpCZi6QiKgyZUB+Dduf6FdLmDNimRjCgKBjGvHO1P 2Po/QTrCmlSF
XcNUwNcQNjHCaAQmym42OJw69C3C2fxmeTWfTAe09LFDv4Z/lBKqXdbP6NmL TQr02lJOeNAQ
3gC4hi3HLDFSY9oP/ye+3GEWx5qXSh+JvVY6rLaEqNUtUwSiZ+lfwtPaYE7c lQlDuAeyW7ef
j9BWwLB70dw0eGf9NOu7zGwSb1m0FNqnCzgVCpMZu2XEvhSacTqBEodypJkY PlfaYuc2b1Db
B76mwjr7dBxDkz0BZgqdJXMhDt3eMeBNVWC53BZULUZwYHS6nwqtGY/BPAWN fRFX07zQW4L+
p50LElwzYnhCZIZNxy/9dO1D0wgdGP7RCv1dgq+RIBfaMeDlcFqC7iaAsLna i81geFKOZ5/u
rubzxfJqOVvM7z5fL77eTSeL6+ml2xHMkishpLmkpPhcynxqeia6cttGRxC2 Lu/uIVq9Bcua
qBEYSK2bwtYznGBtmtUm6qtnZ/KETN1OHzsvDjP0+M+Zuf365RQvNHXEihlr 4YSGX8sIbTni
w5j5SWz4PZdQV6fTNp4k8rXPw8N2jsSLZUHGTOu47yuBHbUyZ0PMx7ME9q6C 8RVs8Id9mjx7
OXWXKTWU1PNnmKPwVuoCYdgZ2FVuxCA6blMfOD0T5pwLSsz2Bqu9NhSsZHnt n9lHfTbVwLY2
rVlHfipXtkvef2I8+xnUPWo3ui+0J6czuL12yOPOxQflLYREWfMuo3/D1NuL yBS9tjL7hgLy
6H8BxVzAqjJKMAc4p+h615Y3Qr59YNtfTlMt5L1KRC99FjUupboXelYaj9Dv Nz9mO38DUEsD
BBQAAAAIALVkXD34n/1elwMAANsNAAA2ABwASWRFeGFtcGxlL3NyYy9pZHRl c3QvaW1wbC9J
ZEFubm90YXRpb25Gcm9tWE1MSW1wbC5qYXZhVVQJAAN2UslMd1LJTHV4CwAB BOgDAAAE6AMA
ANVW227bRhB9Jr9inAYQZUjku82oVmu5IGBLQaQEeRMocihtQ3LZ5dKOEPjf szeKpC5JW1QC
+kTuZWbPnDk7s971tQ3X4Ee02DKy3vCRGnqdsZx6G8RvxdezizD6Eq4RSMyx 5C7JivTWtsWH
Ml5PBvE4zykPOaH5A6PZ56fH24Mt8vNeO2scULZ2MUpJUaKLWeJGNMto7gpn JNm6U/khkfJ7
2gYjytCd/J6GZfmzXRK+O2n7DVRAf8NotvoTI663257h8Wo4hBWuST6sSmTD mEYwHCpOxzlI
O8ww18QATYBvEDIaYwpUeYOej9nIX42CGBoKQXIIgkTfW418T+zoubvTMI8P zvIL9VkI7wlN
U/pC8jUkGPKKYQkhwwYKxjfKokqVCYCfktG3u5TkX9opPpZSGfova+TTMEOQ uOWPgvfqe8KL
VpJx7HtFLaW7NebIQnG0FlS1SkkE4arkLBQURDJvcOI8wK9cRFxCi/4mmKNm 8M22ZHosw0iM
SVilHJ7DtMI6CT0Tch2P09+LqAch54ysKo6ucnUq1dbJxMiVuxKxdYiea/hQ Q8piZHrg2VbB
KBeBYgylDCuChORhCnMBRiR1On6aLCf3k4fxx8cFvIO8SqUcOwFHYbQR5v+7 eE2IuZTXu26k
7RD/JbAOiM65J6QnKBJKssqqQOb0b23r9b8HcTd7RsZIjG08upIBzlX+1cBg YShudA6dWuo+
Ei58pqUb3C/H0+lsMV4Es+ny4cPsaakK8TmAm0tsUtaIqoVS5vGshz9TIi6J OboWD77IoQZi
5mgaT7WmDCTLSMxsljMkAQfbbeED/lURoVKnL0RsWXpt6wgTOGgfDt+QcgDt aXc+WQz2EnU8
P8ulVPqgRjlQIPsX0JsmUZdVwD+QOyTnddcI7gewojTFMAfRQ2j6jM2EbIqL bWFYLl8Ijzbg
7Cz1tBWFJf4DBm6kTa2dnaBkbl4bTanL6CqwLaA7gDtgl2JPSRDnh9wZWoVc PskyfAamauEb
5fd3R922iKzpM7zNu7y1TS5I18e83CfsjPx0+siPyNGwmrMvRUp9qzAoD4R0 vhu295DQLwn4
VXffKzO8gavOPlcURdFpHFWijl9NHcTlWTS1nlP9Y1qRKutB+Z7Rr1tRyaGD tdkrnxemW/xW
JQkyWVLkm1H1CGivOPu2ige93Q2LQuB33oBi6AbeHFnccded7vV7ZlYhNItt iJLHV/C8E88V
+ztQSwMEFAAAAAgAtWRcPS2rsY6YAwAA9Q0AADgAHABJZEV4YW1wbGUvc3Jj L2lkdGVzdC9p
bXBsL0lkQW5ub3RhdGlvbkZyb21FY29yZUltcGwuamF2YVVUCQADdlLJTHdS yUx1eAsAAQTo
AwAABOgDAADVVm2Pm0YQ/gy/Yi6NZHyy4fsdcc7NcRVSYkdnp18tDIO9DbB0 We5iRfffs28Y
sM9tU9WW+gn2ZWaeeebZnfWur224Bj+m5Y6RzZZP1NDrjeXU2zB5K76eXUbx 12iDQBKOFXdJ
Xma3ti0+lPFmMkymRUF5xAktHhjNg5gyvD3aJD+ftbvWBWUbF+OMlBW6mKdu TPOcFq5wR9Kd
O5MfEivPp21QxnODD1lUVX+3SybgBl2/oUrpHxjN139gzPV22zNMXo3HsMYN KcZ1hWyc0BjG
Y8XqtABphzkWmhqgKfAtQk4TzIAqbzDwMZ/460mYQEsiSBZB0eh764nviT0D dx8Pi+Qoml+q
z1L4T2mW0WdSbCDFiNcMK4gYtmAwuVEWdaZMAPyMTL7fZaT42i3z62WV6f+y QT6LcgSJXf4o
gC++J/xoPRnXvlc2grrbYIEsEsG1rOp1RmKI1hVnkaAhlrWDkxEBv3GRdQWd IrQJnTCE77Yl
y2QZXhJMozrj8BRlNTbFGJjEm5yc4UFWA4g4Z2Rdc3SVq1Mlt06WR67cVYid IHqu5UQNKUuQ
6YFnWyWjXKSKCVQysRhSUkQZLAQYUdrZ9FOwCu6Dh+mXj0t4B0WdSVn2Eo6j eCvM/3f5mhQL
KbF3/Uy7Kf5LYD0Qvbgn5SdIElqyqrpE5gxvbevlv4dxN39CxkiCXUT6TgNc KAWogcHCUJzs
Anq3qvuRcOEzq9zwfjWdzebL6TKcz1YPj/NPq+DD/DE4D3RzmE3ZWmF1cMpa njX4EyXioJjQ
jYDwWQ41EDNHs2SmdWUgWUZmZrOcISk42G0Rj/hnTYRSnaEQsmXptZ0jTOCo lTh8S6oRdKfd
RbAcHZTqVIVWK6n3UYNzpGAOL6A5TaO+XgF/Q+6QgjcdJLwfwZrSDKMCRD+h 2RO2E/KULHel
4bl6JjzegrO31NNWHFX4UxzcSKtGP3tRyfq8tLpSR9JVcDtQ9xD30C7Fn5Ih Lo7ZM8QKyfwu
r+OzcNXI3+h/uA9226GyIdAwt+gz1zW5IGFfiuqQsrMy1Ospf0WPBtZGvxQt zdnCsDoS0znP
2cGzQr8r4L3uxVdmeANXvX2uuB5F13HUVfX6AdVpXJ5Hc+tzqn9MU1IXfFh9 ZvTbTtzp0MPa
7pWPDdM3fq3TFJm8WOQLUnUL6K44h7aKB73djcpS4HfegGLoBt68srjnrj89 GA7MrEJoFrsQ
JY8v4HknHy/2D1BLAwQUAAAACAC1ZFw9dQXN9F8CAAAtBwAAMAAcAElkRXhh bXBsZS9zcmMv
aWR0ZXN0L2ltcGwvSWR0ZXN0RmFjdG9yeUltcGwuamF2YVVUCQADdlLJTHdS yUx1eAsAAQTo
AwAABOgDAAC1VMFu4jAQPSdfMY0qNVAluReKiigrcaHVbn/AOENw19iR45RW K/59bccB0lBx
aQ+R7cl45s2bN86GwxCGMKay/FCs2OiJO2adszVdL/Jrs2ZhSehfUiCwXGOl U7Yt+SgMzSKV
bo3Do0WqIkXKWVlhitu12UuF6XzGSVWNLjg9rV6R6ktezw2gSykt0HT+i1At 1ceig/r8hZLX
BRPp3B6e3d7cyDxfV0kCKzS2pK5QJbmkkCSOu6kAmwq3KDTRTAqQa9AbhK3M kcN4NfEYxtlq
kh6Coch7oR4KFKiIxrxhvl5xRoFa6mDhmD4pB/BdmyAVnNZ4hPLpBvwLA1tL YNLMFJoclQOZ
45rUXMPau3VLSZ3/V8UHX9YSdIsJbDWBL6eyoekndEwwHQ8syEA3YIOg62HA dg33EHcMg1YY
6W8DtTJh0sXyz8t0OZunBeqWpTjaaF3eZdlutzuIwAgiM0LIDKEos0bU0WAE FgZbQ9xLfnUP
oua8QRwECnWtRA/jyP7ch81HiaYbiOfvFEsnE2x3PsqJ8I7IuSzio+PIx/L5 BO76uoit1z7s
t5sYoQrDvqDYStR3/SfafAaXK7OqS1Q9jN+U++HpDZViOR5g+DcFqCMhbt4h QLd4QDvmGtPY
rFTchq0ZqsVjPPDd8YNy5/qtN0ruGvo5x4LwqSpqOzWH7sbRi+G3Gd2bCG7h GH5JtmjIuIXo
BlgFQmog8EY4yxt/lzlqe/0DLHU65IcGDLCOwbfLKy3u/BvYeTr4fU8rcywV 0hblmdY+njic
e0pOCjlbQscrxXbCGvR7yLKeYsP/UEsDBBQAAAAIALVkXD3Kgx5WygYAAL8a AAAwABwASWRF
eGFtcGxlL3NyYy9pZHRlc3QvaW1wbC9JZHRlc3RQYWNrYWdlSW1wbC5qYXZh VVQJAAN2UslM
d1LJTHV4CwABBOgDAAAE6AMAAM1YbW/bNhD+rPwK1i0wu3Dk7WuTZlUdpRWQ KJ3tFAWGwaAl
2mYjiwJFJXWL/PcdX/RmyUqG1u2AIJbI4/Hh3XMv1OjlyyP0Ep0GLNlyulqL M/U6qr3LoRde
+AJ+R0cJDm7xiiAaCpIKm26S6OToCH4YF/mgFzpxzAQWlMUXnG3cgHFy8ojQ p6vLpoj8ucCB
YHzbPvlBwykhML6ySRDRJCU22SzhGfa2XUcITheZKGHsERxHOE0fE3rirtI4 hbBXs1T7gi+b
yBbbhNhgjBn8lvuMjKOeHR+jBVnR+DhLCT8OWYCOj5XTnBjJ/ciGxNqoiC2R WBO0YSGJ0Oni
zGg7HS3O7EIZicOGqjcrEhOOBQm1y7NFRAMUSMugmtnlmRD5IkBJiqoHLaHs rEDfjix5Fqvj
MNZebFYdnCXRWQmnd/CKtOuAHi3kM3OvUZxF0gs/GQO4cy+CMSewMkUY/Ben AscB6fLcEHFA
mwrCSYjuqVgrJd/eRDS+fYSu9kSt5FvUGHlAi63a0oS3UpqH+s3EQ3c4yoit zZKc+UyQV0oe
NuAkEOgew3qGAnWYqiZEU3RHsRpKpUUCpWSpgxptiFizMMf/nMYUAhz+9QcP Q3S/psEa4Shl
KCF8yfgmVYulAMUR/VrjudlwCFYAG4mMx6kar9grF9FalojFBNQD5nALNAap 1P4eVqSEPNUF
5YK2dPac+NM5mL2Ueq6N0s2+Rmz2BzLerDQD8/WNziGqpVWbeP505vhjd3By ZD0cLjS089GC
sYhIrqcenAh88hq4EKWkJSRKqsMjjsPS70R7th4ZCAgCw8A3FTd6iRzD8RYx kOcpyhLgi6YV
EC0kicxc2uc5t2dKg6YlPMEBQ8nscu+crDsey834APpJDECwQEtKIqUFBwFJ QZPeahxRlRnT
NctgHjIFqL9jt0SBojKgoq2NPEgHQM2hPOs2F05lZt0ahdVdACNbCEzjajB8 N51bmKhj3Jx7
zGIhz5JTs+CqttUeqQZHdIUxFKkXDE18xWOI2H7Om4GJcdSviQ8akWbnjrFX ROSz9UW2OeRA
ktAajdC1NiRwxyQ0SaWcjGWOtJrFEGxfh/96B6CUGvS7UeahOigqAqS45l5/ NvP4HjWvUEzu
29KDPnElFgXPSG4Fr6S8Yh0xAUPigBLIxFa9SykziU1UsesX9tQBXZQEiC58 HGKBgbGfgexS
167h7D00awGnJcNSbZu6Dk7mKq8wv61gU0Ef0kAih7gMcPybgChCwRrHK0nd 5iZLTshXojQi
pJXeJGFeEXlefjWbFHtrNdfq8GeSiXbSDhuck4ncKvXvNMoHyfE6fk2PA9Rr vQGYKDbIOvq0
w4IsrgJ7gc59vNlB2y+XDTqQqxwzhSAKYBWOLoCYGSfAMRWPvx+qxD5mfgjU buMXDeovND1g
+I+GL1D/UrPX2il9sMrAzmlqcwMJ2zx7JtP3D9yGlf3X2KTN/Q2YvoTIhKhv IiZbm0arbDIQ
qjdNSscqwzzUvdMa3xHochBeLuVdAVow2ZLJlifQHTx4F1IsKKYcWuED+OiO 0RDtqSiV1sKY
JO8tTlRtLO1ULY6mpKlLsbq9hdIklKOlIZ9c23kV1XD0a987nzu+fz1zZt61 P7+YXF/N3fH1
RDXllpEsAqHfoRja+z2q5nPfuXJNxe+4oD6GC2SfhqpQ2opJhnuO6OcQvmwZ 2knPZI9janXn
FVNfRkRaiQ0TA0pReXn4/8VARxu002IbS9VjoW7CPc1i2c+kRKiMTnI/q5H0 AydL+kW1px8m
7oX3qZyChqa/rxuXV7iiBRX5Ns1GVLpqZwS68PrIU+8Juy3uDjSTBeQ3O8DD 4azytmompwT6
RZbJb2MqY7YKOSHc6eT9XE6n6huKTiktfW4l1+RZ5gRhUMAS6XBgkZ6sbAJO AwUmmLvTRtuk
HejJXutsD1ZN587b6WzijGdD9AzePH/mTi6csavm3rm+O3Fm7vk8t+58fOlM p8rhClmZPh7p
xoZNt0pPQdWn8UpO92KQA0jyA9sQ/aH+Og8l4QJyf+q5vkH/8foSUtSlBj9+ 7/jvXOetfJWT
N/7Unc3Kd+88H/f+ujFj5+7E++ieq/XXE3hzz03G3e+Gap5sTu11Acwd3AFl T/ZDzF85zk81
fhmpEDIs4wEp6tfEDDSyzji/+ecHSPU4ZEvC7M8JLlTM5Eh50LTRwnk7360q OlVmOF2cFVr1
1/kfWgeZgIoDCbvSBDUhq+yvvYm0RSBp9gpYvRPLAgFINuUqeEfo8bBVYkZn /iY/R+jN/v5H
7WyhHk4SGi8ZUKj3xgt7WvDB2PIBjUaN7xdH/wJQSwECHgMKAAAAAABAZVw9 AAAAAAAAAAAA
AAAACgAYAAAAAAAAABAA7UEAAAAASWRFeGFtcGxlL1VUBQADd1PJTHV4CwAB BOgDAAAE6AMA
AFBLAQIeAwoAAAAAAAhjXD0AAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQUQA AABJZEV4YW1w
bGUvTUVUQS1JTkYvVVQFAANQT8lMdXgLAAEE6AMAAAToAwAAUEsBAh4DCgAA AAAAEmVcPQAA
AAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1BkQAAAElkRXhhbXBsZS9iaW4vVVQF AAMjU8lMdXgL
AAEE6AMAAAToAwAAUEsBAh4DCgAAAAAAtGRcPQAAAAAAAAAAAAAAABAAGAAA AAAAAAAQAO1B
2QAAAElkRXhhbXBsZS9tb2RlbC9VVAUAA3NSyUx1eAsAAQToAwAABOgDAABQ SwECHgMKAAAA
AAC1ZFw9AAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UEjAQAASWRFeGFtcGxl L3NyYy9VVAUA
A3ZSyUx1eAsAAQToAwAABOgDAABQSwECHgMKAAAAAAC1ZFw9AAAAAAAAAAAA AAAAFQAYAAAA
AAAAABAA7UFrAQAASWRFeGFtcGxlL2Jpbi9pZHRlc3QvVVQFAAN2UslMdXgL AAEE6AMAAATo
AwAAUEsBAh4DCgAAAAAAtWRcPQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1B ugEAAElkRXhh
bXBsZS9zcmMvaWR0ZXN0L1VUBQADdlLJTHV4CwABBOgDAAAE6AMAAFBLAQIe AwoAAAAAALVk
XD0AAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQQkCAABJZEV4YW1wbGUvYmlu L2lkdGVzdC91
dGlsL1VUBQADdlLJTHV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAALVkXD0A AAAAAAAAAAAA
AAAaABgAAAAAAAAAEADtQV0CAABJZEV4YW1wbGUvYmluL2lkdGVzdC9pbXBs L1VUBQADdlLJ
THV4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAALVkXD0AAAAAAAAAAAAAAAAa ABgAAAAAAAAA
EADtQbECAABJZEV4YW1wbGUvc3JjL2lkdGVzdC91dGlsL1VUBQADdlLJTHV4 CwABBOgDAAAE
6AMAAFBLAQIeAwoAAAAAALVkXD0AAAAAAAAAAAAAAAAaABgAAAAAAAAAEADt QQUDAABJZEV4
YW1wbGUvc3JjL2lkdGVzdC9pbXBsL1VUBQADdlLJTHV4CwABBOgDAAAE6AMA AFBLAQIeAxQA
AAAIAMRkXD09LvLLZQAAAIIAAAAUABgAAAAAAAEAAACkgVkDAABJZEV4YW1w bGUvcGx1Z2lu
LnhtbFVUBQADkFLJTHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAAAIAPBkXD0+ 67QIkwAAAAcB
AAAaABgAAAAAAAEAAACkgQwEAABJZEV4YW1wbGUvYnVpbGQucHJvcGVydGll c1VUBQAD5FLJ
THV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAAAIAAhjXD2rvBUTUQAAAGEAAAAb ABgAAAAAAAEA
AACkgfMEAABJZEV4YW1wbGUvcGx1Z2luLnByb3BlcnRpZXNVVAUAA1BPyUx1 eAsAAQToAwAA
BOgDAABQSwECHgMUAAAACABiYlw9lLj+YswAAABvAQAAFAAYAAAAAAABAAAA pIGZBQAASWRF
eGFtcGxlLy5jbGFzc3BhdGhVVAUAAxdOyUx1eAsAAQToAwAABOgDAABQSwEC HgMUAAAACABi
Ylw9T1J2ROUAAACCAgAAEgAYAAAAAAABAAAApIGzBgAASWRFeGFtcGxlLy5w cm9qZWN0VVQF
AAMXTslMdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAAAAgAgmVcPfbyCZ0xAwAA qxEAABQAGAAA
AAAAAQAAAKSB5AcAAElkRXhhbXBsZS9vdXRwdXQudHh0VVQFAAPzU8lMdXgL AAEE6AMAAATo
AwAAUEsBAh4DFAAAAAgAwWRcPUDqvwo+AQAAkAIAAB4AGAAAAAAAAQAAAKSB YwsAAElkRXhh
bXBsZS9NRVRBLUlORi9NQU5JRkVTVC5NRlVUBQADiVLJTHV4CwABBOgDAAAE 6AMAAFBLAQIe
AxQAAAAIAJBlXD2V0rI5CwQAAN4HAAAlABgAAAAAAAAAAACkgfkMAABJZEV4 YW1wbGUvYmlu
L1Rlc3RJZFBlcnNpc3RlbmNlLmNsYXNzVVQFAAMQVMlMdXgLAAEE6AMAAATo AwAAUEsBAh4D
FAAAAAgAEmVcPdQ8FijjAAAAdwEAAB0AGAAAAAAAAQAAAICBYxEAAElkRXhh bXBsZS9iaW4v
YW5ub3RhdGlvbnMueG1sVVQFAAMjU8lMdXgLAAEE6AMAAAToAwAAUEsBAh4D FAAAAAgAp2Rc
PZ2ewJ+CAQAA/AMAABwAGAAAAAAAAQAAAKSBnRIAAElkRXhhbXBsZS9tb2Rl bC9pZHRlc3Qu
ZWNvcmVVVAUAA1lSyUx1eAsAAQToAwAABOgDAABQSwECHgMUAAAACAC0ZFw9 1AqEz5YBAADu
AwAAHwAYAAAAAAABAAAApIF1FAAASWRFeGFtcGxlL21vZGVsL2lkdGVzdC5n ZW5tb2RlbFVU
BQADc1LJTHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAAAIAJBlXD0JZbySFQIA AMEEAAAkABgA
AAAAAAEAAACkgWQWAABJZEV4YW1wbGUvc3JjL1Rlc3RJZFBlcnNpc3RlbmNl LmphdmFVVAUA
AxBUyUx1eAsAAQToAwAABOgDAABQSwECHgMUAAAACAASZVw91DwWKOMAAAB3 AQAAHQAYAAAA
AAABAAAApIHXGAAASWRFeGFtcGxlL3NyYy9hbm5vdGF0aW9ucy54bWxVVAUA AyNTyUx1eAsA
AQToAwAABOgDAABQSwECHgMUAAAACAC1ZFw9jBhab+sBAAB+AwAAMQAYAAAA AAAAAAAApIER
GgAASWRFeGFtcGxlL2Jpbi9pZHRlc3QvSWR0ZXN0UGFja2FnZSRMaXRlcmFs cy5jbGFzc1VU
BQADdlLJTHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAAAIALVkXD2aVSXrYQIA ANQEAAAoABgA
AAAAAAAAAACkgWccAABJZEV4YW1wbGUvYmluL2lkdGVzdC9JZHRlc3RQYWNr YWdlLmNsYXNz
VVQFAAN2UslMdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAAAAgAtWRcPSb3zqEl AQAAzAEAACgA
GAAAAAAAAAAAAKSBKh8AAElkRXhhbXBsZS9iaW4vaWR0ZXN0L0lkdGVzdEZh Y3RvcnkuY2xh
c3NVVAUAA3ZSyUx1eAsAAQToAwAABOgDAABQSwECHgMUAAAACAC1ZFw9n6zG 7bYAAAD2AAAA
LgAYAAAAAAAAAAAApIGxIAAASWRFeGFtcGxlL2Jpbi9pZHRlc3QvSWRBbm5v dGF0aW9uRnJv
bVhNTC5jbGFzc1VUBQADdlLJTHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAAAI ALVkXD0qH5DB
tQAAAPoAAAAwABgAAAAAAAAAAACkgc8hAABJZEV4YW1wbGUvYmluL2lkdGVz dC9JZEFubm90
YXRpb25Gcm9tRWNvcmUuY2xhc3NVVAUAA3ZSyUx1eAsAAQToAwAABOgDAABQ SwECHgMUAAAA
CAC1ZFw9RyaHYSwCAAB0BQAALQAYAAAAAAABAAAApIHuIgAASWRFeGFtcGxl L3NyYy9pZHRl
c3QvSWRBbm5vdGF0aW9uRnJvbVhNTC5qYXZhVVQFAAN2UslMdXgLAAEE6AMA AAToAwAAUEsB
Ah4DFAAAAAgAtWRcPZs7F9hEAgAAsgUAAC8AGAAAAAAAAQAAAKSBgSUAAElk RXhhbXBsZS9z
cmMvaWR0ZXN0L0lkQW5ub3RhdGlvbkZyb21FY29yZS5qYXZhVVQFAAN2UslM dXgLAAEE6AMA
AAToAwAAUEsBAh4DFAAAAAgAtWRcPXQ9CbBWAQAAGQMAACcAGAAAAAAAAQAA AKSBLigAAElk
RXhhbXBsZS9zcmMvaWR0ZXN0L0lkdGVzdEZhY3RvcnkuamF2YVVUBQADdlLJ THV4CwABBOgD
AAAE6AMAAFBLAQIeAxQAAAAIALVkXD3zENli/gMAAKYXAAAnABgAAAAAAAEA AACkgeUpAABJ
ZEV4YW1wbGUvc3JjL2lkdGVzdC9JZHRlc3RQYWNrYWdlLmphdmFVVAUAA3ZS yUx1eAsAAQTo
AwAABOgDAABQSwECHgMUAAAACAC1ZFw9OJVtOXgEAAAyCwAALAAYAAAAAAAA AAAApIFELgAA
SWRFeGFtcGxlL2Jpbi9pZHRlc3QvdXRpbC9JZHRlc3RTd2l0Y2guY2xhc3NV VAUAA3ZSyUx1
eAsAAQToAwAABOgDAABQSwECHgMUAAAACAC1ZFw954ORWoICAADYBgAANgAY AAAAAAAAAAAA
pIEiMwAASWRFeGFtcGxlL2Jpbi9pZHRlc3QvdXRpbC9JZHRlc3RBZGFwdGVy RmFjdG9yeSQx
LmNsYXNzVVQFAAN2UslMdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAAAAgAtWRc PW7rkn8oAwAA
MwcAADQAGAAAAAAAAAAAAKSBFDYAAElkRXhhbXBsZS9iaW4vaWR0ZXN0L3V0 aWwvSWR0ZXN0
QWRhcHRlckZhY3RvcnkuY2xhc3NVVAUAA3ZSyUx1eAsAAQToAwAABOgDAABQ SwECHgMUAAAA
CAC1ZFw953RIlS0HAACZEAAAMQAYAAAAAAAAAAAApIGqOQAASWRFeGFtcGxl L2Jpbi9pZHRl
c3QvaW1wbC9JZHRlc3RQYWNrYWdlSW1wbC5jbGFzc1VUBQADdlLJTHV4CwAB BOgDAAAE6AMA
AFBLAQIeAxQAAAAIALVkXD05M8Y40wMAAAoIAAAxABgAAAAAAAAAAACkgUJB AABJZEV4YW1w
bGUvYmluL2lkdGVzdC9pbXBsL0lkdGVzdEZhY3RvcnlJbXBsLmNsYXNzVVQF AAN2UslMdXgL
AAEE6AMAAAToAwAAUEsBAh4DFAAAAAgAtWRcPRrpAzoJBQAA4wkAADcAGAAA AAAAAAAAAKSB
gEUAAElkRXhhbXBsZS9iaW4vaWR0ZXN0L2ltcGwvSWRBbm5vdGF0aW9uRnJv bVhNTEltcGwu
Y2xhc3NVVAUAA3ZSyUx1eAsAAQToAwAABOgDAABQSwECHgMUAAAACAC1ZFw9 1Xf/GwwFAADt
CQAAOQAYAAAAAAAAAAAApIH6SgAASWRFeGFtcGxlL2Jpbi9pZHRlc3QvaW1w bC9JZEFubm90
YXRpb25Gcm9tRWNvcmVJbXBsLmNsYXNzVVQFAAN2UslMdXgLAAEE6AMAAATo AwAAUEsBAh4D
FAAAAAgAtWRcPYPRAsXIAwAA8A4AADMAGAAAAAAAAQAAAKSBeVAAAElkRXhh bXBsZS9zcmMv
aWR0ZXN0L3V0aWwvSWR0ZXN0QWRhcHRlckZhY3RvcnkuamF2YVVUBQADdlLJ THV4CwABBOgD
AAAE6AMAAFBLAQIeAxQAAAAIALVkXD16OcNkJAQAAK4SAAArABgAAAAAAAEA AACkga5UAABJ
ZEV4YW1wbGUvc3JjL2lkdGVzdC91dGlsL0lkdGVzdFN3aXRjaC5qYXZhVVQF AAN2UslMdXgL
AAEE6AMAAAToAwAAUEsBAh4DFAAAAAgAtWRcPfif/V6XAwAA2w0AADYAGAAA AAAAAQAAAKSB
N1kAAElkRXhhbXBsZS9zcmMvaWR0ZXN0L2ltcGwvSWRBbm5vdGF0aW9uRnJv bVhNTEltcGwu
amF2YVVUBQADdlLJTHV4CwABBOgDAAAE6AMAAFBLAQIeAxQAAAAIALVkXD0t q7GOmAMAAPUN
AAA4ABgAAAAAAAEAAACkgT5dAABJZEV4YW1wbGUvc3JjL2lkdGVzdC9pbXBs L0lkQW5ub3Rh
dGlvbkZyb21FY29yZUltcGwuamF2YVVUBQADdlLJTHV4CwABBOgDAAAE6AMA AFBLAQIeAxQA
AAAIALVkXD11Bc30XwIAAC0HAAAwABgAAAAAAAEAAACkgUhhAABJZEV4YW1w bGUvc3JjL2lk
dGVzdC9pbXBsL0lkdGVzdEZhY3RvcnlJbXBsLmphdmFVVAUAA3ZSyUx1eAsA AQToAwAABOgD
AABQSwECHgMUAAAACAC1ZFw9yoMeVsoGAAC/GgAAMAAYAAAAAAABAAAApIER ZAAASWRFeGFt
cGxlL3NyYy9pZHRlc3QvaW1wbC9JZHRlc3RQYWNrYWdlSW1wbC5qYXZhVVQF AAN2UslMdXgL
AAEE6AMAAAToAwAAUEsFBgAAAAAuAC4A6xIAAEVrAAAAAA==
--------------090407060803060202060207--
Re: Teneo [message #635851 is a reply to message #635844] Thu, 28 October 2010 11:21 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
Thanks MT.

But it is not attached perhaps ie project.It is all garbage what is printed out, i can NOT read it.

Plz reattach the zipped project.

Thanks. Smile

Q Is there a containment/composition example?
Re: Teneo [message #635857 is a reply to message #635851] Thu, 28 October 2010 11:32 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
I emailed it directly to you. The idtest does not contain a composition/containment example, the Teneo example project
uses the EMF library model which has containment examples, so look at the Library model and you will find them.

gr. Martin

On 10/28/2010 01:21 PM, tenor wrote:
> Thanks MT.
>
> But it is not attached perhaps ie project.It is all garbage what is
> printed out, i can NOT read it.
>
> Plz reattach the zipped project.
>
> Thanks. :)
>
> Q Is there a containment/composition example?


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #635942 is a reply to message #635857] Thu, 28 October 2010 16:29 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
<xsd:complexType name="Book">
<xsd:annotation>
<xsd:appinfo source="teneo.jpa">@Table(name="mybooktable")</xsd:appinfo >
</xsd:annotation>
<xsd:sequence>
<xsd:element name="title" type="TitleType">
<xsd:annotation>
<xsd:appinfo source="teneo.jpa">@Column(name="titel" unique="true" length="25")</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="pages" type="PagesType"/>
<xsd:element name="weight" type="WeightType"/>
<xsd:element name="author" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

<xsd:simpleType name="TitleType">
<xsd:annotation>
<xsd:appinfo source="teneo.jpa">@Column(name="mytitle" unique="false" length="50")</xsd:appinfo>
</xsd:annotation>
<xsd:restriction base="xsd:string">
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="PagesType">
<xsd:annotation>
<xsd:appinfo source="teneo.jpa">@Column(updatable="false" insertable="false")</xsd:appinfo>
</xsd:annotation>
<xsd:restriction base="xsd:int">
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="WeightType">
<xsd:annotation>
<xsd:appinfo source="teneo.jpa">@Column(name="gewicht" nullable="true" precision="5" scale="2")</xsd:appinfo>
</xsd:annotation>
<xsd:restriction base="xsd:decimal">
</xsd:restriction>
</xsd:simpleType>



Where to add such annotation
Is it done through ecore model or interface or some xml is passed to generate it?

Much Thanks for example, it paves way for movement forward.

Thanks MT
Re: Teneo [message #635952 is a reply to message #635942] Thu, 28 October 2010 16:54 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Which annotation? The model you show below contains several examples of annotations, so I am not sure what you mean.
Did you read this page:
http://wiki.eclipse.org/Teneo/Hibernate/ModelRelational/Anno tations_Format

Annotations are either set in:
- xsd
- ecore (if you don't use an xsd)
- in a separate xml (what you have tried)

In ecore, I use the normal emf ecore editor, for xsd I add them directly in the xsd (see the examples below).

gr. Martin

On 10/28/2010 06:29 PM, tenor wrote:
> <xsd:complexType name="Book">
> <xsd:annotation>
> <xsd:appinfo source="teneo.jpa">@Table(name="mybooktable")</xsd:appinfo >
> </xsd:annotation>
> <xsd:sequence>
> <xsd:element name="title" type="TitleType">
> <xsd:annotation>
> <xsd:appinfo source="teneo.jpa">@Column(name="titel" unique="true"
> length="25")</xsd:appinfo>
> </xsd:annotation>
> </xsd:element>
> <xsd:element name="pages" type="PagesType"/>
> <xsd:element name="weight" type="WeightType"/>
> <xsd:element name="author" type="xsd:string"/>
> </xsd:sequence>
> </xsd:complexType>
>
> <xsd:simpleType name="TitleType">
> <xsd:annotation>
> <xsd:appinfo source="teneo.jpa">@Column(name="mytitle" unique="false"
> length="50")</xsd:appinfo>
> </xsd:annotation>
> <xsd:restriction base="xsd:string">
> </xsd:restriction>
> </xsd:simpleType>
>
> <xsd:simpleType name="PagesType">
> <xsd:annotation>
> <xsd:appinfo source="teneo.jpa">@Column(updatable="false"
> insertable="false")</xsd:appinfo>
> </xsd:annotation>
> <xsd:restriction base="xsd:int">
> </xsd:restriction>
> </xsd:simpleType>
>
> <xsd:simpleType name="WeightType">
> <xsd:annotation>
> <xsd:appinfo source="teneo.jpa">@Column(name="gewicht" nullable="true"
> precision="5" scale="2")</xsd:appinfo>
> </xsd:annotation>
> <xsd:restriction base="xsd:decimal">
> </xsd:restriction>
> </xsd:simpleType>
>
>
> Where to add such annotation
> Is it done through ecore model or interface or some xml is passed to
> generate it?
>
> Much Thanks for example, it paves way for movement forward.
>
> Thanks MT


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #636169 is a reply to message #635952] Fri, 29 October 2010 14:11 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.eclipse.org/emf/teneo/samples/emf/sample/Library"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:lib="http://www.eclipse.org/emf/teneo/samples/emf/sample/Library"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="Book">
<xsd:sequence>
<xsd:element name="title" type="xsd:ID"/>
<xsd:element name="pages" type="xsd:int"/>
<xsd:element name="category" type="lib:BookCategory">
<xsd:annotation>
<xsd:appinfo source="teneo.jpa">@Enumerated(ORDINAL)</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element name="author" type="xsd:anyURI"
ecore:reference="lib:Writer" ecore:opposite="books"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Writer">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="books"
type="xsd:anyURI" ecore:reference="lib:Book" ecore:opposite="author">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Library">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0"
name="writers" type="lib:Writer">
<xsd:annotation>
<xsd:appinfo source="teneo.hibernate">@Fetch(SUBSELECT) @ForeignKey=(name="schrijvers")</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element maxOccurs="unbounded" minOccurs="0"
name="books" type="lib:Book"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="BookCategory">
<xsd:restriction base="xsd:NCName">
<xsd:enumeration value="Mystery"/>
<xsd:enumeration value="ScienceFiction"/>
<xsd:enumeration value="Biography"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>



I am proceeding ahead with above xsd and i tested it does generate model.

Few things i needed to know

a) If we try writing everything after @model in the interface, as this xsd generates inteface, can we arrive at generated model?

b) How best we can limit the number of tables?
containment option i have tried, but it does for few, so in any
case we have to live with Teneo generated Tables?

c) what these two are effectively doing ie

<xsd:appinfo source="teneo.jpa">@Enumerated(ORDINAL)</xsd:appinfo>

and

<xsd:appinfo source="teneo.hibernate">@Fetch(SUBSELECT) @ForeignKey=(name="schrijvers")</xsd:appinfo>

Much Thanks.
Re: Teneo [message #636191 is a reply to message #636169] Fri, 29 October 2010 14:45 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
Reply far below

gr. Martin

On 10/29/2010 04:11 PM, tenor wrote:
> <?xml version="1.0" encoding="UTF-8"?>
> <xsd:schema
> targetNamespace="http://www.eclipse.org/emf/teneo/samples/emf/sample/Library"
>
> xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
> xmlns:lib="http://www.eclipse.org/emf/teneo/samples/emf/sample/Library"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <xsd:complexType name="Book">
> <xsd:sequence>
> <xsd:element name="title" type="xsd:ID"/>
> <xsd:element name="pages" type="xsd:int"/>
> <xsd:element name="category" type="lib:BookCategory">
> <xsd:annotation>
> <xsd:appinfo source="teneo.jpa">@Enumerated(ORDINAL)</xsd:appinfo>
> </xsd:annotation>
> </xsd:element>
> <xsd:element name="author" type="xsd:anyURI"
> ecore:reference="lib:Writer" ecore:opposite="books"/>
> </xsd:sequence>
> </xsd:complexType>
> <xsd:complexType name="Writer">
> <xsd:sequence>
> <xsd:element name="name" type="xsd:string"/>
> <xsd:element maxOccurs="unbounded" minOccurs="0" name="books"
> type="xsd:anyURI" ecore:reference="lib:Book" ecore:opposite="author">
> </xsd:element>
> </xsd:sequence>
> </xsd:complexType>
> <xsd:complexType name="Library">
> <xsd:sequence>
> <xsd:element name="name" type="xsd:string"/>
> <xsd:element maxOccurs="unbounded" minOccurs="0"
> name="writers" type="lib:Writer">
> <xsd:annotation>
> <xsd:appinfo source="teneo.hibernate">@Fetch(SUBSELECT)
> @ForeignKey=(name="schrijvers")</xsd:appinfo>
> </xsd:annotation>
> </xsd:element>
> <xsd:element maxOccurs="unbounded" minOccurs="0"
> name="books" type="lib:Book"/>
> </xsd:sequence>
> </xsd:complexType>
> <xsd:simpleType name="BookCategory">
> <xsd:restriction base="xsd:NCName">
> <xsd:enumeration value="Mystery"/>
> <xsd:enumeration value="ScienceFiction"/>
> <xsd:enumeration value="Biography"/>
> </xsd:restriction>
> </xsd:simpleType>
> </xsd:schema>
>
>
> I am proceeding ahead with above xsd and i tested it does generate model.
>
> Few things i needed to know
>
> a) If we try writing everything after @model in the interface, as this
> xsd generates inteface, can we arrive at generated model?
MT>> you mean in the javadoc of the generated interfaces? what do you mean arrive at the generated model?

>
> b) How best we can limit the number of tables?
> containment option i have tried, but it does for few, so in any case we
> have to live with Teneo generated Tables?
>
MT>>
Containment is *not* a concept for limiting tables, containment means: if an object A is contained within an object B
then A can not exist without B and in the xml it will be written as something like this:
<B>
<A><...><....></A>
<B>

Teneo will not create join tables for containment associations as it is not needed. For non-containment associations you
can limit the number of tables by setting the property:
teneo.mapping.join_table_for_non_contained_associations
to "false"
but then non-containment associations can not hold duplicates (which is not a problem in most cases).

I think it is best if you tell me which tables you see which you don't think are necessary. Just some examples with the
related ecore model snippet. Then I can comment on that.

> c) what these two are effectively doing ie
>
> <xsd:appinfo source="teneo.jpa">@Enumerated(ORDINAL)</xsd:appinfo>
>
> and
> <xsd:appinfo source="teneo.hibernate">@Fetch(SUBSELECT)
> @ForeignKey=(name="schrijvers")</xsd:appinfo>
MT>> These are standard JPA annotations, so the JPA 1.0 spec is the best source of information.

>
> Much Thanks.
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #636260 is a reply to message #636191] Fri, 29 October 2010 23:17 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
<xsd:schema targetNamespace="http://www.eclipse.org/emf/teneo/samples/emf/sample/Library"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:lib="http://www.eclipse.org/emf/teneo/samples/emf/sample/Library"
...........
...............

And I have this


String eNS_URI = "http:///com/ses/osp/am/external/taketwo.ecore";

so

a)targetNameSpace i should point to EMF models just i had done in annotations.xml and the same goes true for xmlns:lib( i should have xmlns:asset) again pointing to same EMF model? or is there any convention?

b)xmlns:ecore , i assume should be same as above.

A)
MT>> you mean in the javadoc of the generated interfaces? what do you mean arrive at the generated model?

yes,l meant as these

@model id="true" dataType="org.eclipse.emf.ecore.xml.type.ID" required="true"
* extendedMetaData="kind='element' name='title'"

If just like above , we write at Inteface, can we generate impl and model , ie not going the xsd way.Is it possible?


B) Suppose to begin with(in small scale)

I have composition relationship among Asset , Satellite , Transponder, all extending EObject.

With

Asset has Id and name.
Satellite has Id and name and list of Transponders.
Transponder has Id and name.

I have attached a screenshot in your mail for extra table of
satellite_transponders.

1) From where it comes and how best to control proliferation of such tables and if some relevant data gets stored there, how data migration will happen ie to keep track of all such tables?

2) if my data model grows and has effectively 30 classes, it will end up with many more tables and with Oracle workspace manager limiting character length to 25, how best to deal with truncation of names and potential clashes or giving them sensible names?

Much Thanks.
Re: Teneo [message #636270 is a reply to message #636260] Sat, 30 October 2010 06:15 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
Comments inline

Note, that there is also a book on EMF, I think buying that book is worth every penny also.

gr. Martin

On 10/30/2010 01:17 AM, tenor wrote:
> <xsd:schema
> targetNamespace="http://www.eclipse.org/emf/teneo/samples/emf/sample/Library"
>
> xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
> xmlns:lib="http://www.eclipse.org/emf/teneo/samples/emf/sample/Library"
> ...........
> ...............
>
> And I have this
>
>
> String eNS_URI = "http:///com/ses/osp/am/external/taketwo.ecore";
>
> so
> a)targetNameSpace i should point to EMF models just i had done in
> annotations.xml and the same goes true for xmlns:lib( i should have
> xmlns:asset) again pointing to same EMF model? or is there any convention?
MT>> Yes, you are correct, the namespace uri comes back in all these places.

>
> b)xmlns:ecore , i assume should be same as above.
MT>> Correct
>
> A)
> MT>> you mean in the javadoc of the generated interfaces? what do you
> mean arrive at the generated model?
>
> yes,l meant as these
>
> @model id="true" dataType="org.eclipse.emf.ecore.xml.type.ID"
> required="true"
> * extendedMetaData="kind='element' name='title'"
>
> If just like above , we write at Inteface, can we generate impl and
> model , ie not going the xsd way.Is it possible?
MT>> Yes that's also possible, although it is not widely used I believe but other committers on the forum can comment on
this.

>
>
> B) Suppose to begin with(in small scale)
>
> I have composition relationship among Asset , Satellite , Transponder,
> all extending EObject.
>
> With
> Asset has Id and name.
> Satellite has Id and name and list of Transponders.
> Transponder has Id and name.
>
> I have attached a screenshot in your mail for extra table of
> satellite_transponders.
>
> 1) From where it comes and how best to control proliferation of such
> tables and if some relevant data gets stored there, how data migration
> will happen ie to keep track of all such tables?
MT>> It is a join table which stores the association between satellites and transponders (the association is
non-containment)
MT>> Have you tried the option I mentioned earlier, to not have join tables for non-containment associations?
teneo.mapping.join_table_for_non_contained_associations
(set it to false)
MT>> in the end sometimes extra tables are necessary to store your model, even if you don't want them you still need them.

>
> 2) if my data model grows and has effectively 30 classes, it will end up
> with many more tables and with Oracle workspace manager limiting
> character length to 25, how best to deal with truncation of names and
> potential clashes or giving them sensible names?
MT>> There are two ways:
- set the teneo option which limits the length of the generated sql names (which is 30 for oracle afaik), when
truncating Teneo tries to maintain readable names by first removing the vowels and if that fails tries to truncate in a
sensible, stable manner.
- where this leads to unwanted results annotate your model with specific annotations to set a name manually


>
> Much Thanks.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #636465 is a reply to message #636270] Mon, 01 November 2010 13:32 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
package com.ses.osp.am.external.persist;

import java.util.List;
import java.util.Properties;

import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.teneo.hibernate.HbDataStore;
import org.eclipse.emf.teneo.hibernate.HbHelper;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Environment;

import com.ses.osp.am.external.domain.Asset;
import com.ses.osp.am.external.domain.DomainPackage;

/**
* This class manages one Hibernate Datastore, it offers static access to a singleton DataStore.
*
*
*
*/

public class StoreController
{

// provide easy access to the datastore
private static StoreController instance = new StoreController();

public static StoreController getInstance() {
return instance;
}

private HbSessionDataStore dataStore = null;
private boolean initialized = false;

//public Session getSession() {
//return getDataStore().getSessionFactory().openSession();
//}

//public HbSessionDataStore getDataStore() {
//if (dataStore == null) {
//dataStore = initializeDataStore();
//}

//return dataStore;
//}

//public void closeDataStore() {
//getDataStore().close();
//}

//public HbSessionDataStore initializeDataStore() {
//if (initialized) {
//return dataStore;
//}

HbDataStore hbds = (HbDataStore)HbHelper.INSTANCE.createRegisterDataStore("onesatplan ");

// load the properties from the teneo.properties file
try {
final Properties props = new Properties();
props.load(this.getClass().getResourceAsStream("/teneo.properties "));

// handle multiple inheritance in the GMF model
props.setProperty(PersistenceOptions.PERSISTENCE_XML, "/annotations.xml");

localDataStore.setProperties(props);
} catch (IOException e) {
throw new IllegalStateException(e);
}

}

In my DAO layer implementation, i need something to create/recreate this infrastracture part.

Is it right way to put in dao implementation?
Particularly session part(which is commented out)
ie idea is say in AssetDaoImpl.java
i should have

StoreControlloer instance = new StoreControlloer();

and this instance should be effective for Teneo part.

Much thanks MT.
Re: Teneo [message #636482 is a reply to message #636465] Mon, 01 November 2010 14:26 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Often there is only one dataStore (SessionFactory/EntityManagerFactory) per application. So I would create a singleton
class managing this single Datastore for your application. I work mostly in webapps where there is one thread per user
request, I create the Session on first usage and put it in a ThreadLocal which can be accessed by all Dao's, then at the
end of the request the Session is committed/closed. For RCP apps this can be different (I have little experience there).
So I have a StoreController like class which provides a getSession method to the Dao's. The StoreController initializes
the DataStore on first usage and uses the SessionFactory of the DataStore to create a Session.

Note, that if you are using Spring or Seam then Singletons are created and managed in a different way (in a framework
specific way).

gr. Martin

On 11/01/2010 02:32 PM, tenor wrote:
> package com.ses.osp.am.external.persist;
>
> import java.util.List;
> import java.util.Properties;
>
> import org.eclipse.emf.ecore.EPackage;
> import org.eclipse.emf.teneo.hibernate.HbDataStore;
> import org.eclipse.emf.teneo.hibernate.HbHelper;
> import org.hibernate.Query;
> import org.hibernate.Session;
> import org.hibernate.SessionFactory;
> import org.hibernate.Transaction;
> import org.hibernate.cfg.Environment;
>
> import com.ses.osp.am.external.domain.Asset;
> import com.ses.osp.am.external.domain.DomainPackage;
>
> /**
> * This class manages one Hibernate Datastore, it offers static access to
> a singleton DataStore. * * *
> */
>
> public class StoreController
> {
>
> // provide easy access to the datastore
> private static StoreController instance = new StoreController();
>
> public static StoreController getInstance() {
> return instance;
> }
>
> private HbSessionDataStore dataStore = null;
> private boolean initialized = false;
>
> //public Session getSession() {
> //return getDataStore().getSessionFactory().openSession();
> //}
>
> //public HbSessionDataStore getDataStore() {
> //if (dataStore == null) {
> //dataStore = initializeDataStore();
> //}
>
> //return dataStore;
> //}
>
> //public void closeDataStore() {
> //getDataStore().close();
> //}
>
> //public HbSessionDataStore initializeDataStore() {
> //if (initialized) {
> //return dataStore;
> //}
>
> HbDataStore hbds =
> (HbDataStore)HbHelper.INSTANCE.createRegisterDataStore("onesatplan ");
>
> // load the properties from the teneo.properties file
> try {
> final Properties props = new Properties();
> props.load(this.getClass().getResourceAsStream("/teneo.properties "));
>
> // handle multiple inheritance in the GMF model
> props.setProperty(PersistenceOptions.PERSISTENCE_XML, "/annotations.xml");
>
> localDataStore.setProperties(props);
> } catch (IOException e) {
> throw new IllegalStateException(e);
> }
>
> }
>
> In my DAO layer implementation, i need something to create/recreate this
> infrastracture part.
>
> Is it right way to put in dao implementation?
> Particularly session part(which is commented out)
> ie idea is say in AssetDaoImpl.java
> i should have
> StoreControlloer instance = new StoreControlloer();
>
> and this instance should be effective for Teneo part.
>
> Much thanks MT.
>


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Re: Teneo [message #637801 is a reply to message #636482] Mon, 08 November 2010 22:30 Go to previous messageGo to next message
tenor  is currently offline tenor Friend
Messages: 57
Registered: October 2010
Member
I am passing UUID.random() , in one of methods and setting up multiplex properties, from the passed parameter after getting multiplex from hbds.

But i am getting invalid value error for UUID, though at model level it is UUID and Teneo is completely generating the schema ie i am not using ANY annotations.xml kind of thing.

May be tomorrow i will send more details, but any preliminary suggestions?

Thanks.
Re: Teneo [message #637847 is a reply to message #637801] Tue, 09 November 2010 07:40 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi,
No direct suggestions I am afraid. Is it an error from the database or from EMF? In any case google is your friend and
debugging the code to see why an error is thrown will also help to get more insight in this.

btw, can you start a new thread for new issues/topics? It is hard for others to search for solutions if one thread
contains many topics and the subject is neither very descriptive.

gr. Martin

On 11/08/2010 11:31 PM, tenor wrote:
> I am passing UUID.random() , in one of methods and setting up multiplex
> properties, from the passed parameter after getting multiplex from hbds.
>
> But i am getting invalid value error for UUID, though at model level it
> is UUID and Teneo is completely generating the schema ie i am not using
> ANY annotations.xml kind of thing.
>
> May be tomorrow i will send more details, but any preliminary suggestions?
>
> Thanks.


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
Previous Topic:inspecting an ecore
Next Topic:[CDO] Connection aware URIs
Goto Forum:
  


Current Time: Thu Mar 28 12:27:00 GMT 2024

Powered by FUDForum. Page generated in 0.06052 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top