Ignore:
Timestamp:
01/12/11 16:48:52 (8 years ago)
Author:
mnagni
Message:
 
Location:
mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/support
Files:
3 added
3 edited

Legend:

Unmodified
Added
Removed
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/support/AttributeModel.java

    r7996 r7998  
    3333 
    3434import ndg.services.newmoon.UMLElementsArchive.PropertyMap; 
    35 import ndg.services.newmoon.velocity.python.GenerateModuleHelper; 
    36 import ndg.services.newmoon.xmiModel.UMLClass; 
    37 import ndg.services.newmoon.xmiModel.adapter.UMLClassAdapter; 
    38 import ndg.services.newmoon.xmiModel.adapter.UML_IDAdapder; 
    39  
    40 import org.apache.commons.lang.StringUtils; 
     35import ndg.services.newmoon.xmiModel.UMLClassDataType; 
     36import ndg.services.newmoon.xmiModel.UML_ID; 
    4137 
    4238/** 
     39 * Represents a {@link ClassModel} attribute. 
     40 * Temporarily it use a pair associatedClass/associatedDataType 
     41 * to define itself. In future a cleaner solution would be to  
     42 * bind the associatedClass with a class implementing the specified UMLDataType   
     43 *  
    4344 * @author mnagni 
    4445 * 
    4546 */ 
    46 public class AttributeModel { 
    47         private final UMLClass associatedClass;  
    48         private final String name; 
    49         private final boolean enumLike;  
    50         private final String lowerBound; 
    51         private final String upperBound; 
     47public class AttributeModel<T extends UMLClassDataType> {        
     48        private final T associatedType; 
     49        private final ClassModel associatedClassModel; 
     50        private final String name;       
     51        private final Integer lowerBound; 
     52        private final Integer upperBound; 
    5253        private final int lenght; 
    5354        private final boolean voidable; 
     55         
    5456        /** 
    55          * @param associatedClass 
     57         * @param associatedType 
    5658         * @param name 
    57          * @param enumLike 
    5859         * @param lowerBound 
    5960         * @param upperBound 
    6061         * @param lenght 
    6162         */ 
    62         public AttributeModel(UMLClass associatedClass, String name, boolean enumLike, String lowerBound, 
    63                         String upperBound, int lenght, boolean voidable) { 
    64                 super(); 
    65                 this.associatedClass = associatedClass; 
     63        public AttributeModel(T associatedType, ClassModel associatedClassModel,  
     64                        String name, int lowerBound, Integer upperBound,  
     65                        Integer lenght, boolean voidable) { 
     66                this.associatedType = associatedType; 
     67                this.associatedClassModel = associatedClassModel;                
    6668                this.name = name; 
    67                 this.enumLike = enumLike; 
    6869                this.lowerBound = lowerBound; 
    6970                this.upperBound = upperBound; 
    7071                this.lenght = lenght; 
    71                 this.voidable = voidable;                
     72                this.voidable = voidable;                        
    7273        } 
     74         
     75        /** 
     76         * @return the associatedClassModel 
     77         * @deprecated probably in future will be merged in the associatedDataType 
     78         */ 
     79        public ClassModel getAssociatedClassModel() { 
     80                return associatedClassModel; 
     81        } 
     82 
     83        /** 
     84         * Returns the associated type. 
     85         * @return the associatedType 
     86         */ 
     87        public T getAssociatedType() { 
     88                return associatedType;                                                   
     89        }        
     90         
    7391        /** 
    7492         * Returns the associated UMLClass. If the UMLClass is mapped in the  
     
    7795         * @return the associatedClass 
    7896         */ 
     97        /* 
    7998        public UMLClass getAssociatedClass() { 
     99                if (associatedClass == null || associatedClass.getName() == null) 
     100                        return null; 
     101                 
    80102                String typeName = StringUtils.defaultIfEmpty( 
    81103                                GenerateModuleHelper.getXMIClassToSQLMap().getProperty(associatedClass.getName()), associatedClass.getName()); 
     
    86108                return new UMLClassAdapter(new UML_IDAdapder(null, null, typeName), false, false, false, null);                                                  
    87109        } 
    88          
    89         /** 
    90          * Verifies if the associated UMLClass is mapped by the {@link PropertyMap#XMI_TO_SQL_MAP} file. 
    91          * @return <code>true</code> if is mapped, <code>false</code> otherwise 
    92          **/ 
    93         public boolean isMapped() { 
    94                 String typeName = StringUtils.defaultIfEmpty( 
    95                                 GenerateModuleHelper.getXMIClassToSQLMap().getProperty(associatedClass.getName()), ""); 
    96                 return typeName.equals(associatedClass.getName()); 
    97         } 
     110        */ 
    98111         
    99112        public boolean hasMultiplicity() { 
    100                 return upperBound.equals("*")  
    101                                 || (StringUtils.isNumeric(upperBound) && Integer.parseInt(upperBound) > 1); 
     113                return upperBound > 1; 
    102114        } 
    103115         
     
    114126                return name; 
    115127        } 
    116         /** 
    117          * @return the enumLike 
    118          */ 
    119         public boolean isEnumLike() { 
    120                 return enumLike; 
    121         } 
     128 
    122129        /** 
    123130         * @return the lowerBound 
    124131         */ 
    125         public String getLowerBound() { 
     132        public Integer getLowerBound() { 
    126133                return lowerBound; 
    127134        } 
     
    129136         * @return the upperBound 
    130137         */ 
    131         public String getUpperBound() { 
     138        public Integer getUpperBound() { 
    132139                return upperBound; 
    133140        } 
     
    146153                final int prime = 31; 
    147154                int result = 1; 
    148                 result = prime * result + ((associatedClass == null) ? 0 : associatedClass.hashCode()); 
    149                 result = prime * result + (enumLike ? 1231 : 1237); 
     155                result = prime * result + ((associatedType == null) ? 0 : associatedType.hashCode()); 
    150156                result = prime * result + lenght; 
    151157                result = prime * result + ((lowerBound == null) ? 0 : lowerBound.hashCode()); 
     
    166172                        return false; 
    167173                AttributeModel other = (AttributeModel) obj; 
    168                 if (associatedClass == null) { 
    169                         if (other.associatedClass != null) 
     174                if (associatedType == null) { 
     175                        if (other.associatedType != null) 
    170176                                return false; 
    171                 } else if (!associatedClass.equals(other.associatedClass)) 
    172                         return false; 
    173                 if (enumLike != other.enumLike) 
     177                } else if (!associatedType.equals(other.associatedType)) 
    174178                        return false; 
    175179                if (lenght != other.lenght) 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/support/ImportCollector.java

    r7974 r7998  
    4040import ndg.services.newmoon.velocity.python.GenerateModuleHelper; 
    4141import ndg.services.newmoon.xmiModel.UMLClass; 
     42import ndg.services.newmoon.xmiModel.UMLClassDataType; 
     43import ndg.services.newmoon.xmiModel.UML_ID; 
    4244 
    4345import org.apache.commons.collections.CollectionUtils; 
    4446 
    4547/** 
     48 * Collects all the imports necessary for the to-be-created python class. 
     49 *  
     50 *  
    4651 * @author mnagni 
    4752 * 
     
    5055        private Map<String, Set<String>> importMap = new HashMap<String, Set<String>>(); 
    5156 
    52         public void updateImports(UMLClass umlClass) { 
     57        /** 
     58         * Updates the classes to import. 
     59         * The same as {@link #updateImports(UMLClass, boolean)} with the <code>doCheck<code> 
     60         * parameter set to <code>true</code> 
     61         **/ 
     62        public <T extends UMLClassDataType> void updateImports(T umlClass) { 
     63                updateImports(umlClass, true); 
     64        } 
     65         
     66        /** 
     67         * Updates the classes to import. If enabled, checks if the import should be avoided or not 
     68         * using the {@link GenerateModuleHelper.skipElement(umlClass)} method. 
     69         *    
     70         * @param umlClass The class to import 
     71         * @param doCheck If <code>false</code> will not check if the import is avoidable  
     72         **/ 
     73        public <T extends UMLClassDataType> void updateImports(T umlClass, boolean doCheck) { 
    5374                if (umlClass == null) 
    5475                        return; 
    5576 
    56                 if (GenerateModuleHelper.skipElement(umlClass)) 
     77                if (doCheck && GenerateModuleHelper.skipElement(umlClass)) 
    5778                        return; 
    5879                 
     
    6990        } 
    7091 
    71         private String getModule(UMLClass umlClass) { 
     92        private String getModule(UMLClassDataType umlClass) { 
    7293                return NmParserHelper.getPackageParentName(umlClass.getUmlPackage()) + "." + umlClass.getName().toLowerCase(); 
    7394        } 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/support/TableModel.java

    r7974 r7998  
    4242 * 
    4343 */ 
    44 public class TableModel implements Comparable<TableModel>{ 
     44public class TableModel implements ExportModel, Comparable<TableModel>{ 
    4545        private final UMLClass associatedClass; 
    46         private final Set<AttributeModel> am = new HashSet<AttributeModel>(); 
     46        private final Set<AttributeModel> attributeModel = new HashSet<AttributeModel>(); 
    4747        private final Set<ForeignKey> fk = new HashSet<ForeignKey>(); 
    4848        private final Set<Relationship> relationship = new HashSet<Relationship>(); 
     
    105105         * @return the am 
    106106         */ 
    107         public Set<AttributeModel> getAm() { 
    108                 return am; 
     107        public Set<AttributeModel> getAttributeModel() { 
     108                return attributeModel; 
    109109        } 
    110110 
Note: See TracChangeset for help on using the changeset viewer.