Search in sources :

Example 1 with SelectableSchema

use of com.manydesigns.portofino.upstairs.actions.database.connections.support.SelectableSchema in project Portofino by ManyDesigns.

the class ConnectionsAction method connectionWithSchemas.

public String connectionWithSchemas(String databaseName, ConnectionProvider connectionProvider, Form form) throws Exception {
    JSONStringer js = new JSONStringer();
    js.object();
    FormUtil.writeToJson(form, js);
    js.key("schemas").array();
    for (SelectableSchema schema : getSchemas(connectionProvider)) {
        js.object();
        js.key("catalog").value(schema.catalogName);
        js.key("name").value(schema.schemaName);
        js.key("schema").value(schema.schema);
        js.key("selected").value(schema.selected);
        Schema dbSchema = DatabaseLogic.findSchemaByName(persistence.getModel(), databaseName, schema.schemaName);
        FileObject changelogFile = persistence.getLiquibaseChangelogFile(dbSchema);
        js.key("liquibase").value(changelogFile != null && changelogFile.getType() == FileType.FILE);
        js.endObject();
    }
    js.endArray();
    js.endObject();
    return js.toString();
}
Also used : SelectableSchema(com.manydesigns.portofino.upstairs.actions.database.connections.support.SelectableSchema) SelectableSchema(com.manydesigns.portofino.upstairs.actions.database.connections.support.SelectableSchema) FileObject(org.apache.commons.vfs2.FileObject) JSONStringer(org.json.JSONStringer)

Example 2 with SelectableSchema

use of com.manydesigns.portofino.upstairs.actions.database.connections.support.SelectableSchema in project Portofino by ManyDesigns.

the class ConnectionsAction method getSchemas.

protected List<SelectableSchema> getSchemas(ConnectionProvider connectionProvider) throws Exception {
    try (Connection conn = connectionProvider.acquireConnection()) {
        logger.debug("Reading database metadata");
        DatabaseMetaData metadata = conn.getMetaData();
        List<String[]> schemaNamesFromDb = connectionProvider.getDatabasePlatform().getSchemaNames(metadata);
        List<Schema> selectedSchemas = connectionProvider.getDatabase().getSchemas();
        List<SelectableSchema> selectableSchemas = new ArrayList<>(schemaNamesFromDb.size());
        for (String[] schemaName : schemaNamesFromDb) {
            boolean selected = schemaNamesFromDb.size() == 1;
            String logicalName = schemaName[1].toLowerCase();
            String physicalName = schemaName[1];
            if (physicalName.equals(logicalName)) {
                physicalName = null;
            }
            for (Schema schema : selectedSchemas) {
                if (schemaName[1].equals(schema.getActualSchemaName())) {
                    selected = true;
                    logicalName = schema.getSchemaName();
                    if (!schemaName[1].equals(logicalName)) {
                        physicalName = schemaName[1];
                    }
                    break;
                }
            }
            SelectableSchema schema = new SelectableSchema(schemaName[0], physicalName, logicalName, selected);
            selectableSchemas.add(schema);
        }
        return selectableSchemas;
    }
}
Also used : SelectableSchema(com.manydesigns.portofino.upstairs.actions.database.connections.support.SelectableSchema) SelectableSchema(com.manydesigns.portofino.upstairs.actions.database.connections.support.SelectableSchema) Connection(java.sql.Connection) DatabaseMetaData(java.sql.DatabaseMetaData)

Aggregations

SelectableSchema (com.manydesigns.portofino.upstairs.actions.database.connections.support.SelectableSchema)2 Connection (java.sql.Connection)1 DatabaseMetaData (java.sql.DatabaseMetaData)1 FileObject (org.apache.commons.vfs2.FileObject)1 JSONStringer (org.json.JSONStringer)1