<?xml version="1.0" encoding="ISO-8859-1"?>
<ss:description type="action" id="com.autodesk.XML.TessellateFiles"
		xmlns:ss="urn:Autodesk:Server"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="urn:Autodesk:Server Schema.xsd">
	<ss:title>Tessellate Files (with journal file)</ss:title>
	<ss:section>Aruba</ss:section>
	<ss:input>com.autodesk.objects.FilesObject</ss:input>
	<ss:output>com.autodesk.objects.FilesObject</ss:output>
	<ss:options>
		<ss:label/>
		<ss:option name="settings">
			<ss:label>Select a tessellation settings file: </ss:label>
			<ss:tooltip>Choose a tessellation settings file to use in tessellating files.</ss:tooltip>
			<ss:filename>
				<ss:filter pattern=".*\.j">Journal Files</ss:filter>
			</ss:filename>
        </ss:option>
        <ss:option name="suffix">
			<ss:label>File Type</ss:label>
			<ss:tooltip>Choose a file type for output.</ss:tooltip>
			<ss:enumeration default="0">
				<ss:label value=".apf">Aruba Packet File</ss:label>
				<ss:label value=".wire">Alias Wire File</ss:label>
			</ss:enumeration>
		</ss:option>
	</ss:options>
	<ss:code>
import os
from com.autodesk.workflows import Autodesk
from com.autodesk.objects import FilesObject
from java.io import File

def access(filename):
	# os.access() isn't implemented in this version of jython so I
	# have to work around this absence. This could be beefed up to
	# support R_OK et al.
	file = File(filename)
	return file.canRead()

def tessellate(srcFile, dstFile, settings):
	# Check that the given file actually exists.
	if not access(srcFile):
		print "Error: Unable to read " + srcFile + "."
		return 0

	if not access(settings):
		print "Error: Unable to find " + settings + "."
		return 0

	response = Autodesk.tessellate(srcFile, dstFile, settings)
	if response == None:
		print "Error: No response from tessellator."
		return 0

	status = response.getJobExitValue()
	if status == 2:
		print "Error: Tessellation failed due to an internal error."
		print response.getJobStdout()
		print response.getJobStderr()
		return 0

	if status == 6:
		print "Error: No license for tessellations."
		return 0

	if not access(dstFile):
		print "Error: Failed to tessellate " + srcFile + "."
		return 0

	return 1

def tessellateFile(file, settings, suffix):
	if file == None:
		return None

	src = file.getPath()
	if not os.path.isfile(src):
		return None

	(root,ext) = os.path.splitext(src)
	dst = root + suffix

	if tessellate(src, dst, settings):
		return dst
	else:
		return None

def main(input, settings, suffix):
	if input != None:
		base = input.getBaseDirectory()
		if base == None:
			baseStr = None
		else:
			baseStr = base.getPath()
		files = input.getFiles()
		results = []
		if files != None:
			for file in files:
				if file != None:
					result = tessellateFile(file, settings, suffix)
					if result != None:
						results.append(result)

			if len(results) > 0:
				return FilesObject(baseStr, results)
	return None

	</ss:code>
</ss:description>
