⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databasemanageaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
			Map<String, List<String>> delsMap = new TreeMap<String, List<String>>();
			if (jsprundb != null) {
				Set<String> key = jsprundb.keySet();
				for (String obj : key) {
					String tableName = "jrun_" + obj;
					if (tablenew.contains(tableName)) {
						List<FieldVO> fieldsnew = dataBaseService.findTableFields(tableName);
						Map<String, Map<String, String>> jsprunfields = (Map<String, Map<String, String>>) jsprundb.get(obj);
						Set<String> jsprunfieldNames = jsprunfields.keySet();
						if (jsprunfieldNames != null) {
							for (String fieldName : jsprunfieldNames) {
								boolean flag = false;
								if (fieldsnew != null) {
									for (FieldVO fieldVO : fieldsnew) {
										if (fieldName.equals(fieldVO.getField())) {
											flag = true;
											break;
										}
									}
								}
								if (!flag) {
									List<String> fieldlists = delsMap.get(obj);
									if (fieldlists == null) {
										fieldlists = new ArrayList<String>();
									}
									fieldlists.add(fieldName);
									delsMap.put(obj, fieldlists);
								}
							}
						}
						if (fieldsnew != null) {
							for (FieldVO fieldVO : fieldsnew) {
								if (fieldVO.getAllowNull() == null|| fieldVO.getAllowNull().equals("")) {
									fieldVO.setAllowNull("NO");
								}
								if (fieldVO.getDefaultValue() == null|| fieldVO.getDefaultValue().equals("0")|| fieldVO.getDefaultValue().equals("0.00")) {
									fieldVO.setDefaultValue("");
								}
								List<FieldVO> fieldlists = null;
								if (jsprunfieldNames != null&& jsprunfieldNames.contains(fieldVO.getField())) {
									Map<String, String> jsprunfield = jsprunfields.get(fieldVO.getField());
									if (version.compareTo("4.1") < 0&& tableName == "sessions"&& fieldVO.getField() == "sid") {
										fieldVO.setType(fieldVO.getType().replaceAll(" binary", ""));
									}
									if (!jsprunfield.get("Type").equals(fieldVO.getType())|| !jsprunfield.get("Null").equals(fieldVO.getAllowNull())|| !jsprunfield.get("Extra").equals(fieldVO.getExtra())|| !jsprunfield.get("Default").equals(fieldVO.getDefaultValue())) {
										fieldlists = modifysMap.get(obj);
										if (fieldlists == null) {
											fieldlists = new ArrayList<FieldVO>();
										}
										fieldlists.add(fieldVO);
										modifysMap.put(obj, fieldlists);
									}
								} else {
									fieldlists = addsMap.get(obj);
									if (fieldlists == null) {
										fieldlists = new ArrayList<FieldVO>();
									}
									fieldlists.add(fieldVO);
									addsMap.put(obj, fieldlists);
								}
							}
						}
					} else {
						missingtables.append("<span style='float:left;width:33%'>"+((installexists ? "<input name='missingtable' type='checkbox' class='checkbox' value='"+obj+"'>" : "")+tableName)+"</span>");
					}
				}
			}
			request.setAttribute("tablepre", "jrun_");
			request.setAttribute("jsprundb", jsprundb);
			request.setAttribute("missingtables",missingtables.length() > 0 ? missingtables.toString() : null);
			request.setAttribute("addsMap", addsMap.size() > 0 ? addsMap : "");
			session.setAttribute("modifysMap", modifysMap);
			session.setAttribute("delsMap", delsMap);
			request.setAttribute("hasErrorField", modifysMap.size() > 0	|| delsMap.size() > 0 ? true : false);
			if (charseterrors.length() == 0 && missingtables.length() == 0&& addsMap.size() == 0 && modifysMap.size() == 0&& delsMap.size() == 0 && settingsdeldata.length() == 0) {
				request.setAttribute("info", "yes");
				request.setAttribute("dbcheck_ok", "您的数据库完整无误。");
				return mapping.findForward("toDbcheck");
			}
			return mapping.findForward("toDbcheck");
		}
	}

	@SuppressWarnings("unchecked")
	public ActionForward dbcheck(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		String[] repair = request.getParameterValues("repair");
		String[] repairtable = request.getParameterValues("repairtable");
		String[] missingtable = request.getParameterValues("missingtable");
		String settingsdel = request.getParameter("setting[del]");
		if (repair == null && repairtable == null && missingtable == null&& !"1".equals(settingsdel)) {
			return this.toDbcheck(mapping, form, request, response);
		}
		StringBuffer errors=new StringBuffer();
		HttpSession session = request.getSession();
		Map jsprundb = (Map) session.getAttribute("jsprundb");
		Map<Integer, String> settingsdata = (Map<Integer, String>) jsprundb.get(1);
		jsprundb = (Map) ((Map) jsprundb.get(0)).get(0);
		if (repairtable != null) {
			for (String tableName : repairtable) {
				Map<String, List<FieldVO>> modifysMap = (Map<String, List<FieldVO>>) session.getAttribute("modifysMap");
				Map<String, List<String>> delsMap = (Map<String, List<String>>) session.getAttribute("delsMap");
				List<FieldVO> fieldVO = modifysMap.get(tableName);
				if (fieldVO != null) {
					for (FieldVO obj : fieldVO) {
						Map<String, String> field = (Map) ((Map) jsprundb.get(tableName)).get(obj.getField());
						String error = dataBaseService.runQuery("ALTER TABLE jrun_"+ tableName+ " MODIFY COLUMN "+ field.get("Field")+ " "+ field.get("Type")+ " "+ (field.get("Null").equals("NO") ? "NOT NULL": "") + " " + field.get("Extra") + " "+((field.get("Null").equals("")&& field.get("Default").equals("")|| this.getStr(field.get("Type"), "text").size() == 0 || this.getStr(field.get("Extra"), "auto_increment").size() == 0) ? "": "DEFAULT '" + field.get("Default") + "';")).get("error");
						if (error != null) {
							errors.append("<br /><br />" + error);
						}
					}
				}
				List<String> fieldNames = delsMap.get(tableName);
				if (fieldNames != null) {
					for (String fieldName : fieldNames) {
						Map<String, String> field = (Map) ((Map) jsprundb.get(tableName)).get(fieldName);
						String error = dataBaseService.runQuery("ALTER TABLE jrun_"+ tableName+ " ADD COLUMN "+ field.get("Field")+ " "+ field.get("Type")+ " "+ (field.get("Null").equals("NO") ? "NOT NULL": "") + " " + field.get("Extra") + " "+((field.get("Null").equals("")&& field.get("Default").equals("")|| this.getStr(field.get("Type"), "text").size() == 0 || this.getStr(field.get("Extra"), "auto_increment").size() == 0) ? "": "DEFAULT '" + field.get("Default") + "';")).get("error");
						if (error != null) {
							errors.append("<br /><br />" + error);
						}
					}
				}
			}
		}
		if (repair != null) {
			for (String str : repair) {
				String[] fieldInfo = str.split("\\|");
				String tableName = fieldInfo[0];
				String fieldName = fieldInfo[1];
				String type = fieldInfo[2];
				Map<String, String> field = (Map) ((Map) jsprundb.get(tableName)).get(fieldName);
				String error = dataBaseService.runQuery("ALTER TABLE jrun_" + tableName + " "+ (type.equals("add") ? "ADD COLUMN" : "MODIFY COLUMN")+ " " + field.get("Field") + " " + field.get("Type")+ " "+ (field.get("Null").equals("NO") ? "NOT NULL" : "")+ " " + field.get("Extra") + " "+((field.get("Null").equals("")&& field.get("Default").equals("")|| this.getStr(field.get("Type"), "text").size() == 0 || this.getStr(field.get("Extra"), "auto_increment").size() == 0) ? "": "DEFAULT '" + field.get("Default") + "';")).get("error");
				if (error != null) {
					errors.append("<br /><br />" + error);
				}
			}
		}
		if (missingtable != null) {
			StringBuffer jsprunContent = (StringBuffer) session.getAttribute("jsprunContent");
			if (jsprunContent == null) {
				String realPath = servlet.getServletContext().getRealPath("/");
				File file = new File(realPath + "./install/jsprun.sql");
				FileReader fr=null;
				BufferedReader br = null;
				try {
					jsprunContent = new StringBuffer();
					fr=new FileReader(file);
					br = new BufferedReader(fr);
					String line = br.readLine();
					while (line != null) {
						jsprunContent.append(line);
						line = br.readLine();
					}
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					try {
						br.close();
						fr.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
				session.setAttribute("jsprunContent", jsprunContent);
			}
			for (String tableName : missingtable) {
				List<String> strs = this.getStr(jsprunContent.toString(), "CREATE TABLE jrun_" + tableName + "\\s\\(.+?;");
				if (strs != null && strs.size() > 0) {
					String error = dataBaseService.runQuery(strs.get(0)).get("error");
					if (error != null) {
						errors.append("<br /><br />" + error);
					}
				}
			}
		}
		if ("1".equals(settingsdel)) {
			List<Map<String,String>> settings=dataBaseService.executeQuery("SELECT variable FROM jrun_settings WHERE SUBSTRING(variable, 1, 9)<>'jswizard_' ORDER BY variable");
			List<String> settingsdatanew = new ArrayList<String>();
			if (settings != null) {
				for (Map<String,String> setting : settings) {
					settingsdatanew.add(setting.get("variable"));
				}
			}
			if (settingsdata != null) {
				Set<Integer> key = settingsdata.keySet();
				for (Integer obj : key) {
					String variable = settingsdata.get(obj).trim();
					if (!settingsdatanew.contains(variable)) {
						String error = dataBaseService.runQuery( "insert into jrun_settings (variable, value) values('"+ variable + "','')").get("error");
						if (error != null) {
							errors.append("<br /><br />" + error);
						}
					}
				}
			}
		}
		request.setAttribute("info", "yes");
		if (errors.length()>0) {
			request.setAttribute("dbcheck_repair_error", errors.toString());
		} else {
			request.setAttribute("dbcheck_repair_completed", "admincp.jsp?action=moddbcheck");
		}
		return mapping.findForward("toDbcheck");
	}
	private Map<String,String> getValues(String variables){
		List<Map<String,String>> objs=dataBaseService.executeQuery("SELECT * FROM jrun_settings WHERE variable IN ("+variables+")");
		Map<String,String> values=null;
		if(objs!=null&&objs.size()>0){
			values=new HashMap<String,String>();
			for(Map<String,String> obj:objs){
				String variable= obj.get("variable");
				String value=obj.get("value");
				if(variable!=null){
					values.put(variable, value);
				}
			}
		}
		return values;
	}
	private List<String> getStr(String content, String regex) {
		List<String> strList = new ArrayList<String>();
		PatternCompiler compiler = new Perl5Compiler();
		Pattern pattern = null;
		try {
			pattern = compiler.compile(regex);
		} catch (MalformedPatternException e) {
			e.printStackTrace();
		}
		PatternMatcher m = new Perl5Matcher();
		if (m.contains(content, pattern)) {
			MatchResult result = m.getMatch();
			for (int i = 0; i < result.groups(); i++) {
				strList.add(result.group(i));
			}
		}
		return strList;
	}

	@SuppressWarnings("finally")
	private NodeList getSimplequerie() {
		String realPath = servlet.getServletContext().getRealPath("/");
		String simplequerie = realPath+ "./admin/page/counter/quickqueries.xml";
		File file = new File(simplequerie);
		NodeList nl = null;
		try {
			Document document =  DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);
			nl = document.getElementsByTagName("simplequerie");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			return nl;
		}
	}
	private String sizeFormat(Long size) {
		double dataSize = size;
		if (dataSize == 0) {
			return "";
		}
		String type = "Bytes";
		if (dataSize > 1024) {
			dataSize /= 1024;
			type = "KB";
		}
		if (dataSize > 1024) {
			dataSize /= 1024;
			type = "MB";
		}
		if (dataSize > 1024) {
			dataSize /= 1024;
			type = "GB";
		}
		if (dataSize > 1024) {
			dataSize /= 1024;
			type = "TB";
		}
		dataSize = (double) Math.round(dataSize * 100) / 100;
		return dataSize + " " + type;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -