Ignore:
Timestamp:
14/11/11 11:40:08 (8 years ago)
Author:
mnagni
Message:

Now include a custom defined list of UMLClass to be included in the tables generation.
Removed the class_type as table column because the class inheritance can work even without it

Location:
mauRepo/xmi2sqlalchemy/trunk/src
Files:
1 added
1 deleted
5 edited

Legend:

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

    r7977 r7978  
    479479        } 
    480480 
     481        public UMLClass getUMLClassByName(String className) { 
     482                return getElementByName(className, UMLClass.class); 
     483        }  
     484         
    481485        private <T extends UML_ID> T getElementByName(String className, Class<T> elementType) { 
    482486 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/GenerateTables.java

    r7977 r7978  
    5151import ndg.services.newmoon.velocity.python.support.TableModel; 
    5252import ndg.services.newmoon.xmiModel.UMLClass; 
    53 import ndg.services.newmoon.xmiModel.UMLModel; 
    5453import ndg.services.newmoon.xmiModel.UMLValueTagged; 
    5554import ndg.services.newmoon.xmiModel.UML_ID; 
     
    7170 
    7271        private final List<UMLClass> umlClasses = new ArrayList<UMLClass>(); 
    73  
    74         private final UMLModel umlModel; 
    7572 
    7673        private final Logger logger = LoggerFactory.getLogger(GenerateTables.class); 
     
    9693         
    9794        /** 
    98          * @param packageBase 
    99          * @deprecated 
     95         * @param umlClasses the classes for which have to be generated a table instance 
    10096         */ 
    10197        public GenerateTables(List<UMLClass> umlClasses, GenerateModuleHelper helper) { 
    10298                super(helper); 
    10399                this.umlClasses.addAll(umlClasses); 
    104                 this.umlModel = null; 
    105         } 
    106  
    107         /** 
    108          * @param packageBase 
    109          */ 
    110         public GenerateTables(UMLModel model, GenerateModuleHelper helper) { 
    111                 super(helper); 
    112                 this.umlModel = model; 
    113                 umlClasses.addAll(UMLElementsArchive.getInstance().getUMLClassesByUMLModel(umlModel)); 
    114100        } 
    115101 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/resources/velocity/python/mapping.vm

    r7974 r7978  
    66${tab}if (target.${tm}_id is None): 
    77${tab}${tab}target.${tm}_id = next_id(connection, '${tm}_id_seq') 
    8 #if($tableModel.hasChildren) 
    9 ${tab}target.${tm}_type = '${tm}' 
    10 #end 
     8##if($tableModel.hasChildren) 
     9##${tab}target.${tm}_type = '${tm}' 
     10##end 
    1111#foreach( $parent in $tableModel.inherited) 
    1212#set ($tp = $parent.associatedClass.name.toLowerCase()) 
    13 ${tab}target.${tp}_type = '${tp}' 
     13##${tab}target.${tp}_type = '${tp}' 
    1414${tab}target.${tp}_id = next_id(connection, '${tp}_id_seq') 
    1515${tab}target.${tm}_${tp}_id = target.${tp}_id 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/resources/velocity/python/sqlAlchemyTables.vm

    r7974 r7978  
    4141${tab}#column($simpleAttribute) 
    4242#end 
    43 #if($tableModel.hasChildren) 
    44 ${tab}Column('${tableModel.associatedClass.name.toLowerCase()}_type', String(30), nullable=False), 
    45 #end 
     43##if($tableModel.hasChildren) 
     44##${tab}Column('${tableModel.associatedClass.name.toLowerCase()}_type', String(30), nullable=False), 
     45##end 
    4646#inheritanceColumn($tableModel) 
    4747${tab}extend_existing=False,) 
  • mauRepo/xmi2sqlalchemy/trunk/src/test/java/ngn/services/newmoon/DOMParser.java

    r7974 r7978  
    44 
    55import java.io.InputStream; 
     6import java.util.ArrayList; 
     7import java.util.List; 
     8import java.util.Scanner; 
    69import java.util.concurrent.Future; 
    710 
     
    1013import ndg.services.newmoon.velocity.python.GenerateModule; 
    1114import ndg.services.newmoon.velocity.python.GenerateTables; 
     15import ndg.services.newmoon.xmiModel.UMLClass; 
    1216import ndg.services.newmoon.xmiModel.UMLModel; 
    1317 
     18import org.apache.commons.collections.CollectionUtils; 
    1419import org.junit.Assert; 
    1520import org.junit.Test; 
    1621 
    1722public class DOMParser { 
     23 
     24         
     25        public final void testParseinputAddClassFile() { 
     26                InputStream inputAddClass = NmParser.class.getClassLoader().getResourceAsStream("CEDA_Model/AdditionalClasses.txt"); 
     27                if (inputAddClass != null) { 
     28                        Scanner sc = new Scanner(inputAddClass); 
     29                        while (sc.hasNext()) {                                   
     30                                System.out.println(sc.next()); 
     31                        } 
     32                } 
     33        } 
     34                 
    1835         
    1936        @Test 
    2037        public final void testParseXmlFile() { 
    21                 //InputStream inputXML = NmParser.class.getClassLoader().getResourceAsStream("CEDA_Model/MOLES3_4.xml"); 
    22                 InputStream inputXML = NmParser.class.getClassLoader().getResourceAsStream("CEDA_ModelXMI.xml"); 
     38                InputStream inputXML = NmParser.class.getClassLoader().getResourceAsStream("CEDA_Model/CEDA_ModelXMI.xml"); 
     39                InputStream inputAddClass = NmParser.class.getClassLoader().getResourceAsStream("CEDA_Model/AdditionalClasses.txt"); 
    2340                try { 
    2441                        NmParser xmiParser = new NmParser(inputXML, null); 
     
    2643                          
    2744                        UMLElementsArchive.getInstance().waitParserToComplete(); 
    28                          
    29                          
    30                          
    31                         // Evaluates which Stubs has multeplicity more than one. 
    32                         // It helps to generate pne of the one-to-one, one-to-many, many-to-many db strategies 
    33                         //UMLElementsArchive.getInstance().evaluateMulteplicity(); 
    34  
    35                         /* 
    36                         //verify if is possible to fork as thread 
    37                         List<UMLModel> models = UMLElementsArchive.getInstance().getUMLElementByType(UMLModel.class); 
    38                         for (UMLModel model : models) { 
    39                                 GenerateModule module = new GenerateModule(model); 
    40                                 UMLElementsArchive.getInstance().startNewParser(module);                                 
    41                         } 
    42                         */ 
    4345                         
    4446                        /*  I try to generate just what I need */ 
     
    4850                        UMLElementsArchive.getInstance().waitParserToComplete(); 
    4951                         
     52                         
     53                         
    5054                        // Is better to generate the table on a separate process in order to minimize the generated tables 
    51                         GenerateTables tables = new GenerateTables(umlModel, module.getHelper()); 
     55                        List<UMLClass> umlClasses = new ArrayList<UMLClass>(); 
     56                        umlClasses.addAll(UMLElementsArchive.getInstance().getUMLClassesByUMLModel(umlModel)); 
     57                        if (inputAddClass != null) { 
     58                                Scanner sc = new Scanner(inputAddClass); 
     59                                if (sc.hasNext()) {                                      
     60                                        CollectionUtils.addIgnoreNull(umlClasses,  
     61                                                        UMLElementsArchive.getInstance().getUMLClassByName(sc.next())); 
     62                                } 
     63                        } 
     64                         
     65                        GenerateTables tables = new GenerateTables(umlClasses, module.getHelper()); 
    5266                        tables.execute(); 
    53  
    5467 
    5568                } catch (Exception e) { 
Note: See TracChangeset for help on using the changeset viewer.