/* OpenClinica is distributed under the GNU Lesser General Public License (GNU
* LGPL).
*
* For details see: http://www.openclinica.org/license copyright 2003-2005 Akaza
* Research
*
*/
package org.akaza.openclinica.bean.extract.odm;
import java.util.TreeSet;
import org.akaza.openclinica.bean.extract.ODMSASFormatNameValidator;
import org.akaza.openclinica.bean.extract.SasNameValidator;
import org.akaza.openclinica.bean.odmbeans.ODMBean;
import org.apache.commons.lang.StringEscapeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Create ODM XML document.
*
* @author ywang (May, 2008)
*/
public abstract class OdmXmlReportBean {
private String ODMVersion;
private StringBuffer xmlOutput;
private String xmlHeading;
private ODMBean odmbean;
private String indent;
private SasNameValidator sasNameValidator;
private ODMSASFormatNameValidator sasFormatValidator;
private TreeSet<String> uniqueNameTable;
private static String nls = System.getProperty("line.separator");
protected final Logger logger = LoggerFactory.getLogger(getClass().getName());
/**
* In this constructor, xmlHeading = "<?xml version=\"1.0\"
* encoding=\"UTF-8\"?>";
*/
public OdmXmlReportBean() {
xmlOutput = new StringBuffer();
xmlHeading = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
indent = " ";
// locale_df_string =
// ResourceBundleProvider.getFormatBundle().getString("date_format_string");
uniqueNameTable = new TreeSet<String>();
sasNameValidator = new SasNameValidator();
sasNameValidator.setUniqueNameTable(this.uniqueNameTable);
sasFormatValidator = new ODMSASFormatNameValidator();
sasFormatValidator.setUniqueNameTable(this.uniqueNameTable);
}
public abstract void createOdmXml(boolean isDataset);
public void addHeading() {
xmlOutput.append(this.xmlHeading);
xmlOutput.append(nls);
}
/**
* Append the beginning line of ODM root element
*
* @param odmXml
* @param odmbean
*/
public void addRootStartLine() {
String ov = odmbean.getODMVersion();
ov = ov.startsWith("oc") ? ov.substring(2) : ov;
xmlOutput.append("<ODM FileOID=\"" + StringEscapeUtils.escapeXml(odmbean.getFileOID()) + "\" Description=\""
+ StringEscapeUtils.escapeXml(odmbean.getDescription()) + "\" CreationDateTime=\"" + odmbean.getCreationDateTime() + "\" FileType=\""
+ odmbean.getFileType() + "\" ODMVersion=\"" + StringEscapeUtils.escapeXml(ov) + "\" ");
for (String s : odmbean.getXmlnsList()) {
xmlOutput.append(s + " ");
}
xmlOutput.append("xmlns:xsi=\"" + odmbean.getXsi() + "\" xsi:schemaLocation=\"" + odmbean.getSchemaLocation() + "\" >");
xmlOutput.append(nls);
}
public void addRootEndLine() {
xmlOutput.append("</ODM>");
}
@Override
public String toString() {
return xmlOutput.toString();
}
public StringBuffer getXmlOutput() {
return this.xmlOutput;
}
public void setXmlOutput(StringBuffer odmXml) {
this.xmlOutput = odmXml;
}
public String getXmlHeading() {
return this.xmlHeading;
}
public void setXmlHeading(String xmlheading) {
this.xmlHeading = xmlheading;
}
public void setOdmBean(ODMBean odmbean) {
this.odmbean = odmbean;
}
public ODMBean getOdmBean() {
return this.odmbean;
}
public void setSasNameValidator(SasNameValidator validator) {
this.sasNameValidator = validator;
}
public SasNameValidator getSasNameValidator() {
return this.sasNameValidator;
}
public void setSasFormatValidator(ODMSASFormatNameValidator validator) {
this.sasFormatValidator = validator;
}
public ODMSASFormatNameValidator getSasFormValidator() {
return this.sasFormatValidator;
}
public void setIndent(String indent) {
this.indent = indent;
}
public String getIndent() {
return this.indent;
}
public void setUniqueNameTable(TreeSet<String> nameTable) {
this.uniqueNameTable = nameTable;
}
public TreeSet<String> getUniqueNameTable() {
return this.uniqueNameTable;
}
public void setODMVersion(String ODMVersion) {
this.ODMVersion = ODMVersion;
}
public String getODMVersion() {
return this.ODMVersion;
}
}