use of com.intellij.database.model.DasColumn 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;
}
use of com.intellij.database.model.DasColumn 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;
}
use of com.intellij.database.model.DasColumn in project yii2support by nvlad.
the class TableInfo method getNonPrimaryColumns.
public List<DasColumn> getNonPrimaryColumns() {
Set<String> pKNameSet = new HashSet<>();
for (String pkName : getPrimaryKeys()) {
pKNameSet.add(pkName);
}
List<DasColumn> ret = new ArrayList<>();
for (DasColumn column : columns) {
if (!pKNameSet.contains(column.getName())) {
ret.add(column);
}
}
return ret;
}
use of com.intellij.database.model.DasColumn 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;
}
use of com.intellij.database.model.DasColumn in project yii2support by nvlad.
the class DatabaseUtils method buildLookup.
@NotNull
public static LookupElementBuilder buildLookup(Object field, boolean showSchema, Project project) {
String lookupString = "-";
if (field instanceof DasObject) {
lookupString = ((DasObject) field).getName();
lookupString = RemoveTablePrefix(lookupString, project);
}
if (field instanceof Field) {
lookupString = ((Field) field).getName();
}
LookupElementBuilder builder = LookupElementBuilder.create(field, lookupString);
if (field instanceof Field) {
builder = builder.withTypeText(((Field) field).getType().toString()).withIcon(((Field) field).getIcon());
}
if (field instanceof PhpDocProperty) {
builder = builder.withTypeText(((PhpDocProperty) field).getType().toString()).withIcon(((PhpDocProperty) field).getIcon());
}
if (field instanceof DasColumn) {
DasColumn column = (DasColumn) field;
builder = builder.withTypeText(column.getDataType().typeName, true);
if (column.getDbParent() != null && showSchema && column.getDbParent().getDbParent() != null) {
builder = builder.withTailText(" (" + column.getDbParent().getDbParent().getName() + "." + RemoveTablePrefix(column.getDbParent().getName(), project) + ")", true);
}
if (column instanceof DasColumn)
builder = builder.withIcon(TypePresentationService.getService().getIcon(field));
if (column instanceof DbColumnImpl)
builder = builder.withIcon(((DbColumnImpl) column).getIcon());
}
if (field instanceof DasTable) {
DasTable table = (DasTable) field;
DasObject tableSchema = table.getDbParent();
if (tableSchema != null) {
if (tableSchema instanceof DbNamespaceImpl) {
Object dataSource = tableSchema.getDbParent();
// DbDataSourceImpl dataSource = (DbDataSourceImpl) ((DbNamespaceImpl) tableSchema).getDbParent();
if (dataSource != null && dataSource instanceof DbDataSourceImpl) {
builder = builder.withTypeText(((DbDataSourceImpl) dataSource).getName(), true);
}
if (dataSource != null && dataSource instanceof DbDataSourceImpl) {
builder = builder.withTypeText(((DbDataSourceImpl) dataSource).getName(), true);
}
}
}
if (showSchema && tableSchema != null) {
builder = builder.withTailText(" (" + table.getDbParent().getName() + ")", true);
}
if (table instanceof DasTable)
builder = builder.withIcon(TypePresentationService.getService().getIcon(table));
if (table instanceof DbElement)
builder = builder.withIcon(((DbElement) table).getIcon());
builder = builder.withInsertHandler((insertionContext, lookupElement) -> {
if (Yii2SupportSettings.getInstance(project).insertWithTablePrefix) {
Document document = insertionContext.getDocument();
int insertPosition = insertionContext.getSelectionEndOffset();
document.insertString(insertPosition - lookupElement.getLookupString().length(), "{{%");
document.insertString(insertPosition + 3, "}}");
insertionContext.getEditor().getCaretModel().getCurrentCaret().moveToOffset(insertPosition + 5);
}
});
}
return builder;
}
Aggregations