Search in sources :

Example 1 with TableInfo

use of com.nvlad.yii2support.database.TableInfo in project yii2support by nvlad.

the class DatabaseUtils method getColumnsByTable.

public static ArrayList<String> getColumnsByTable(String table, Project project) {
    String prefixedTable = AddTablePrefix(table, true, project);
    DbPsiFacade facade = DbPsiFacade.getInstance(project);
    List<DbDataSource> dataSources = facade.getDataSources();
    ArrayList<String> list = new ArrayList<>();
    if (table == null)
        return list;
    table = ClassUtils.removeQuotes(prefixedTable);
    for (DbDataSource source : dataSources) {
        for (Object item : source.getModel().traverser().filter(DasTable.class)) {
            if (item instanceof DasTable && ((DasTable) item).getName().equals(prefixedTable)) {
                TableInfo tableInfo = new TableInfo((DasTable) item);
                for (DasColumn column : tableInfo.getColumns()) {
                    list.add(ClassUtils.removeQuotes(column.getName()));
                }
            }
        }
    }
    return list;
}
Also used : DasColumn(com.intellij.database.model.DasColumn) ArrayList(java.util.ArrayList) DasObject(com.intellij.database.model.DasObject) TableInfo(com.nvlad.yii2support.database.TableInfo) DasTable(com.intellij.database.model.DasTable)

Example 2 with TableInfo

use of com.nvlad.yii2support.database.TableInfo in project yii2support by nvlad.

the class DatabaseUtils method getNotDeclaredColumns.

public static ArrayList<VirtualProperty> getNotDeclaredColumns(String table, Collection<Field> fields, Project project) {
    DbPsiFacade facade = DbPsiFacade.getInstance(project);
    List<DbDataSource> dataSources = facade.getDataSources();
    final ArrayList<VirtualProperty> result = new ArrayList<>();
    if (table == null)
        return result;
    for (DbDataSource source : dataSources) {
        for (Object item : source.getModel().traverser().filter(DasTable.class)) {
            table = ClassUtils.removeQuotes(table);
            if (item instanceof DasTable && ((DasTable) item).getName().equals(table)) {
                TableInfo tableInfo = new TableInfo((DasTable) item);
                for (DasColumn column : tableInfo.getColumns()) {
                    boolean found = false;
                    PhpDocProperty prevProperty = null;
                    for (Field field : fields) {
                        if (field != null && field.getName().equals(column.getName())) {
                            found = true;
                            break;
                        }
                    }
                    if (!found) {
                        VirtualProperty newItem = new VirtualProperty(column.getName(), column.getDataType().typeName, column.getDataType().toString(), column.getComment(), null);
                        result.add(newItem);
                    }
                }
            }
        }
    }
    return result;
}
Also used : DasColumn(com.intellij.database.model.DasColumn) ArrayList(java.util.ArrayList) PhpDocProperty(com.jetbrains.php.lang.documentation.phpdoc.psi.PhpDocProperty) DasTable(com.intellij.database.model.DasTable) DasObject(com.intellij.database.model.DasObject) TableInfo(com.nvlad.yii2support.database.TableInfo)

Example 3 with TableInfo

use of com.nvlad.yii2support.database.TableInfo in project yii2support by nvlad.

the class DatabaseUtils method getLookupItemsByTable.

@Nullable
public static ArrayList<LookupElementBuilder> getLookupItemsByTable(String table, Project project, PhpExpression position) {
    ArrayList<LookupElementBuilder> list = new ArrayList<>();
    if (table == null || table.isEmpty())
        return list;
    DbPsiFacade facade = DbPsiFacade.getInstance(project);
    List<DbDataSource> dataSources = facade.getDataSources();
    // Code to test tests :)
    // dataSources.clear();
    // dataSources.add(new TestDataSource(project));
    String prefixedTable = AddTablePrefix(table, true, project);
    for (DbDataSource source : dataSources) {
        for (Object item : source.getModel().traverser().filter(DasTable.class)) {
            if (item instanceof DasTable && (((DasTable) item).getName().equals(prefixedTable) || ((DasTable) item).getName().equals(table))) {
                TableInfo tableInfo = new TableInfo((DasTable) item);
                for (DasColumn column : tableInfo.getColumns()) {
                    list.add(DatabaseUtils.buildLookup(column, true, project));
                }
            }
        }
    }
    return list;
}
Also used : DasColumn(com.intellij.database.model.DasColumn) ArrayList(java.util.ArrayList) LookupElementBuilder(com.intellij.codeInsight.lookup.LookupElementBuilder) DasObject(com.intellij.database.model.DasObject) TableInfo(com.nvlad.yii2support.database.TableInfo) DasTable(com.intellij.database.model.DasTable) Nullable(org.jetbrains.annotations.Nullable)

Aggregations

DasColumn (com.intellij.database.model.DasColumn)3 DasObject (com.intellij.database.model.DasObject)3 DasTable (com.intellij.database.model.DasTable)3 TableInfo (com.nvlad.yii2support.database.TableInfo)3 ArrayList (java.util.ArrayList)3 LookupElementBuilder (com.intellij.codeInsight.lookup.LookupElementBuilder)1 PhpDocProperty (com.jetbrains.php.lang.documentation.phpdoc.psi.PhpDocProperty)1 Nullable (org.jetbrains.annotations.Nullable)1