Advanced file-based scripting

Advanced file-based scripting

Norsk

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

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

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

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.