⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xbookmarknetscapeserializer.java

📁 XBrowser是一个完全免费并且开源的Web浏览器
💻 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.util.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;

import xbrowser.*;
import xbrowser.bookmark.*;

public class XBookmarkNetscapeSerializer implements XBookmarkSerializer
{
	public XBookmarkNetscapeSerializer()
	{
	}

	public void importFrom(String file_name, XBookmarkFolder root_folder) throws Exception
	{
	FileReader file_reader = new FileReader(file_name);

		parentFolder = root_folder;
		parser.parse(file_reader, new XCallback(), true);

		try
		{
			file_reader.close();
		}
		catch( Exception e )
		{
		}
	}

	private Date buildDate(String str)
	{
	Date date = null;

        try
        {
	        date = new Date( Long.parseLong(str+"000") );
		}
		catch( Exception e )
		{
			date = new Date();
		}

		return date;
	}

	private class XCallback extends HTMLEditorKit.ParserCallback
	{
		public void flush()
		{
		}

		public void handleComment(char[] data, int pos)
		{
		}

		public void handleEndOfLineString(String eol)
		{
		}

		public void handleEndTag(HTML.Tag t, int pos)
		{
			if( t==HTML.Tag.DL )
				parentFolder = parentFolder.getParent();
		}

		public void handleError(String errorMsg, int pos)
		{
		}

		public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos)
		{
		}

		public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos)
		{
			if( t==HTML.Tag.A )
			{
			String href = (String)a.getAttribute(HTML.Attribute.HREF);

				href = href.replace('|',':');

				currentBookmark = new XBookmark(href);
				currentBookmark.setCreationDate( buildDate((String)a.getAttribute("add_date")) );
				currentBookmark.setModificationDate( buildDate((String)a.getAttribute("last_modified")) );

				parentFolder.addBookmark(currentBookmark);
			}
			else if( t==HTML.Tag.H3 )
			{
				currentBookmark = new XBookmarkFolder();
				currentBookmark.setCreationDate( buildDate((String)a.getAttribute("add_date")) );
				currentBookmark.setModificationDate( buildDate((String)a.getAttribute("add_date")) );

				parentFolder.addBookmark(currentBookmark);
				parentFolder = (XBookmarkFolder)currentBookmark;
			}

		}

		public void handleText(char[] data, int pos)
		{
			if( currentBookmark!=null )
				currentBookmark.setTitle( new String(data) );
		}
	}

	public void exportTo(String file_name, XBookmarkFolder root_folder) throws Exception
	{
	FileWriter file_writer = new FileWriter(file_name);
	String title = "Bookmarks generated by "+XProjectConstants.PRODUCT_NAME;

		file_writer.write("<!DOCTYPE NETSCAPE-Bookmark-file-1>\n");
		file_writer.write("<!-- This is an automatically generated file.\n");
		file_writer.write("It will be read and overwritten.\n");
		file_writer.write("Do Not Edit! -->\n");
		file_writer.write("<TITLE>"+title+"</TITLE>\n");
		file_writer.write("<H1>"+title+"</H1>\n\n\n");
		file_writer.write("<DL><p>\n\n");

	Iterator bookmarks = root_folder.getBookmarks();

		while( bookmarks.hasNext() )
			saveBookmarksImpl( (XAbstractBookmark)bookmarks.next(), file_writer, "\t");

		file_writer.write("</DL><p>\n\n");

		try
		{
			file_writer.close();
		}
		catch( Exception e )
		{
		}
	}

	private String prepareDateForSaving(Date date)
	{
	String str = ""+date.getTime();

		str = str.substring(0, str.length()-3);
		return str;
	}

	private void saveBookmarksImpl(XAbstractBookmark abs_bm, FileWriter file_writer, String header)
	{
		try
		{
			if( abs_bm instanceof XBookmark )
				saveBookmark( (XBookmark)abs_bm, file_writer, header);
			else if( abs_bm instanceof XBookmarkFolder )
				saveBookmarkFolder( (XBookmarkFolder)abs_bm, file_writer, header);
		}
		catch( Exception e )
		{
		}
	}

	private void saveBookmark(XBookmark bookmark, FileWriter file_writer, String header) throws Exception
	{
		file_writer.write(header+"<DT><A HREF=\""+bookmark.getHRef()+"\"");
		file_writer.write(" ADD_DATE=\""+prepareDateForSaving(bookmark.getCreationDate())+"\"");
		file_writer.write(" LAST_VISIT=\""+prepareDateForSaving(bookmark.getModificationDate())+"\"");
		file_writer.write(" LAST_MODIFIED=\""+prepareDateForSaving(bookmark.getModificationDate())+"\">");
		file_writer.write(bookmark.getTitle()+"</A>\n\n");
	}

	private void saveBookmarkFolder(XBookmarkFolder bm_folder, FileWriter file_writer, String header) throws Exception
	{
		file_writer.write(header+"<DT><H3 ADD_DATE=\""+prepareDateForSaving(bm_folder.getCreationDate()));
		file_writer.write("\">"+bm_folder.getTitle()+"</H3>\n\n");

		if( bm_folder.getBookmarkCount()==0 )
			file_writer.write(header+"<DD>\n\n");
		else
		{
			file_writer.write(header+"<DL><p>\n\n");

		Iterator bookmarks = bm_folder.getBookmarks();

			while( bookmarks.hasNext() )
				saveBookmarksImpl( (XAbstractBookmark)bookmarks.next(), file_writer, header+"\t");

			file_writer.write(header+"</DL><p>\n\n");
		}
	}

// Attributes:
	private ParserDelegator parser = new ParserDelegator();
	private XBookmarkFolder parentFolder = null;
	private XAbstractBookmark currentBookmark = null;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -