云静心舞

青青孜泾,悠悠我心

这样的代码,是我写的吗??

   前段时间翻看自己一起做的一个项目的代码,忽然明白为什么业务逻辑和数据持久层的分离显的如此重要.
    public ArrayList getdocumenttypebyauthid1(String documentid){
     /*
      * 作用:找到与该认证类型对应的文件,比较麻烦的是多体系的文件
      * 作者:yunjingxinwu
      * 日期:2006-2-08(修改自上面的版本的函数2-19修改)
      */
     ArrayList list=new ArrayList();
     Connection conn = db.getconn();
  sql="select distinct authenticationstandardid as authenticationstandardid ";
  sql=sql+" from dsm_DocumenttypeAuthStandard where documentid="+documentid+" and flag=1 and documenttypeid=0";
     //查找已经插入dsm_DocumenttypeAuthStandard文件类型为0的认证类型
     //注意文件类型表中的认证类型ID即,isstandard为"0"是为通用的即没有类型ID,-1为多体系文件,0为通用文件,其他数字为对应的认证类型ID
  //多体系的时候isstandard字段为-1,ismanyauthasd字段为各个认证标准的ID组合如1&2等等。通用和单体系的表示和isstandard一样
  //组合还需要考虑,可以用一个函数来实现,2006-2-19日实现此函数
     String temp="";//temp临时变量
     try{
      pstmt=conn.prepareStatement(sql);
      rs=pstmt.executeQuery();
      while(rs.next()){
       temp=rs.getString("authenticationstandardid");
       sql=null;
    pstmt=null;
    ResultSet rs1=null;
    if(temp.indexOf("&")!=-1){//如为多体系标准的表现形式
     sql="select documenttypeid as documenttypeid,name as name," ;
     sql=sql+"ismanyauthasd as ismanyauthasd from basedocumenttype" ;
     sql=sql+" where isstandard=-1 and flag=1";
     pstmt=conn.prepareStatement(sql);
     rs1=pstmt.executeQuery();
     String temp1="";
     while(rs1.next()){
      temp1=rs1.getString("ismanyauthasd");//temp1赋值为取出来的多体系标准
      if(temp1.indexOf("&")!=-1){
       if(dowithstring(temp,temp1)){//调用一个字符串处理函数dowithstring(String a,String b)
       //true时候表明temp1包含temp或者temp包含temp1
       DossierForm dossier=new DossierForm();
       String[] temp1Array=temp1.split("&");//以&分割temp1
       String temp3="";
       for(int i=0;i<temp1Array.length;i++){
        pstmt=null;
        sql=null;
        sql="select name as name from baseauthenticationstandard where authenticationstandardid="+temp1Array[i];
        ResultSet rs2=null;
        pstmt=conn.prepareStatement(sql);
        rs2=pstmt.executeQuery();
        
        while(rs2.next()){
         if(temp3==""){
          temp3=rs2.getString("name");
         }else{
          temp3+="&"+rs2.getString("name");
         }
        }
       }
       dossier.setAuthenticationstandardname(temp3);
       dossier.setDocumentTypeID(rs1.getString("documenttypeid"));
                dossier.setDocumentTypeName(rs1.getString("name"));
                list.add(dossier);
                dossier=null;
                return list;
       }
      }
     }//没有包含temp的记录或者文件类型标准没有多体系标准文件,则把TEMP分割
     String[] tempArray=temp.split("&");//以"&"分割
     //String temp2="";
     for(int i=0;i<tempArray.length;i++){
     sql=null;
        pstmt=null;
        sql="select documenttypeid as documenttypeid,name as name,isstandard as isstandard from basedocumenttype";
        sql=sql+" where isstandard='"+tempArray[i]+"'";//以分割后的条件查询文件类型表中的文件类型ID和文件名称
        pstmt=conn.prepareStatement(sql);
        ResultSet rs2=pstmt.executeQuery();
        while(rs2.next()){
          DossierForm dossier=new DossierForm();
          dossier.setAuthenticationstandardid(rs2.getString("isstandard"));
          dossier.setDocumentTypeID(rs2.getString("documenttypeid"));
          dossier.setDocumentTypeName(rs2.getString("name"));
          pstmt=null;
          sql=null;
          rs2=null;
          sql="select name as name from baseauthenticationstandard where authenticationstandardid="+dossier.getAuthenticationstandardid();
          pstmt=conn.prepareStatement(sql);
          rs2=pstmt.executeQuery();
          while(rs2.next()){//这里显示的标准是文件对应的认证标准,则不需要进行分离后的复合
           /*if(temp2==""){
            temp2=rs2.getString("name");
           }else{
            temp2=temp2+"&"+rs2.getString("name");
           }*/
           dossier.setAuthenticationstandardname(rs2.getString("name"));
           list.add(dossier);
              dossier=null;
          }
         }
     } 
    }else{//单体系文件,则直接显示认证类型标准
     sql=null;
        pstmt=null;
        sql="select basedocumenttype.documenttypeid as documenttypeid,basedocumenttype.name as typename,";
        sql=sql+"baseauthenticationstandard.name as authenticationstandardname from basedocumenttype";
        sql=sql+" inner join baseauthenticationstandard on basedocumenttype.isstandard=baseauthenticationstandard.authenticationstandardid";
        sql=sql+" where basedocumenttype.isstandard="+temp;
        pstmt=conn.prepareStatement(sql);
        rs1=pstmt.executeQuery();
        while(rs1.next()){
         DossierForm dossier=new DossierForm();
         dossier.setDocumentTypeID(rs1.getString("documenttypeid"));
      dossier.setDocumentTypeName(rs1.getString("typename"));
      dossier.setAuthenticationstandardname(rs1.getString("authenticationstandardname"));
      list.add(dossier);
      dossier=null;
        }
    }
      }
     }catch(SQLException ex){
      System.out.print(ex.getMessage());
     }finally{
        if(pstmt!=null){try{pstmt.close();}catch(Exception e){}}
     if(conn!=null){try{conn.close();}catch(Exception e){}}
     }
     return list;
    }


代码里面充斥了大量的JDBC代码,使得代码看起来是一片混乱.有点让自己感觉呕吐的感觉.
但是又不想去动他,因为修改很麻烦

posted on 2006-12-19 15:01 云静心舞 阅读(292) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: