/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.transformation.reverseeng.api;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.teiid.designer.transformation.reverseeng.util.StringBuilderUtil;
/**
* @author vanhalbert
*
*/
public class Table {
private String name;
private String className;
private String remarks;
private Map<String, Column> columns = new HashMap<String, Column>();
public Table(String name) {
this.name = name;
this.className = org.teiid.designer.transformation.reverseeng.util.Util.columnNameToMemberName(this.name);
}
/**
* @return String
* @see org.teiid.designer.transformation.reverseeng.api.Table#getName()
*/
public String getName() {
return name;
}
/**
* @return String
* @see org.teiid.designer.transformation.reverseeng.api.Table#getRemarks()
*/
public String getRemarks() {
return remarks;
}
public String getClassName() {
return this.className;
}
public Column getColumn(String name) {
return columns.get(name);
}
/**
* @param remarks Sets remarks to the specified value.
*/
public void setRemarks(String remarks) {
this.remarks = remarks;
}
public List<Column> getColumns() {
List<Column> cols = new ArrayList<Column>(columns.size());
cols.addAll(columns.values());
return cols;
}
public void addColumn(Column column) {
columns.put(column.getName(), column);
}
/**
* Call to determine that at least one column is required.
* @return boolean true if at least one column is required
*/
public boolean hasRequiredColumn() {
for (Column c : columns.values()) {
if (c.isRequired()) return true;
}
return false;
}
/**
* {@inheritDoc}
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
Table t = (Table) obj;
if (this.getName().equals(t.getName()) ) {
List<Column> columns = this.getColumns();
if (columns.size() != t.getColumns().size()) {
return false;
}
for (Column c : columns) {
Column tc = t.getColumn(c.getName());
if (tc == null) return false;
if (!c.equals(tc)) {
return false;
}
}
} else {
return false;
}
return true;
}
@Override
public String toString() {
StringBuilderUtil sbu = new StringBuilderUtil(this).append("name", getName());
return sbu.toString();
}
public Column createColumn(String name) {
Column col = new Column(this, name);
this.addColumn(col);
return col;
}
}