package org.enilu.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.enilu.util.DBProcess;
import org.jdom.Element;
public class DBConsoleServlet extends HttpServlet {
/**
* Constructor of the object.
*/
public DBConsoleServlet() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String status = request.getParameter("status");
String dbpath = this.getServletConfig().getServletContext()
.getRealPath("/")
+ "dbsource.xml";
response.setContentType("text/html");
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
// 根据表明和数据源名称查询表信息
if (status.equals("select")) {
System.out.println("select.....");
String tabname = request.getParameter("tablename").trim();
String sourcename = request.getParameter("sourcename").trim();
String tabname2 = request.getParameter("tablename2").trim();
int startnum=0;
int endnum=0;
try {
startnum = Integer.parseInt(request.getParameter("startnum")
.trim());
endnum = Integer
.parseInt(request.getParameter("endnum").trim());
} catch (NumberFormatException e) {
}
List alldata = null;
if (tabname != null) {
alldata = DBProcess.select(tabname, sourcename, dbpath,
startnum, endnum);
} else {
if (tabname2.equals("") || tabname2 == null
|| tabname2.equals("undefined")) {
alldata = DBProcess.select(tabname, sourcename, dbpath,
startnum, endnum);
} else {
alldata = DBProcess.select(tabname2, sourcename, dbpath,
startnum, endnum);
}
}
// 调用查询表信息方法
// 输出表信息
String[] columnNames = (String[]) alldata.get(0);
String data = (String) alldata.get(1);
int columnnums = columnNames.length;
out.println("<table border='1'>");
out.println("<tr bgcolor='#3333FF'>");
for (int i = 0; i < columnnums; i++) {
out.println("<td><span class=STYLE6>");
out.print(columnNames[i]);
out.println("</span></td>");
}
out.println("</tr>");
String str1[] = data.split(";;;");
for (int i = 0; i < str1.length; i++) {
String str2[] = str1[i].split(";");
out.println("<tr>");
for (int m = 0; m < str2.length; m++) {
if ((tabname == null || tabname.equals("null") || tabname
.equals(""))
&& m == 0) {
out
.println("<td><input type='checkbox' name='tabname2' value='"
+ str2[m] + "'>");
} else {
out.println("<td>");
}
out.print(str2[m] + " ");
out.println("</td>");
}
out.println("</tr>");
}
out.println("</table>");
out.flush();
out.close();
}
// 添加数据源
if (status.equals("addsource")) {
System.out.println("addsource.....");
String dbtype = request.getParameter("dbtype");
String ip = request.getParameter("ip");
String instance = request.getParameter("instance");
String dbname = request.getParameter("databasename");
String username = request.getParameter("username");
String password = request.getParameter("password");
String port = request.getParameter("port");
String sourcename = new String(request.getParameter("sourcename")
.getBytes("ISO-8859-1"));
try {
// 调用添加数据源方法
DBProcess.addSource(sourcename, dbtype, ip, instance, dbname,
port, username, password, dbpath);
out.println("添加数据源成功!");
} catch (RuntimeException e) {
// TODO Auto-generated catch block
out.println("添加数据源失败!");
}
}
if (status.equals("updatesource")) {
String dbtype = request.getParameter("dbtype");
String ip = request.getParameter("ip");
String instance = request.getParameter("instance");
String dbname = request.getParameter("databasename");
String username = request.getParameter("username");
String password = request.getParameter("password");
String port = request.getParameter("port");
String sourcename = new String(request.getParameter("sourcename")
.getBytes("ISO-8859-1"));
try {
DBProcess.delSource(sourcename, dbpath);
DBProcess.addSource(sourcename, dbtype, ip, instance, dbname,
port, username, password, dbpath);
out.println("更改数据源成功!");
} catch (Exception e) {
out.println("更改数据源失败!");
}
}
// 获取所有数据源
if (status.equals("getsource")) {
// 调用获取数据源方法
List all = DBProcess.getSource(dbpath);
if (all == null) {
out.println("没有添加数据源");
} else {
out.println("<select name='getsourcename'>");
for (int i = 0; i < all.size(); i++) {
Element a = (Element) all.get(i);
// out
// .print("<option value='"
// + a.getChild("sourcename").getValue()
// + "'>"
// + a.getChild("sourcename").getValue()
// + "</option>");
out
.print("<option value='" + i + "'>"
+ a.getChild("sourcename").getValue()
+ "</option>");
}
out.print("</select>");
out
.print("<input type='button' value='查看详细信息' onclick='showDBSource()'>");
// out.print("<input type='button' value='查看全部表'");
}
}
if (status.equals("showdbsource")) {
String sourcename = request.getParameter("sourcename");
Element el = DBProcess.getMySource(sourcename, dbpath);
request.setAttribute("sourcename", el.getChild("sourcename")
.getValue());
request.setAttribute("dbtype", el.getChild("dbtype").getValue());
request
.setAttribute("instance", el.getChild("instance")
.getValue());
request.setAttribute("ip", el.getChild("ip").getValue());
request
.setAttribute("password", el.getChild("password")
.getValue());
request.setAttribute("port", el.getChild("port").getValue());
request
.setAttribute("username", el.getChild("username")
.getValue());
request.setAttribute("dbname", el.getChild("dbname").getValue());
request.getRequestDispatcher("showdbsource.jsp").forward(request,
response);
}
if (status.equals("delsource")) {
String sourcename = request.getParameter("sourcename");
try {
DBProcess.delSource(sourcename, dbpath);
out.println("删除成功!");
} catch (Exception e) {
// TODO Auto-generated catch block
out.println("删除失败!");
e.printStackTrace();
}
}
// 备份数据源文件
if (status.equals("backup")) {
try {
File file = new File(dbpath);
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream("c:/dbsource.xml");
byte[] b = new byte[1024 * 2];
int len;
while ((len = fis.read(b)) != -1) {
fos.write(b, 0, len);
}
fos.flush();
fos.close();
fis.close();
out.println("成功备份到c盘根目录下");
} catch (RuntimeException e) {
// TODO Auto-generated catch block
out.println("备份失败!");
}
}
}
class DBSource {
private String sourcename;
private String dbytpe;
private String instance;
private Strin