/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.eas.client.model.dbscheme;
import com.eas.client.DatabasesClient;
import com.eas.client.SqlQuery;
import com.eas.client.metadata.DbTableIndexSpec;
import com.eas.client.model.Model;
import com.eas.client.model.visitors.ModelVisitor;
import java.util.List;
/**
*
* @author mg
*/
public class DbSchemeModel extends Model<FieldsEntity, SqlQuery> {
protected String datasourceName;
protected String schema;
protected DatabasesClient basesProxy;
public DbSchemeModel() {
super();
}
public DbSchemeModel(DatabasesClient aBasesProxy) {
super();
basesProxy = aBasesProxy;
}
public DbSchemeModel(DatabasesClient aBasesProxy, String aDatasourceName) {
super();
basesProxy = aBasesProxy;
datasourceName = aDatasourceName;
}
public DatabasesClient getBasesProxy() {
return basesProxy;
}
@Override
public <M extends Model<FieldsEntity, ?>> void accept(ModelVisitor<FieldsEntity, M> visitor) {
visitor.visit((M)this);
}
@Override
public FieldsEntity newGenericEntity() {
return new FieldsEntity(this);
}
@Override
public void addEntity(FieldsEntity aEntity) {
aEntity.setModel(this);
super.addEntity(aEntity);
}
public String getDatasourceName() {
return datasourceName;
}
public void setDatasourceName(String aValue) {
datasourceName = aValue;
}
public String getSchema() {
return schema;
}
public void setSchema(String aValue) {
schema = aValue;
if (schema != null && schema.isEmpty()) {
schema = null;
}
}
public void addEntityIndex(FieldsEntity aEntity, DbTableIndexSpec aIndexSpec, int aIndexPosition) {
List<DbTableIndexSpec> indexes = aEntity.getIndexes();
if (indexes != null) {
if (aIndexPosition >= 0 && aIndexPosition <= indexes.size()) {
indexes.add(aIndexPosition, aIndexSpec);
} else {
indexes.add(aIndexSpec);
}
fireIndexesChanged(aEntity);
}
}
public void removeEntityIndex(FieldsEntity aEntity, DbTableIndexSpec aIndexSpec) {
List<DbTableIndexSpec> indexes = aEntity.getIndexes();
if (indexes != null) {
for (int i = indexes.size() - 1; i >= 0; i--) {
DbTableIndexSpec lIndex = indexes.get(i);
if (lIndex == aIndexSpec) {
indexes.remove(i);
fireIndexesChanged(aEntity);
break;
}
}
}
}
protected void fireIndexesChanged(FieldsEntity aEntity) {
editingSupport.fireIndexesChanged(aEntity);
}
}