package com.repositoryclient.xml; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.StringBufferInputStream; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import com.repositoryclient.treeview.FileNode; public class RepositoryConstructionOption { //------------------------------------------------------------------------------------- private DocumentBuilderFactory factory; private Element node; private Element model; private DocumentBuilder documentBuilder; private Document document; private String filePath="./xml/Test1.xml"; private String nodeType="Node"; private String modelType="Model"; private List wishList=new ArrayList<>(); private StringBufferInputStream inputStream; private String xmlFileContent; //------------------------------------------------------------------------------------- public RepositoryConstructionOption(String xmlFileContent){ this.xmlFileContent=xmlFileContent; setUpDomFactory(); } private void setUpDomFactory(){ factory=DocumentBuilderFactory.newInstance(); try{ inputStream=new StringBufferInputStream(xmlFileContent); factory.setIgnoringElementContentWhitespace(true); documentBuilder=factory.newDocumentBuilder(); document=documentBuilder.parse(inputStream); }catch(Exception e){ e.printStackTrace(); } } //----------------------------------------------------------------------------------- public void addNode(String targetNodePath,String newNodeName){ Element newChild=document.createElement(newNodeName); newChild.setTextContent("\n"); newChild.setAttribute("type", "Node"); newChild.setAttribute("NodeName", newNodeName); newChild.setAttribute("NodePath", targetNodePath); newChild.setAttribute("NodeAuther", "Administrator"); newChild.setAttribute("NodeSize", String.valueOf(0)); SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd"); newChild.setAttribute("CreateData", date.format(new Date())); Element targetElement=(Element) selectSingleNode(targetNodePath, document); targetElement.appendChild(newChild); saveXml("./xml/Test1.xml", document); } public void deleteNode(String targetNodePath){ Element targetElement=(Element) selectSingleNode(targetNodePath, document); targetElement.getParentNode().removeChild(targetElement); saveXml("./xml/Test1.xml", document); } public void renameNode(String targetNodePath,String newNodeName){ Node targetNode=selectSingleNode(targetNodePath, document); document.renameNode(targetNode, null, newNodeName); saveXml("./xml/Test1.xml", document); } //------------------------------------------------------------------------------------- public void addModel(String targetNodePath,FileNode newModel,String[] Tags){ Element newChild=document.createElement(newModel.getFileName()); //设置Model的属性信息 newChild.setAttribute("type", "Model"); newChild.setAttribute("NodeName", newModel.getFileName()); newChild.setAttribute("NodePath", newModel.getPath()); newChild.setAttribute("NodeAuther", newModel.getAuthor()); newChild.setAttribute("NodeSize", String.valueOf(newModel.getSize())); SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd"); newChild.setAttribute("CreateData", date.format(newModel.getDate())); //设置Model的Tag(标签),以后可能会添加通过Tag搜索的功能时会用到 newChild.setAttribute("Tag0", Tags[0]); newChild.setAttribute("Tag1", Tags[1]); newChild.setAttribute("Tag2", Tags[2]); newChild.setNodeValue("Model"); Element targetElement=(Element) selectSingleNode(targetNodePath, document); //添加Model到xml targetElement.appendChild(newChild); saveXml("./xml/Test1.xml", document); } public void deleteModel(String modelName){ Element targetElement=(Element) selectSingleNode(modelName, document); targetElement.getParentNode().removeChild(targetElement); saveXml("./xml/Test1.xml", document); } //------------------------------------------------------------------------------------- public List getTheTree(String rootNodeName){ List resultList=new ArrayList(); Element targetNode=(Element) document.getElementsByTagName(rootNodeName).item(0); FileNode fatherNode=new FileNode("root", "Repository", 0, "Administrator", 0, new Date(), null, "Node"); searchTheTree(targetNode,fatherNode); resultList.add(fatherNode); return resultList; } public void searchTheTree(Node rootNode,FileNode fatherNode){ try { List childList=new ArrayList(); Node node; NodeList childNodesList=rootNode.getChildNodes(); for(int i=0;i<childNodesList.getLength();i++){ node=childNodesList.item(i); if(node.getNodeName()!="#text"){ //System.out.println("here: "+node.getAttributes().item(0)); NamedNodeMap nodeMap=node.getAttributes(); if(nodeMap.getNamedItem("type").getNodeValue().equals(nodeType)){ //String property[]=new String[8]; String property[]=handleModelProperty(node); SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd"); FileNode subNode; subNode = new FileNode(property[0], property[1], 0, property[2], Long.valueOf(property[3]),date.parse(property[4]) , null, "Node"); searchTheTree(node, subNode); childList.add(subNode); }else{ //String property[]=new String[8]; String property[]=handleModelProperty(node); SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd"); FileNode subNode=new FileNode(property[0], property[1], 0, property[2], Long.valueOf(property[3]),date.parse(property[4]) , null, "Model"); childList.add(subNode); } } } fatherNode.setChildren(childList); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String[] handleModelProperty(Node node){ String modelProperty[] = new String[8];; NamedNodeMap nodeMap=node.getAttributes(); //System.out.println(nodeMap.getNamedItem("NodeName").getNodeValue()); modelProperty[0]=nodeMap.getNamedItem("NodeName").getNodeValue(); modelProperty[1]=nodeMap.getNamedItem("NodePath").getNodeValue(); modelProperty[2]=nodeMap.getNamedItem("NodeAuther").getNodeValue(); modelProperty[3]=nodeMap.getNamedItem("NodeSize").getNodeValue(); modelProperty[4]=nodeMap.getNamedItem("CreateData").getNodeValue(); if(nodeMap.getNamedItem("type").getNodeValue().equals(modelType)) { modelProperty[5]=nodeMap.getNamedItem("Tag0").getNodeValue(); modelProperty[6]=nodeMap.getNamedItem("Tag1").getNodeValue(); modelProperty[7]=nodeMap.getNamedItem("Tag2").getNodeValue(); } return modelProperty; } public List searchModelByKeyWords(String rootNodeName,String keywords){ Element targetNode=(Element) document.getElementsByTagName(rootNodeName).item(0); wishList.clear(); getTheList(targetNode,0,keywords); return wishList; } public List getUsersOwnedFiles(String rootNodeName,String author){ Element targetNode=(Element) document.getElementsByTagName(rootNodeName).item(0); wishList.clear(); getTheList(targetNode,-1,author); return wishList; } /** * * @param rootNode * @param key (-1:getUsersOwnedFiles 0:searchModelByKeyWords) */ public void getTheList(Node rootNode,int key,String requirement){ try{ Node node; NodeList childNodesList=rootNode.getChildNodes(); for(int i=0;i<childNodesList.getLength();i++){ node=childNodesList.item(i); if(node.getNodeName()!="#text"){ NamedNodeMap nodeMap=node.getAttributes(); if(nodeMap.getNamedItem("type").getNodeValue().equals(nodeType)){ getTheList(node, key,requirement); }else{ String property[]=handleModelProperty(node); SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd"); FileNode subNode=new FileNode(property[0], property[1], 0, property[2], Long.valueOf(property[3]),date.parse(property[4]) , null, "Model"); switch (key) { case -1://getUsersOwnedFiles if(requirement.equals(subNode.getAuthor())){ wishList.add(subNode); } break; default://searchModelByKeyWords if(requirement.contains(property[5]) || requirement.contains(property[6]) || requirement.contains(property[7]) || property[5].contains(requirement) || property[6].contains(requirement) || property[7].contains(requirement)){ wishList.add(subNode); } break; } } } } }catch(Exception e){ e.printStackTrace(); } } //------------------------------------------------------------------------------------- public void saveXml(String fileName, Document doc) {//将Document输出到文件 TransformerFactory transFactory=TransformerFactory.newInstance(); try { Transformer transformer = transFactory.newTransformer(); transformer.setOutputProperty("indent", "yes"); DOMSource source=new DOMSource(); source.setNode(doc); StreamResult result=new StreamResult(); result.setOutputStream(new FileOutputStream(fileName)); transformer.transform(source, result); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } public Node selectSingleNode(String express, Object source) {//查找节点,并返回第一个符合条件节点 Node result=null; XPathFactory xpathFactory=XPathFactory.newInstance(); XPath xpath=xpathFactory.newXPath(); try { result=(Node) xpath.evaluate(express, source, XPathConstants.NODE); } catch (XPathExpressionException e) { e.printStackTrace(); } return result; } //------------------------------------------------------------------------------------- }
相关推荐
数据模型分为概念模型、逻辑模型和物理模型,它们分别对应于对现实世界的抽象描述、数据仓库逻辑结构的定义以及实际存储在硬件上的数据布局。确定主题域是数据仓库设计的首要任务,例如,可以按照资产负债表、利润表...
- **物理数据模型构建**:基于逻辑模型建立物理模型。 - **ETL流程开发**:编写具体的ETL脚本或使用工具。 - **性能优化**:测试和调整系统性能。 4. **部署和维护**: - **数据加载**:将数据加载到数据仓库中...
会计数据仓库建立探讨 随着会计信息化的发展,我国的会计软件种类也越来越多,但是往往都自成体系,采用的数据库平台和数据结构也就大不相同。由此使得不同的会计软件之间,以及会计软件与会计数据相关的业务软件...
6. **MyBatis框架**:MyBatis是一个持久层框架,它将SQL与Java代码分离,通过XML或注解配置映射SQL语句,简化了数据库操作。在仓库系统中,MyBatis可以便捷地执行CRUD操作。 7. **前端技术**:可能采用了HTML、CSS...
JDBC提供了连接、查询、更新和删除数据库数据的能力,使得在仓库管理系统中实现库存的增删改查操作变得简单而高效。 首先,了解Java仓库管理系统的基本架构至关重要。通常,此类系统会包含以下几个关键模块: 1. ...
JavaWeb基于SSM框架的仓库管理系统是一个典型的后端开发项目,使用了Spring、SpringMVC和MyBatis三个核心组件,构建了一个高效、灵活的业务处理平台。下面将详细介绍SSM框架及其在仓库管理中的应用。 **Spring框架*...
自定义框架可能包含了一些基本功能模块,如数据访问层(DAO)、业务逻辑层(Service)以及视图展示层(如JSP)。这种框架的创建,旨在简化开发流程,提高代码复用性,并使项目更易于维护。 在"JAVA仓库管理系统"中...
【标题解析】: "JDBC.zip_仓库管理_仓库管理系统" 这个标题表明这是一个关于仓库管理系统相关的项目,其中可能包含使用JDBC(Java Database Connectivity)技术实现的数据库交互部分。JDBC是Java中用于与各种数据库...
例如,使用TDBGrid显示库存数据,TButton进行操作,TEdit输入信息,通过事件处理实现业务逻辑。 3. 业务逻辑处理:在Delphi中,业务逻辑主要通过编写Pascal代码实现。例如,入库操作可能涉及验证商品信息、更新库存...
联邦技术将不同来源的数据整合为逻辑数据库,允许用户无缝操作;复制技术通过捕获源数据库日志,实时复制增量数据,进行数据转换和加载,确保数据的完整性和及时性。 3. 数据清洗与转换 在数据仓库建设中,数据清洗...
5. 实现Service:编写业务逻辑层代码,处理增删改查等操作。 6. 前端界面:使用MiniUI组件设计交互界面,通过Ajax调用后端API实现功能。 7. 测试与优化:进行单元测试和集成测试,确保系统功能正常,然后根据性能...
这涉及到从各种异构或同构数据源(如关系型数据库、XML、Excel文件等)中提取数据,经过整合、清洗、转换后存储在数据仓库中,确保数据的一致性、完整性、准确性和及时性。通过这种方式,企业可以为决策支持系统提供...
4. **技术选型**:选择Android SDK作为开发工具,结合SQLite数据库存储数据,可能还会使用到网络技术如HTTP或HTTPS进行远程数据同步,以及JSON或XML格式进行数据交换。 5. **安全性与性能优化**:考虑到数据安全,...
联邦技术允许银行将多个数据源组合成一个逻辑数据库,简化数据操作;复制技术则通过捕获源数据库日志,实现实时增量数据复制,以处理大数据量和高并发访问需求。 数据清洗、转换和加载是信息服务总线的重要任务,...
在三层架构(表现层、业务逻辑层、数据访问层)中,IBATIS通常被用作数据访问层的工具,使得业务逻辑和数据操作更加清晰。 在三层架构中,表现层负责用户交互,业务逻辑层处理业务规则和流程,而数据访问层则负责与...
数据源层包含各种类型的数据源,如关系型数据库、半结构化数据(XML、Excel)以及来自不同业务单位的数据。交换服务体系,由信息服务总线和服务总线构成,负责数据整合、转换和应用层信息交换。 信息服务总线采用...
文中特别强调了异种数据源集成、操作数据存储(ODS)层设计、ETL过程设计、仓库模型设计、元数据管理和专题数据挖掘等关键环节。 #### 引言 随着信息技术的快速发展,企业内部积累了大量的数据资源。然而,如何有效...
4. **数据库连接**:物资仓库系统必然涉及到数据库操作,如MySQL、Oracle或SQL Server。JDBC(Java Database Connectivity)是Java与数据库交互的标准API,用于建立连接、执行SQL语句和处理结果集。在JSP源码中,...
4. 连接数据库:使用JDBC建立数据库连接,编写SQL语句执行数据操作。 5. 部署应用:将项目打包成WAR文件,部署到Tomcat或其他应用服务器上。 6. 测试:进行功能测试和性能测试,确保系统稳定运行。 在实际开发过程...