云静心舞
青青孜泾,悠悠我心
这样的代码,是我写的吗??
前段时间翻看自己一起做的一个项目的代码,忽然明白为什么业务逻辑和数据持久层的分离显的如此重要.
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
云静心舞
阅读(297)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
My Links
BlogJava
首页
联系
聚合
管理
Blog Stats
Posts - 2
Stories - 2
Comments - 0
Trackbacks - 0
常用链接
我的随笔
我的评论
我的参与
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔档案
2007年4月 (1)
2006年10月 (1)
文章档案
2007年4月 (1)
2006年12月 (1)
搜索
最新评论
阅读排行榜
1. Tomcat+DB2的数据库连接池配置(转)(2496)
2. 随想~~(201)
评论排行榜
1. Tomcat+DB2的数据库连接池配置(转)(0)
2. 随想~~(0)