checkxml.java
来源:互联网 发布:拟态防御 知乎 编辑:程序博客网 时间:2024/06/05 19:31
- package server;
- import java.io.*;
- import java.util.*;
- import java.sql.*;
- public class CheckXml {
- private DomXML DomXML = MainServer.DomXML;
- private StringBuffer log = new StringBuffer();
- private String xmlFileName = "";
- private int JLS = 0;
- private String checkFlag = "y";
- private String TableName = "";
- public CheckXml(String fileName, String tablename) {
- xmlFileName = fileName;
- DomXML.GetBeginItem("CheckXmlConfig");
- checkFlag = DomXML.GetItemVal("CheckFlag").trim().toLowerCase();
- TableName = tablename;
- }
-
- public int GetHeadCheckFlg(String itemName, String itemVal) {
- int flag = 0;
- if (DomXML.GetBeginItem("PackageHead") == null) {
- SaveLog.SetInfo(xmlFileName + "config配置文件无法定位<PackageHead>!", 1);
- return -1;
- }
-
- if (itemName.equals("JLS") && MyFunction.IsNumber(itemVal)) {
- JLS = Integer.parseInt(itemVal);
- return JLS;
- }
- if (itemName.equals("SJBLX") && MyFunction.IsNumber(itemVal)) {
- DomXML.GetBeginItem("CheckType");
- String sjblx = DomXML.GetItemAttribute(xmlFileName.substring(3, 6), "sjblx").trim();
-
- if (!itemVal.equals(sjblx)) {
- log.setLength(0);
- log.append(xmlFileName.substring(4, 6) + "文件名中包类型" + sjblx + "与包内类型代码" + itemVal + "不相符合;");
- SaveLog.SetInfo(xmlFileName + log.toString(), 1);
- flag = -1;
- }
- }
- String len = DomXML.GetItemAttribute(itemName, "len").trim().toLowerCase();
- if (len.length() != 0) {
- if (itemVal.length() != Integer.parseInt(len)) {
- SaveLog.SetInfo(xmlFileName + itemName + "值长度不为" + len, 1);
- return -1;
- }
- }
-
- if (!checkFlag.equals("y")) {
- return 0;
- }
- return flag;
- }
-
- public int GetDataCheckFlg(String itemName, String itemVal) {
-
- if (!checkFlag.equals("y")) {
- return 0;
- }
- if (itemName.equals("Data") || itemName.equals("Package")) {
- return 0;
- }
- int flag = 0;
- if (DomXML.GetBeginItem(TableName) == null) {
-
-
- }else{
- flag = ItemCheck(itemName, itemVal);
- }
- return flag;
- }
-
- public int ItemCheck(String itemName, String itemVal) {
- log.setLength(0);
- String sfId = "";
- try {
- DomXML.GetBeginItem(TableName);
- String itemType = DomXML.GetItemAttribute(itemName, "itemtype").trim().
- toLowerCase();
- if (itemType.equals("")) {
- log.append(itemName + "不存在此项目字段;");
-
- return 1;
- }
- if (itemType.indexOf("number") != -1) {
- if (!MyFunction.IsNumber(itemVal)) {
- log.append(itemName + "值不为数字;");
- }
- }
- if (itemType.indexOf("nonull") != -1) {
- if (itemVal.length() == 0) {
- log.append(itemName + "值为空;");
- }
- }
- String len = DomXML.GetItemAttribute(itemName, "len").trim().toLowerCase();
- if (len.length() != 0) {
- if (itemVal.length() != Integer.parseInt(len)) {
- log.append(itemName + "值长度不为" + len + ";");
- }
- }
- String maxlen = DomXML.GetItemAttribute(itemName, "maxlen").trim().
- toLowerCase();
- if (maxlen.length() != 0 && !itemType.equals("blob")) {
- if (itemVal.length() > Integer.parseInt(maxlen)) {
- log.append(itemName + "值长度超过" + maxlen + ";");
- }
- }
- if (log.length() > 0) {
- log.insert(0, xmlFileName + "文件检验错误:身份ID为" + sfId + "的record内");
- SaveLog.SetInfo(log.toString(), 1);
- return -1;
- }
- }
- catch (Exception e) {
- SaveLog.SetInfo("config文件检验PackageHead出错:" + itemName, 2);
- return -1;
- }
- return 0;
- }
-
- public void GetCheckTableXml(String tablename) {
- WriteXml myxml = new WriteXml();
- try {
- myxml.WriteFile(tablename + ".xml");
- myxml.AddRoot(0, tablename);
- String aa[] = new String[2];
- String bb[] = new String[2];
- JdbcWork jw = new JdbcWork();
- ResultSet rs = jw.SelectSql("SELECT * FROM " + tablename + " WHERE 1=1");
- ResultSetMetaData rsmd = rs.getMetaData();
- for (int i = 1; i <= rsmd.getColumnCount(); i++) {
- System.out.println(rsmd.getColumnName(i) + " " + rsmd.getColumnTypeName(i) +
- " " + rsmd.getColumnDisplaySize(i));
- aa[0] = "itemtype";
- bb[0] = rsmd.getColumnTypeName(i);
- aa[1] = "maxlen";
- bb[1] = String.valueOf(rsmd.getColumnDisplaySize(i));
- myxml.AddItem(0, rsmd.getColumnName(i), "", aa, bb);
- }
- myxml.toSave("1");
- System.out.print(tablename + ".xml writing is successful.");
- }
- catch (Exception ex) {
- System.out.print(tablename + ".xml writing is unsuccessful.");
- }
- }
-
- public int CheckDbToXml(String TableName) {
- String colName, colType, colSize;
- try {
- JdbcWork ZzJw = new JdbcWork();
- DomXML DomXML = null;
- ResultSet rs = ZzJw.SelectSql("select * from " + TableName + " where 1=2");
- ResultSetMetaData rsmd = rs.getMetaData();
- for (int m = 0; m < DomXML.GetItemCount(TableName); m++) {
- colName = DomXML.GetItemNoName(m).toUpperCase().trim();
- if (colName.equals("")) {
- continue;
- }
- colType = DomXML.GetItemAttribute(colName, "itemtype").toUpperCase().trim();
- colSize = DomXML.GetItemAttribute(colName, "maxlen").toUpperCase().trim();
- int cFlag = 0;
- for (int i = 1; i <= rsmd.getColumnCount(); i++) {
- if (rsmd.getColumnName(i).toLowerCase().equals(colName)) {
- if (!colType.equals(rsmd.getColumnTypeName(i))) {
- System.out.println(TableName + "表" + colName + "字段的数据库类型为" + colType + "与配置文件不匹配!");
- }
- if (!colSize.equals(String.valueOf(rsmd.getColumnDisplaySize(i)))) {
- System.out.println(TableName + "表" + colName + "字段的长度为" + colType + "与配置文件不匹配!");
- }
- cFlag = 1;
- break;
- }
- }
- if (cFlag == 0) {
- System.out.println("配置文件中字段" + colName + "不存在!");
- }
- }
- }
- catch (Exception ex) {
- }
- return 1;
- }
- }