TableInjector類
package com.arlen.injectors;
import org.apache.log4j.Logger;
import com.arlen.tableset.TableSet;
import com.vaadin.ui.Table;
import com.vaadin.ui.Component;
public class TableInjector implements IFContainerInjector<Table>{
private static final long serialVersionUID = -1537743412190976017L;
private TableSet bean;
private String id;
private Logger logger = Logger.getLogger(TableInjector.class);
@Override
public Table injectIntoComponent(Component component) {
Table table = null;
if(Table.class.isInstance(component)){
table = (Table)component;
int Ccount = bean.getColumnNum();
if(Ccount>0){
Object[] labels=bean.getColumnNames();
for(int i=0;i<Ccount;i++)
table.addContainerProperty(labels[i].toString(), String.class, null);
if(bean.first()){
bean.next();
for(int i = 0;bean.hasNext();i++){
table.addItem(bean.nextRow().toArray(), new Integer(i));
}
}
}
else{
logger.error("No data related to this table!");
}
}
else{
logger.error("Failed to initialize the page component due to wrong parameter!");
}
return table;
}
@Override
public void setID(String id) {
this.id=id;
}
@Override
public String getID() {
return id;
}
public TableSet getBean() {
return bean;
}
public void setBean(TableSet bean) {
this.bean = bean;
}
}
package com.arlen.injectors;
import java.io.Serializable;
import com.vaadin.ui.Component;
public interface IFContainerInjector<T> extends Serializable{
public String getID();
public void setID(String dataSetName);
public T injectIntoComponent(Component component);
}
TableSet
package com.arlen.tableset;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.log4j.Logger;
import com.arlen.dbUtil.DataOp;
public class TableSet {
private ArrayList<Row> rows = new ArrayList<Row>();
private String tableName;
private int rowNum=0;
private int columnNum=0;
private int currentRow=0;
private Logger logger = Logger.getLogger(TableSet.class);
public TableSet(){}
public TableSet(String tableName){
init(tableName,null);
}
private void init(String tableName,String condition){
ResultSet rsRows=null;
ResultSet rsColumns=null;
DataOp dataOp=null;
int currentNum = 1;
ArrayList<String> tempRow = new ArrayList<String>();
this.tableName = tableName;
try{
dataOp = new DataOp();
ArrayList<String> columnNames = new ArrayList<String>();
rsColumns= dataOp.executeSQL("select name from syscolumns where id=object_id('"+tableName+"')");
StringBuffer sb = new StringBuffer("SELECT ");
if(rsColumns!=null&&rsColumns.next()){
while(true){
columnNames.add(rsColumns.getString(1));
sb.append(rsColumns.getString(1));
if(!rsColumns.next())
break;
else
sb.append(",");
}
sb.append(" FROM ").append(tableName);
if(condition!=null){
sb.append(" WHERE ").append(condition);
}
rsRows = dataOp.executeSQL(sb.toString());
this.columnNum = columnNames.size();
rows.add(new Row(0,columnNames));
if(rsRows!=null){
while(rsRows.next()){
for(int i=1;i<=columnNum;i++){
if(rsRows.getObject(i)!=null)
tempRow.add(rsRows.getObject(i).toString());
else
tempRow.add(" ");
}
rows.add(new Row(currentNum,tempRow));
tempRow=new ArrayList<String>();
rowNum = rows.size();
currentNum++;
}
}
tempRow=null;
}
else{
logger.debug("No such table :"+tableName+"existed in database ,please check...");
}
}
catch(SQLException e){
e.printStackTrace();
}
finally{
try {
dataOp.close();
if(rsColumns!=null){
rsColumns.close();
}
if(rsRows!=null){
rsRows.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public boolean hasNext(){
if(rows!=null&&rows.size()>0){
return currentRow>=rowNum?false:true;
}
else
return false;
}
public void next(){
currentRow++;
}
public ArrayList<String> nextRow(){
return rows.get(currentRow++).getRow();
}
public int getRowNum() {
return rowNum;
}
public int getColumnNum() {
return columnNum;
}
public String getString(int index){
return rows.get(currentRow).getRow().get(index);
}
public String getString(String columnName){
int index =rows.get(0).getRow().indexOf(columnName.trim());
return getString(index);
}
public boolean first(){
if(rows!=null&&rows.size()>0){
currentRow = 0;
return true;
}
else
return false;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public Object[] getColumnNames(){
return rows.get(0).getRow().toArray();
}
}
/**
* Private class for row
* @author Arlen_Li
*
*/
class Row{
private int rownum=0;
private ArrayList<String> contents=new ArrayList<String>();
public Row(){}
public Row(int currentRow,ArrayList<String> contents){
if(contents!=null&&contents.size()>0){
rownum = currentRow;
this.contents=contents;
}
}
public ArrayList<String> getRow(){
if(contents!=null&&contents.size()>0){
return contents;
}
else
return null;
}
public String toString(){
StringBuffer sb = new StringBuffer("Column");
sb.append(rownum).append(":");
if(contents!=null&&contents.size()>0){
Iterator<String> it = contents.iterator();
while(it.hasNext()){
sb.append(it.next()).append(" ");
}
}
return sb.toString();
}
}