package org.wso2.carbon.event.template.manager.core.structure.domain;
import org.wso2.carbon.event.template.manager.core.structure.domain.handler.TemplateHandler;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlMixed;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "template")
public class Template {
@XmlAttribute(name = "type")
private String type;
@XmlAnyElement(TemplateHandler.class)
@XmlMixed
private List<Object> content;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
private List<Object> getContent() {
return content;
}
private void setContent(List<Object> content) {
this.content = content;
}
public String getValue() {
if (this.content != null && !content.isEmpty()) {
StringBuilder builder = new StringBuilder();
for (Object obj : content) {
if (obj instanceof String) {
String contentItem = obj.toString();
if (!contentItem.trim().isEmpty()) {
builder.append(contentItem);
}
}
}
String value = builder.toString().trim();
// Remove duplicate xml entries
if (!value.isEmpty()) {
String[] elements = value.split("<\\?.*\\?>");
if (elements.length > 1) {
return elements[elements.length - 1];
} else {
return value;
}
}
}
return null;
}
}