18/01/12 11:46:07 (8 years ago)

Now generate the inner class attributes and table relations which manage the attribute subtyping (at least for no more than the same subtyping attribute for each class)

2 added
14 edited


  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/UmlToRDBM.java

    r8060 r8064  
    3636import java.io.File; 
    3737import java.io.InputStream; 
     38import java.util.ArrayList; 
     39import java.util.HashMap; 
     40import java.util.HashSet; 
     41import java.util.Iterator; 
     42import java.util.List; 
    3843import java.util.Map; 
     44import java.util.Set; 
    3945import java.util.concurrent.Future; 
     47import ndg.services.newmoon.collect.AttributeModel; 
     48import ndg.services.newmoon.collect.ClassModel; 
    4149import ndg.services.newmoon.collect.CollectClasses; 
     50import ndg.services.newmoon.collect.SuperAttribute; 
    4251import ndg.services.newmoon.velocity.python.GenerateClasses; 
    4352import ndg.services.newmoon.velocity.python.GenerateFromClassModel; 
    4857import org.apache.commons.io.FileUtils; 
     58import org.slf4j.Logger; 
     59import org.slf4j.LoggerFactory; 
    5465public class UmlToRDBM { 
     67        private final Logger logger = LoggerFactory.getLogger(UmlToRDBM.class); 
    5669        public void execute(Map<NewmoonManager.NM_PARAM, String> params) { 
    5770                try { 
    7588                        //Generates the ClassModels 
    7689                        CollectClasses cc = new CollectClasses(umlArchive); 
    77                         umlArchive.getClassModel().addAll(cc.execute()); 
     90                        List<ClassModel> cms = cc.execute(); 
     91                        umlArchive.getClassModel().addAll(cms); 
     93                        //Update the ClassModels substituting the SuperAttributes when necessary 
     94                        substitutesSuperAttributes(cms); 
    7996                        //Generates the python classes                   
    93110        } 
     113        private void substitutesSuperAttributes(List<ClassModel> cms) { 
     114                //creates a map between parents and childrens (classes and their subclasses) 
     115                Map<ClassModel, Set<ClassModel>> pc = new HashMap<ClassModel, Set<ClassModel>>(); 
     116                for (ClassModel cm : cms) {                      
     117                        for(ClassModel cmp : cm.getParents()) { 
     118                                if (!pc.containsKey(cmp)) { 
     119                                        pc.put(cmp, new HashSet<ClassModel>()); 
     120                                } 
     121                                pc.get(cmp).add(cm); 
     122                        } 
     123                } 
     125                //removes the item which has zero or one mapping  
     126                StringBuffer sb = new StringBuffer(); 
     127                Iterator<ClassModel> iter = pc.keySet().iterator(); 
     128                while(iter.hasNext()) { 
     129                        ClassModel umlClass = iter.next(); 
     130                        if (pc.get(umlClass).size() <= 1) { 
     131                                iter.remove(); 
     132                                continue; 
     133                        }                
     134                        sb.append(umlClass.getAssociatedClass().getName()); 
     135                        sb.append(": ");                         
     136                        for (ClassModel ic : pc.get(umlClass)) { 
     137                                sb.append(ic.getAssociatedClass().getName()); 
     138                                sb.append(", ");                                 
     139                        } 
     140                        sb.append("\n"); 
     141                        logger.info(sb.toString()); 
     142                        sb.delete(0, sb.length()); 
     143                } 
     145                // 
     146                Map<ClassModel, Set<ClassModel>> classUsers = new HashMap<ClassModel, Set<ClassModel>>(); 
     147                for (ClassModel cm : cms) { 
     148                        Iterator<AttributeModel> iterAttr = cm.getAttributeModel().iterator(); 
     149                        Set<SuperAttribute> sas = new HashSet<SuperAttribute>(); 
     150                        while (iterAttr.hasNext()) { 
     151                                AttributeModel attr = iterAttr.next(); 
     152                                if (attr == null  
     153                                                || attr.getAssociatedType() == null  
     154                                                || attr.getAssociatedType().getAssociatedClass() == null 
     155                                                || !pc.containsKey(attr.getAssociatedType()) 
     156                                                || attr instanceof SuperAttribute 
     157                                                || attr.getAssociatedType().getAssociatedClass().getUmlPackage().toString().contains("19103")) { 
     158                                        continue; 
     159                                } 
     161                                SuperAttribute sa = new SuperAttribute(attr);                    
     162                                sa.getSubTypes().addAll(pc.get(attr.getAssociatedType())); 
     163                                iterAttr.remove(); 
     164                                sas.add(sa); 
     165                                if (!classUsers.containsKey(attr.getAssociatedType())) { 
     166                                        classUsers.put(attr.getAssociatedType(), new HashSet<ClassModel>()); 
     167                                }                                
     168                                classUsers.get(attr.getAssociatedType()).add(cm); 
     169                        } 
     170                        cm.getAttributeModel().addAll(sas); 
     171                } 
     172                logger.info("\n Users list \n"); 
     173                iter = classUsers.keySet().iterator(); 
     174                while(iter.hasNext()) { 
     175                        ClassModel umlClass = iter.next(); 
     176                        sb.append(umlClass.getAssociatedClass().getName()); 
     177                        sb.append(": ");                         
     178                        for (ClassModel ic : classUsers.get(umlClass)) { 
     179                                sb.append(ic.getAssociatedClass().getName()); 
     180                                sb.append(", ");                                 
     181                        } 
     182                        sb.append("\n"); 
     183                        logger.info(sb.toString()); 
     184                        sb.delete(0, sb.length()); 
     185                } 
     186        }  
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/collect/AttributeModel.java

    r8043 r8064  
    7070                this.voidable = voidable; 
    7171                this.collectionType = collectionType; 
     72        } 
     74        public AttributeModel(AttributeModel am) { 
     75                this.associatedType = am.getAssociatedType();            
     76                this.name = am.getName(); 
     77                this.lowerBound = am.getLowerBound(); 
     78                this.upperBound = am.getUpperBound(); 
     79                this.lenght = am.getLenght(); 
     80                this.voidable = am.isVoidable(); 
     81                this.collectionType = am.getCollectionType(); 
    7282        } 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/collect/CollectClassModel.java

    r8060 r8064  
    43  * Retrieves from a {@link ClassModel} collection. Looping over a collection 
    44  * of {@link UMLClass} <code>Closure</code> pick ups {@link ClassModel} instances  
     43 * Retrieves {@link ClassModel}s from a internal collection. Looping over a collection 
     44 * of {@link UMLClass} this <code>Closure</code> pick ups {@link ClassModel} instances  
    4545 * from the <code>Collection</code> passed in the constructor which acts as reference collection.   
    4646 *  
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/GenerateTables.java

    r8060 r8064  
    102102        public void execute(UMLModel umlModel) throws IOException { 
     103                //Extracts the ClassModels belonging only to the given UMLModel 
    103104                CollectClassModel ccm = new CollectClassModel(umlArchive.getClassModel()); 
    104105                CollectionUtils.forAllDo(umlArchive.getUMLClassesByUMLModel(umlModel), ccm); 
     107                //Adds some customer required ClassModel not directly binded to the given UMLModel 
    106108                processOrphans(ccm); 
     110                //Generates the TableModels              
    108111                GenerateTablesClosure closure = new GenerateTablesClosure(umlArchive); 
    109112                CollectionUtils.forAllDo(ccm.getResult(), closure); 
     113                //then writes the result out 
    110114                writeAll(closure); 
    111115        } 
    122126                while (iter.hasNext()) { 
    123127                        item = iter.next(); 
    124                         if (item instanceof TableModel && (((TableModel)item).isSkipIt()  
    125                                         || ((TableModel)item).getAssociatedClass().equals("EARootClass"))) 
     128                        if (item instanceof TableModel &&  
     129                                        ((TableModel)item).getAssociatedClass().equals("EARootClass")) 
    126130                                continue; 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/GenerateTablesClosure.java

    r8060 r8064  
    4040import ndg.services.newmoon.collect.AttributeModel; 
    4141import ndg.services.newmoon.collect.ClassModel; 
     42import ndg.services.newmoon.collect.SuperAttribute; 
    4243import ndg.services.newmoon.velocity.python.support.AssociationTable; 
    4344import ndg.services.newmoon.velocity.python.support.ForeignKey; 
    123124                        return getTableModel(classModel); 
    125                 TableModel tm = new TableModel(classModel.getAssociatedClass()); 
     126                TableModel tm = new TableModel(classModel); 
    126127                tableModels.add(tm); 
    127128                collectData(tm); 
    136137        } 
     139        private void processSuperAttribute() { 
     141        } 
    138143        private void parseAttributes(TableModel parent) throws NewmoonException, 
    139144                        IOException { 
    140145                AttributeModel am = null; 
    141                 Iterator<AttributeModel> iter = getClassModel(parent.getAssociatedClass()) 
    142                                 .getAttributeModel().iterator(); 
     146                Iterator<AttributeModel> iter = parent.getAssociatedClassModel().getAttributeModel().iterator(); 
    143147                while (iter.hasNext()) { 
    144148                        am = iter.next(); 
     150                        if (am instanceof SuperAttribute) 
     151                                continue; 
    145153                        ClassModel cm = am.getAssociatedType(); 
    219227        private boolean tableModelExists(ClassModel classModel) { 
    220                 return tableModels.contains(new TableModel(classModel 
    221                                 .getAssociatedClass())); 
     228                return tableModels.contains(new TableModel(classModel)); 
    222229        } 
    224231        private TableModel getTableModel(ClassModel classModel) { 
    225                 TableModel tm = new TableModel(classModel.getAssociatedClass()); 
     232                TableModel tm = new TableModel(classModel); 
    226233                if (tableModels.contains(tm)) { 
    227234                        for (TableModel model : tableModels) { 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/PythonAttributeModel.java

    r8048 r8064  
    3232package ndg.services.newmoon.velocity.python; 
     34import java.util.ArrayList; 
     35import java.util.List; 
    3437import ndg.services.newmoon.collect.AttributeModel; 
    3538import ndg.services.newmoon.collect.ClassModel; 
    4144public class PythonAttributeModel extends AttributeModel { 
    4245        private final ClassModel owner; 
    43         private final String typeName;           
     46        private final String typeName;   
    4448        /** 
    4549         * @param name 
    4852         */ 
    4953        public PythonAttributeModel(AttributeModel am, ClassModel owner, String typeName) { 
    50                 super(am.getAssociatedType(),  
    51                                 am.getName(),  
    52                                 am.getLowerBound(), 
    53                                 am.getUpperBound(), 
    54                                 am.getLenght(), 
    55                                 am.isVoidable(), 
    56                                 am.getCollectionType()); 
     54                super(am); 
    5755                this.owner = owner;  
    5856                this.typeName = typeName; 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/PythonClassModel.java

    r8048 r8064  
    4040import ndg.services.newmoon.collect.AttributeModel; 
    4141import ndg.services.newmoon.collect.ClassModel; 
     42import ndg.services.newmoon.collect.SuperAttribute; 
    4243import ndg.services.newmoon.velocity.python.support.ASCodeList; 
    4344import ndg.services.newmoon.velocity.python.support.ASEnumeration; 
    4748import org.apache.commons.collections.CollectionUtils; 
     49import org.hamcrest.core.IsInstanceOf; 
    9395                CollectionUtils.addIgnoreNull(toImport, getStereotypeDummy(this.getStereotype())); 
    9597                if (this.isUnion()) { 
    9698                        CollectionUtils.addAll(toImport, this.getAttributeModel().iterator()); 
     99                }                
     100                for (AttributeModel am : this.getAttributeModel()) { 
     101                        if (am instanceof SuperAttribute) { 
     102                                toImport.add(am); 
     103                        } 
    97104                } 
    144151        private PythonAttributeModel generatePythonAttribute(AttributeModel am, ClassModel owner) { 
    145153                if (am == null  
    146154                                || am.getAssociatedType() == null 
    153161                        name = imp[1]; 
    154162                } 
    155                 return new PythonAttributeModel(am, 
    156                                 owner,  
    157                                 skipIt() ? null : name);                 
     164                if (am instanceof SuperAttribute) { 
     165                        return new PythonSuperAttributeModel((SuperAttribute)am, owner, skipIt() ? null : name); 
     166                } else { 
     167                        return new PythonAttributeModel(am, owner, skipIt() ? null : name); 
     168                } 
    158169        } 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/PythonImportClosure.java

    r8009 r8064  
    3737import ndg.services.newmoon.collect.AttributeModel; 
    3838import ndg.services.newmoon.collect.ClassModel; 
     39import ndg.services.newmoon.collect.SuperAttribute; 
    3940import ndg.services.newmoon.velocity.python.support.ImportCollector; 
    4041import ndg.services.newmoon.velocity.python.support.TableModel; 
    5657                        if (input == null) 
    5758                                return;  
     60                        if (input instanceof SuperAttribute) { 
     61                                SuperAttribute am = ((SuperAttribute)input); 
     62                                for (ClassModel cm : am.getSubTypes()) { 
     63                                        importCollector.updateImports(((ClassModel)cm).getAssociatedClass()); 
     64                                } 
     65                                return; 
     66                        } 
    5868                        UMLClassDataType umlType = null; 
    5969                        if (input instanceof UMLClassDataType) { 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/java/ndg/services/newmoon/velocity/python/support/TableModel.java

    r8009 r8064  
    3838import ndg.services.newmoon.collect.AttributeModel; 
     39import ndg.services.newmoon.collect.ClassModel; 
    3940import ndg.services.newmoon.xmiModel.UMLClass; 
    4445 */ 
    4546public class TableModel implements ExportModel, Comparable<TableModel>{ 
    46         private final UMLClass associatedClass; 
    47         private final Set<AttributeModel> attributeModel = new HashSet<AttributeModel>(); 
     47        private final ClassModel associatedClassModel; 
     48        private final Set<AttributeModel> attributeModel = new HashSet<AttributeModel>();        
    4849        private final Set<ForeignKey> fk = new HashSet<ForeignKey>(); 
    4950        private final Set<Relationship> relationship = new HashSet<Relationship>(); 
    5051        private final Set<TableModel> inherited = new HashSet<TableModel>(); 
    5152        private final Set<OverriddenAttribute> oa = new HashSet<OverriddenAttribute>(); 
    52         private final boolean skipIt; 
    5353        //Defines if this tables is inherited from one or more other tables 
    5454        private boolean hasChildren = false; 
    55         /** 
    56          * @param associatedClass 
    57          */ 
    58         public TableModel(UMLClass associatedClass, boolean skipIt) { 
    59                 super(); 
    60                 this.associatedClass = associatedClass; 
    61                 this.skipIt = skipIt; 
    62         } 
    6456        /** 
    6557         * Sets skipIt as <code>false</code> by default. Because the {@link #equals(Object)} 
    6759         * can be used as dummy id to scan a <code>Collection\<TableModel\></code>   
    6860         * */ 
    69         public TableModel(UMLClass associatedClass) { 
    70                 this(associatedClass, false); 
     61        public TableModel(ClassModel associatedClassModel) { 
     62                this.associatedClassModel = associatedClassModel; 
     63        }        
     65        /** 
     66         * @return the associatedClassModel 
     67         */ 
     68        public ClassModel getAssociatedClassModel() { 
     69                return associatedClassModel; 
    7170        } 
    7374        /** 
    7475         * @return the hasChildren 
    8788        /** 
    88          * @return the skipIt 
    89          */ 
    90         public boolean isSkipIt() { 
    91                 return skipIt; 
    92         } 
    96         /** 
    9789         * @return the associatedClass 
    9890         */ 
    9991        public UMLClass getAssociatedClass() { 
    100                 return associatedClass; 
     92                return associatedClassModel.getAssociatedClass(); 
    10193        } 
    151143                final int prime = 31; 
    152144                int result = 1; 
    153                 result = prime * result + ((associatedClass == null) ? 0 : associatedClass.hashCode()); 
     145                result = prime * result + ((getAssociatedClass() == null) ? 0 : getAssociatedClass().hashCode()); 
    154146                return result; 
    155147        } 
    166158                        return false; 
    167159                TableModel other = (TableModel) obj; 
    168                 if (associatedClass == null) { 
    169                         if (other.associatedClass != null) 
     160                if (getAssociatedClass() == null) { 
     161                        if (other.getAssociatedClass() != null) 
    170162                                return false; 
    171                 } else if (!associatedClass.equals(other.associatedClass)) 
     163                } else if (!getAssociatedClass().equals(other.getAssociatedClass())) 
    172164                        return false; 
    173165                return true; 
    181173        @Override 
    182174        public String toString() { 
    183                 return "TableModel [associatedClass=" + associatedClass + "]"; 
     175                return "TableModel [associatedClass=" + getAssociatedClass() + "]"; 
    184176        } 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/resources/global_library.vm

    r8041 r8064  
    2626#foreach( $relation in $tableModel.relationship) 
    2727        #relationColumn($tableModel, $relation)#if($foreach.hasNext),#end 
     29#foreach( $attribute in $tableModel.associatedClassModel.attributeModel) 
     31#foreach($sType in $attribute.subTypes) 
     32'_${sType.associatedClass.name.toLowerCase()}': relationship(${sType.associatedClass.name}, uselist=False, backref='${tableModel.associatedClassModel.associatedClass.name.toLowerCase()}_${attribute.name}')#if($foreach.hasNext),#end 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/resources/velocity/python/pythonClass.vm

    r8048 r8064  
    5757${tab}${tab}return self._${attribute.getParentName().toLowerCase()}.${attribute.name} 
     61${tab}def ${attribute.name}(self): 
     62#foreach($type in $attribute.subTypes) 
     63#set ( $assoClass = "$type.associatedClass.name.toLowerCase()") 
     64${tab}${tab}if(self._$assoClass is not None): 
     65${tab}${tab}${tab}return self._$assoClass 
     67${tab}${tab}return None 
     71#macro(saSetter $type, $sTypes) 
     72#foreach($stype in $sTypes) 
     79#macro(initAttributeLeft $attrL) 
     80#if($attrL.hasMultiplicity()) = [] 
     81#else = None 
    6589${tab}def ${attribute.name}(self, value): 
    6690${tab}${tab}${tab} self._${attribute.getParentName().toLowerCase()}.${attribute.name} = value 
     94${tab}def ${attribute.name}(self, value): 
     95#foreach($type in $attribute.subTypes) 
     96#set ( $assoClass = "$type.associatedClass.name") 
     97#set ( $assoClassL = "$type.associatedClass.name.toLowerCase()") 
     98${tab}${tab}if isinstance(value, $assoClass): 
     99${tab}${tab}${tab}self._$assoClassL = value 
     100#saSetter($type, $attribute.subTypes) 
     114#macro( subTypes $subTypes) 
     115#foreach($type in $subTypes) 
    79120#macro( attributes $attributes, $parents) 
    85127#foreach($attribute in $attributes) 
    86 ${tab}${tab}self.${attribute.name} #if($attribute.hasMultiplicity()) = [] 
    87 #else = None 
  • mauRepo/xmi2sqlalchemy/trunk/src/main/resources/velocity/python/sqlAlchemyTables.vm

    r8041 r8064  
    13 #end 
    15 #macro( column $attribute) 
    16 Column('${attribute.name}', #attributeType(${attribute}) #checkNullable($attribute)), 
     46#macro( column $attribute) 
     47Column('${attribute.name}', #attributeType(${attribute}) #checkNullable($attribute)), 
     50#macro( superColumn $tableModel) 
     51#foreach( $attribute in $tableModel.associatedClassModel.attributeModel) 
     53#foreach($sType in $attribute.subTypes) 
     54#set ($associatedCN = ${sType.associatedClass.name.toLowerCase()}) 
     55Column('_${associatedCN}_id', Integer, ForeignKey('${associatedCN}.id')), 
    5261#macro( table $tableModel) 
  • mauRepo/xmi2sqlalchemy/trunk/src/test/java/ngn/services/newmoon/TestsTester.java

    r8060 r8064  
    7272//              testParseXmlFile("TestModel10"); 
    7373//              testParseXmlFile("TestModel11");                 
    74                 testParseXmlFile("TestModel12"); 
     74//              testParseXmlFile("TestModel12"); 
    7575                testParseXmlFile("TestModel13");                 
    7676        } 
  • mauRepo/xmi2sqlalchemy/trunk/src/test/resources/removeAll

    r8048 r8064  
    1919 ORDER BY 1;   
     22"DROP SEQUENCE IF EXISTS cc_concatenatedoperation_id_seq CASCADE;" 
     23"DROP SEQUENCE IF EXISTS cc_conversion_id_seq CASCADE;" 
     24"DROP SEQUENCE IF EXISTS cc_coordinateoperation_id_seq CASCADE;" 
     25"DROP SEQUENCE IF EXISTS cc_formula_id_seq CASCADE;" 
     26"DROP SEQUENCE IF EXISTS cc_generaloperationparameter_id_seq CASCADE;" 
     27"DROP SEQUENCE IF EXISTS cc_generalparametervalue_id_seq CASCADE;" 
     28"DROP SEQUENCE IF EXISTS cc_operationmethod_id_seq CASCADE;" 
     29"DROP SEQUENCE IF EXISTS cc_operationparametergroup_id_seq CASCADE;" 
     30"DROP SEQUENCE IF EXISTS cc_parametervaluegroup_id_seq CASCADE;" 
     31"DROP SEQUENCE IF EXISTS cc_passthroughoperation_id_seq CASCADE;" 
     32"DROP SEQUENCE IF EXISTS cc_singleoperation_id_seq CASCADE;" 
     33"DROP SEQUENCE IF EXISTS cd_datum_id_seq CASCADE;" 
     34"DROP SEQUENCE IF EXISTS cd_verticaldatum_id_seq CASCADE;" 
     35"DROP SEQUENCE IF EXISTS ceda_acquisition_id_seq CASCADE;" 
     36"DROP SEQUENCE IF EXISTS ceda_citation_id_seq CASCADE;" 
     37"DROP SEQUENCE IF EXISTS ceda_compositeprocess_id_seq CASCADE;" 
     38"DROP SEQUENCE IF EXISTS ceda_instrument_id_seq CASCADE;" 
     39"DROP SEQUENCE IF EXISTS ceda_notes_id_seq CASCADE;" 
     40"DROP SEQUENCE IF EXISTS ceda_observationcollection_id_seq CASCADE;" 
     41"DROP SEQUENCE IF EXISTS ceda_observation_id_seq CASCADE;" 
     42"DROP SEQUENCE IF EXISTS ceda_operation_id_seq CASCADE;" 
     43"DROP SEQUENCE IF EXISTS ceda_platform_id_seq CASCADE;" 
     44"DROP SEQUENCE IF EXISTS ceda_process_id_seq CASCADE;" 
     45"DROP SEQUENCE IF EXISTS ceda_processing_id_seq CASCADE;" 
     46"DROP SEQUENCE IF EXISTS ceda_project_id_seq CASCADE;" 
     47"DROP SEQUENCE IF EXISTS ceda_result_id_seq CASCADE;" 
     48"DROP SEQUENCE IF EXISTS ceda_review_id_seq CASCADE;" 
     49"DROP SEQUENCE IF EXISTS ci_address_id_seq CASCADE;" 
     50"DROP SEQUENCE IF EXISTS ci_citation_id_seq CASCADE;" 
     51"DROP SEQUENCE IF EXISTS ci_contact_id_seq CASCADE;" 
     52"DROP SEQUENCE IF EXISTS ci_date_id_seq CASCADE;" 
     53"DROP SEQUENCE IF EXISTS ci_individual_id_seq CASCADE;" 
     54"DROP SEQUENCE IF EXISTS ci_onlineresource_id_seq CASCADE;" 
     55"DROP SEQUENCE IF EXISTS ci_organisation_id_seq CASCADE;" 
     56"DROP SEQUENCE IF EXISTS ci_party_id_seq CASCADE;" 
     57"DROP SEQUENCE IF EXISTS ci_responsibility_id_seq CASCADE;" 
     58"DROP SEQUENCE IF EXISTS ci_responsibleparty_id_seq CASCADE;" 
     59"DROP SEQUENCE IF EXISTS ci_responsiblepartyinfo_id_seq CASCADE;" 
     60"DROP SEQUENCE IF EXISTS ci_series_id_seq CASCADE;" 
     61"DROP SEQUENCE IF EXISTS ci_telephone_id_seq CASCADE;" 
     62"DROP SEQUENCE IF EXISTS class13_0_id_seq CASCADE;" 
     63"DROP SEQUENCE IF EXISTS class13_1_id_seq CASCADE;" 
     64"DROP SEQUENCE IF EXISTS class13_2_id_seq CASCADE;" 
     65"DROP SEQUENCE IF EXISTS class13_3_id_seq CASCADE;" 
     66"DROP SEQUENCE IF EXISTS cl_dataset_id_seq CASCADE;" 
     67"DROP SEQUENCE IF EXISTS clocktime_id_seq CASCADE;" 
     68"DROP SEQUENCE IF EXISTS cs_coordinatesystemaxis_id_seq CASCADE;" 
     69"DROP SEQUENCE IF EXISTS cs_coordinatesystem_id_seq CASCADE;" 
     70"DROP SEQUENCE IF EXISTS cs_verticalcs_id_seq CASCADE;" 
     71"DROP SEQUENCE IF EXISTS cv_attributevalues_id_seq CASCADE;" 
     72"DROP SEQUENCE IF EXISTS cv_coverage_id_seq CASCADE;" 
     73"DROP SEQUENCE IF EXISTS cv_domainobject_id_seq CASCADE;" 
     74"DROP SEQUENCE IF EXISTS cv_footprint_id_seq CASCADE;" 
     75"DROP SEQUENCE IF EXISTS cv_gridcell_id_seq CASCADE;" 
     76"DROP SEQUENCE IF EXISTS cv_gridcoordinate_id_seq CASCADE;" 
     77"DROP SEQUENCE IF EXISTS cv_gridenvelope_id_seq CASCADE;" 
     78"DROP SEQUENCE IF EXISTS cv_grid_id_seq CASCADE;" 
     79"DROP SEQUENCE IF EXISTS cv_gridpoint_id_seq CASCADE;" 
     80"DROP SEQUENCE IF EXISTS cv_referenceablegrid_id_seq CASCADE;" 
     81"DROP SEQUENCE IF EXISTS date_id_seq CASCADE;" 
     82"DROP SEQUENCE IF EXISTS dateprecision_id_seq CASCADE;" 
     83"DROP SEQUENCE IF EXISTS datetime_id_seq CASCADE;" 
     84"DROP SEQUENCE IF EXISTS directposition_id_seq CASCADE;" 
     85"DROP SEQUENCE IF EXISTS distance_id_seq CASCADE;" 
     86"DROP SEQUENCE IF EXISTS dq_dataquality_id_seq CASCADE;" 
     87"DROP SEQUENCE IF EXISTS dq_element_id_seq CASCADE;" 
     88"DROP SEQUENCE IF EXISTS dq_positionalaccuracy_id_seq CASCADE;" 
     89"DROP SEQUENCE IF EXISTS dq_result_id_seq CASCADE;" 
     90"DROP SEQUENCE IF EXISTS dq_scope_id_seq CASCADE;" 
     91"DROP SEQUENCE IF EXISTS ds_aggregate_id_seq CASCADE;" 
     92"DROP SEQUENCE IF EXISTS ds_dataset_id_seq CASCADE;" 
     93"DROP SEQUENCE IF EXISTS earootclass_id_seq CASCADE;" 
     94"DROP SEQUENCE IF EXISTS ex_extent_id_seq CASCADE;" 
     95"DROP SEQUENCE IF EXISTS ex_geographicdescription_id_seq CASCADE;" 
     96"DROP SEQUENCE IF EXISTS ex_geographicextent_id_seq CASCADE;" 
     97"DROP SEQUENCE IF EXISTS ex_temporalextent_id_seq CASCADE;" 
     98"DROP SEQUENCE IF EXISTS ex_verticalextent_id_seq CASCADE;" 
     99"DROP SEQUENCE IF EXISTS genericname_id_seq CASCADE;" 
     100"DROP SEQUENCE IF EXISTS gf_associationrole_id_seq CASCADE;" 
     101"DROP SEQUENCE IF EXISTS gf_associationtype_id_seq CASCADE;" 
     102"DROP SEQUENCE IF EXISTS gf_attributetype_id_seq CASCADE;" 
     103"DROP SEQUENCE IF EXISTS gf_constraint_id_seq CASCADE;" 
     104"DROP SEQUENCE IF EXISTS gf_featuretype_id_seq CASCADE;" 
     105"DROP SEQUENCE IF EXISTS gfi_feature_id_seq CASCADE;" 
     106"DROP SEQUENCE IF EXISTS gf_inheritancerelation_id_seq CASCADE;" 
     107"DROP SEQUENCE IF EXISTS gf_operation_id_seq CASCADE;" 
     108"DROP SEQUENCE IF EXISTS gf_propertytype_id_seq CASCADE;" 
     109"DROP SEQUENCE IF EXISTS gm_complex_id_seq CASCADE;" 
     110"DROP SEQUENCE IF EXISTS gm_composite_id_seq CASCADE;" 
     111"DROP SEQUENCE IF EXISTS gm_compositepoint_id_seq CASCADE;" 
     112"DROP SEQUENCE IF EXISTS gm_object_id_seq CASCADE;" 
     113"DROP SEQUENCE IF EXISTS gm_orientableprimitive_id_seq CASCADE;" 
     114"DROP SEQUENCE IF EXISTS gm_point_id_seq CASCADE;" 
     115"DROP SEQUENCE IF EXISTS gm_primitive_id_seq CASCADE;" 
     116"DROP SEQUENCE IF EXISTS io_identifiedobjectbase_id_seq CASCADE;" 
     117"DROP SEQUENCE IF EXISTS io_identifiedobject_id_seq CASCADE;" 
     118"DROP SEQUENCE IF EXISTS le_algorithm_id_seq CASCADE;" 
     119"DROP SEQUENCE IF EXISTS length_id_seq CASCADE;" 
     120"DROP SEQUENCE IF EXISTS le_nominalresolution_id_seq CASCADE;" 
     121"DROP SEQUENCE IF EXISTS le_source_id_seq CASCADE;" 
     122"DROP SEQUENCE IF EXISTS li_lineage_id_seq CASCADE;" 
     123"DROP SEQUENCE IF EXISTS li_processstep_id_seq CASCADE;" 
     124"DROP SEQUENCE IF EXISTS li_source_id_seq CASCADE;" 
     125"DROP SEQUENCE IF EXISTS localname_id_seq CASCADE;" 
     126"DROP SEQUENCE IF EXISTS md_aggregateinformation_id_seq CASCADE;" 
     127"DROP SEQUENCE IF EXISTS md_applicationschemainformation_id_seq CASCADE;" 
     128"DROP SEQUENCE IF EXISTS md_browsegraphic_id_seq CASCADE;" 
     129"DROP SEQUENCE IF EXISTS md_constraints_id_seq CASCADE;" 
     130"DROP SEQUENCE IF EXISTS md_contentinformation_id_seq CASCADE;" 
     131"DROP SEQUENCE IF EXISTS md_digitaltransferoptions_id_seq CASCADE;" 
     132"DROP SEQUENCE IF EXISTS md_distribution_id_seq CASCADE;" 
     133"DROP SEQUENCE IF EXISTS md_distributor_id_seq CASCADE;" 
     134"DROP SEQUENCE IF EXISTS md_extendedelementinformation_id_seq CASCADE;" 
     135"DROP SEQUENCE IF EXISTS md_format_id_seq CASCADE;" 
     136"DROP SEQUENCE IF EXISTS md_identification_id_seq CASCADE;" 
     137"DROP SEQUENCE IF EXISTS md_identifier_id_seq CASCADE;" 
     138"DROP SEQUENCE IF EXISTS md_keywords_id_seq CASCADE;" 
     139"DROP SEQUENCE IF EXISTS md_maintenanceinformation_id_seq CASCADE;" 
     140"DROP SEQUENCE IF EXISTS md_medium_id_seq CASCADE;" 
     141"DROP SEQUENCE IF EXISTS md_metadataextensioninformation_id_seq CASCADE;" 
     142"DROP SEQUENCE IF EXISTS md_metadata_id_seq CASCADE;" 
     143"DROP SEQUENCE IF EXISTS md_portrayalcataloguereference_id_seq CASCADE;" 
     144"DROP SEQUENCE IF EXISTS md_referencesystem_id_seq CASCADE;" 
     145"DROP SEQUENCE IF EXISTS md_representativefraction_id_seq CASCADE;" 
     146"DROP SEQUENCE IF EXISTS md_scopedescription_id_seq CASCADE;" 
     147"DROP SEQUENCE IF EXISTS md_spatialrepresentation_id_seq CASCADE;" 
     148"DROP SEQUENCE IF EXISTS md_standardorderprocess_id_seq CASCADE;" 
     149"DROP SEQUENCE IF EXISTS md_usage_id_seq CASCADE;" 
     150"DROP SEQUENCE IF EXISTS measure_id_seq CASCADE;" 
     151"DROP SEQUENCE IF EXISTS mo_acquisition_id_seq CASCADE;" 
     152"DROP SEQUENCE IF EXISTS mo_compositeprocess_id_seq CASCADE;" 
     153"DROP SEQUENCE IF EXISTS mo_computation_id_seq CASCADE;" 
     154"DROP SEQUENCE IF EXISTS mo_inputoutput_id_seq CASCADE;" 
     155"DROP SEQUENCE IF EXISTS mo_instrument_id_seq CASCADE;" 
     156"DROP SEQUENCE IF EXISTS mo_instrumentplatformpair_id_seq CASCADE;" 
     157"DROP SEQUENCE IF EXISTS mo_location_id_seq CASCADE;" 
     158"DROP SEQUENCE IF EXISTS mo_observationcollection_id_seq CASCADE;" 
     159"DROP SEQUENCE IF EXISTS mo_observation_id_seq CASCADE;" 
     160"DROP SEQUENCE IF EXISTS mo_onlineresource_id_seq CASCADE;" 
     161"DROP SEQUENCE IF EXISTS mo_operation_id_seq CASCADE;" 
     162"DROP SEQUENCE IF EXISTS mo_organization_id_seq CASCADE;" 
     163"DROP SEQUENCE IF EXISTS mo_platform_id_seq CASCADE;" 
     164"DROP SEQUENCE IF EXISTS mo_process_id_seq CASCADE;" 
     165"DROP SEQUENCE IF EXISTS mo_processing_id_seq CASCADE;" 
     166"DROP SEQUENCE IF EXISTS mo_project_id_seq CASCADE;" 
     167"DROP SEQUENCE IF EXISTS mo_responsiblepartyinfo_id_seq CASCADE;" 
     168"DROP SEQUENCE IF EXISTS mo_result_id_seq CASCADE;" 
     169"DROP SEQUENCE IF EXISTS multiplicity_id_seq CASCADE;" 
     170"DROP SEQUENCE IF EXISTS multiplicityrange_id_seq CASCADE;" 
     171"DROP SEQUENCE IF EXISTS namedvalue_id_seq CASCADE;" 
     172"DROP SEQUENCE IF EXISTS namespace_id_seq CASCADE;" 
     173"DROP SEQUENCE IF EXISTS om_observation_id_seq CASCADE;" 
     174"DROP SEQUENCE IF EXISTS om_process_id_seq CASCADE;" 
     175"DROP SEQUENCE IF EXISTS record_id_seq CASCADE;" 
     176"DROP SEQUENCE IF EXISTS recordtype_id_seq CASCADE;" 
     177"DROP SEQUENCE IF EXISTS rs_identifier_id_seq CASCADE;" 
     178"DROP SEQUENCE IF EXISTS rs_referencesystem_id_seq CASCADE;" 
     179"DROP SEQUENCE IF EXISTS scale_id_seq CASCADE;" 
     180"DROP SEQUENCE IF EXISTS sc_compoundcrs_id_seq CASCADE;" 
     181"DROP SEQUENCE IF EXISTS sc_crs_id_seq CASCADE;" 
     182"DROP SEQUENCE IF EXISTS sc_derivedcrs_id_seq CASCADE;" 
     183"DROP SEQUENCE IF EXISTS sc_generalderivedcrs_id_seq CASCADE;" 
     184"DROP SEQUENCE IF EXISTS schema_id_seq CASCADE;" 
     185"DROP SEQUENCE IF EXISTS scopedname_id_seq CASCADE;" 
     186"DROP SEQUENCE IF EXISTS sc_singlecrs_id_seq CASCADE;" 
     187"DROP SEQUENCE IF EXISTS sc_verticalcrs_id_seq CASCADE;" 
     188"DROP SEQUENCE IF EXISTS time_id_seq CASCADE;" 
     189"DROP SEQUENCE IF EXISTS tm_complex_id_seq CASCADE;" 
     190"DROP SEQUENCE IF EXISTS tm_duration_id_seq CASCADE;" 
     191"DROP SEQUENCE IF EXISTS tm_edge_id_seq CASCADE;" 
     192"DROP SEQUENCE IF EXISTS tm_geometricprimitive_id_seq CASCADE;" 
     193"DROP SEQUENCE IF EXISTS tm_instant_id_seq CASCADE;" 
     194"DROP SEQUENCE IF EXISTS tm_node_id_seq CASCADE;" 
     195"DROP SEQUENCE IF EXISTS tm_object_id_seq CASCADE;" 
     196"DROP SEQUENCE IF EXISTS tm_periodduration_id_seq CASCADE;" 
     197"DROP SEQUENCE IF EXISTS tm_period_id_seq CASCADE;" 
     198"DROP SEQUENCE IF EXISTS tm_position_id_seq CASCADE;" 
     199"DROP SEQUENCE IF EXISTS tm_primitive_id_seq CASCADE;" 
     200"DROP SEQUENCE IF EXISTS tm_referencesystem_id_seq CASCADE;" 
     201"DROP SEQUENCE IF EXISTS tm_temporalposition_id_seq CASCADE;" 
     202"DROP SEQUENCE IF EXISTS tm_topologicalcomplex_id_seq CASCADE;" 
     203"DROP SEQUENCE IF EXISTS tm_topologicalprimitive_id_seq CASCADE;" 
     204"DROP SEQUENCE IF EXISTS tp_complex_id_seq CASCADE;" 
     205"DROP SEQUENCE IF EXISTS tp_directedtopo_id_seq CASCADE;" 
     206"DROP SEQUENCE IF EXISTS tp_expression_id_seq CASCADE;" 
     207"DROP SEQUENCE IF EXISTS tp_expressionterm_id_seq CASCADE;" 
     208"DROP SEQUENCE IF EXISTS tp_primitive_id_seq CASCADE;" 
     209"DROP SEQUENCE IF EXISTS type_id_seq CASCADE;" 
     210"DROP SEQUENCE IF EXISTS typename_id_seq CASCADE;" 
     211"DROP SEQUENCE IF EXISTS unitofmeasure_id_seq CASCADE;" 
     212"DROP SEQUENCE IF EXISTS unlimitedinteger_id_seq CASCADE;" 
     213"DROP SEQUENCE IF EXISTS uomlength_id_seq CASCADE;" 
     214"DROP SEQUENCE IF EXISTS uomscale_id_seq CASCADE;" 
     215"DROP SEQUENCE IF EXISTS url_id_seq CASCADE;" 
     219"DROP TABLE IF EXISTS cc_concatenatedoperation CASCADE;" 
     220"DROP TABLE IF EXISTS cc_conversion CASCADE;" 
     221"DROP TABLE IF EXISTS cc_coordinateoperation CASCADE;" 
     222"DROP TABLE IF EXISTS cc_formula CASCADE;" 
     223"DROP TABLE IF EXISTS cc_generaloperationparameter CASCADE;" 
     224"DROP TABLE IF EXISTS cc_generalparametervalue CASCADE;" 
     225"DROP TABLE IF EXISTS cc_operationmethod CASCADE;" 
     226"DROP TABLE IF EXISTS cc_operationparametergroup CASCADE;" 
     227"DROP TABLE IF EXISTS cc_parametervaluegroup CASCADE;" 
     228"DROP TABLE IF EXISTS cc_passthroughoperation CASCADE;" 
     229"DROP TABLE IF EXISTS cc_singleoperation CASCADE;" 
     230"DROP TABLE IF EXISTS cd_datum CASCADE;" 
     231"DROP TABLE IF EXISTS cd_verticaldatum CASCADE;" 
     232"DROP TABLE IF EXISTS ceda_acquisition CASCADE;" 
     233"DROP TABLE IF EXISTS ceda_citation CASCADE;" 
     234"DROP TABLE IF EXISTS ceda_compositeprocess CASCADE;" 
     235"DROP TABLE IF EXISTS ceda_instrument CASCADE;" 
     236"DROP TABLE IF EXISTS ceda_notes CASCADE;" 
     237"DROP TABLE IF EXISTS ceda_observation CASCADE;" 
     238"DROP TABLE IF EXISTS ceda_observationcollection CASCADE;" 
     239"DROP TABLE IF EXISTS ceda_operation CASCADE;" 
     240"DROP TABLE IF EXISTS ceda_platform CASCADE;" 
     241"DROP TABLE IF EXISTS ceda_process CASCADE;" 
     242"DROP TABLE IF EXISTS ceda_processing CASCADE;" 
     243"DROP TABLE IF EXISTS ceda_project CASCADE;" 
     244"DROP TABLE IF EXISTS ceda_result CASCADE;" 
     245"DROP TABLE IF EXISTS ceda_review CASCADE;" 
     246"DROP TABLE IF EXISTS ci_address CASCADE;" 
     247"DROP TABLE IF EXISTS ci_citation CASCADE;" 
     248"DROP TABLE IF EXISTS ci_contact CASCADE;" 
     249"DROP TABLE IF EXISTS ci_date CASCADE;" 
     250"DROP TABLE IF EXISTS ci_individual CASCADE;" 
     251"DROP TABLE IF EXISTS ci_onlineresource CASCADE;" 
     252"DROP TABLE IF EXISTS ci_organisation CASCADE;" 
     253"DROP TABLE IF EXISTS ci_party CASCADE;" 
     254"DROP TABLE IF EXISTS ci_responsibility CASCADE;" 
     255"DROP TABLE IF EXISTS ci_responsibleparty CASCADE;" 
     256"DROP TABLE IF EXISTS ci_responsiblepartyinfo CASCADE;" 
     257"DROP TABLE IF EXISTS ci_series CASCADE;" 
     258"DROP TABLE IF EXISTS ci_telephone CASCADE;" 
     259"DROP TABLE IF EXISTS class13_0 CASCADE;" 
     260"DROP TABLE IF EXISTS class13_1 CASCADE;" 
     261"DROP TABLE IF EXISTS class13_2 CASCADE;" 
     262"DROP TABLE IF EXISTS class13_3 CASCADE;" 
     263"DROP TABLE IF EXISTS cl_dataset CASCADE;" 
     264"DROP TABLE IF EXISTS clocktime CASCADE;" 
     265"DROP TABLE IF EXISTS cs_coordinatesystemaxis CASCADE;" 
     266"DROP TABLE IF EXISTS cs_coordinatesystem CASCADE;" 
     267"DROP TABLE IF EXISTS cs_verticalcs CASCADE;" 
     268"DROP TABLE IF EXISTS cv_attributevalues CASCADE;" 
     269"DROP TABLE IF EXISTS cv_coverage CASCADE;" 
     270"DROP TABLE IF EXISTS cv_domainobject CASCADE;" 
     271"DROP TABLE IF EXISTS cv_footprint CASCADE;" 
     272"DROP TABLE IF EXISTS cv_grid CASCADE;" 
     273"DROP TABLE IF EXISTS cv_gridcell CASCADE;" 
     274"DROP TABLE IF EXISTS cv_gridcoordinate CASCADE;" 
     275"DROP TABLE IF EXISTS cv_gridenvelope CASCADE;" 
     276"DROP TABLE IF EXISTS cv_gridpoint CASCADE;" 
     277"DROP TABLE IF EXISTS cv_referenceablegrid CASCADE;" 
     279"DROP TABLE IF EXISTS dateprecision CASCADE;" 
     280"DROP TABLE IF EXISTS datetime CASCADE;" 
     281"DROP TABLE IF EXISTS directposition CASCADE;" 
     282"DROP TABLE IF EXISTS distance CASCADE;" 
     283"DROP TABLE IF EXISTS dq_dataquality CASCADE;" 
     284"DROP TABLE IF EXISTS dq_element CASCADE;" 
     285"DROP TABLE IF EXISTS dq_positionalaccuracy CASCADE;" 
     286"DROP TABLE IF EXISTS dq_result CASCADE;" 
     287"DROP TABLE IF EXISTS dq_scope CASCADE;" 
     288"DROP TABLE IF EXISTS ds_aggregate CASCADE;" 
     289"DROP TABLE IF EXISTS ds_aggregate_ds_aggregate CASCADE;" 
     290"DROP TABLE IF EXISTS ds_dataset CASCADE;" 
     291"DROP TABLE IF EXISTS earootclass CASCADE;" 
     292"DROP TABLE IF EXISTS ex_extent CASCADE;" 
     293"DROP TABLE IF EXISTS ex_geographicdescription CASCADE;" 
     294"DROP TABLE IF EXISTS ex_geographicextent CASCADE;" 
     295"DROP TABLE IF EXISTS ex_temporalextent CASCADE;" 
     296"DROP TABLE IF EXISTS ex_verticalextent CASCADE;" 
     297"DROP TABLE IF EXISTS genericname CASCADE;" 
     298"DROP TABLE IF EXISTS gf_associationrole CASCADE;" 
     299"DROP TABLE IF EXISTS gf_associationtype CASCADE;" 
     300"DROP TABLE IF EXISTS gf_attributetype CASCADE;" 
     301"DROP TABLE IF EXISTS gf_attributetype_gf_attributetype CASCADE;" 
     302"DROP TABLE IF EXISTS gf_constraint CASCADE;" 
     303"DROP TABLE IF EXISTS gf_featuretype CASCADE;" 
     304"DROP TABLE IF EXISTS gfi_feature CASCADE;" 
     305"DROP TABLE IF EXISTS gf_inheritancerelation CASCADE;" 
     306"DROP TABLE IF EXISTS gf_operation CASCADE;" 
     307"DROP TABLE IF EXISTS gf_propertytype CASCADE;" 
     308"DROP TABLE IF EXISTS gm_complex CASCADE;" 
     309"DROP TABLE IF EXISTS gm_complex_gm_complex CASCADE;" 
     310"DROP TABLE IF EXISTS gm_composite CASCADE;" 
     311"DROP TABLE IF EXISTS gm_compositepoint CASCADE;" 
     312"DROP TABLE IF EXISTS gm_object CASCADE;" 
     313"DROP TABLE IF EXISTS gm_orientableprimitive CASCADE;" 
     314"DROP TABLE IF EXISTS gm_point CASCADE;" 
     315"DROP TABLE IF EXISTS gm_primitive CASCADE;" 
     316"DROP TABLE IF EXISTS gm_primitive_gm_primitive CASCADE;" 
     317"DROP TABLE IF EXISTS io_identifiedobjectbase CASCADE;" 
     318"DROP TABLE IF EXISTS io_identifiedobject CASCADE;" 
     319"DROP TABLE IF EXISTS le_algorithm CASCADE;" 
     321"DROP TABLE IF EXISTS le_nominalresolution CASCADE;" 
     322"DROP TABLE IF EXISTS le_source CASCADE;" 
     323"DROP TABLE IF EXISTS li_lineage CASCADE;" 
     324"DROP TABLE IF EXISTS li_processstep CASCADE;" 
     325"DROP TABLE IF EXISTS li_source CASCADE;" 
     326"DROP TABLE IF EXISTS localname CASCADE;" 
     327"DROP TABLE IF EXISTS md_aggregateinformation CASCADE;" 
     328"DROP TABLE IF EXISTS md_applicationschemainformation CASCADE;" 
     329"DROP TABLE IF EXISTS md_browsegraphic CASCADE;" 
     330"DROP TABLE IF EXISTS md_constraints CASCADE;" 
     331"DROP TABLE IF EXISTS md_contentinformation CASCADE;" 
     332"DROP TABLE IF EXISTS md_digitaltransferoptions CASCADE;" 
     333"DROP TABLE IF EXISTS md_distribution CASCADE;" 
     334"DROP TABLE IF EXISTS md_distributor CASCADE;" 
     335"DROP TABLE IF EXISTS md_extendedelementinformation CASCADE;" 
     336"DROP TABLE IF EXISTS md_format CASCADE;" 
     337"DROP TABLE IF EXISTS md_identification CASCADE;" 
     338"DROP TABLE IF EXISTS md_identifier CASCADE;" 
     339"DROP TABLE IF EXISTS md_keywords CASCADE;" 
     340"DROP TABLE IF EXISTS md_maintenanceinformation CASCADE;" 
     341"DROP TABLE IF EXISTS md_medium CASCADE;" 
     342"DROP TABLE IF EXISTS md_metadata CASCADE;" 
     343"DROP TABLE IF EXISTS md_metadataextensioninformation CASCADE;" 
     344"DROP TABLE IF EXISTS md_portrayalcataloguereference CASCADE;" 
     345"DROP TABLE IF EXISTS md_referencesystem CASCADE;" 
     346"DROP TABLE IF EXISTS md_representativefraction CASCADE;" 
     347"DROP TABLE IF EXISTS md_scopedescription CASCADE;" 
     348"DROP TABLE IF EXISTS md_spatialrepresentation CASCADE;" 
     349"DROP TABLE IF EXISTS md_standardorderprocess CASCADE;" 
     350"DROP TABLE IF EXISTS md_usage CASCADE;" 
     351"DROP TABLE IF EXISTS measure CASCADE;" 
     352"DROP TABLE IF EXISTS mo_acquisition CASCADE;" 
     353"DROP TABLE IF EXISTS mo_compositeprocess CASCADE;" 
     354"DROP TABLE IF EXISTS mo_computation CASCADE;" 
     355"DROP TABLE IF EXISTS mo_inputoutput CASCADE;" 
     356"DROP TABLE IF EXISTS mo_instrument CASCADE;" 
     357"DROP TABLE IF EXISTS mo_instrument_mo_instrument CASCADE;" 
     358"DROP TABLE IF EXISTS mo_instrumentplatformpair CASCADE;" 
     359"DROP TABLE IF EXISTS mo_location CASCADE;" 
     360"DROP TABLE IF EXISTS mo_observation CASCADE;" 
     361"DROP TABLE IF EXISTS mo_observationcollection CASCADE;" 
     362"DROP TABLE IF EXISTS mo_observationcollection_mo_observationcollection CASCADE;" 
     363"DROP TABLE IF EXISTS mo_onlineresource CASCADE;" 
     364"DROP TABLE IF EXISTS mo_operation CASCADE;" 
     365"DROP TABLE IF EXISTS mo_operation_mo_operation CASCADE;" 
     366"DROP TABLE IF EXISTS mo_organization CASCADE;" 
     367"DROP TABLE IF EXISTS mo_platform CASCADE;" 
     368"DROP TABLE IF EXISTS mo_platform_mo_platform CASCADE;" 
     369"DROP TABLE IF EXISTS mo_process CASCADE;" 
     370"DROP TABLE IF EXISTS mo_processing CASCADE;" 
     371"DROP TABLE IF EXISTS mo_project CASCADE;" 
     372"DROP TABLE IF EXISTS mo_project_mo_project CASCADE;" 
     373"DROP TABLE IF EXISTS mo_responsiblepartyinfo CASCADE;" 
     374"DROP TABLE IF EXISTS mo_result CASCADE;" 
     375"DROP TABLE IF EXISTS mo_result_mo_result CASCADE;" 
     376"DROP TABLE IF EXISTS multiplicity CASCADE;" 
     377"DROP TABLE IF EXISTS multiplicityrange CASCADE;" 
     378"DROP TABLE IF EXISTS namedvalue CASCADE;" 
     379"DROP TABLE IF EXISTS namespace CASCADE;" 
     380"DROP TABLE IF EXISTS obs_coll_migration CASCADE;" 
     381"DROP TABLE IF EXISTS observation_migration CASCADE;" 
     382"DROP TABLE IF EXISTS om_observation CASCADE;" 
     383"DROP TABLE IF EXISTS om_observation_om_observation CASCADE;" 
     384"DROP TABLE IF EXISTS om_process CASCADE;" 
     386"DROP TABLE IF EXISTS recordtype CASCADE;" 
     387"DROP TABLE IF EXISTS rs_identifier CASCADE;" 
     388"DROP TABLE IF EXISTS rs_referencesystem CASCADE;" 
     390"DROP TABLE IF EXISTS sc_compoundcrs CASCADE;" 
     392"DROP TABLE IF EXISTS sc_derivedcrs CASCADE;" 
     393"DROP TABLE IF EXISTS sc_generalderivedcrs CASCADE;" 
     395"DROP TABLE IF EXISTS scopedname CASCADE;" 
     396"DROP TABLE IF EXISTS sc_singlecrs CASCADE;" 
     397"DROP TABLE IF EXISTS sc_verticalcrs CASCADE;" 
     399"DROP TABLE IF EXISTS tm_complex CASCADE;" 
     400"DROP TABLE IF EXISTS tm_duration CASCADE;" 
     401"DROP TABLE IF EXISTS tm_edge CASCADE;" 
     402"DROP TABLE IF EXISTS tm_geometricprimitive CASCADE;" 
     403"DROP TABLE IF EXISTS tm_instant CASCADE;" 
     404"DROP TABLE IF EXISTS tm_node CASCADE;" 
     405"DROP TABLE IF EXISTS tm_object CASCADE;" 
     406"DROP TABLE IF EXISTS tm_period CASCADE;" 
     407"DROP TABLE IF EXISTS tm_periodduration CASCADE;" 
     408"DROP TABLE IF EXISTS tm_position CASCADE;" 
     409"DROP TABLE IF EXISTS tm_primitive CASCADE;" 
     410"DROP TABLE IF EXISTS tm_referencesystem CASCADE;" 
     411"DROP TABLE IF EXISTS tm_temporalposition CASCADE;" 
     412"DROP TABLE IF EXISTS tm_topologicalcomplex CASCADE;" 
     413"DROP TABLE IF EXISTS tm_topologicalprimitive CASCADE;" 
     414"DROP TABLE IF EXISTS tp_complex CASCADE;" 
     415"DROP TABLE IF EXISTS tp_complex_tp_complex CASCADE;" 
     416"DROP TABLE IF EXISTS tp_directedtopo CASCADE;" 
     417"DROP TABLE IF EXISTS tp_expression CASCADE;" 
     418"DROP TABLE IF EXISTS tp_expressionterm CASCADE;" 
     419"DROP TABLE IF EXISTS tp_primitive CASCADE;" 
     420"DROP TABLE IF EXISTS tp_primitive_tp_primitive CASCADE;" 
     422"DROP TABLE IF EXISTS typename CASCADE;" 
     423"DROP TABLE IF EXISTS unitofmeasure CASCADE;" 
     424"DROP TABLE IF EXISTS unlimitedinteger CASCADE;" 
     425"DROP TABLE IF EXISTS uomlength CASCADE;" 
     426"DROP TABLE IF EXISTS uomscale CASCADE;" 
Note: See TracChangeset for help on using the changeset viewer.