1 2 3 24 package com.geinuke.block; 25 import java.io.StringWriter ; 26 import java.util.Enumeration ; 27 import java.util.Locale ; 28 29 import org.apache.velocity.Template; 30 import org.apache.velocity.app.Velocity; 31 import org.apache.velocity.context.Context; 32 33 import com.geinuke.common.NukeBlockI; 34 import com.geinuke.servlet.GeiServlet; 35 import com.geinuke.util.NukeResource; 36 import com.geinuke.vo.BlockDBVO; 37 import com.geinuke.vo.NukeBlockVO; 38 import com.magic.util.conf.MagicConfiguratorIfc; 39 import com.magic.util.props.MultiProps; 40 41 public class BlockWriter { 42 43 44 protected static MultiProps loadResource(String blockname,String locale)throws Exception { 45 MultiProps res=null; 46 47 String ePath=""; 48 String ext=""; 49 if(locale!=null && !locale.equals("")){ 50 ePath="/i18n"; 51 ext="_"+locale; 52 } 53 MagicConfiguratorIfc mc=(MagicConfiguratorIfc)Class.forName("com.magic.util.conf.PropsFileConfigurator").newInstance(); 54 String fn=null; 56 fn=GeiServlet.getNukePath()+"/WEB-INF/templates/blocks/"+blockname+ePath+"/resources"+ext+".txt"; 57 if(! NukeResource.existsFile(fn)){ 59 fn=GeiServlet.getNukePath()+"/WEB-INF/templates/blocks/"+blockname+"/resources.txt";; 60 } 62 63 64 65 66 mc.setFileName(fn); 67 68 res=mc.getConfiguration(); 69 70 return res; 71 } 72 77 public static NukeBlockI fill(Context ctx,BlockDBVO block){ 78 NukeBlockVO result=null; 79 Template t=null; 80 String templateName=null; 81 MultiProps res=null; 82 result=new NukeBlockVO(); 83 84 if(! block.isDbStored()){ 85 86 try{ 87 Locale lo=(Locale )ctx.get("LOCALE"); 88 res=loadResource(block.getName(),lo.getLanguage()); 91 String key=null; 92 String value=null; 93 Enumeration keys=res.keys(); 94 while(keys.hasMoreElements()){ 95 key=(String )keys.nextElement(); 96 value=(String )res.get(key); 97 if(key.equals("TITLE")) 98 result.setTitle(value); 99 ctx.put(key,value); 100 } 101 }catch(Exception e){ 102 GeiServlet.intLog("BlockWriter.fill(...), exception\n"+e); 103 e.printStackTrace(); 104 } 105 templateName="blocks/"+block.getName()+"/block.vm"; 106 StringWriter sw = new StringWriter (1024 * 4); 107 try { 108 t = Velocity.getTemplate(templateName); 109 t.merge(ctx, sw); 110 } catch (Exception e) { 111 e.printStackTrace(); 112 } 113 result.setContent( sw.toString()); 114 }else{ 115 result.setContent(block.getContent()); 116 } 117 if(result.getTitle()==null) 118 result.setTitle(block.getTitle()); 119 120 121 result.setPos(block.getPos()); 122 result.setWeight(block.getWeight()); 123 result.setDbStored(block.isDbStored()); 124 result.setSkin(block.getSkin()); 125 return result; 126 127 } 128 } 129 | Popular Tags |