» 您尚未 登录   注册 | 社区服务 | FTP中心 | 帮助 | 社区 | 无图版 | 测试百科  | 测试Blog 
软件测试基地论坛 -> 测试开发技术 -> [转帖]检测数据的壮态
 XML   RSS 2.0   WAP 

--> 本页主题: [转帖]检测数据的壮态 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
Fastpoint


该用户目前不在线
级别: 总版主
精华: 44
发帖: 5033
基地声望: 390 点
基地币: 1689 Bug
基地贡献: 0 点
好评度: 15 点
在线时间:818(小时)
注册时间:2005-10-08
最后登录:2008-07-22
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子

[转帖]检测数据的壮态

本列实现以下功能:检测数据修改过的地方,是否是新行

请大家指出不足的地方,或提出更合理方法

修改前***************
peopleid/壮态   name/壮态       行壮态
1       未修改   张三   未修改     未修改
2       未修改   李四   未修改     未修改

"张三”,”李四”调换后,新增”王五”结果如下:
修改后***************
peopleid/壮态   name/壮态   行壮态
1     未修改   李四     修改过     修改过
2     未修改   张三     修改过     修改过
3     修改过   王五     修改过     新行

package datastatus;
/*
* 数据壮态接口
*/
public interface IDataStatus{
   public static final int NOTMODIFY=0; //未修改
   public static final int MODIFY=1;     //修改
   public static final int INSERT=2;     //新行
   public static final int DELETE=3;     //删除行
   /*
    * 设置列壮态
    */
   public    void    setColStatus(int dataStatus);
   /*
    * 得到列壮态
    */
   public    int        getColStatus();
   /*
    * 设置行壮态
    */
   public    void    setRowStatus(int dataStatus);
   /*
    * 得到行壮态
    */
   public    int        getRowStatus();
}


package datastatus;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public abstract class AbstractRow implements IDataStatus{
   protected    static List    listCol=new ArrayList();//列名列表
   private        int            nowCol=0;//当前列ID
   private        HashMap        colStauts;//列的壮态
   private        int            rowStatus=IDataStatus.INSERT;//行的壮态
   private    boolean            isRetrieve=false;//是否从数据库得到数据
   /*
    * 得到列名的列表 在子类实现
    */
   protected abstract List getColumns();
   /*
    * 当子对象改变属性时调用此方法
    * colName 要改变属性名
    */
   protected    final void    modifiedColumn(String colName){
       if    (!isRetrieve() && (rowStatus!=IDataStatus.INSERT && rowStatus!=IDataStatus.DELETE)){
           moveToColumn(colName);
           modifiedColumn(nowCol);
       }
   }
   /*
    * 当子对象改变属性时调用此方法
    * codIdx 要改变属ID
    */
   protected    final    void    modifiedColumn(int colID){
       moveToColunm(colID);
       setColStatus(IDataStatus.MODIFY);
       if    (getRowStatus()==IDataStatus.NOTMODIFY){
           setRowStatus(IDataStatus.MODIFY);
       }
   }
   /*设置当前列的壮态
    * status:    IDataStatus.NOTMODIFY=0; 末修改
    *            IDataStatus.MODIFY=1;已修改
    * (non-Javadoc)
    * @see datastatus.IDataStatus#setColStatus(int)
    */
   public void setColStatus(int status) {
       if    (colStauts==null){
           colStauts=new    HashMap();
       }
       colStauts.put(new Integer(nowCol),new Integer(status));
       if    (getRowStatus()==IDataStatus.NOTMODIFY)
           setRowStatus(status);
   }
   /*
    *得到当前列的列壮态
    * (non-Javadoc)
    * @see datastatus.IDataStatus#getColStatus()
    */
   public int getColStatus() {
       if(rowStatus==IDataStatus.INSERT)
           return    IDataStatus.MODIFY;
       if    (colStauts!=null){
        Object pos = colStauts.get(new Integer(nowCol));
        if (pos != null) {
            return ((Integer) pos).intValue();
        }
       }
       return IDataStatus.NOTMODIFY;
   }
   /*
    * 设置当前行的壮态
    *     status :    IDataStatus.INSERT=2;新行
    *                IDataStatus.DELETE=3;删除行
    * (non-Javadoc)
    * @see datastatus.IDataStatus#setRowStatus(int)
    */
   public void setRowStatus(int status) {
       this.rowStatus=status;
   }
   /*
    * 得到当前行的壮态
    * (non-Javadoc)
    * @see datastatus.IDataStatus#getRowStatus()
    */
   public int getRowStatus(){
       return this.rowStatus;
   }
   /*
    * 移动到colName列
    * colName    : 列名
    */
   public    void    moveToColumn(String colName){
       if    (getColunmCount()>0){
           int    idx=listCol.indexOf(colName);
           moveToColunm(idx);
       }
   }
   /*
    * 移动到colID列
    * colID    : 列ID
    */
   public    void    moveToColunm(int colID){
       this.nowCol=colID;
   }
   /*
    * 开始从数据库拿数据
    */
   public    void    startRetrieve(){
       isRetrieve=true;
       this.setRowStatus(IDataStatus.NOTMODIFY);
   }
   /*
    * 结束从数据库拿数据
    */
   public    void    endRetrieve(){
       this.isRetrieve=false;
   }
   /*
    * 是否正在从数据库拿数据
    */
   public    boolean    isRetrieve(){
       return    this.isRetrieve;
   }
   /*
    * 得到列数量
    */
   public    final int    getColunmCount(){
       if    (listCol.isEmpty()){
           listCol=getColumns();
       }
       return    listCol.size();
   }
}

package test;

import java.util.List;
import datastatus.AbstractRow;

public class People extends AbstractRow{
   public    static final String        PEOPLEID="peopleid";//列名
   public    static final String        NAME    ="name";//列名
   private    int    peopleID;
   private    String name;
   public    People(){
   }
   public    People(int peopleID,String name){
       this.peopleID=peopleID;
       this.name=name;
   }
   public    void setPeopleID(int peopleID){
       this.peopleID=peopleID;
       //改变people列
       modifiedColumn(PEOPLEID);
   }
   public    int    getPeopleID(){
       return    this.peopleID;
   }
   public    void    setName(String name){
       this.name=name;
       //改变people列
       modifiedColumn(NAME);
   }
   public    String    getName(){
       return    this.name;
   }
   /*实现AbstractRow#getColumns()
    * (non-Javadoc)
    * @see datastatus.AbstractRow#getColumns()
    */
   protected List getColumns() {
       listCol.add(PEOPLEID);
       listCol.add(NAME);
       return listCol;
   }
}


package test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import datastatus.IDataStatus;

public class Tester {
   List    list=new    ArrayList();
   public    static void    main(String[] ars){
       Tester    tester=new    Tester();
       People    p1=new People();
       p1.startRetrieve();
       p1.setPeopleID(1);
       p1.setName("张三");
       p1.endRetrieve();
       People    p2=new People(2,"李四");
       p2.setRowStatus(IDataStatus.NOTMODIFY);
       
       //中p1,p2为旧记录 p3为新记录
       tester.list.add(p1);
       tester.list.add(p2);
       
       System.out.println("修改前***************");
       tester.printStatus();
       p1.setName("李四");//将张三改成李四
       p2.setName("张三");//将李四改成张三
       System.out.println("修改后***************");
       People    p3=new    People(3,"王五");
       tester.list.add(p3);
       tester.printStatus();
   }
   private    void    printStatus(){
       System.out.println("peopleid/壮态   name/壮态   行壮态");
       for (Iterator it=list.iterator();it.hasNext();){
           People    people=(People)it.next();
           String    string="";
           people.moveToColunm(0);
           string=string+people.getPeopleID()+"     "+statusTOchina(people.getColStatus())+"   ";
           people.moveToColunm(1);
           string=string+people.getName()+"     "+statusTOchina(people.getColStatus())+"   ";
           string=string+"   "+statusTOchina(people.getRowStatus());
           System.out.println(string);
       }
   }    private    String    statusTOchina(int status){
       if    (status==IDataStatus.NOTMODIFY){
           return    "未修改";
       }else if(status==IDataStatus.MODIFY){
           return    "修改过";
       }else if(status==IDataStatus.INSERT){
           return    "新行";
       }else if(status==IDataStatus.DELETE){
           return    "删除行";
       }
       return null;
   }
}



描述:检测数据的壮态
附件: datastatus.zip (9 K)


可不可不要这么样徘徊在目光内
你会察觉到我根本寂寞难耐
即使千多百个深夜曾在梦境内
我有吻过你这毕竟并没存在

人声车声开始消和逝
无声挣扎有个情感奴隶
是我多么的想她
但我偏偏只得无尽叹谓

其实每次见你我也着迷
无奈你我各有角色范围
就算在寂寞梦内超出好友关系
唯在暗里爱你暗里着迷
无谓要你惹上各种问题
共我道别吧别让空虚使我越轨
[楼 主] | Posted: 2006-02-09 12:51 顶端

软件测试基地论坛 -> 测试开发技术




软件测试基地上海测仕信息技术有限公司旗下网站
Copyright © 2005-2007 Cntesting.com, All Rights Reserved
沪ICP备06057721号

Powered by PHPWind Code © 2003-06 PHPWind
Total 0.158447(s) query 4, Time now is:12-05 12:45, Gzip disabled
You can contact us


每日一句:Loading...