1 64 65 package com.jcorporate.expresso.ext.taglib; 66 67 import com.jcorporate.expresso.core.dbobj.SecuredDBObject; 68 import com.jcorporate.expresso.core.i18n.Messages; 69 import com.jcorporate.expresso.core.misc.ConfigManager; 70 import com.jcorporate.expresso.core.misc.ConfigurationException; 71 import com.jcorporate.expresso.core.misc.CurrentLogin; 72 import com.jcorporate.expresso.core.misc.URLUTF8Encoder; 73 import com.jcorporate.expresso.ext.struts.taglib.bean.ExMessageTag; 74 import com.jcorporate.expresso.kernel.util.FastStringBuffer; 75 import org.apache.struts.config.ActionConfig; 76 77 import javax.servlet.jsp.JspTagException ; 78 import javax.servlet.jsp.JspWriter ; 79 import javax.servlet.jsp.PageContext ; 80 import javax.servlet.jsp.tagext.Tag ; 81 import javax.servlet.jsp.tagext.TagSupport ; 82 import java.io.IOException ; 83 import java.util.Locale ; 84 85 86 92 public class DBMaint 93 extends TagSupport { 94 private String dbobj; 95 private String label; 96 private String help; 97 private String definition; 98 99 103 private String mapping = "DBMaint.do"; 104 private String schemaClass = null; 105 106 public DBMaint() { 107 super(); 108 } 109 110 111 public int doStartTag() 112 throws javax.servlet.jsp.JspTagException { 113 114 schemaClass = null; 115 String dbName = "default"; 116 CurrentLogin cl = (CurrentLogin) pageContext.getAttribute(CurrentLogin.LOGIN_KEY, 117 PageContext.PAGE_SCOPE); 118 119 if (cl != null) { 120 dbName = cl.getDBName(); 121 } 122 123 ActionConfig dbMaintMapping = ConfigManager.getActionConfig(com.jcorporate.expresso 126 .services.controller.DBMaint.class.getName(), ""); 127 if (dbMaintMapping != null) { 128 mapping = dbMaintMapping.getPath().substring(1) + ".do"; 129 } 130 131 String contextPath = ConfigManager.getContextPath(); 132 String images = ""; 133 134 try { 135 images = ConfigManager.getContext(dbName).getImages(); 136 } catch (ConfigurationException ce) { 137 throw new JspTagException ("Configuration error:" + 138 ce.getMessage()); 139 } 140 try { 141 if (dbobj != null) { 142 JspWriter writer = pageContext.getOut(); 143 Locale l = (Locale ) pageContext.getAttribute(Messages.LOCALE_KEY, 144 PageContext.SESSION_SCOPE); 145 146 if (l == null) { 147 l = Locale.getDefault(); 148 } 149 150 String useLabel = null; 151 152 String definitionName = null; 153 if (getDefinition() != null) { 154 definitionName = URLUTF8Encoder.encode(this. 155 getDefinition()); 156 } 157 158 if (label == null) { 159 useLabel = getDBObjDescrip(l); 160 } else { 161 useLabel = label; 162 } 163 FastStringBuffer fsb = FastStringBuffer.getInstance(); 164 FastStringBuffer imageStart = FastStringBuffer.getInstance(); 165 try { 166 String listString = getString(l, "List"); 167 String addString = getString(l, "Add"); 168 String searchForString = getString(l, "SearchFor"); 169 fsb.append("<tr class=\"jc-default\">"); 170 fsb.append("<td scope=\"row\"><a HREF=\""); 171 fsb.append(contextPath); 172 fsb.append("/"); 173 fsb.append(mapping); 174 fsb.append("?dbobj="); 175 fsb.append(dbobj); 176 if (definitionName != null) { 177 fsb.append("&definition="); 178 fsb.append(definitionName); 179 } 180 fsb.append("&state=List\">"); 181 fsb.append(useLabel); 182 fsb.append("</a></td>"); 183 184 imageStart.append("<td align=\"center\" width=\"60\"><a HREF=\""); 185 imageStart.append(contextPath); 186 imageStart.append("/"); 187 imageStart.append(mapping); 188 imageStart.append("?dbobj="); 189 imageStart.append(dbobj); 190 if (definitionName != null) { 191 imageStart.append("&definition="); 192 imageStart.append(definitionName); 193 } 194 195 FastStringBuffer imageEnd = new FastStringBuffer(56); 196 imageEnd.append(" "); 197 imageEnd.append(useLabel); 198 imageEnd.append("\" border=\"0\" align=\"middle\"></a></td>"); 199 200 fsb.append(imageStart); 202 fsb.append("&state=List\"><img SRC=\""); 203 fsb.append(images); 204 fsb.append("/documentmag.png\" alt=\""); 205 fsb.append(listString); 206 fsb.append(imageEnd); 207 208 209 fsb.append(imageStart); 213 fsb.append("&state=Add\"><img SRC=\""); 214 fsb.append(images); 215 fsb.append("/add.png\" alt=\""); 216 fsb.append(addString); 217 fsb.append(imageEnd); 218 219 220 fsb.append(imageStart); 224 fsb.append("&state=Search\"><img SRC=\""); 225 fsb.append(images); 226 fsb.append("/search.png\" alt=\""); 227 fsb.append(searchForString); 228 fsb.append(imageEnd); 229 230 231 if (help != null) { 232 fsb.append("<td align=\"center\" width=\"60\"> <a HREF=\""); 233 fsb.append(help); 234 fsb.append("\" target=\"new\"><img SRC=\""); 235 fsb.append(images); 236 fsb.append("/help.png\" alt=\""); 237 fsb.append(getString(l, "generalHelpAbout")); 238 fsb.append(" "); 239 fsb.append(useLabel); 240 fsb.append("\" border=\"0\" align=\"middle\"></a></td>"); 241 242 243 } else { 244 fsb.append("<td> </td>"); 245 } 246 fsb.append("</tr>\n"); 247 248 writer.print(fsb.toString()); 249 } finally { 250 fsb.release(); 251 imageStart.release(); 252 } 253 } else { 254 throw new JspTagException ("No dbobj supplied"); 255 } 256 } catch (IOException ie) { 257 throw new JspTagException ("IO Exception:" + ie.getMessage()); 258 } 259 260 return Tag.SKIP_BODY; 261 } 262 263 public java.lang.String getDbobj() { 264 return dbobj; 265 } 266 267 public void setDbobj(java.lang.String newDbobj) { 268 dbobj = newDbobj; 269 } 270 271 public java.lang.String getLabel() { 272 return label; 273 } 274 275 public void setLabel(java.lang.String newLabel) { 276 label = newLabel; 277 } 278 279 public void setHelp(java.lang.String newHelp) { 280 help = newHelp; 281 } 282 283 public void setMapping(java.lang.String newMapping) { 284 if (mapping == null) { 285 mapping = "DBMaint.do"; 286 } else { 287 mapping = newMapping; 288 } 289 } 290 291 public String getHelp() { 292 return help; 293 } 294 295 public String getMapping() { 296 return mapping; 297 } 298 299 protected String getDBObjDescrip(Locale l) { 300 try { 301 SecuredDBObject sd = (SecuredDBObject) Class.forName(getDbobj()).newInstance(); 302 sd.setLocale(l); 303 304 return getString(l, sd.getMetaData().getDescription()); 305 } catch (Exception ee) { 306 return getDbobj(); 307 } 308 } 309 310 protected String getString(Locale l, String key) { 311 if (schemaClass == null) { 312 schemaClass = (String ) pageContext.getAttribute(ExMessageTag.SCHEMA_KEY, 313 PageContext.PAGE_SCOPE); 314 } 315 316 if (schemaClass != null) { 317 Object [] args = {}; 318 319 return Messages.getString(schemaClass, l, key, args); 320 } else { 321 return Messages.getString(l, key); 322 } 323 } 324 325 public String getDefinition() { 326 return definition; 327 } 328 329 public void setDefinition(String definition) { 330 this.definition = definition; 331 } 332 } 333 334 | Popular Tags |