📄 xbookmarkdefaultserializer.java
字号:
/****************************************************************
* XBrowser - eXtended web Browser *
* *
* Copyright (c) 2000-2001 Armond Avanes *
* Refer to ReadMe & License files for more information *
* *
* *
* By: Armond Avanes *
* Armond555@yahoo.com & Armond333@yahoo.com *
* http://xbrowser.sourceforge.net/ *
*****************************************************************/
package xbrowser.bookmark.io;
import java.io.*;
import java.net.*;
import java.util.*;
import xbrowser.*;
import xbrowser.util.*;
import xbrowser.bookmark.*;
import org.w3c.dom.*;
public class XBookmarkDefaultSerializer implements XBookmarkSerializer
{
public XBookmarkDefaultSerializer()
{
}
public void importFrom(String file_name, XBookmarkFolder root_folder) throws Exception
{
URL dtd_url = XRepository.getResourceManager().getResourceURL(DTD_URL);
Document doc = XMLManager.readFileDocument(file_name, DTD_SYMBOL, dtd_url);
Node node = XMLManager.findNode(doc,"xbookmarks").getNextSibling().getFirstChild();
while( node!=null )
{
if( node instanceof Element )
{
if( node.getNodeName().equals("xfolder") )
loadBookmarkFolder(node,root_folder);
else if( node.getNodeName().equals("xbookmark") )
loadBookmark(node,root_folder);
}
node = node.getNextSibling();
}
}
private void loadBookmarkFolder(Node node, XBookmarkFolder parent) throws DOMException
{
XBookmarkFolder bm_folder = new XBookmarkFolder();
Node temp_node = node;
temp_node = node.getFirstChild();
while( temp_node!=null )
{
if( temp_node instanceof Element )
{
if( temp_node.getNodeName().equals("title") )
bm_folder.setTitle( XMLManager.getNodeValue(temp_node) );
else if( temp_node.getNodeName().equals("desc") )
bm_folder.setDescription( XMLManager.getNodeValue(temp_node) );
else if( temp_node.getNodeName().equals("creationdate") )
bm_folder.setCreationDate( buildDate(temp_node) );
else if( temp_node.getNodeName().equals("modificationdate") )
bm_folder.setModificationDate( buildDate(temp_node) );
else if( temp_node.getNodeName().equals("personalfolder") )
bm_folder.setPersonalFolder(true);
}
temp_node = temp_node.getNextSibling();
}
parent.addBookmark(bm_folder);
temp_node = node.getFirstChild();
while( temp_node!=null )
{
if( temp_node instanceof Element )
{
if( temp_node.getNodeName().equals("xfolder") )
loadBookmarkFolder(temp_node,bm_folder);
else if( temp_node.getNodeName().equals("xbookmark") )
loadBookmark(temp_node,bm_folder);
}
temp_node = temp_node.getNextSibling();
}
}
private void loadBookmark(Node node, XBookmarkFolder parent) throws DOMException
{
XBookmark bookmark = new XBookmark( XMLManager.getNodeAttribute(node,"href") );
node = node.getFirstChild();
while( node!=null )
{
if( node instanceof Element )
{
if( node.getNodeName().equals("title") )
bookmark.setTitle( XMLManager.getNodeValue(node) );
else if( node.getNodeName().equals("desc") )
bookmark.setDescription( XMLManager.getNodeValue(node) );
else if( node.getNodeName().equals("creationdate") )
bookmark.setCreationDate( buildDate(node) );
else if( node.getNodeName().equals("modificationdate") )
bookmark.setModificationDate( buildDate(node) );
}
node = node.getNextSibling();
}
parent.addBookmark(bookmark);
}
private Date buildDate(Node node) throws DOMException
{
Date date = null;
try
{
date = df.parse( XMLManager.getNodeValue(node) );
}
catch( Exception e )
{
date = new Date();
}
return date;
}
public void exportTo(String file_name, XBookmarkFolder root_folder) throws Exception
{
Document doc = XMLManager.newDocument();
Element root = (Element)doc.createElement("xbookmarks");
doc.appendChild(root);
//// Saving Bookmarks
Iterator bookmarks = root_folder.getBookmarks();
while( bookmarks.hasNext() )
saveBookmarksImpl( (XAbstractBookmark)bookmarks.next(), doc, root);
//// Bookmarks Saved
root.normalize();
XMLManager.writeDocument(file_name, doc, null, DTD_SYMBOL, null);
}
private void saveBookmarksImpl(XAbstractBookmark abs_bm, Document doc, Element parent_node)
{
if( abs_bm instanceof XBookmark )
saveBookmark( (XBookmark)abs_bm, doc, parent_node);
else if( abs_bm instanceof XBookmarkFolder )
saveBookmarkFolder( (XBookmarkFolder)abs_bm, doc, parent_node);
}
private void saveBookmark(XBookmark bookmark, Document doc, Element parent_node)
{
Element node = (Element)doc.createElement("xbookmark");
node.setAttribute("href", bookmark.getHRef() );
XMLManager.addDataNodeTo(doc, node, "title", bookmark.getTitle());
XMLManager.addDataNodeTo(doc, node, "desc", bookmark.getDescription());
XMLManager.addDataNodeTo(doc, node, "creationdate", df.format(bookmark.getCreationDate()));
XMLManager.addDataNodeTo(doc, node, "modificationdate", df.format(bookmark.getModificationDate()));
parent_node.appendChild(node);
}
private void saveBookmarkFolder(XBookmarkFolder bm_folder, Document doc, Element parent_node)
{
Element node = (Element)doc.createElement("xfolder");
XMLManager.addDataNodeTo(doc, node, "title", bm_folder.getTitle());
XMLManager.addDataNodeTo(doc, node, "desc", bm_folder.getDescription());
XMLManager.addDataNodeTo(doc, node, "creationdate", df.format(bm_folder.getCreationDate()));
XMLManager.addDataNodeTo(doc, node, "modificationdate", df.format(bm_folder.getModificationDate()));
if( bm_folder.isPersonalFolder() )
node.appendChild( (Element)doc.createElement("personalfolder") );
parent_node.appendChild(node);
Iterator bookmarks = bm_folder.getBookmarks();
while( bookmarks.hasNext() )
saveBookmarksImpl( (XAbstractBookmark)bookmarks.next(), doc, node);
}
// Attributes:
private final String DTD_SYMBOL = "xbrowser:default:bookmark";
private final String DTD_URL = XProjectConstants.DTD_DIR+"XBookmark.dtd";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -