1 25 26 package org.snipsnap.snip; 27 28 import org.apache.lucene.document.Document; 29 import org.apache.lucene.document.Field; 30 import org.snipsnap.snip.label.Label; 31 import org.snipsnap.snip.label.Labels; 32 import org.radeox.filter.LinkTestFilter; 33 import org.radeox.filter.context.BaseFilterContext; 34 import org.radeox.filter.context.FilterContext; 35 import org.radeox.engine.context.BaseRenderContext; 36 import org.radeox.engine.context.BaseInitialRenderContext; 37 import org.radeox.api.engine.WikiRenderEngine; 38 import org.radeox.api.engine.RenderEngine; 39 import org.radeox.api.engine.context.RenderContext; 40 import org.radeox.test.filter.mock.MockWikiRenderEngine; 41 42 import java.util.Iterator ; 43 import java.io.Writer ; 44 import java.io.IOException ; 45 import java.io.Reader ; 46 47 56 57 public class SnipDocument { 58 65 public static Document Document(Snip snip) { 66 final Document doc = new Document(); 67 doc.add(Field.Text("id", Integer.toHexString(snip.getName().hashCode()))); 72 doc.add(Field.Text("content", snip.getContent())); 73 doc.add(Field.Text("title", snip.getName())); 74 doc.add(Field.Text("author", snip.getCUser())); 76 doc.add(Field.Text("muser", snip.getMUser())); 77 doc.add(Field.Text("owner", snip.getOwner())); 78 79 Labels labels = snip.getLabels(); 80 Iterator iterator = labels.getAll().iterator(); 81 while (iterator.hasNext()) { 82 Label label = (Label) iterator.next(); 83 label.index(doc); 84 } 85 86 LinkTestFilter linkDetector = new LinkTestFilter(); 87 linkDetector.setInitialContext(new BaseInitialRenderContext()); 88 89 FilterContext context = new BaseFilterContext(); 90 context.setRenderContext(new BaseRenderContext()); 91 context.getRenderContext().setRenderEngine(new ReferenceRenderEngine(doc)); 92 linkDetector.filter(snip.getContent(), context); 94 95 return doc; 96 } 97 98 private static class ReferenceRenderEngine implements RenderEngine, WikiRenderEngine { 99 Document doc; 100 101 public ReferenceRenderEngine(Document doc) { 102 this.doc = doc; 103 } 104 105 public String getName() { 106 return "ReferenceRenderEngine"; 107 } 108 109 public String render(String content, RenderContext context) { 110 return ""; 111 } 112 113 public void render(Writer out, String content, RenderContext context) throws IOException { 114 } 115 116 public String render(Reader in, RenderContext context) throws IOException { 117 return ""; 118 } 119 120 public boolean exists(String name) { 121 return true; 122 } 123 124 public boolean showCreate() { 125 return true; 126 } 127 128 public void appendLink(StringBuffer buffer, String name, String view, String anchor) { 129 doc.add(Field.Text("reference", name)); 131 } 132 133 public void appendLink(StringBuffer buffer, String name, String view) { 134 doc.add(Field.Text("reference", name)); 136 } 137 138 public void appendCreateLink(StringBuffer buffer, String name, String view) { 139 doc.add(Field.Text("reference", name)); 141 } 142 } 143 } 144 | Popular Tags |