|
Friki example source code file (PageRepository.java)
The Friki PageRepository.java source codepackage 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); } } Other Friki examples (source code examples)Here is a short list of links related to this Friki PageRepository.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.