亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? crmservicexmlimpl.java

?? 基于Struts的客戶資料管理系統
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package net.robin.crm.service;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.rmi.ServerException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Text;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.xml.sax.SAXException;

public class CRMServiceXMLImpl implements CRMService{
	
	private static final String COMPANY_PERFIX = "company";
	private static final String CATEGORY_PERFIX = "category";
	private static final String CLIENT_PERFIX = "client";
	
	private Document doc;
	
	private String xmlfile;
	
	private List observers = new ArrayList();

	public CRMServiceXMLImpl() throws ServiceException {
		super();
		
		xmlfile = CRMServiceFactoryXMLImpl.getXmlfile();
		
		try {
			doc = load(xmlfile, CRMServiceFactoryXMLImpl.getSchema().toString());
 		} catch (Exception e) {
			e.printStackTrace();
			throw new ServiceException(e);
		}
		
	}
	
	public Company insertCompany(Company company) throws ServiceException{
		
		Element companies = doc.getRootElement().element("companies");
		
		company.setId(genNextId(COMPANY_PERFIX));
		
		Element e = companies.addElement("company");
		e.addAttribute("id", company.getId());
		e.addElement("name").addText(company.getName());
		e.addElement("address").addText(company.getAddress());
		
		
		store(doc, xmlfile);
		
		fireCompnayAdded(company);
		
		return company;
	}
	
	private void store(Document doc, String xmlfile) throws ServiceException {
		try{
			OutputFormat format = OutputFormat.createPrettyPrint();
			XMLWriter writer = new XMLWriter(format);
			
			writer.setOutputStream(new FileOutputStream(xmlfile));
			writer.write(doc);
			writer.close();
			
		}catch(Exception e){
			e.printStackTrace();
			throw new ServiceException(e);
		}
		
	}

	private String genNextId(String prefix){
		String xpath = null;
		if(COMPANY_PERFIX.equals(prefix)){
			xpath = "/crm/companies/company/@id";
		}
		if(CATEGORY_PERFIX.equals(prefix)){
			xpath = "/crm/categories/category/@id";
		}
		if(CLIENT_PERFIX.equals(prefix)){
			xpath = "/crm/categories/category/clients/client/@id";
		}
		
		int id = 0;
		List list = doc.selectNodes(xpath);
		for (Iterator i = list.iterator(); i.hasNext();) {
			Attribute attr = (Attribute) i.next();
			int value = Integer.parseInt(attr.getStringValue().substring(prefix.length()));
			
			id = Math.max(id, value);
		}
		
		id++;
		
		return prefix + id;
		
	}

	public Company updateCompany(Company company) throws ServiceException{
		
		Company newValue = company;
		Company oldValue = findCompanyById(company.getId());
		
		String xpath = "/crm/companies/company[@id=\"" + company.getId()  +"\"]"; 
		
		Element e = (Element) doc.selectSingleNode(xpath);
		
		if(e==null){
			throw new ServiceException("沒有被編輯的節點!");
		}
		
		e.element("name").setText(company.getName());
		e.element("address").setText(company.getAddress());
		
		store(doc, xmlfile);
		
		fireCompanyChanged(newValue, oldValue ) ;
		
		return company;
	}
	
	public Company removeCompany(Company company) throws ServiceException{
		
		String xpath = "/crm/companies/company[@id=\"" + company.getId()  +"\"]"; 
		//String xpath = "/crm/companies[company/@id=\"" + company.getId()  +"\"]"; 
		
		Element e = (Element) doc.selectSingleNode(xpath);
		
		int index = e.getParent().elements().indexOf(e);
		
		xpath = "count(/crm/categories/category/clients/client[company=\""+ company.getId() +"\"])";
		
		int count = doc.numberValueOf(xpath).intValue();
		if(count>0)
			throw new ServiceException("公司已經被使用!");
		
		e.getParent().remove(e);
		
		store(doc, xmlfile);
		
		fireCompnayRemoved(company , index);
		
		return company;
	}
	
	public Company findCompanyById(String id){
		String xpath = "/crm/companies/company[@id=\"" + id  +"\"]"; 
	
		Element e = (Element) doc.selectSingleNode(xpath);
		
		if(e==null)
			return null;
		
		Company company = new Company();
		company.setId(e.attributeValue("id"));
		company.setName(e.elementTextTrim("name"));
		company.setAddress(e.elementTextTrim("address"));
		
		return company;
	}
	
	public List findCompanies(){
		
		List list = new ArrayList();
		
		String xpath = "/crm/companies/company";
		List elements = doc.selectNodes(xpath);
		
		if(elements==null)
			return list;
		
		for (Iterator i = elements.iterator(); i.hasNext();) {
			Element e = (Element) i.next();
			
			Company company = new Company();
			company.setId(e.attributeValue("id"));
			company.setName(e.elementTextTrim("name"));
			company.setAddress(e.elementTextTrim("address"));
			
			list.add(company);
		}
		return list;
		
	}

	
	public List findCompanies(Category category) throws ServiceException {
		
		List list = new ArrayList();
		
		String xpath = "/crm/categories/category[@id=\""+ category.getId() +"\"]/clients/client/company";
		
		List nodes = doc.selectNodes(xpath);
		
		Set idSet = new HashSet();
		
		for (Iterator i = nodes.iterator(); i.hasNext();) {
			Element e = (Element) i.next();
			
			String id = e.getTextTrim();
			
			if(!idSet.contains(id)){
				list.add(findCompanyById(id));
			}
			idSet.add(id);
		}

		return list;
	}

	public int indexOf(Company company) throws ServiceException {
		
		String xpath = "/crm/companies/company[@id=\"" + company.getId()  +"\"]"; 
		
		Element e = (Element) doc.selectSingleNode(xpath);

		int index = e.getParent().elements().indexOf(e);
		
		return index;
	}

	private Document load(String xmlfile, String schemaUrl) throws SAXException, FileNotFoundException, DocumentException{
		Document doc = null;
		
		SAXReader reader = new SAXReader(true);
		
		reader.setFeature(
				"http://apache.org/xml/features/validation/schema",	true);	
		reader.setFeature(
				"http://xml.org/sax/features/validation",  true); 
//		reader.setProperty(
//				"http://apache.org/xml/properties/schema/external-schemaLocation", schemaUrl);
		reader.setFeature("http://xml.org/sax/features/namespaces", true);
		
		reader.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
				schemaUrl);
		
		reader.setFeature("http://apache.org/xml/features/validation/schema-full-checking",
                true); 
		
		doc = reader.read(new FileInputStream(xmlfile));
		
		return doc;
	}
	
	public Category insertCategory(Category category) throws ServiceException{
		
		Element categories = doc.getRootElement().element("categories");
		
		category.setId( genNextId( CATEGORY_PERFIX ));
		
		Element e = categories.addElement("category");
		e.addAttribute("id", category.getId());
		e.addElement("name").setText(category.getName());
		e.addElement("clients");
		
		store(doc, xmlfile);
		
		fireCategoryAdded(category);
		
		return category;
	}

	public Category updateCategory( Category category) throws ServiceException{
		
		String xpath = "/crm/categories/category[@id=\"" + category.getId() + "\"]";
		
		Category old = findCategoryById(category.getId());
		
		Element e = (Element) doc.selectSingleNode(xpath);
		e.element("name").setText(category.getName());
		
		store(doc, xmlfile);
		
		fireCategoryChanged(category,old);
		
		return category;
	}

	public Category removeCategory( Category category) throws ServiceException{
		
		String xpath = "/crm/categories/category[@id=\"" + category.getId() + "\"]";
		
		Element e = (Element) doc.selectSingleNode(xpath);
		
		int index = e.getParent().elements().indexOf(e);
		
		xpath = "count(clients/client)";
		
		int count = e.numberValueOf(xpath).intValue();
		
		if(count>0)
			throw new ServiceException("不能刪除包含客戶的分類!");
		
		e.getParent().remove(e);
		
		store(doc, xmlfile);
		
		fireCategoryRemoved(category, index );
		
		return category;
	}

	public Category findCategoryById(String id) throws ServiceException{
		String xpath = "/crm/categories/category[@id=\"" + id + "\"]";
		Element e = (Element) doc.selectSingleNode(xpath);
		
		if(e==null)
			return null;
		
		Category category = new Category();
		category.setId(e.attributeValue("id"));
		category.setName(e.elementTextTrim("name"));
		
		return category;
	}

	public List findCategories() throws ServiceException{
		List list = new ArrayList();
		
		String xpath = "/crm/categories/category";
		List elements = doc.selectNodes(xpath);
		
		if(elements==null)
			return list;
		
		for (Iterator i = elements.iterator(); i.hasNext();) {
			Element e = (Element) i.next();
			
			Category category = new Category();
			category.setId(e.attributeValue("id"));
			category.setName(e.elementTextTrim("name"));
			
			list.add(category);
		}
		

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美自拍偷拍色图| 欧美日韩国产一二三| 久久久久国产精品免费免费搜索| 奇米影视7777精品一区二区| 欧美精品一区二区三区蜜桃| 国产成人精品免费| 国产精品亲子伦对白| 99re这里只有精品首页| 亚洲成av人片一区二区三区| 欧美一级午夜免费电影| 国产91精品露脸国语对白| 亚洲日本va午夜在线影院| 欧美三级日韩三级| 免费日本视频一区| 国产精品国产精品国产专区不片| 91美女视频网站| 日韩和欧美的一区| 国产视频一区二区在线观看| 色狠狠av一区二区三区| 蜜桃视频在线一区| 国产精品三级av| 欧美日韩卡一卡二| 国产精品一区在线| 亚洲在线一区二区三区| 精品奇米国产一区二区三区| 波多野结衣中文字幕一区| 亚洲成av人影院在线观看网| 久久久精品国产免大香伊 | 亚洲美女屁股眼交3| 欧美日韩免费不卡视频一区二区三区| 另类小说欧美激情| 亚洲三级理论片| 日韩精品一区二区三区四区视频| 99re亚洲国产精品| 久久福利资源站| 亚洲综合一区在线| 久久精品一区四区| 欧美精品777| 91在线观看一区二区| 精品在线播放午夜| 亚洲妇女屁股眼交7| 久久久久久免费| 制服丝袜日韩国产| 日本韩国一区二区| 国产凹凸在线观看一区二区| 日韩电影免费一区| 亚洲精品乱码久久久久久日本蜜臀| 欧美成人aa大片| 欧美日韩中文另类| 91网上在线视频| 成人av在线资源网站| 久久97超碰色| 日产欧产美韩系列久久99| 亚洲男同性恋视频| 国产精品毛片大码女人| 337p日本欧洲亚洲大胆精品| 欧美日韩不卡在线| 色拍拍在线精品视频8848| 国产精品一卡二卡在线观看| 日本系列欧美系列| 亚洲成人免费电影| 亚洲欧美日韩国产综合| 国产欧美日韩综合| 久久久久国产精品人| 精品福利一区二区三区 | 黄色精品一二区| 视频一区二区三区在线| 亚洲欧美偷拍三级| 综合自拍亚洲综合图不卡区| 国产婷婷一区二区| 精品国产3级a| 久久精品欧美一区二区三区不卡| 日韩一级大片在线| 精品女同一区二区| 26uuuu精品一区二区| 精品日韩一区二区三区| 精品国产乱码久久久久久图片| 日韩视频一区二区在线观看| 91精品国产综合久久精品app| 欧美日韩另类一区| 制服丝袜亚洲精品中文字幕| 91精品国产综合久久香蕉麻豆 | 亚洲人成亚洲人成在线观看图片| 国产精品视频在线看| 国产精品嫩草影院com| 亚洲欧洲精品一区二区三区| 国产女同性恋一区二区| 国产精品久久久久桃色tv| 成人欧美一区二区三区白人| 亚洲美女淫视频| 午夜电影网一区| 免费成人在线视频观看| 国产呦萝稀缺另类资源| 国产成人在线视频免费播放| 处破女av一区二区| 91免费国产视频网站| 欧美中文字幕一区二区三区 | 久久久久久久久久久久电影| 国产午夜精品理论片a级大结局 | 亚洲欧美日韩国产一区二区三区| 亚洲六月丁香色婷婷综合久久| 亚洲va欧美va国产va天堂影院| 奇米影视在线99精品| 国产在线视视频有精品| 97久久超碰精品国产| 欧美三级电影一区| 久久久久国色av免费看影院| 欧美一区二区三区视频免费| 日本一区二区在线不卡| 亚洲资源在线观看| 国产一区二区三区电影在线观看| 97久久超碰国产精品| 欧美一区二区免费观在线| 日本一区二区三区dvd视频在线| 亚洲综合一区二区| 国产精品一级片在线观看| 日本丶国产丶欧美色综合| 日韩欧美亚洲国产另类| 1024成人网| 精品系列免费在线观看| 91麻豆免费观看| 欧美不卡一区二区三区四区| 国产精品色哟哟网站| 久久精品国内一区二区三区| 91免费小视频| 久久久久久电影| 午夜精品爽啪视频| 不卡在线观看av| 精品国产乱码久久久久久夜甘婷婷| 一区二区三区四区乱视频| 国产一区二区三区不卡在线观看| 欧美日韩久久久久久| 国产精品午夜久久| 九九视频精品免费| 欧美伊人久久大香线蕉综合69 | 国产精品欧美一级免费| 肉肉av福利一精品导航| 色哟哟欧美精品| 国产视频一区不卡| 免费成人在线影院| 欧美军同video69gay| 中文字幕一区二区三区视频| 成人妖精视频yjsp地址| 欧美剧在线免费观看网站| 中文字幕av一区二区三区| 青青草国产精品97视觉盛宴| 色天使色偷偷av一区二区| 国产精品全国免费观看高清| 久久国产乱子精品免费女| 欧美日韩中字一区| 亚洲国产精品人人做人人爽| 99久久伊人久久99| 国产欧美精品一区二区色综合朱莉| 美女网站在线免费欧美精品| 欧美日韩视频在线一区二区| 亚洲日本免费电影| 94色蜜桃网一区二区三区| 中文子幕无线码一区tr| 国产乱人伦精品一区二区在线观看| 欧美一区二区视频网站| 香蕉久久夜色精品国产使用方法| 日本高清不卡一区| 亚洲精品久久久久久国产精华液| 成av人片一区二区| 亚洲视频图片小说| 色网站国产精品| 中文字幕一区视频| 波波电影院一区二区三区| 中文字幕欧美三区| 粉嫩aⅴ一区二区三区四区 | 精品久久免费看| 精品一区二区影视| 精品国产免费人成在线观看| 天天操天天干天天综合网| 欧美精品日日鲁夜夜添| 免费xxxx性欧美18vr| 欧美一级高清片在线观看| 久久激情五月激情| 久久亚洲综合色一区二区三区| 国产剧情av麻豆香蕉精品| 久久综合色播五月| 懂色av中文一区二区三区 | 欧美撒尿777hd撒尿| 亚洲福利一区二区| 7799精品视频| 国产精品一区二区黑丝| 中文字幕在线不卡一区二区三区| 一本大道久久a久久精二百| 日韩精品一二三四| 亚洲精品在线观看视频| 成人国产视频在线观看| 一区二区成人在线| 欧美一级艳片视频免费观看| 国产精品一区二区在线观看网站| 国产精品久久久久一区| 欧美精选午夜久久久乱码6080| 日韩成人一区二区三区在线观看| 国产午夜亚洲精品理论片色戒| 91搞黄在线观看| 久久精品噜噜噜成人av农村|