package com.dci.intellij.dbn.data.model.basic;
import com.dci.intellij.dbn.data.model.ColumnInfo;
import com.dci.intellij.dbn.data.model.DataModelHeader;
import com.dci.intellij.dbn.data.type.DBDataType;
import com.intellij.openapi.util.Disposer;
import java.util.ArrayList;
import java.util.List;
public class BasicDataModelHeader implements DataModelHeader {
private List<ColumnInfo> columnInfos = new ArrayList<ColumnInfo>();
protected void addColumnInfo(ColumnInfo columnInfo) {
columnInfos.add(columnInfo);
Disposer.register(this, columnInfo);
}
public List<ColumnInfo> getColumnInfos() {
return columnInfos;
}
public ColumnInfo getColumnInfo(int columnIndex) {
return columnInfos.get(columnIndex);
}
public int getColumnIndex(String name) {
for (int i=0; i<columnInfos.size(); i++) {
ColumnInfo columnInfo = columnInfos.get(i);
if (columnInfo.getName().equalsIgnoreCase(name)) {
return i;
}
}
return -1;
}
public String getColumnName(int columnIndex) {
return getColumnInfo(columnIndex).getName();
}
public DBDataType getColumnDataType(int columnIndex) {
return getColumnInfo(columnIndex).getDataType();
}
public int getColumnCount() {
return columnInfos.size();
}
/********************************************************
* Disposable *
********************************************************/
private boolean disposed;
@Override
public boolean isDisposed() {
return disposed;
}
@Override
public void dispose() {
if (!isDisposed()) {
disposed = true;
columnInfos.clear();
}
}
}