package jpaoletti.jpm.struts;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import jpaoletti.jpm.core.EntitySupport;
import jpaoletti.jpm.core.Field;
import jpaoletti.jpm.core.PMContext;
import jpaoletti.jpm.core.PMCoreConstants;
import jpaoletti.jpm.core.PMSession;
import jpaoletti.jpm.core.PresentationManager;
/**
* Helper class for internal use.
*
* @author jpaoletti
* @see EntitySupport
*/
public class PMEntitySupport extends EntitySupport implements PMCoreConstants, PMStrutsConstants {
private String context_path;
private static PMEntitySupport instance;
private HttpServletRequest request;
public static final Map<String, String> htmlConversions = new HashMap<String, String>();
/* TODO Externalize this values into a resource */
static {
htmlConversions.put("á", "á");
htmlConversions.put("é", "é");
htmlConversions.put("í", "í");
htmlConversions.put("ó", "ó");
htmlConversions.put("ú", "ú");
htmlConversions.put("Á", "Á");
htmlConversions.put("É", "É");
htmlConversions.put("Í", "Í");
htmlConversions.put("Ó", "Ó");
htmlConversions.put("Ú", "Ú");
htmlConversions.put("ñ", "ñ");
htmlConversions.put("Ñ", "Ñ");
htmlConversions.put("º", "º");
htmlConversions.put("ª", "ª");
htmlConversions.put("ü", "ü");
htmlConversions.put("Ü", "Ü");
htmlConversions.put("ç", "ç");
htmlConversions.put("Ç", "Ç");
}
/**
* Singleton getter
*
* @return The PMEntitySupport
*/
public synchronized static PMEntitySupport getInstance() {
if (instance == null) {
instance = new PMEntitySupport();
}
return instance;
}
public PMSession getPMSession() throws PMStrutsException {
if (request == null) {
throw new PMStrutsException("request.not.found");
}
return (PMSession) request.getSession().getAttribute(PMSESSION);
}
/**
* Setter for context path
*
* @param context_path The context_path
*/
public void setContext_path(String context_path) {
this.context_path = context_path;
}
/**
* Getter for context path
*
* @return The context_path
*/
public String getContext_path() {
return context_path;
}
@Deprecated
public HttpServletRequest getRequest() {
return request;
}
@Deprecated
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public String getWelcomePage() {
return PresentationManager.getPm().getCfg().getProperty("welcome-page", "pages/welcome.jsp");
}
@Deprecated
public PMContext prepareForConversion(Field field, Object item, Object field_value) {
final PMContext ctx = (PMContext) request.getAttribute(PM_CONTEXT);
ctx.setField(field);
if (field_value != null) {
ctx.setFieldValue(field_value);
} else {
ctx.setFieldValue(ctx.getPresentationManager().get(item, field.getProperty()));
}
ctx.setEntityInstance(item);
request.setAttribute("ctx", ctx);
return ctx;
}
public static String toHtml(final String s) {
if (s == null) {
return null;
}
if ("true".equalsIgnoreCase(PresentationManager.getPm().getCfg().getProperty("html-convert", "true"))) {
String tmp = s;
for (Map.Entry<String, String> entry : htmlConversions.entrySet()) {
tmp = tmp.replace(entry.getKey(), entry.getValue());
}
return tmp;
} else {
return s;
}
}
/**
* Getter for PMSession from http session
*/
public static PMSession getPMSession(final HttpServletRequest request) {
return (PMSession) request.getSession().getAttribute(PMSESSION);
}
/**
* @return The actual template path
*/
public String getTemplatePath() {
return getContext_path() + "/templates/" + PresentationManager.getPm().getTemplate() + "/";
}
public String getCssMode() {
return getPm().getCfg().getProperty("css", "css");
}
}