package com.nvlad.yii2support.database; import com.google.common.collect.Lists; import com.intellij.database.DatabaseDataKeys; import com.intellij.database.dataSource.DatabaseArtifactManager; import com.intellij.database.dataSource.DatabaseDriver; import com.intellij.database.dataSource.DatabaseDriverManager; import com.intellij.database.model.DasColumn; import com.intellij.database.model.DatabaseSystem; import com.intellij.database.psi.DbTable; import com.intellij.database.util.DasUtil; import com.intellij.database.vfs.DatabaseElementVirtualFileImpl; import com.intellij.database.view.DatabaseStructure; import com.intellij.database.view.editors.DatabaseTableEditor; import com.intellij.util.containers.JBIterable; import com.jetbrains.php.lang.psi.elements.PhpClass; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * Created by oleg on 23.03.2017. */ public class TableInfo { private final DbTable tableElement; private List<DasColumn> columns = new ArrayList<DasColumn>(); private List<String> primaryKeys = new ArrayList<String>(); public TableInfo(DbTable tableElement) { this.tableElement = tableElement; List<DasColumn> columns = new ArrayList<DasColumn>(); JBIterable<? extends DasColumn> columnsIter = DasUtil.getColumns(tableElement); List<? extends DasColumn> dasColumns = columnsIter.toList(); for (DasColumn dasColumn : dasColumns) { columns.add(dasColumn); if (DasUtil.isPrimary(dasColumn)) { primaryKeys.add(dasColumn.getName()); } } this.columns = columns; } public String getTableName() { return tableElement.getName(); } public List<DasColumn> getColumns() { return columns; } public List<String> getColumnsName() { List<String> columnsName = Lists.newArrayList(); for (DasColumn column : columns) { columnsName.add(column.getName()); } return columnsName; } public List<String> getPrimaryKeys() { return this.primaryKeys; } public List<DasColumn> getNonPrimaryColumns() { Set<String> pKNameSet = new HashSet<String>(); for (String pkName : getPrimaryKeys()) { pKNameSet.add(pkName); } List<DasColumn> ret = new ArrayList<DasColumn>(); for (DasColumn column : columns) { if (!pKNameSet.contains(column.getName())) { ret.add(column); } } return ret; } }