package jpaoletti.jpm.struts.converter;
import jpaoletti.jpm.converter.ConverterException;
import jpaoletti.jpm.core.Entity;
import jpaoletti.jpm.core.EntityContainer;
import jpaoletti.jpm.core.PMContext;
import jpaoletti.jpm.core.message.MessageFactory;
/**
* Converter for weak entities.
*
* Properties:
*
* <b>weak-entity</b> Id of the weak entity
* <b>show-list</b> If true (default) show the list of items
* <b>show-modify</b> If true (default) show a button to edit screen
* <b>button-text</b> Key for button text
* <b>button-style</b> Button Style
*
* @author jpaoletti
*/
public class WeakConverter extends StrutsEditConverter {
@Override
public String visualize(PMContext ctx) throws ConverterException {
final String weakEntityId = getConfig("weak-entity");
final EntityContainer weakContainer = ctx.getEntityContainer(weakEntityId);
if (weakContainer == null) {
throw new ConverterException(MessageFactory.error(ctx.getEntity(), ctx.getField(), "weak.entity.not.found", weakEntityId));
} else {
final Entity weak = weakContainer.getEntity();
final StringBuilder sb = new StringBuilder();
sb.append("weak_converter.jsp?weakid=");
sb.append(weakEntityId);
sb.append("&showlist=");
sb.append(getConfig("show-list", "true"));
sb.append("&addInstanceId=");
sb.append(getConfig("add-instance-id", "false"));
sb.append("&showbutton=");
sb.append(getConfig("show-modify", "true"));
sb.append("&property=");
sb.append(ctx.getField().getProperty());
sb.append("&buttontext=");
sb.append(getConfig("button-text", "pm.struts.weak.converter.edit"));
sb.append("&buttonstyle=");
sb.append(getConfig("button-style", "icon-th-list"));
ctx.put("weakContainer", weakContainer);
ctx.put("weak", weak);
ctx.put("woperation", weak.getOperations().getOperation("list"));
return super.visualize(sb.toString());
}
}
}