system:/Connectors/ibmdi.ScriptConnector Iterator Enabled [parent]
directory subfolders orderby direction General ascending descending droplist ascending descending Sort direction droplist false Directory Script selectGlobalProlog Edit Script path name size last modified date Order by droplist Search subfolders boolean directory subfolders direction orderby $GLOBAL.script
]]>
false descending C:\Temp last modified date Scanning " + fName); if (fObj == null) throw "Scan directory/file (" + fName + ") not found" else if (fObj.isFile()) { fileIndex++; filePath[fileIndex] = fObj.getCanonicalPath() fileName[fileIndex] = fObj.getName(); fileSize[fileIndex] = fObj.length(); lastModList[fileIndex] = fObj.lastModified(); switch (sortBy.substring(0,1)) { case 'n' /*name*/: key = fileName[fileIndex]; break; case 'p' /*path*/: key = filePath[fileIndex]; break; case 's' /*size*/ : key = rj(fileSize[fileIndex],20) + filePath[fileIndex]; break; default /*date*/: key = rj(lastModList[fileIndex],40) + filePath[fileIndex]; } sortMap.put(key, fileIndex); logmsg("@@ fileIndex: " + fileIndex + " key: '" + key + "'"); } else if (fObj.isDirectory() && (recurse || depth == 0)) { var contents = fObj.listFiles(); if (contents != null) for (var i = 0; i < contents.length; i++) getScanList(contents[i], depth+1); } } function selectEntries() { logmsg("** FileScan scanning " + baseDir + " ..."); getScanList(baseDir, 0); sortedKeys = sortMap.keySet().toArray(); logmsg("** " + (fileIndex) + " file(s) found"); sortIndex = 0; } function getNextEntry () { var next = ""; if (sortIndex >= sortedKeys.length) { result.setStatus (0); result.setMessage ("End of input"); return; } if (direction.startsWith("a")) // ascending fileIndex = sortMap.get(sortedKeys[sortIndex++]) else fileIndex = sortMap.get(sortedKeys[sortedKeys.length - (++sortIndex)]) entry.setAttribute("filePath", filePath[fileIndex]); entry.setAttribute("fileName", fileName[fileIndex]); entry.setAttribute("fileLastModified", new java.util.Date(lastModList[fileIndex])); entry.setAttribute("fileIndex", new java.lang.Integer(sortIndex)); entry.setAttribute("fileSize", new java.lang.Long(fileSize[fileIndex])); entry.setAttribute("scanTime", scanTime); entry.setAttribute("fileCount", new java.lang.Integer(sortedKeys.length - 1)); fileIndex++; } // Test script below for use inside a test AL /* selectEntries(); entry = system.newEntry; work.merge(getNextEntry()) */]]> true
[parent] [parent] [parent] [parent] [parent] After every database operation SERIALIZABLE DETECT_ALL [parent] fileCount java.lang.Integer fileIndex java.lang.Integer fileLastModified java.util.Date fileName java.lang.String filePath java.lang.String fileSize java.lang.Long scanTime java.util.Date [parent] fileCount java.lang.Integer fileIndex java.lang.Integer fileLastModified java.util.Date fileName java.lang.String filePath java.lang.String fileSize java.lang.Long scanTime java.util.Date [parent] [parent] [parent] [parent] false 0 0 0 1 0 0