<?xml version="1.0" encoding="ISO-8859-1"?>
<ss:description type="action" id="com.autodesk.XML.MoveFiles"
		xmlns:ss="urn:Autodesk:Server"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="urn:Autodesk:Server Schema.xsd">
	<ss:title>Move Files</ss:title>
	<ss:section>Files</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="directory">
			<ss:label>Destination Directory:</ss:label>
			<ss:tooltip>
				Enter a directory name to move the files into.
			</ss:tooltip>
			<ss:dirname/>
		</ss:option>
		<ss:option name="keepHierarchy">
			<ss:label>Keep Hierarchy</ss:label>
			<ss:tooltip>
				Keep the file hierarchy under the destination directory.
			</ss:tooltip>
			<ss:checkbox default="true"/>
		</ss:option>
		<ss:option name="overwrite">
			<ss:label>Overwrite Existing Files</ss:label>
			<ss:tooltip>
				Overwrite existing files in the target directory.
			</ss:tooltip>
			<ss:checkbox default="true"/>
		</ss:option>
	</ss:options>
	<ss:code>
import os
from com.autodesk.objects import FilesObject

# os.mkdirs() and os.renames() do not exist in the current version of
# jython, so I have to duplicate the functionality.
def mkdirs(dir):
	if dir != None and not os.path.isdir(dir):
		root = os.path.dirname(dir)
		mkdirs(root)
		os.mkdir(dir)

def move(srcDir, dstDir, file, keepHierarchy, overwrite):
	if keepHierarchy and srcDir != None and file.startswith(srcDir):
		dstFile = file[len(srcDir)+1:]
	else:
		(root, tail) = os.path.split(file)
		dstFile = tail

	dst = os.path.join(dstDir, dstFile)
	(root, tail) = os.path.split(dst)
	mkdirs(root)
	if overwrite or not os.path.exists(dst):
		try:
			os.rename(file, dst)
		except OSError:
			print "MoveFiles failed to move " + file + ". Cannot overwrite " + dst + "."
	else:
		 print "MoveFiles skipping " + file + " since " + dst + " exists and overwrite is false."

	return dst

def main(input, directory, keepHierarchy, overwrite):
	if input != None and directory != None:
		base = input.getBaseDirectory()
		if base == None:
			srcDir = None
		else:
			srcDir = base.getPath()

		files = input.getFiles()
		if files != None:
			results = []
			for file in files:
				if file != None:
					result = move(srcDir, directory, file.getPath(), keepHierarchy, overwrite)
					if result != None:
						results.append(result)

			return FilesObject(directory, results)
	return None

	</ss:code>
</ss:description>
