'patch' for multiple unique keys
--------------------------------

         Key: HIB-165
         URL: http://jira.andromda.org/browse/HIB-165
     Project: Hibernate Cartridge
        Type: New Feature
    Versions: 3.1    
    Reporter: Darius Schier
 Assigned to: Carlos Cuenca 


I've added a 'patch' how to teach Hibernate multipele unique keys. Maybe you 
would like to integrate it into your cvs? It is based on 3.1 final.
I've added a new tag called @andromda.persistence.column.uniqueGroup. This one 
will be mapped directly to hibernate's unique-key property. Attached you find 
the version for hibernate3, hib2 should be exactly the same.

Regards
Darius



*********************
cartridges/andromda-hibernate/src/templates/hibernate3/hibernate.hbm.xml.vm
for the ordinary column, i've added 

#if($attribute.columnUniqueGroup) unique-key="$attribute.columnUniqueGroup"#end

*********************
metafacades/uml/common/src/java/org/andromda/metafacades/uml/UMLProfile.java
metafacades/uml/common/src/META-INF/andromda/profile.xml
added the new tag:

    /**
     * Represents a name that groups columns into one unique key.
     */
    public static final String TAGGEDVALUE_PERSISTENCE_COLUMN_UNIQUE_GROUP = 
profile.get("PERSISTENCE_COLUMN_UNIQUE_GROUP");


            <element name="PERSISTENCE_COLUMN_UNIQUE_GROUP">
                <documentation></documentation>
                <value>@andromda.persistence.column.uniqueGroup</value>
            </element>

*********************
Added the tag within andromda's metamodels (just do it with mc). It's a 
standard String tag (comparable to columnIndex):

metafacades/uml/common/src/uml/UMLMetafacadeModel.xml.zip
profiles/uml-1.4/persistence/src/main/uml/andromda-profile-persistence.xml.zip

*********************
The handler is straight ahead:
metafacades/uml/uml14/src/java/org/andromda/metafacades/uml14/EntityAttributeLogicImpl.java


    /**
     * @see org.andromda.metafacades.uml.EntityAttribute#getColumnUniqueGroup()
     */
    protected java.lang.String handleGetColumnUniqueGroup()
    {
        final String group = 
(String)this.findTaggedValue(UMLProfile.TAGGEDVALUE_PERSISTENCE_COLUMN_UNIQUE_GROUP);
        return group != null ? StringUtils.trimToEmpty(group) : null;
    }


*********************
I am not sure, if the following is ok: I thought the unique="true" has to be 
set to false if the attribute is part of a composite unique
    /**
     * @see org.andromda.metafacades.uml.EntityAttribute#isUnique()
     */
    protected boolean handleIsUnique()
    {
       if( StringUtils.isBlank(this.handleGetColumnIndex())) {
          return this.hasStereotype(UMLProfile.STEREOTYPE_UNIQUE);
       }
       return false;
    }





-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click

Reply via email to