package edu.ualr.oyster.gui;
import java.util.ArrayList;
import edu.ualr.oyster.gui.OysterEnum.IdentityInputType;
import edu.ualr.oyster.gui.OysterEnum.IdentityOutputType;
import edu.ualr.oyster.gui.OysterEnum.LinkOutputType;
import edu.ualr.oyster.gui.core.OysterAttributes;
import edu.ualr.oyster.gui.core.OysterReferenceItem;
import edu.ualr.oyster.gui.core.OysterReferenceSource;
import edu.ualr.oyster.gui.core.OysterRunScript;
public class XMLFormer {
public String FormAttributes(OysterRunScript.Comments commentSourceDescriptor, OysterAttributes attributes){
StringBuffer attributesXML = new StringBuffer("");
attributesXML.delete(0, attributesXML.length());
attributesXML.append( FormComments(commentSourceDescriptor) );
return attributesXML.toString();
}
public String FormSourceDescriptor(OysterRunScript.Comments commentSourceDescriptor, OysterReferenceSource oysterReferenceSource){
StringBuffer sourceDescriptorXML = new StringBuffer("");
sourceDescriptorXML.delete(0, sourceDescriptorXML.length());
sourceDescriptorXML.append( FormComments(commentSourceDescriptor) );
// <OysterRunScript> start Tag
sourceDescriptorXML.append("<OysterSourceDescriptor>");
sourceDescriptorXML.append("\n");
sourceDescriptorXML.append(" ");
sourceDescriptorXML.append("<!-- Types of Sources (Only one can be defined) -->");
sourceDescriptorXML.append("\n");
sourceDescriptorXML.append(" ");
String sourceType = oysterReferenceSource.getSourceType();
if (sourceType == "Database") {
sourceDescriptorXML.append("<Source Type=\"Database\" SID=\"" + oysterReferenceSource.getSid() + "\" UserID=\""
+ oysterReferenceSource.getUserID() + "\" Passwd=\"" + oysterReferenceSource.getPasswd() + "\" CType=\""
+ oysterReferenceSource.getConnectionType() + "\">" + oysterReferenceSource.getTable() + "</Source>");
} else if (sourceType == "FileFixed") {
sourceDescriptorXML
.append("<Source Type=\"FileFixed\">"
+ oysterReferenceSource.getSourcePath()
+ "</Source>");
} else if (sourceType == "FileDelim") {
String label;
if(oysterReferenceSource.isLabel())
label = "Y";
else
label = "N";
sourceDescriptorXML.append("<Source Type=\"FileDelim\" Char=\""
+ oysterReferenceSource.getDelimiter()
+ "\" Qual=\""
+ oysterReferenceSource.getQualifier()
+ "\" Labels=\"" + label + "\">"
+ oysterReferenceSource.getSourcePath()
+ "</Source>");
}
sourceDescriptorXML.append("\n");
sourceDescriptorXML.append("\n");
sourceDescriptorXML.append(" ");
sourceDescriptorXML.append("<!-- Items in Source (One for each item in the source including reference identifier) -->");
sourceDescriptorXML.append("\n");
sourceDescriptorXML.append(" ");
sourceDescriptorXML.append("<ReferenceItems>");
sourceDescriptorXML.append("\n");
// Add Items
sourceDescriptorXML.append(" ");
ArrayList<OysterReferenceItem> oysterReferenceItem = oysterReferenceSource
.getOysterReferenceItems();
if ( sourceType == "Database") {
for (int i = 0; i < oysterReferenceItem.size(); i++) {
sourceDescriptorXML.append(" ");
sourceDescriptorXML.append("<Item Name=\""
+ oysterReferenceItem.get(i).getName());
sourceDescriptorXML.append("\" Attribute=\""
+ oysterReferenceItem.get(i).getAttribute());
sourceDescriptorXML.append("\"/>");
sourceDescriptorXML.append("\n");
sourceDescriptorXML.append(" ");
}
} else if ( sourceType == "FileFixed" ) {
for (int i = 0; i < oysterReferenceItem.size(); i++) {
sourceDescriptorXML.append(" ");
sourceDescriptorXML.append("<Item Name=\""
+ oysterReferenceItem.get(i).getName());
sourceDescriptorXML.append("\" Attribute=\""
+ oysterReferenceItem.get(i).getAttribute());
sourceDescriptorXML.append("\" Start=\""
+ oysterReferenceItem.get(i).getStart());
sourceDescriptorXML.append("\" End=\""
+ oysterReferenceItem.get(i).getEnd());
sourceDescriptorXML.append("\"/>");
sourceDescriptorXML.append("\n");
sourceDescriptorXML.append(" ");
}
} else if ( sourceType == "FileDelim" ) {
for (int i = 0; i < oysterReferenceItem.size(); i++) {
sourceDescriptorXML.append(" ");
sourceDescriptorXML.append("<Item Name=\""
+ oysterReferenceItem.get(i).getName());
sourceDescriptorXML.append("\" Attribute=\""
+ oysterReferenceItem.get(i).getAttribute());
sourceDescriptorXML.append("\" Pos=\""
+ oysterReferenceItem.get(i).getPos());
sourceDescriptorXML.append("\"/>");
sourceDescriptorXML.append("\n");
sourceDescriptorXML.append(" ");
}
}
sourceDescriptorXML.append("</ReferenceItems>");
sourceDescriptorXML.append("\n");
sourceDescriptorXML.append("</OysterSourceDescriptor>");
return sourceDescriptorXML.toString();
}
public String FormRun(OysterRunScript.Comments commentRunScript,
OysterRunScript.LogSettings logSettings, OysterRunScript.LogFile logFile, OysterRunScript.AttributePath attributePath,
OysterRunScript.EREngine erEngine, OysterRunScript.IdentityInput identityInput,OysterRunScript.IdentityOutput identityOutput,
OysterRunScript.LinkOutput linkOutput, OysterTable tableRunScript_ReferenceSources){
StringBuffer runXML = new StringBuffer("");
runXML.delete(0, runXML.length());
runXML.append( FormComments(commentRunScript) );
// clear the StringBuffer content
runXML.delete(0, runXML.length());
// XML Declaration and Comments
runXML.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
runXML.append("\n");
runXML.append("<!--");
runXML.append("\n");
runXML.append(" ");
runXML.append("Document: ");
runXML.append(commentRunScript.getDocument());
runXML.append("\n");
runXML.append(" ");
runXML.append("Created on: ");
runXML.append(commentRunScript.getCreatedOn());
runXML.append("\n");
runXML.append(" ");
runXML.append("Author: ");
runXML.append(commentRunScript.getAuthor());
runXML.append("\n");
runXML.append(" ");
runXML.append("Description: ");
runXML.append(commentRunScript.getDescription());
runXML.append("\n");
runXML.append("-->");
runXML.append("\n");
// <OysterRunScript> start Tag
runXML.append("<OysterRunScript>");
runXML.append("\n");
// Log Settings
runXML.append(" ");
runXML.append("<Settings Explanation=\""
+ logSettings.getLogExplanation() + "\" Debug=\""
+ logSettings.getLogDebug() + "\" />");
runXML.append("\n");
runXML.append(" ");
runXML.append(" ");
runXML.append(" ");
runXML.append("<LogFile Num=\"").append(logFile.getNum())
.append("\" Size=\"").append(logFile.getSize()).append("\">")
.append(logFile.getLogDirectory())
.append("\\Run_%g.log</LogFile>");
// EREngine Type
runXML.append("\n");
runXML.append("\n");
runXML.append(" ");
runXML.append("<EREngine Type=\"")
.append(erEngine.getType()).append("\" />");
// Attributes Path
runXML.append("\n");
runXML.append("\n");
runXML.append(" ");
runXML.append("<!-- Attributes read from file only -->");
runXML.append("\n");
runXML.append(" ");
runXML.append("<AttributePath>")
.append(attributePath.getAttributePath())
.append("</AttributePath>");
// Identity Input
runXML.append("\n");
runXML.append("\n");
runXML.append(" ");
runXML.append("<!-- Identity Input Selection -->");
runXML.append("\n");
runXML.append(" ");
if (identityInput.getType() == IdentityInputType.None) {
runXML.append("<IdentityInput Type=\""
+ IdentityInputType.None.toString() + "\">"
+ "</IdentityInput>");
} else if (identityInput.getType() == IdentityInputType.TextFile) {
runXML.append("<IdentityInput Type=\""
+ IdentityInputType.TextFile.toString() + "\">"
+ identityInput.getAbsolutePath() + "</IdentityInput>");
}
// else if (identityInput.getType() == IdentityInputType.Database) {
// runXML
// .append("<IdentityInput Type=\""
// + IdentityInputType.Database + "\" Server=\""
// + dbConfigIdentityInput.getServer() + "\" Port=\""
// + dbConfigIdentityInput.getPort() + "\" SID=\""
// + dbConfigIdentityInput.getSID() + "\" UserID=\""
// + dbConfigIdentityInput.getUserID()
// + "\" Passwd=\""
// + dbConfigIdentityInput.getPassword() + "\">"
// + dbConfigIdentityInput.getTableName()
// + "</IdentityInput>");
// }
// Identity Output
runXML.append("\n");
runXML.append("\n");
runXML.append(" ");
runXML
.append("<!-- Identity Output Selection (Only needed when CaptureMode=On) -->");
runXML.append("\n");
runXML.append(" ");
if (identityOutput.getType() == IdentityOutputType.None || identityOutput.getType() == null) {
runXML.append("<IdentityOutput Type=\""
+ IdentityOutputType.None.toString() + "\">"
+ "</IdentityOutput>");
} else if (identityOutput.getType() == IdentityOutputType.TextFile) {
runXML.append("<IdentityOutput Type=\""
+ IdentityOutputType.TextFile.toString() + "\">"
+ identityOutput.getAbsolutePath() + "</IdentityOutput>");
// + "\\IdentityOutput.idty</IdentityOutput>");
}
// Link Output
runXML.append("\n");
runXML.append("\n");
runXML.append(" ");
runXML
.append("<!-- Link Output Selection (Only needed when CaptureMode=On) -->");
runXML.append("\n");
runXML.append(" ");
if ( linkOutput.getAbsolutePath().trim().equals("Absolute Path to Oyster Link Output") || linkOutput.getAbsolutePath().trim().equals("") ){
}
else{
runXML.append("<LinkOutput Type=\""
+ LinkOutputType.TextFile.toString() + "\">"
+ linkOutput.getAbsolutePath()
// + "\\LinkOutput.link</LinkOutput>");
+ "</LinkOutput>");
}
// Reference Sources
runXML.append("\n");
runXML.append("\n");
runXML.append(" ");
runXML.append("<!-- Sources to Run -->");
runXML.append("\n");
runXML.append(" ");
runXML.append("<ReferenceSources>");
// Reference Items
for (int i = 0; i < tableRunScript_ReferenceSources.getRowCount(); i++) {
// if (tableRunScript_ReferenceSources.getValueAt(i, 0) != null)
String capture = "No";
if (tableRunScript_ReferenceSources.getValueAt(i, 0).toString() == "true") {
// CaptureMode
if (tableRunScript_ReferenceSources.getValueAt(i, 0) != null)
if (tableRunScript_ReferenceSources.getValueAt(i, 0)
.toString() == "true")
capture = "Yes";
}
// Path
runXML.append("\n");
runXML.append(" ");
runXML.append(" ");
runXML.append("<Source Capture=\"" + capture + "\">"
+ tableRunScript_ReferenceSources.getValueAt(i, 3)
+ "</Source>");
}
runXML.append("\n");
runXML.append(" ");
runXML.append("</ReferenceSources>");
runXML.append("\n");
runXML.append("</OysterRunScript>");
return runXML.toString();
}
public String FormComments(OysterRunScript.Comments commentDescriptor){
StringBuffer commentsXML = new StringBuffer("");
commentsXML.delete(0, commentsXML.length());
commentsXML.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
commentsXML.append("\n");
commentsXML.append("<!--");
commentsXML.append("\n");
commentsXML.append(" ");
commentsXML.append("Document: ");
commentsXML.append(commentDescriptor.getDocument());
commentsXML.append("\n");
commentsXML.append(" ");
commentsXML.append("Created on: ");
commentsXML.append(commentDescriptor.getCreatedOn());
commentsXML.append("\n");
commentsXML.append(" ");
commentsXML.append("Author: ");
commentsXML.append(commentDescriptor.getAuthor());
commentsXML.append("\n");
commentsXML.append(" ");
commentsXML.append("Description: ");
commentsXML.append(commentDescriptor.getDescription());
commentsXML.append("\n");
commentsXML.append("-->");
commentsXML.append("\n");
return commentsXML.toString();
}
}