Vaadin的組件注射器,瞎寫,隨便看

 

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();
 }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值