?? docbaseman.java
字號:
package com.csbook.documentsystem;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
import javax.naming.*;
import javax.sql.*;
import java.sql.*;
import java.util.*;
public class DocBaseMan{
Context ctx=null;
DataSource ds=null;
SysLog log=null;
ChangeEncoding ce=null;
//構(gòu)造函數(shù)
public DocBaseMan(){
//從連接池中獲取數(shù)據(jù)庫連接
try{
ctx=new InitialContext();
ds=(DataSource)ctx.lookup("documents");
}
catch(NamingException e){
e.printStackTrace();
}
//建立一個日志類的實例
log=new SysLog();
ce=new ChangeEncoding();
}
//刪除檔案庫
public void removeDocBase(String operator,String name)
{
Connection con = null;
PreparedStatement ps = null;
try{
String strDelete = "delete from docBase where name=?";
String strUpdate = "update documents set attr=0 where docBase=?";
con=ds.getConnection();
ps=con.prepareStatement(strDelete);
ps.setString(1,ce.changeCharset(name));
ps.executeUpdate();
ps=con.prepareStatement(strUpdate);
ps.setString(1,ce.changeCharset(name));
ps.executeUpdate();
log.addLog(operator,"remove docBase"+ce.changeCharset(name),"docBase");
}
catch(SQLException e){
e.printStackTrace();
}
finally{
if (ps != null) try {ps.close();}
catch (SQLException ignore) {}
if (con != null) try {con.close();}
catch (SQLException ignore) {}
}
}
//檢查檔案庫是否為空
public boolean isDocBaseEmpty(String name)
{
Connection con = null;
PreparedStatement ps = null;
ResultSet rs=null;
boolean isEmpty=false;
try{
String strQuery = "select * from documents where docBase=?";
con = ds.getConnection();
ps = con.prepareStatement(strQuery);
ps.setString(1, ce.changeCharset(name));
rs=ps.executeQuery();
if(!rs.next())
isEmpty=true;
}
catch(SQLException e){
e.printStackTrace();
}
finally{
if (rs != null) try {rs.close();}
catch (SQLException ignore) {}
if (ps != null) try {ps.close();}
catch (SQLException ignore) {}
if (con != null) try {con.close();}
catch (SQLException ignore) {}
}
return isEmpty;
}
//檢查檔案庫名稱是否已經(jīng)存在,在新建檔案庫之前使用
public boolean isDocBaseNameConflict(String strName)
{
Connection con = null;
PreparedStatement ps = null;
ResultSet rs=null;
boolean conflict=true;
try{
String strQuery = "select * from docBase where name=?";
con = ds.getConnection();
ps=con.prepareStatement(strQuery);
ps.setString(1,ce.changeCharset(strName));
rs=ps.executeQuery();
if(!rs.next())
conflict=false;
}
catch(SQLException e){
e.printStackTrace();
}
finally{
if (rs != null) try {rs.close();}
catch (SQLException ignore) {}
if (ps != null) try {ps.close();}
catch (SQLException ignore) {}
if (con != null) try {con.close();}
catch (SQLException ignore) {}
}
return conflict;
}
//設(shè)置檔案庫描述信息
public void setDocBaseDesc(String operator,String name,String desc)
{
Connection con = null;
PreparedStatement ps = null;
try{
String strUpdate = "update docBase set description=? where name=?";
con=ds.getConnection();
ps=con.prepareStatement(strUpdate);
ps.setString(1,ce.changeCharset(desc));
ps.setString(2,ce.changeCharset(name));
ps.executeUpdate();
log.addLog(operator,"set description of docclass "+ce.changeCharset(name)+":"+ce.changeCharset(desc),"docBase");
}
catch(SQLException e){
e.printStackTrace();
}
finally{
if (ps != null) try {ps.close();}
catch (SQLException ignore) {}
if (con != null) try {con.close();}
catch (SQLException ignore) {}
}
}
//設(shè)置檔案庫管理員
public void setDocBaseAdmin(String operator,String name,String user)
{
Connection con = null;
PreparedStatement ps = null;
try{
String strUpdate = "update docBase set admin=? where name=?";
con = ds.getConnection();
ps = con.prepareStatement(strUpdate);
ps.setString(1,ce.changeCharset(user));
ps.setString(2,ce.changeCharset(name));
ps.executeUpdate();
log.addLog(operator, "set admin of docBase "+ce.changeCharset(name)+":"+ce.changeCharset(user),"docBase");
}
catch(SQLException e){
e.printStackTrace();
}
finally{
if (ps != null) try {ps.close();}
catch (SQLException ignore) {}
if (con != null) try {con.close();}
catch (SQLException ignore) {}
}
}
//添加檔案庫
public void addDocBase(String operator,String name)
{
Connection con = null;
PreparedStatement ps = null;
try{
String strInsert = "insert into docBase(name) values(?)";
con = ds.getConnection();
ps = con.prepareStatement(strInsert);
ps.setString(1,ce.changeCharset(name));
ps.executeUpdate();
log.addLog(operator,"add docBase:"+ce.changeCharset(name),"docBase");
}
catch(SQLException e){
e.printStackTrace();
}
finally{
if (ps != null) try {ps.close();}
catch (SQLException ignore) {}
if (con != null) try {con.close();}
catch (SQLException ignore) {}
}
}
//獲取檔案庫的管理員
public String getAdminOfDocBase(String name)
{
Connection con = null;
PreparedStatement ps = null;
ResultSet rs=null;
String admin="";
try{
String strQuery = "select admin from docBase where name=?";
con = ds.getConnection();
ps = con.prepareStatement(strQuery);
ps.setString(1,ce.changeCharset(name));
rs=ps.executeQuery();
if(rs.next())
admin=rs.getString("admin");
}
catch(SQLException e){
e.printStackTrace();
}
finally{
if (rs != null) try {rs.close();}
catch (SQLException ignore) {}
if (ps != null) try {ps.close();}
catch (SQLException ignore) {}
if (con != null) try {con.close();}
catch (SQLException ignore) {}
}
return admin;
}
//檢查指定用戶是否具有對指定檔案庫的操作權(quán)限
public boolean isWritableForDocBase(String docBase,String user)
{
boolean writable=false;
UserMan uMan=new UserMan();
if((uMan.getUserPri(user)==1)||user.equals(getAdminOfDocBase(ce.changeCharset(docBase))))
writable =true;
return writable;
}
//獲取檔案庫的信息
public ArrayList getDocBaseInfo()
{
Connection con = null;
PreparedStatement ps = null;
ResultSet rs=null;
ArrayList docBases=new ArrayList();
try{
String strQuery="select * from docBase";
con = ds.getConnection();
ps = con.prepareStatement(strQuery);
rs=ps.executeQuery();
String temp,temp1;
while(rs.next()){
temp=ce.changeCharset(rs.getString("name"));
temp1=rs.getString("description");
if(temp1!=null)
temp+=" "+ce.changeCharset(temp1);
else
temp+=" empty";
temp1=rs.getString("admin");
if(temp1!=null)
temp+=" "+temp1;
else
temp+=" empty";
docBases.add(temp);
}
}
catch(SQLException e){
e.printStackTrace();
}
finally
{
if (rs != null) try {rs.close();}
catch (SQLException ignore) {}
if (ps != null) try {ps.close();}
catch (SQLException ignore) {}
if (con != null) try {con.close();}
catch (SQLException ignore) {}
}
return docBases;
}
//獲取檔案庫的列表
public ArrayList getDocBaseList()
{
Connection con = null;
PreparedStatement ps = null;
ResultSet rs=null;
ArrayList docBases=new ArrayList();
try{
String strQuery="select name from docBase";
con = ds.getConnection();
ps = con.prepareStatement(strQuery);
rs=ps.executeQuery();
String temp;
while(rs.next()){
temp=ce.changeCharset(rs.getString("name"));
docBases.add(temp);
}
}
catch(SQLException e){
e.printStackTrace();
}
finally
{
if (rs != null) try {rs.close();}
catch (SQLException ignore) {}
if (ps != null) try {ps.close();}
catch (SQLException ignore) {}
if (con != null) try {con.close();}
catch (SQLException ignore) {}
}
return docBases;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -