/**
*
*/
package org.sinnlabs.dbvim.model;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.sinnlabs.dbvim.config.ConfigLoader;
import org.sinnlabs.dbvim.db.model.DBModel;
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import com.mysql.jdbc.StringUtils;
/**
* Class that represents View for db table
* @author peter.liverovsky
*
*/
@DatabaseTable(tableName = "dbForms")
public class Form implements IForm {
public static final String NAME_FIELD_NAME = "name";
public static final String CONNECTION_FIELD_NAME = "connection_id";
protected DBModel dbModel = null;
@DatabaseField(id = true)
protected String name;
@DatabaseField(canBeNull = false, foreign = true, foreignAutoRefresh = true)
protected DBConnection connection;
@DatabaseField
protected String dbTableName;
@DatabaseField
protected String catalogName;
@DatabaseField(width = 1024*1024, dataType = DataType.SERIALIZABLE)
protected ArrayList<ResultColumn> resultList;
@DatabaseField(dataType = DataType.LONG_STRING)
protected String view;
@DatabaseField
protected String title;
@DatabaseField
protected boolean isJoin = false;
@DatabaseField
protected boolean isOuterJoin = false;
@DatabaseField(foreign = true, foreignAutoRefresh = true)
protected Form leftForm;
@DatabaseField(foreign = true, foreignAutoRefresh = true)
protected Form rightForm;
@DatabaseField
protected String joinCondition;
/* Getters and Setters */
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public DBConnection getDBConnection() { return connection; }
public void setDBConnection(DBConnection conn) { connection = conn; }
public String getTableName() { return dbTableName; }
public void setTableName(String tableName) { dbTableName = tableName; }
public String getCatalog() { return catalogName; }
public void setCatalog(String catalog) { catalogName = catalog; }
public String getView() { return view; }
public void setView(String view) { this.view = view; }
public List<ResultColumn> getResultList() { return resultList; }
public void setResultList(ArrayList<ResultColumn> sResultList) { resultList = sResultList; }
public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; }
public boolean isJoin() { return isJoin; }
public void setJoin(boolean join) { isJoin = join; }
public boolean isOuterJoin() { return isOuterJoin; }
public void setOuterJoin(boolean outer) { isOuterJoin = outer; }
public Form getLeftForm() throws SQLException {
refresh(leftForm);
return leftForm;
}
public void setLeftForm(Form form) { leftForm = form; }
public Form getRightForm() throws SQLException {
refresh(rightForm);
return rightForm;
}
public void setRigthForm(Form form) { rightForm = form; }
public String getJoinClause() { return joinCondition; }
public void setJoinClause(String clause) { joinCondition = clause; }
private void refresh(Form f) throws SQLException {
ConfigLoader.getInstance().getForms().refresh(f);
ConfigLoader.getInstance().getDBConnections().refresh(f.connection);
}
public String getQualifiedName() {
String res = dbTableName;
if ( !StringUtils.isNullOrEmpty(catalogName) ) {
res = catalogName + "." + res;
}
return res;
}
@Override
public String toString() {
return dbTableName + "(" + catalogName + ")";
}
}