def getTableDefinition(self, sFile,  sNameOfTable):

        doc = self.getDatabaseDescription(sFile)
        self.out( doc.toxml() )
        cyRootNode = self.getRootNode(doc)
   
        cyTableNode = self.getTable(cyRootNode[0], "table", sNameOfTable)
   
        table = cyr_table.cyr_table()

        table.setName(sNameOfTable)
        table.setSpecials(self.getTableSpecification(cyTableNode, "specials") )
        
        self.out("searching Subtable")
        subtable = re.search(r'inherits.*\((.*?)\)', str(table.getSpecials()), re.IGNORECASE)
        if subtable:
            sNameOfSubtable = subtable.group(1)
            self.out('----------------------------------Subtable found-----------------------------------------------')
            self.out('Subtable -> ' + str(subtable))
            self.out('Subtable -> ' + subtable.group(0))
            self.out('Subtable -> ' + subtable.group(1))
            subTable = self.loadTable(sNameOfSubtable)
            xColumns = subTable.getColumns()
            for i in xColumns:
                table.addColumn(i)
                table.nameOfColumns.append(i.getName())
                   

        iNr =  self.getNumberOfFields(cyTableNode)

        self.out("Number of Columns %i "  + `iNr` )
        iCol = 0
        while (iCol < iNr):
            xmlCol = self.getColumnAt(cyTableNode,iCol)
            column = cyr_column.cyr_column()

            column.setName(self.getColumnSpecification(xmlCol, "name") )
            self.out("column-name = " + column.getName() )
            table.nameOfColumns.append(column.getName())

            column.setType(self.getColumnSpecification(xmlCol, "type") )
            sSize = string.strip(self.getColumnSpecification(xmlCol, "size"))
            if sSize: 
                column.setSizeOfDatafield(string.strip(self.getColumnSpecification(xmlCol, "size")) )
            else:
                column.setSizeOfDatafield('18')

                
            
            column.setAllowNull(string.atoi(self.getColumnSpecification(xmlCol, "notnull")) )
            column.setPrimaryKey(string.atoi(self.getColumnSpecification(xmlCol, "pkey")) )
            column.setDefaultValue(self.getColumnSpecification(xmlCol, "default") )

            
            table.addColumn(column)
            iCol += 1

        return table
示例#2
0
    def __init__(self):
    ##    logging.basicConfig()
##        self.log = logging.getLogger("cyr_table")
##        self.log.setLevel(logging.DEBUG)
##        self.log.info("cyr_table startet")
   
        self.Adabas = 1
        self.mSql = 2 
        self.Mysql = 3
        self.Sybase = 4 
        self.Interbase = 5 
        self.Oracle = 6 
        self.Informix = 7 
        self.Microsoft = 8 
        self.nameOfColumns = []
        self.Columns = []
        self.oneColumn = cyr_column.cyr_column();