Search in sources :

Example 86 with IColumn

use of org.jboss.tools.hibernate.runtime.spi.IColumn in project jbosstools-hibernate by jbosstools.

the class TablePropertiesBlock method doAdd.

protected void doAdd() {
    CheckedTreeSelectionDialog dialog = createTreeSelectionDialog();
    LazyDatabaseSchema lds = editor.getLazyDatabaseSchema();
    List<ITable> tables = new ArrayList<ITable>();
    Map<ITable, List<IColumn>> columns = new HashMap<ITable, List<IColumn>>();
    if (lds == null) {
        // $NON-NLS-1$  //$NON-NLS-2$
        String tableName = "", namePrefix = "TABLE_";
        IRevEngTable retable = editor.getReverseEngineeringDefinition().createTable();
        // $NON-NLS-1$
        retable.setCatalog("");
        // $NON-NLS-1$
        retable.setSchema("");
        TreeSet<String> ts = new TreeSet<String>();
        IRevEngTable[] retables = editor.getReverseEngineeringDefinition().getTables();
        char separartor = '%';
        for (int i = 0; i < retables.length; i++) {
            ts.add(retables[i].getCatalog() + separartor + retables[i].getSchema() + separartor + retables[i].getName());
        }
        String strCatalogSchema = retable.getCatalog() + separartor + retable.getSchema() + separartor;
        int i = 0;
        do {
            tableName = namePrefix + (i++);
        } while (ts.contains(strCatalogSchema + tableName));
        retable.setName(tableName);
        editor.getReverseEngineeringDefinition().addTable(retable);
    } else {
        dialog.setTitle(MapperMessages.TablePropertiesBlock_add_tables_columns);
        dialog.setMessage(MapperMessages.TablePropertiesBlock_select_tables_columns);
        dialog.setInput(lds);
        dialog.setContainerMode(true);
        dialog.open();
        Object[] result = dialog.getResult();
        ITable lastTable = null;
        if (result != null) {
            for (int i = 0; i < result.length; i++) {
                Object object = result[i];
                if (object instanceof ITable) {
                    ITable table = (ITable) object;
                    tables.add(table);
                    lastTable = table;
                } else if (object instanceof IColumn) {
                    IColumn column = (IColumn) object;
                    List<IColumn> existing = columns.get(lastTable);
                    if (existing == null) {
                        existing = new ArrayList<IColumn>();
                        columns.put(lastTable, existing);
                    }
                    existing.add(column);
                } else if (object instanceof IPrimaryKey) {
                    List<IColumn> existing = columns.get(lastTable);
                    if (existing == null) {
                        existing = new ArrayList<IColumn>();
                        columns.put(lastTable, existing);
                    }
                    existing.addAll(((IPrimaryKey) object).getColumns());
                }
            }
        }
        Iterator<ITable> iterator = tables.iterator();
        while (iterator.hasNext()) {
            ITable table = iterator.next();
            IRevEngTable retable = null;
            // editor.getReverseEngineeringDefinition().findTable(TableIdentifier.create(table));
            if (retable == null) {
                retable = editor.getReverseEngineeringDefinition().createTable();
                retable.setCatalog(table.getCatalog());
                retable.setSchema(table.getSchema());
                retable.setName(table.getName());
                editor.getReverseEngineeringDefinition().addTable(retable);
            }
            List<IColumn> columnList = columns.get(table);
            if (columnList != null) {
                Iterator<IColumn> colIterator = columnList.iterator();
                while (colIterator.hasNext()) {
                    IColumn column = colIterator.next();
                    IRevEngColumn revCol = editor.getReverseEngineeringDefinition().createColumn();
                    revCol.setName(column.getName());
                    if (column.getSqlType() != null) {
                        // TODO: should not be required
                        revCol.setJDBCType(column.getSqlType());
                    }
                    retable.addColumn(revCol);
                }
            }
        }
    // editor.getReverseEngineeringDefinition();
    }
}
Also used : CheckedTreeSelectionDialog(org.hibernate.eclipse.mapper.editors.reveng.xpl.CheckedTreeSelectionDialog) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) IRevEngColumn(org.hibernate.eclipse.console.model.IRevEngColumn) IPrimaryKey(org.jboss.tools.hibernate.runtime.spi.IPrimaryKey) IColumn(org.jboss.tools.hibernate.runtime.spi.IColumn) TreeSet(java.util.TreeSet) IRevEngTable(org.hibernate.eclipse.console.model.IRevEngTable) LazyDatabaseSchema(org.hibernate.eclipse.console.workbench.LazyDatabaseSchema) ITable(org.jboss.tools.hibernate.runtime.spi.ITable) List(java.util.List) ArrayList(java.util.ArrayList)

Aggregations

IColumn (org.jboss.tools.hibernate.runtime.spi.IColumn)86 Test (org.junit.Test)69 Column (org.hibernate.mapping.Column)68 ITable (org.jboss.tools.hibernate.runtime.spi.ITable)26 SimpleValue (org.hibernate.mapping.SimpleValue)16 Table (org.hibernate.mapping.Table)16 ArrayList (java.util.ArrayList)12 IProperty (org.jboss.tools.hibernate.runtime.spi.IProperty)9 AbstractForeignKeyFacade (org.jboss.tools.hibernate.runtime.common.AbstractForeignKeyFacade)7 IPersistentClass (org.jboss.tools.hibernate.runtime.spi.IPersistentClass)7 IValue (org.jboss.tools.hibernate.runtime.spi.IValue)7 Iterator (java.util.Iterator)5 IFacade (org.jboss.tools.hibernate.runtime.common.IFacade)4 IPrimaryKey (org.jboss.tools.hibernate.runtime.spi.IPrimaryKey)4 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)3 ConsoleConfiguration (org.hibernate.console.ConsoleConfiguration)3 Shape (org.jboss.tools.hibernate.ui.diagram.editors.model.Shape)3 FileNotFoundException (java.io.FileNotFoundException)2 HashMap (java.util.HashMap)2 List (java.util.List)2