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

📄 datamanager.java

📁 一个java rmi实现的分布式银行管理系统
💻 JAVA
字号:
package BS.server.xmllayer;
/**
 * @author 束罡
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
import java.io.File;
import java.io.PrintWriter;

import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.parsers.*;
import org.w3c.dom.*;



public class DataManager {
	private static String serverData = ".\\bin\\BankServerData\\";	
	private static String serverName;
	private static String BankServerData;
	
	private static DocumentBuilderFactory dbf = null;
	private static DocumentBuilder db = null;
	private static Document doc = null; 
	
	private static synchronized void initServer(String servername)
	{
		if (doc == null || !DataManager.serverName.equals(servername))
		{
			DataManager.serverName = servername;
			DataManager.BankServerData = serverData + serverName + ".xml";
			
//			System.out.println("----------------------------");
//			System.out.println(serverName + " is initializing...");
//			System.out.println("----------------------------");
			dbf = DocumentBuilderFactory.newInstance(); 
			db = null;
			doc = null; 
			try
			{
				db = dbf.newDocumentBuilder();
				doc = db.parse(BankServerData);
			}
			catch(Exception e)
			{
				System.out.println("----------------------------");
				System.err.println("ERROR>> 银行数据文件找不到");
				System.out.println("----------------------------");
				System.exit(1);
			}
		}
	}
	
	private static synchronized void desServer()
	{
		dbf = null;
		db = null;
		doc = null; 
	}
	
	public static synchronized boolean write (int id, float amount, String serverName) throws Exception
	{
		initServer(serverName);
		

		Element e;
		Text t;
		String str1 = "";
		Element root = doc.getDocumentElement();
		NodeList userList = root.getElementsByTagName("user");
		NodeList t_id, t_amount;

		for(int i=0; i<userList.getLength(); i++)
		{
			Element user = (Element) userList.item(i);
			t_id = user.getElementsByTagName("id");
			e = (Element) t_id.item(0); 
			t = (Text) e.getFirstChild();
			str1 = t.getData();
			if (str1.equals(""+id) == true)
			{	
				t_amount = user.getElementsByTagName("amount");
				e = (Element) t_amount.item(0); 
				t = (Text) e.getFirstChild();
				String newVaulue = "" + amount; 
				t.setData(newVaulue);
				
//				创建转换工厂TransformerFactory
				TransformerFactory transFactory = TransformerFactory.newInstance();
//				创建转换器Transformer
				Transformer former = transFactory.newTransformer();
//				将上面创建的Document 树转换为Source树
				DOMSource source = new DOMSource(doc);
				former.setOutputProperty(OutputKeys.ENCODING,"gb2312");//设置转换器编码
				former.setOutputProperty(OutputKeys.INDENT,"yes");//指定输出结果树时可以添加额外的空白
				PrintWriter writer = new PrintWriter(new File(BankServerData));
//				Writer的输出是字符流,而OutputStreamj 字节流
				StreamResult result = new StreamResult(writer);//转换结果
				former.transform(source,result);//将树输出
				writer.close();
				
				desServer();
				return true;
			}
		}
		desServer();
		return false;
	}
	
	public static synchronized String read (int id, String serverName)
	{
		initServer(serverName);
		
		Element e;
		Text t;
		String str1 = "", str2 = "", str3 = "", result = "";
		Element root = doc.getDocumentElement();
		NodeList userList = root.getElementsByTagName("user");
		NodeList t_id, t_name, t_amount;

		for(int i=0; i<userList.getLength(); i++)
		{
			Element user = (Element) userList.item(i);
			t_id = user.getElementsByTagName("id");
			e = (Element) t_id.item(0); 
			t = (Text) e.getFirstChild();
			str1 = t.getData();
			if (str1.equals(""+id) == true)
			{				
				t_name = user.getElementsByTagName("name");
				e = (Element) t_name.item(0); 
				t = (Text) e.getFirstChild();
				str2 = t.getData();
				
				t_amount = user.getElementsByTagName("amount");
				e = (Element) t_amount.item(0); 
				t = (Text) e.getFirstChild();
				str3 = t.getData();
				
				result = str1 + "\t" + str2 + "\t" + str3;
//				System.out.println(result);
				
				desServer();
				return result;
			}
		}
		desServer();
		return null;
	}
}

⌨️ 快捷键说明

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