Advanced file-based scripting
File-based scripting can be useful for instance for forms, text generators, generic services and in workflow activities. On this page are some sample scripts along with the file Object properties in Compose (which are also listed in the Properties of Objects available in script contexts documentation).
Property | Description |
---|---|
value | value represents a sub instance of the FileAnswerCtxObj class in file-based scripting. For generic service request variables, use the name of the request variable instead of value. General file answer context attributes: value.fileName
value.contentType
value.content.size() Text-based file answer context attributes: value.encoding
value.textReader
value.getTextReader("ISO-8859-1") XML-based file answer context attributes: value.encoding
value.textReader
value.getTextReader("ISO-8859-1")
value.XMLElements
value.XMLStreamReader
value.getXMLStreamReader("UTF-8") PDF-based answer context attributes: value.pdfVersion |
variablename | myFileVariable.contentAsBase64Encoded
myFileVariable.contentAsBytes |
Underneath are some sample scripts for file Objects:
Sample_1
// Text file specific operations
reader = value.getTextReader("ISO-8859-1");
def val = reader.readLine()
(val.contains("application.base.url") &&
value.encoding.equals("ISO-8859-1"))
// PDF file specific operations
(value.content.size() > 70000 &&
value.pdfVersion.equals("1.3") &&
value.fileName.equals("test.pdf") &&
value.contentType.equals("application/pdf"))
Sample_2
def line;
def reader = value.textReader;
while ((line = reader.readLine()) != null) {
if(line.contains("Test Value")) {
return true;
}
}
return false;
Sample_3
reader = value.getTextReader("UTF-8");
line = reader.read();
while(line!= -1){
line= reader.read();
}
Sample_4 - XMLReader
// XMLStreamReader
def xmlStreamReader = value.XMLStreamReader;
while (xmlStreamReader.hasNext()) {
if (xmlStreamReader.getEventType() == xmlStreamReader.START_ELEMENT) {
if (xmlStreamReader.getLocalName().equals("information")) {
return true;
}
} else if (xmlStreamReader.getEventType() == xmlStreamReader.CHARACTERS) {
if (xmlStreamReader.getText().equals("test")) {
return true;
}
}
xmlStreamReader.next()
}
return false;
// XMLElements
def reader = value.XMLElements;
def nodeList = reader.getElementsByTagName("title");
if (nodeList.item(0).getFirstChild().getNodeValue().equals("TestValue")) {
return true;
}
return false;
File-based scripting syntax for Text Generators
Property | Description |
---|---|
${form.Q5.answer.fileName} | Fetches the file name from a File Question in Form. |
${form.Q5.answer.contentType} | Gets the Content Type. |
${form.Q5.answer.encoding} | Gets the Encoding. |
<%
if (form.Q5.answer instanceof FileObj) {
//for any file obj this will be true
}
if (form.Q5.answer instanceof TextBasedFileObj) {
//for any text based file obj this will be true
}
if (form.Q5.answer instanceof BinaryFileObj) {
//for any binary file obj this will be true
}
if (form.Q5.answer instanceof PDFFileObj) {
//for any pdf file obj this will be true
}
if (form.Q5.answer instanceof XMLFileObj) {
//for any xml file obj this will be true
}
if (form.Q5.answer instanceof TextFileObj) {
//for any text file obj this will be true
}
%> | Instance checks for different file objects. |
Validation script syntax for file upload elements in the form builder
Property | Description |
---|---|
Q5.answer.content.size() | Returns the size of the content of the uploaded file. |
Q5.answer.fileName | Returns the file name from the file answer context instance. |
Q5.answer.contentType | Returns the file content type. |