/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.eas.client.model.query; import com.eas.client.SQLUtils; import com.eas.client.SqlQuery; import com.eas.client.model.Entity; import com.eas.client.model.visitors.ModelVisitor; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author mg */ public class QueryEntity extends Entity<QueryModel, SqlQuery, QueryEntity> { public static final String ALIAS_PROPERTY = "alias"; protected String alias; public QueryEntity() { super(); } public QueryEntity(QueryModel aModel) { super(aModel); } public QueryEntity(String aQueryName) { super(aQueryName); } @Override public void accept(ModelVisitor<QueryEntity, QueryModel> visitor) { visitor.visit(this); } @Override public String getTableDatasourceName() { if (model != null) { return model.getDatasourceName(); } else { return null; } } @Override public void setTableDatasourceName(String tableDbId) { } public String getAlias() { return alias; } public void setAlias(String aValue) { String oldValue = alias; alias = aValue; changeSupport.firePropertyChange(ALIAS_PROPERTY, oldValue, aValue); } public String getFullTableName() { String fullTableName = tableName; if (getTableSchemaName() != null && !getTableSchemaName().isEmpty()) { fullTableName = getTableSchemaName() + "." + fullTableName; } return fullTableName; } @Override public void validateQuery() throws Exception { if (query == null) { if (queryName != null) { SqlQuery q = model.queries.getCachedQuery(queryName); if (q != null) { query = q.copy(); } } else if (tableName != null) { try { query = SQLUtils.validateTableSqlQuery(getTableDatasourceName(), getTableName(), getTableSchemaName(), model.getBasesProxy()); } catch (Exception ex) { query = null; Logger.getLogger(QueryEntity.class.getName()).log(Level.WARNING, ex.toString()); } } else { assert false : "Entity must have queryName or tableName to validate it's query"; } } } }