1 25 package org.snipsnap.jsp; 26 27 import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager; 28 import org.radeox.util.logging.Logger; 29 import org.radeox.util.Encoder; 30 import org.snipsnap.semanticweb.DublinCore; 31 import org.snipsnap.snip.Snip; 32 33 import javax.servlet.jsp.JspException ; 34 import javax.servlet.jsp.JspWriter ; 35 import javax.servlet.jsp.tagext.TagSupport ; 36 import java.io.IOException ; 37 import java.util.Iterator ; 38 import java.util.Map ; 39 40 public class DublinCoreTag extends TagSupport { 41 Snip snip = null; 42 String format = null; 43 44 private String capitalize(String s) { 45 char chars[] = s.toCharArray(); 46 chars[0] = Character.toUpperCase(chars[0]); 47 return new String (chars); 48 } 49 50 public int doStartTag() throws JspException { 51 if (null != snip) { 52 Map dublinCore = DublinCore.generate(snip); 53 try { 54 JspWriter out = pageContext.getOut(); 55 56 if ("xml".equals(format)) { 57 Iterator iterator = dublinCore.keySet().iterator(); 58 while (iterator.hasNext()) { 59 String name = (String ) iterator.next(); 60 String value = (String ) dublinCore.get(name); 61 out.print("<dc:"); 62 out.print(name.toLowerCase()); 63 out.print(">"); 64 out.print(Encoder.escape(value)); 65 out.print("</dc:"); 66 out.print(name); 67 out.println(">"); 68 } 69 } else { 70 out.println("<link rel=\"schema.DC\" HREF=\"http://purl.org/DC/elements/1.1/\"/>"); 71 Iterator iterator = dublinCore.keySet().iterator(); 72 while (iterator.hasNext()) { 73 String name = (String ) iterator.next(); 74 String value = (String ) dublinCore.get(name); 75 out.print("<meta name=\"DC."); 76 out.print(capitalize(name)); 77 out.print("\" content=\""); 78 out.print(Encoder.escape(value)); 79 out.println("\"/>"); 80 } 81 } 82 } catch (IOException e) { 83 Logger.warn("doStartTag in DublinCore", e); 84 } 85 } 86 return super.doStartTag(); 87 } 88 89 90 public void setFormat(String format) { 91 this.format = format; 92 } 93 94 public void setSnip(String snip) { 95 try { 96 this.snip = (Snip) ExpressionEvaluatorManager.evaluate("snip", snip, Snip.class, this, pageContext); 97 } catch (JspException e) { 98 Logger.warn("unable to evaluate expression", e); 99 } 100 } 101 } 102 | Popular Tags |