📄 bookmarkedcatalogs.java
字号:
/* * Created on 21-nov-2005 * *//** * @author magowiz * */package p2p_system;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;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 org.apache.xerces.dom.DocumentImpl;import org.apache.xml.serialize.OutputFormat;import org.apache.xml.serialize.XMLSerializer;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class BookmarkedCatalogs { private File FCD=new File("fcdata.xml"); private Document doc; private BookmarkedCatalogItem list; private int catN; public BookmarkedCatalogs() { DocumentBuilder db = null; DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance(); try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) {pce.printStackTrace();} if(!FCD.exists()) { System.out.println("not exist"); catN=0; doc= new DocumentImpl(); Element root = doc.createElement("fcdata"); doc.appendChild(root); FileOutputStream fos=null; try{ fos = new FileOutputStream(FCD);} catch(FileNotFoundException fnf){} OutputFormat of = new OutputFormat("XML","ISO-8859-15",true); of.setIndent(1); XMLSerializer serializer = new XMLSerializer(fos,of); try{serializer.asDOMSerializer(); serializer.serialize( doc.getDocumentElement() ); fos.close();} catch(IOException ioe){} } else{ try {doc = db.parse(FCD);} catch (SAXException se){se.printStackTrace();} catch (IOException ioe) { ioe.printStackTrace(); System.exit(1); } NodeList l = doc.getElementsByTagName("catalog"); catN=l.getLength(); for(int i=0;i<l.getLength();i++) { String cl=null; String cn=null; URL cu=null; Element e=(Element) l.item(i); NodeList childs=e.getChildNodes(); for(int j=0; j<childs.getLength();j++) { if(childs.item(j).getNodeType()==Node.ELEMENT_NODE) { if(childs.item(j).getNodeName().equals("label")) { cl=new String((childs.item(j).getFirstChild().getNodeValue().trim())); } if(childs.item(j).getNodeName().equals("name")) { cn=new String(childs.item(j).getFirstChild().getNodeValue()); } if(childs.item(j).getNodeName().equals("url")) { try {cu=new URL(childs.item(j).getFirstChild().getNodeValue());} catch(MalformedURLException mue){mue.printStackTrace();} } } } //System.out.println(cl); BookmarkedCatalogItem bci=new BookmarkedCatalogItem(); bci.insert(cl,cn,cu); BookmarkedCatalogItem temp=list; if(temp==null) list=bci; else { while(temp.getNext()!=null) temp=temp.getNext(); temp.setNext(bci); } } } } public BookmarkedCatalogItem getItem(int index) { BookmarkedCatalogItem r=null; if (index<=catN) { r=list; for(int i=0;i<index;i++) { r=r.getNext(); } } return r; } public void insert(BookmarkedCatalogItem bci) { if(!search(bci.getCatalogName())) { addListItem(bci); addElementItem(bci); save(); } } private boolean search(String cname) { boolean r=false; BookmarkedCatalogItem bc=list; while((bc!=null)&&(!bc.getCatalogName().equals(cname))) { bc=bc.getNext(); } if(bc!=null) { r=true; } return r; } public boolean delete (String cn) { boolean r; r=deleteListItem(cn); deleteElementItem(cn); if(r)save(); return r; } private BookmarkedCatalogItem searchInList (String cn) { boolean found=false; BookmarkedCatalogItem temp=list; if(temp.getCatalogName().equals(cn)) { found=true; } else{ while ((!found)&&(temp.getNext()!=null)) { if(temp.getNext().getCatalogName().equals(cn)) { found=true; } else temp=temp.getNext(); } } if (!found) temp=null; return temp; } private Node searchInDom(String cn) { Node n=null; NodeList nl=doc.getElementsByTagName("name"); int i=0; boolean found=false; while((i<nl.getLength())&&(!found)) { Node temp=nl.item(i); if(temp.getFirstChild().getNodeValue().equals(cn)) { found=true; n=nl.item(i).getParentNode(); } i++; } return n; } private boolean deleteListItem(String cn) { boolean deleted=false; BookmarkedCatalogItem p=searchInList(cn); if((p!=null)&&(p.getNext()==null)) { list=null; deleted=true; } else if(p!=null){ BookmarkedCatalogItem x=p.getNext(); BookmarkedCatalogItem s=x.getNext(); if(x!=null) { deleted=true; p.setNext(s); } } return deleted; } private boolean deleteElementItem(String cn) { boolean deleted=false; Node s=searchInDom(cn); if (s!=null) { deleted=true; NodeList nl=doc.getElementsByTagName("fcdata"); Node r=nl.item(0); r.removeChild(s); } return deleted; } private void addListItem (BookmarkedCatalogItem bci) { BookmarkedCatalogItem temp=list; if(list==null) list=bci; else{ while(temp.getNext()!=null) temp=temp.getNext(); temp.setNext(bci); } } private int addElementItem(BookmarkedCatalogItem bci) { Node c=doc.createElement("catalog"); NodeList nl=doc.getElementsByTagName("fcdata"); Node r=nl.item(0); Node e=doc.createElement("label"); Node t=doc.createTextNode(bci.getCatalogLabel()); e.appendChild(t); c.appendChild(e); e=doc.createElement("name"); t=doc.createTextNode(bci.getCatalogName()); e.appendChild(t); c.appendChild(e); e=doc.createElement("url"); t=doc.createTextNode(bci.getCatalogUrl().toString()); e.appendChild(t); c.appendChild(e); r.appendChild(c); return 0; } private boolean save() { boolean s=true; try{ //System.out.println("saving"); Transformer transformer= TransformerFactory.newInstance().newTransformer(); //String systemID=doc.getDoctype().getSystemId(); //transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"prodotti.dtd"); transformer.setOutputProperty(OutputKeys.METHOD,"xml"); transformer.setOutputProperty(OutputKeys.INDENT,"yes"); DOMSource source=new DOMSource(doc); FileOutputStream fos=new FileOutputStream(FCD); StreamResult result = new StreamResult (fos); transformer.transform(source,result); } catch(TransformerConfigurationException tce){System.out.println("tce");return false;} catch(TransformerException te){System.out.println("te");return false;} catch(IOException ioe){System.out.println("ioe");return false;} return s; } public int getCatalogsNumber() { return this.catN; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -