亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
91视频com| 一区二区视频在线看| 国产人成亚洲第一网站在线播放| 国产欧美一区二区精品性| 亚洲另类春色国产| 韩国成人福利片在线播放| 色噜噜狠狠一区二区三区果冻| 韩日av一区二区| www.激情成人| 亚洲成a人v欧美综合天堂下载| 日日夜夜免费精品视频| 成人av资源网站| 久久综合久久久久88| 欧美视频一二三区| 国产精品嫩草99a| 国产一区二区三区美女| 肉丝袜脚交视频一区二区| 91蜜桃视频在线| 99精品国产91久久久久久| 久久精品日产第一区二区三区高清版 | 欧美一区二区在线看| 国产凹凸在线观看一区二区| 性欧美疯狂xxxxbbbb| 一本久久综合亚洲鲁鲁五月天| 国产视频一区二区在线| 久久婷婷久久一区二区三区| 精品国产免费人成电影在线观看四季| 亚洲www啪成人一区二区麻豆| 91伊人久久大香线蕉| 国产精品美女久久久久aⅴ国产馆| 欧美成人精品1314www| 日本午夜一本久久久综合| 亚洲国产一区二区a毛片| 日本道色综合久久| 亚洲影视在线播放| 亚洲一区二区偷拍精品| 在线看国产日韩| 久久av中文字幕片| 成人免费毛片aaaaa**| 国产精品影视网| 日本不卡123| 日韩精品中文字幕一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 日韩一区二区三区免费看| 欧美人与性动xxxx| 老司机精品视频一区二区三区| 日韩免费性生活视频播放| 欧美麻豆精品久久久久久| 婷婷中文字幕一区三区| 日韩亚洲欧美一区| 国产精品1区2区| 亚洲欧美一区二区三区极速播放| 亚洲国产成人午夜在线一区| 成人动漫在线一区| 日韩欧美亚洲一区二区| 日精品一区二区| 国产精品一区二区男女羞羞无遮挡 | 精品国产一区二区三区久久久蜜月| 日本aⅴ免费视频一区二区三区| 日韩欧美一区二区免费| 国产福利一区二区三区在线视频| 国产精品第五页| 亚洲电影视频在线| 欧美大片在线观看| 日韩精品电影一区亚洲| 久久99精品国产麻豆婷婷| 中文字幕国产一区| 欧美视频完全免费看| 国内精品伊人久久久久av一坑| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品无遮挡| 日韩av电影免费观看高清完整版 | 欧美一区二区三区白人| 国产精品日产欧美久久久久| 91视频com| 国产一区二区不卡老阿姨| 亚洲视频电影在线| 欧美videossexotv100| 成人h精品动漫一区二区三区| 欧美视频中文字幕| 久久99热这里只有精品| 欧美久久久久久久久| 成人激情小说网站| 欧美日韩在线亚洲一区蜜芽| 欧美日韩国产综合视频在线观看| 黄页网站大全一区二区| 一区二区三区欧美日| 久久久91精品国产一区二区三区| 欧美日韩精品福利| 精品国内片67194| 亚洲日本va在线观看| 日韩电影在线观看一区| 欧美裸体一区二区三区| 91无套直看片红桃| 精品一区二区三区视频| 欧美亚洲国产一区在线观看网站| 国产一区二区毛片| 日本aⅴ免费视频一区二区三区| 91视视频在线观看入口直接观看www| 久草在线在线精品观看| 日韩电影在线一区二区三区| 有码一区二区三区| 欧美激情一区三区| 丰满放荡岳乱妇91ww| 裸体一区二区三区| 欧美一区二区三区不卡| 欧美日本国产视频| 欧美日韩国产一级片| 欧洲一区二区三区在线| 91污片在线观看| 99精品国产视频| 在线看国产一区| 亚洲视频免费看| 一本色道综合亚洲| 94-欧美-setu| 夜夜嗨av一区二区三区| 亚洲猫色日本管| 亚洲人妖av一区二区| 99精品视频一区| 一本一本久久a久久精品综合麻豆| av成人动漫在线观看| 99re成人在线| 91麻豆国产福利在线观看| 夜色激情一区二区| 爽好多水快深点欧美视频| 欧美综合一区二区| 免费人成在线不卡| 裸体健美xxxx欧美裸体表演| 国内外成人在线| 国产成人精品一区二区三区四区| 成人一区二区三区视频| 国产人妖乱国产精品人妖| 亚洲欧美综合色| 一区二区三区四区精品在线视频 | 免费成人在线网站| 久久成人综合网| 777午夜精品免费视频| 欧美电影一区二区| 久久久青草青青国产亚洲免观| 国产女人水真多18毛片18精品视频| 激情丁香综合五月| av在线播放一区二区三区| 91成人网在线| 欧美亚洲国产怡红院影院| 精品国产免费久久| 中文乱码免费一区二区| 亚洲欧美一区二区在线观看| 怡红院av一区二区三区| 奇米精品一区二区三区四区| 国模冰冰炮一区二区| 中文字幕在线不卡视频| 性欧美大战久久久久久久久| 激情深爱一区二区| 色综合天天性综合| 久久精品国产99国产精品| 不卡的av在线| 欧美高清视频一二三区| 不卡大黄网站免费看| 在线综合亚洲欧美在线视频 | 欧美日韩一级视频| 日韩精品中文字幕一区二区三区| 亚洲视频免费看| 看片的网站亚洲| 亚洲欧洲成人精品av97| 麻豆精品国产传媒mv男同 | 99国产精品视频免费观看| 欧美一级免费大片| 国产亚洲午夜高清国产拍精品| 国产精品一线二线三线| 欧美午夜片在线看| 国产精品久久久久影视| 五月天欧美精品| 日本高清成人免费播放| 国产天堂亚洲国产碰碰| 在线观看国产精品网站| 国产精品一区免费视频| 91麻豆精品国产| 亚洲一区二区三区中文字幕| 春色校园综合激情亚洲| 日韩欧美一区二区三区在线| 五月婷婷欧美视频| 欧美最猛性xxxxx直播| 国产精品久99| 国产aⅴ精品一区二区三区色成熟| 91精品久久久久久久久99蜜臂| 洋洋成人永久网站入口| 91色porny蝌蚪| 国产精品久久久久久福利一牛影视| 亚洲精品一区二区三区精华液 | 成人午夜视频在线| 日韩一级完整毛片| 欧美日韩日本视频| 亚洲图片欧美视频| 欧洲色大大久久| 亚洲欧美日韩一区二区 | 亚洲国产中文字幕在线视频综合| 国产a区久久久| 中文字幕一区二| 色呦呦网站一区| 亚洲亚洲精品在线观看|