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

📄 datatree.java

📁 eclipse rcp 项目实例
💻 JAVA
字号:
package com.niis.myprice.domain;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

import com.niis.myprice.util.message.Messages;
import com.niis.myprice.util.sys.SysConfig;


public class DataTree {
	private Kind root;
	private static DataTree dt ;
	private Kind abstractRoot;
	private static Logger logger = Logger.getLogger(DataTree.class);
	public DataTree(){
		File file = new File(SysConfig.FILE_NAME);
		if(file.exists()){
			load2();
		}else{
			load1();
			if(SysConfig.IS_TEST){
				load();
			}
		}
	}
	public static DataTree getDt(){
		if(dt == null){
			synchronized(DataTree.class){
				if(dt == null){
					dt = new DataTree();
				}
			}
		}
		return dt;
	}
	//first init 
	public void load1(){
		abstractRoot = new Kind(0,Messages.getString("DataTree.virtualroot"),Messages.getString("DataTree.virtualroot"),null); //$NON-NLS-1$ //$NON-NLS-2$
		root = new Kind(1,Messages.getString("DataTree.kind"),Messages.getString("DataTree.root"),abstractRoot); //$NON-NLS-1$ //$NON-NLS-2$
	}
	//for test
	public void load(){
//		abstractRoot = new Kind(0,Messages.getString("DataTree.virtualroot"),Messages.getString("DataTree.virualroot"),null); //$NON-NLS-1$ //$NON-NLS-2$
//		root = new Kind(1,Messages.getString("DataTree.kind"),Messages.getString("DataTree.root"),abstractRoot); //$NON-NLS-1$ //$NON-NLS-2$
		int big = 4;
		int mid = 4;
		int sml = 4;
		int wareNum = 4;
		int num=2;
		for(int i=0;i<big;i++){
			Kind bigKind = new Kind(num++,Messages.getString("DataTree.bigkind"),Messages.getString("DataTree.bigkind"),root); //$NON-NLS-1$ //$NON-NLS-2$
			for(int j=0;j<mid;j++){
				Kind midKind = new Kind(num++,Messages.getString("DataTree.midkind"),Messages.getString("DataTree.midkind"),bigKind); //$NON-NLS-1$ //$NON-NLS-2$
//				bigKind.addChild(midKind);
				for(int k=0;k<sml;k++){
					Kind smlKind = new Kind(num++,Messages.getString("DataTree.smallkind"),Messages.getString("DataTree.smallkind"),midKind); //$NON-NLS-1$ //$NON-NLS-2$
//					midKind.addChild(smlKind);
					for(int m =0;m<wareNum;m++){
						String name = Messages.getString("DataTree.ware")+m; //$NON-NLS-1$
						Ware ware = new Ware(num++,name,name,smlKind,222.22);
//						smlKind.addChild(ware);
					}
				}
			}
		}
	}
	//for release 
	public void load2(){
		abstractRoot = new Kind(0,Messages.getString("DataTree.virtualroot"),Messages.getString("DataTree.virualroot"),null); //$NON-NLS-1$ //$NON-NLS-2$
		try{
		    SAXBuilder sb=new SAXBuilder(); 
		    Document doc=sb.build(SysConfig.FILE_NAME);
		    Element xmlRoot=doc.getRootElement();
		    root = getRootFromXml(xmlRoot);
		    abstractRoot.addChild(root);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public Kind getRootFromXml(Element xmlRoot){
		Kind kind = new Kind(null);
		//self info
		kind.setNum(Integer.parseInt(xmlRoot.getAttributeValue("num")));
		kind.setName(xmlRoot.getAttributeValue("name"));
		kind.setDesc(xmlRoot.getAttributeValue("desc"));
		//ware
		List wareList = xmlRoot.getChildren("ware");
		if(wareList != null){
			Iterator ie = wareList.iterator();
			while(ie.hasNext()){
				Element wareElement = (Element)ie.next();
				Ware ware = new Ware(kind);
				ware.setNum(Integer.parseInt(wareElement.getAttributeValue("num")));
				ware.setName(wareElement.getAttributeValue("name"));
				ware.setDesc(wareElement.getAttributeValue("desc"));
				ware.setPrice(Double.parseDouble(wareElement.getAttributeValue("price")));
				ware.setUpdDate(wareElement.getAttributeValue("updDate"));
			}
		}
		//kind
		List kindList = xmlRoot.getChildren("kind");
		if(kindList != null){
			Iterator ie = kindList.iterator();
			while(ie.hasNext()){
				Element kindElement = (Element)ie.next();
				kind.addChild(getRootFromXml(kindElement));
			}
		}
		
		return kind;
	}
	public boolean save(){
		try{
			String fileName = SysConfig.FILE_NAME;
			String bakName = SysConfig.BAK_FILE_NAME;
			File file = new File(fileName);
			if(file.exists()){
				File bakFile = new File(bakName);
				if(bakFile.exists()){
					bakFile.delete();
				}
				file.renameTo(new File(bakName));
			}
			file.createNewFile();
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
			Element xmlRoot = getXmlRoot(root);
			XMLOutputter outputter = new XMLOutputter();
			outputter.output(xmlRoot,bw);
			bw.close();
		}catch(Exception e){
			e.printStackTrace();
		}
		return true;
	}
	public Element getXmlRoot(Kind root){
		//self info
		Element kindElement = new Element("kind");
		kindElement.setAttribute("num",root.getDisplayNum());
		kindElement.setAttribute("name",root.getDisplayName());
		kindElement.setAttribute("desc",root.getDisplayDesc());
		//ware children
		ArrayList wareList = root.getWareChildren();
		Iterator ie = wareList.iterator();
		while(ie.hasNext()){
			Ware ware = (Ware)ie.next();
			Element wareElement = new Element("ware");
			wareElement.setAttribute("num",ware.getDisplayNum());
			wareElement.setAttribute("name",ware.getDisplayName());
			wareElement.setAttribute("desc",ware.getDisplayDesc());
			wareElement.setAttribute("price",ware.getDisplayPrice());
			wareElement.setAttribute("updDate",ware.getSaveUpdDate());
			kindElement.addContent(wareElement);
		}
		//kind children
		ArrayList kindList = root.getChildren();
		ie = kindList.iterator();
		while(ie.hasNext()){
			Kind kind = (Kind)ie.next();
			if(kind != null){
				Element element = getXmlRoot(kind);
				kindElement.addContent(element);
			}
		}
		return kindElement;
	}
	public Kind getAbstractRoot() {
		return abstractRoot;
	}
	public void setAbstractRoot(Kind abstractRoot) {
		this.abstractRoot = abstractRoot;
	}
	
	public static void main(String[] args){
//		DataTree dt = new DataTree();
//		dt.load();
//		dt.save();
//		System.out.println();
		try{
			SAXBuilder sb=new SAXBuilder(); 
		    Document doc=sb.build("D:\\runtime-EclipseApplication(5)\\db.xml");
		    Element root=doc.getRootElement();
			XMLOutputter outputter = new XMLOutputter();
//			System.out.println(outputter.outputString(root));
			outputter.output(root,System.out);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public boolean isModified(){
		boolean result = false;
		File file = new File(SysConfig.FILE_NAME);
		if(!file.exists()){
			return true;
		}
		try{
			 SAXBuilder sb=new SAXBuilder(); 
			 Document doc=sb.build(SysConfig.FILE_NAME);
			 Element oldRoot = doc.getRootElement();
			 Element newRoot = getXmlRoot(root);
			 XMLOutputter outputter = new XMLOutputter();
			 String oldStr = outputter.outputString(oldRoot);
			 String newStr = outputter.outputString(newRoot);
//			 logger.debug("=============");
//			 logger.debug(oldStr);
//			 logger.debug(newStr);
			 result = !newStr.equals(oldStr);
			 logger.debug(String.valueOf(result));
//			 result = newRoot.equals(oldRoot);
		}catch(Exception e){
			e.printStackTrace();
		}
		return result;
	}
	public String getMailString(){
		Element xmlRoot = getXmlRoot(root);
		XMLOutputter outputter = new XMLOutputter();
		String mailStr = outputter.outputString(xmlRoot);
		logger.debug("mailStr="+mailStr);
		return mailStr;
	}
}

⌨️ 快捷键说明

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