Ignore:
Timestamp:
23/12/11 15:20:16 (8 years ago)
Author:
mnagni
Message:

Works fine but I have to find a way to initialize the python classes attributes

Location:
mauRepo/xmi2sqlalchemy/trunk/src/main
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/collect/CollectClassesClosure.java

    r8028 r8041  
    225225                        try { 
    226226                                if (input instanceof UMLAttribute) { 
    227                                         generateSimpleKeyValues((UMLAttribute) input); 
    228227                                        ret.add(extractAttribute((UMLAttribute) input)); 
    229                                 } 
    230                                          
    231                                          
    232                                 if (input instanceof UMLAssociationEnd) 
     228                                } else if (input instanceof UMLAssociationEnd) 
    233229                                        ret.add(extractAttribute((UMLAssociationEnd) input)); 
    234230                        } catch (NewmoonException e) { 
     
    256252                private AttributeModel extractAttribute(UMLAttribute umlAttribute) throws NewmoonException, 
    257253                                IOException { 
     254                        generateSimpleKeyValues(umlAttribute); 
    258255                        return extractAttribute(umlAttribute.getClassifier(), umlAttribute, cm, 
    259256                                        hasMolteplicity(umlAttribute), UMLElementsArchive.getInstance().isVoidable(umlAttribute)); 
     
    291288                                attrClassModel = processUMLclass(attrClass); 
    292289                        } 
    293                                                          
     290                         
    294291                        return new AttributeModel(attrClassModel,  
    295292                                        valueTagged.getName(),  
     
    302299                 
    303300                private Integer extractIntegerValue(UMLValueTagged valueTagged, String bound) { 
    304                         String sBound = UMLElementsArchive.getInstance().getTaggedValue(valueTagged, bound); 
    305                         if (sBound == null) 
     301                        String sBound = null; 
     302                        if (valueTagged instanceof UMLAssociationEnd) { 
     303                                sBound = extractMulteplicity((UMLAssociationEnd)valueTagged, bound);  
     304                        } else { 
     305                                sBound = UMLElementsArchive.getInstance().getTaggedValue(valueTagged, bound); 
     306                        }  
     307                        return extractIntegerValue(sBound); 
     308                } 
     309                 
     310                private String extractMulteplicity(UMLAssociationEnd umlAssociationEnd, String bound){ 
     311                        if (umlAssociationEnd.getMultiplicity().contains("..")) { 
     312                                String[] limits = umlAssociationEnd.getMultiplicity().split("\\.\\."); 
     313                                if (bound.equals(Dictionary.LOWER_BOUND)) { 
     314                                        return limits[0]; 
     315                                } else { 
     316                                        return limits[1]; 
     317                                } 
     318                        }        
     319                        return null; 
     320                } 
     321                 
     322                private Integer extractIntegerValue(String value) { 
     323                        if (value == null) 
    306324                                return 0; 
    307                         if (StringUtils.isNumeric(sBound)) 
    308                                 return Integer.parseInt(sBound); 
    309                         if (sBound.equals("*")) 
     325                        if (StringUtils.isNumeric(value)) 
     326                                return Integer.parseInt(value); 
     327                        if (value.equals("*")) 
    310328                                return Integer.MAX_VALUE; 
    311329                        return 0; 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/GenerateTables.java

    r8040 r8041  
    233233                while (iterator.hasNext()) { 
    234234                        Relationship rl = iterator.next(); 
     235                        if (rl.isOneToOne()) 
     236                                return;                  
    235237                        LoopFinder lf = new LoopFinder(rl, closure.getTableModels().size(), closure); 
    236238                        lf.search(); 
     
    271273                Iterator<ForeignKey> fk = parent.getFk().iterator(); 
    272274                while (fk.hasNext()) { 
    273                         ForeignKey tmp_fk = fk.next(); 
    274                         if (!tmp_fk.getTableModel().equals(child)) 
     275                        ForeignKey tmp_fk = fk.next();   
     276                        if (!tmp_fk.getTableModel().equals(child) || tmp_fk.getAssociatedRelationship().isOneToOne()) 
    275277                                continue; 
    276278                         
     
    420422                for (Relationship rl : child.getRelationship()) { 
    421423                        if (!rl.getToTable().equals(onParent)) 
    422                                 continue;                        
     424                                continue;        
     425                         
    423426                        rl.setRelationType(RELATION_TYPE.MANY_TO_MANY); 
    424427                        return; 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/resources/global_library.vm

    r8040 r8041  
    3333#set ($ft = $relation.fromTable.associatedClass.name) 
    3434#set ($tmn = $tableModel.associatedClass.name) 
    35 #if ($relation.isManyToMany()) 
     35#if ($relation.isManyToMany() && !$relation.useList) 
    3636'${relation.name}': relationship(${tt},  
    3737secondary=${tt.toLowerCase()}_${ft.toLowerCase()}_table 
     
    4949#end 
    5050#if($relation.isOneToMany()) 
    51 , primaryjoin=${tt.toLowerCase()}_table.c.${ft.toLowerCase()}_${relation.name}==${tmn.toLowerCase()}_table.c.id 
     51, primaryjoin=${tt.toLowerCase()}_table.c.${ft.toLowerCase()}_${relation.name.toLowerCase()}==${tmn.toLowerCase()}_table.c.id 
    5252#end 
    53 #if($relation.isOneToOne()) 
    54 , primaryjoin=${tt.toLowerCase()}_table.c.${ft.toLowerCase()}_${relation.name}_id==${tmn.toLowerCase()}_table.c.id 
     53#if($relation.isOneToOne() || !$relation.useList) 
     54, primaryjoin=${tt.toLowerCase()}_table.c.${ft.toLowerCase()}_${relation.name.toLowerCase()}_id==${tmn.toLowerCase()}_table.c.id 
    5555#end 
    5656)#end 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/resources/velocity/python/sqlAlchemyTables.vm

    r8040 r8041  
    1717#end 
    1818 
    19 #macro(checkUseAlter $fk, $fkName) 
     19#macro(checkUseAlter $fk, $fkName, $relName) 
    2020#if($fk.useAlter) 
    21 , use_alter=True, name='fk_${fkName}'#end 
     21, use_alter=True, name='fk_${fkName}_${relName}'#end 
    2222#end 
    2323 
    2424#macro( fk $foreignKey, $tableModel) 
    2525#set ($fkName = ${foreignKey.tableModel.associatedClass.name.toLowerCase()}) 
    26 #set ($relName = ${foreignKey.parentAttributeName}) 
     26#set ($relName = ${foreignKey.parentAttributeName.toLowerCase()}) 
    2727#if($foreignKey.associatedRelationship.isOneToOne() || !$foreignKey.associatedRelationship.useList) 
    28 Column('${fkName}_${relName}_id', Integer, ForeignKey('${fkName}.id'#checkUseAlter($foreignKey, $fkName))), 
     28Column('${fkName}_${relName}_id', Integer, ForeignKey('${fkName}.id'#checkUseAlter($foreignKey, $fkName, $relName))), 
    2929#else 
    30 Column('${fkName}_${relName}', Integer, ForeignKey('${fkName}.id'#checkUseAlter($foreignKey, $fkName))), 
     30Column('${fkName}_${relName}', Integer, ForeignKey('${fkName}.id'#checkUseAlter($foreignKey, $fkName, $relName))), 
    3131#end 
    3232#end 
Note: See TracChangeset for help on using the changeset viewer.