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

📄 pagerepository.java

📁 jsp写的wiki.比较新
💻 JAVA
字号:
package com.efsol.friki;

import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

import org.stringtree.factory.Container;
import org.stringtree.factory.Repository;
import org.stringtree.factory.TractFetcher;
import org.stringtree.factory.TractStorer;
import org.stringtree.util.StringUtils;
import org.stringtree.util.tract.Tract;

public class PageRepository
	implements TractFetcher, TractStorer, Repository, Container
{
	protected static DateFormat df = new SimpleDateFormat("dd MMMM yyyy");
	protected RepositoryDriver driver;

	public PageRepository(RepositoryDriver driver)
	{
		this.driver = driver;
	}
	
	public Object getObject(String name)
	{
		Tract page = null;

		if (driver.isReadable(name))
		{
			page = driver.get(name);
		}

		if (page == null)
		{
			page = new Page(name);
		}

		return page;
	}
	
	public Tract get(String name)
	{
		Tract ret = (Tract)getObject(name);
		if (ret == null) 
		{
			ret = new Page(name);
		} 

		ret.put("escaped.name", escape(name));
		return ret;
	}

	public void put(String name, Tract page, boolean backup)
	{
		if (driver.isWritable(name))
		{
			if (backup)
			{
				String previous = driver.backup(name);
				page.put("previous.version", previous);
			}
			page.put("last.edit", df.format(new Date()));
			driver.put(name, page);
		}
	}

	public void put(String name, Tract page)
	{
		put(name, page, true);
	}

	public void put(String name, Object obj)
	{
		if (obj instanceof Tract)
		{
			put(name, (Tract)obj, false);
		}
		else
		{
			System.out.println("Warning. Attempt to put unrecognized object '" + obj + "' into page repository");
		}
	}

	public Iterator matchingPages(String pattern)
	{
		if (StringUtils.isBlank(pattern))
		{
			return driver.allPageNames();
		}

		List ret = new ArrayList();
		Iterator all = driver.allPageNames();
		while (all.hasNext())
		{
			String name = (String)all.next();
			
			if (name.indexOf(pattern) >= 0)
			{
				ret.add(name);
			}
			else
			{
				Tract page = driver.get(name);
				if (page != null)
				{
					String content = page.getContent();
					if (content != null && content.indexOf(pattern) >= 0)
					{
						ret.add(name);
					}
				}
			}
		}

		return ret.iterator();
	}

	public Iterator allPageNames()
	{
		return driver.allPageNames();
	}
	
	public void append(String pageName, String text)
	{
		Tract page = get(pageName);
		page.setContent(page.getContent() + text);
		put(pageName, page, false);
	}

	public void remove(String name)
	{
		driver.remove(name);
	}

	public void clear()
	{
		driver.clear();
	}

	public boolean contains(String name)
	{
		return driver.contains(name);
	}
	
	public String escape(String name)
	{
		return driver.escape(name);
	}
	
	public String unescape(String name)
	{
		return driver.unescape(name);
	}
}

⌨️ 快捷键说明

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