package tundra; // -----( IS Java Code Template v1.2 // -----( CREATED: 2017-05-06 15:48:41 EST // -----( ON-HOST: 192.168.66.129 import com.wm.data.*; import com.wm.util.Values; import com.wm.app.b2b.server.Service; import com.wm.app.b2b.server.ServiceException; // --- <<IS-START-IMPORTS>> --- import java.io.IOException; import java.io.FilenameFilter; import java.math.BigInteger; import permafrost.tundra.data.IDataHelper; import permafrost.tundra.io.DirectoryHelper; import permafrost.tundra.io.DirectoryLister; import permafrost.tundra.io.DirectoryListing; import permafrost.tundra.io.FileHelper; import permafrost.tundra.io.filter.AndFilenameFilter; import permafrost.tundra.io.filter.ConditionalFilenameFilter; import permafrost.tundra.io.filter.ExclusionFilenameFilter; import permafrost.tundra.io.filter.InclusionFilenameFilter; import permafrost.tundra.io.filter.FilenameFilterType; import permafrost.tundra.lang.ArrayHelper; import permafrost.tundra.lang.BooleanHelper; import permafrost.tundra.lang.ExceptionHelper; import permafrost.tundra.math.BigIntegerHelper; import permafrost.tundra.math.IntegerHelper; import permafrost.tundra.math.LongHelper; import permafrost.tundra.time.DurationHelper; // --- <<IS-END-IMPORTS>> --- public final class directory { // ---( internal utility methods )--- final static directory _instance = new directory(); static directory _newInstance() { return new directory(); } static directory _cast(Object o) { return (directory)o; } // ---( server methods )--- public static final void compact (IData pipeline) throws ServiceException { // --- <<IS-START(compact)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [i] field:0:optional $delete? {"false","true"} // [i] field:0:optional $raise? {"false","true"} IDataCursor cursor = pipeline.getCursor(); boolean raise = false; try { String directory = IDataHelper.get(cursor, "$directory", String.class); boolean deleteSelf = IDataHelper.getOrDefault(cursor, "$delete?", Boolean.class, false); raise = IDataHelper.getOrDefault(cursor, "$raise?", Boolean.class, false); DirectoryHelper.compact(FileHelper.construct(directory), deleteSelf); } catch(IOException ex) { if (raise) ExceptionHelper.raise(ex); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void create (IData pipeline) throws ServiceException { // --- <<IS-START(create)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [i] field:0:optional $raise? {"false","true"} IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); boolean raise = IDataHelper.getOrDefault(cursor, "$raise?", Boolean.class, false); DirectoryHelper.create(directory, raise); } catch(IOException ex) { ExceptionHelper.raise(ex); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void exists (IData pipeline) throws ServiceException { // --- <<IS-START(exists)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [o] field:0:required $exists? IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); IDataHelper.put(cursor, "$exists?", DirectoryHelper.exists(directory), String.class); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void gzip (IData pipeline) throws ServiceException { // --- <<IS-START(gzip)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [i] field:0:optional $duration // [i] field:0:optional $duration.pattern {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [i] field:1:optional $filter.inclusions // [i] field:1:optional $filter.exclusions // [i] field:0:optional $filter.type {"regular expression","wildcard","literal"} // [i] field:0:optional $recurse? {"false","true"} // [i] field:0:optional $replace? {"false","true"} // [o] field:0:required $count IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); String duration = IDataHelper.get(cursor, "$duration", String.class); String pattern = IDataHelper.get(cursor, "$duration.pattern", String.class); String[] inclusions = IDataHelper.get(cursor, "$filter.inclusions", String[].class); String[] exclusions = IDataHelper.get(cursor, "$filter.exclusions", String[].class); FilenameFilterType type = IDataHelper.get(cursor, "$filter.type", FilenameFilterType.class); boolean recurse = IDataHelper.getOrDefault(cursor, "$recurse?", Boolean.class, false); boolean replace = IDataHelper.getOrDefault(cursor, "$replace?", Boolean.class, false); ConditionalFilenameFilter filter = null; if (inclusions != null || exclusions != null) { filter = new AndFilenameFilter(); if (inclusions != null) { filter.add(new InclusionFilenameFilter(type, inclusions)); } if (exclusions != null) { filter.add(new ExclusionFilenameFilter(type, exclusions)); } } long count = DirectoryHelper.gzip(FileHelper.construct(directory), DurationHelper.parse(duration, pattern), filter, recurse, replace); IDataHelper.put(cursor, "$count", count, String.class); } catch(IOException ex) { ExceptionHelper.raise(ex); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void join (IData pipeline) throws ServiceException { // --- <<IS-START(join)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:optional $parent // [i] field:1:optional $children // [o] field:0:optional $uri IDataCursor cursor = pipeline.getCursor(); try { String parent = IDataHelper.get(cursor, "$parent", String.class); String[] children = IDataHelper.get(cursor, "$children", String[].class); if (children == null) { String child = IDataHelper.get(cursor, "$child", String.class); if (child != null) { children = new String[1]; children[0] = child; } } if (parent != null) { children = ArrayHelper.prepend(children, parent, String.class); } String path = DirectoryHelper.join(children); IDataHelper.put(cursor, "$uri", path, false); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void list (IData pipeline) throws ServiceException { // --- <<IS-START(list)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [i] field:1:optional $filter.inclusions // [i] field:1:optional $filter.exclusions // [i] field:0:optional $filter.type {"regular expression","wildcard","literal"} // [i] field:0:optional $recurse? {"false","true"} // [o] field:1:required $directories // [o] field:0:required $directories.length // [o] field:1:required $files // [o] field:0:required $files.length IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); String[] inclusions = IDataHelper.get(cursor, "$filter.inclusions", String[].class); String[] exclusions = IDataHelper.get(cursor, "$filter.exclusions", String[].class); FilenameFilterType type = IDataHelper.get(cursor, "$filter.type", FilenameFilterType.class); boolean recurse = IDataHelper.getOrDefault(cursor, "$recurse?", Boolean.class, false); ConditionalFilenameFilter filter = null; if (inclusions != null || exclusions != null) { filter = new AndFilenameFilter(); if (inclusions != null) { filter.add(new InclusionFilenameFilter(type, inclusions)); } if (exclusions != null) { filter.add(new ExclusionFilenameFilter(type, exclusions)); } } else { // support $pattern and $mode for backwards-compatibility String pattern = IDataUtil.getString(cursor, "$pattern"); String mode = IDataUtil.getString(cursor, "$mode"); if (pattern != null) { filter = new InclusionFilenameFilter(FilenameFilterType.normalize(mode), pattern); } } DirectoryLister lister = new DirectoryLister(directory, filter, recurse); DirectoryListing listing = lister.list(); String[] directories = listing.listDirectoriesAsStringArray(); String[] files = listing.listFilesAsStringArray(); IDataHelper.put(cursor, "$directories", directories); IDataHelper.put(cursor, "$directories.length", directories.length, String.class); IDataHelper.put(cursor, "$files", files); IDataHelper.put(cursor, "$files.length", files.length, String.class); } catch(IOException ex) { ExceptionHelper.raise(ex); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void ls (IData pipeline) throws ServiceException { // --- <<IS-START(ls)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [o] field:1:required $list IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); IDataHelper.put(cursor, "$list", DirectoryHelper.list(directory)); } catch(IOException ex) { ExceptionHelper.raise(ex); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void normalize (IData pipeline) throws ServiceException { // --- <<IS-START(normalize)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [o] field:0:required $directory IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); IDataHelper.put(cursor, "$directory", FileHelper.normalize(directory)); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void purge (IData pipeline) throws ServiceException { // --- <<IS-START(purge)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [i] field:0:optional $duration // [i] field:0:optional $duration.pattern {"xml","milliseconds","seconds","minutes","hours","days","weeks","months","years"} // [i] field:1:optional $filter.inclusions // [i] field:1:optional $filter.exclusions // [i] field:0:optional $filter.type {"regular expression","wildcard","literal"} // [i] field:0:optional $recurse? {"false","true"} // [o] field:0:required $count IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); String duration = IDataHelper.get(cursor, "$duration", String.class); String pattern = IDataHelper.get(cursor, "$duration.pattern", String.class); String[] inclusions = IDataHelper.get(cursor, "$filter.inclusions", String[].class); String[] exclusions = IDataHelper.get(cursor, "$filter.exclusions", String[].class); FilenameFilterType type = IDataHelper.get(cursor, "$filter.type", FilenameFilterType.class); boolean recurse = IDataHelper.getOrDefault(cursor, "$recurse?", Boolean.class, false); ConditionalFilenameFilter filter = null; if (inclusions != null || exclusions != null) { filter = new AndFilenameFilter(); if (inclusions != null) { filter.add(new InclusionFilenameFilter(type, inclusions)); } if (exclusions != null) { filter.add(new ExclusionFilenameFilter(type, exclusions)); } } long count = DirectoryHelper.purge(directory, DurationHelper.parse(duration, pattern), filter, recurse); IDataHelper.put(cursor, "$count", count, String.class); } catch(IOException ex) { ExceptionHelper.raise(ex); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void reflect (IData pipeline) throws ServiceException { // --- <<IS-START(reflect)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [o] record:0:required $directory.properties // [o] - field:0:required exists? // [o] - field:0:optional parent // [o] - field:0:optional name // [o] - field:0:optional modified // [o] - field:0:required uri IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); IDataHelper.put(cursor, "$directory.properties", FileHelper.getPropertiesAsIData(directory)); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void remove (IData pipeline) throws ServiceException { // --- <<IS-START(remove)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [i] field:0:optional $recurse? {"false","true"} IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); boolean recurse = IDataHelper.getOrDefault(cursor, "$recurse?", Boolean.class, false); DirectoryHelper.remove(directory, recurse); } catch(IOException ex) { ExceptionHelper.raise(ex); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void rename (IData pipeline) throws ServiceException { // --- <<IS-START(rename)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory.source // [i] field:0:required $directory.target IDataCursor cursor = pipeline.getCursor(); try { String source = IDataHelper.get(cursor, "$directory.source", String.class); String target = IDataHelper.get(cursor, "$directory.target", String.class); DirectoryHelper.rename(source, target); } catch(IOException ex) { ExceptionHelper.raise(ex); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void size (IData pipeline) throws ServiceException { // --- <<IS-START(size)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [i] field:0:optional $recurse? {"false","true"} // [o] field:0:required $size IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); boolean recurse = IDataHelper.getOrDefault(cursor, "$recurse?", Boolean.class, false); BigInteger totalSize = DirectoryHelper.size(directory, recurse); IDataHelper.put(cursor, "$size", totalSize, String.class); } catch(IOException ex) { ExceptionHelper.raise(ex); } finally { cursor.destroy(); } // --- <<IS-END>> --- } public static final void squeeze (IData pipeline) throws ServiceException { // --- <<IS-START(squeeze)>> --- // @subtype unknown // @sigtype java 3.5 // [i] field:0:required $directory // [i] field:0:required $size.required // [i] field:1:optional $filter.inclusions // [i] field:1:optional $filter.exclusions // [i] field:0:optional $filter.type {"regular expression","wildcard","literal"} // [i] field:0:optional $recurse? {"false","true"} // [o] field:0:required $size.squeezed IDataCursor cursor = pipeline.getCursor(); try { String directory = IDataHelper.get(cursor, "$directory", String.class); BigInteger size = IDataHelper.get(cursor, "$size.required", BigInteger.class); // support $size for backwards-compatibility if (size == null) size = IDataHelper.get(cursor, "$size", BigInteger.class); String[] inclusions = IDataHelper.get(cursor, "$filter.inclusions", String[].class); String[] exclusions = IDataHelper.get(cursor, "$filter.exclusions", String[].class); FilenameFilterType type = IDataHelper.get(cursor, "$filter.type", FilenameFilterType.class); boolean recurse = IDataHelper.getOrDefault(cursor, "$recurse?", Boolean.class, false); ConditionalFilenameFilter filter = null; if (inclusions != null || exclusions != null) { filter = new AndFilenameFilter(); if (inclusions != null) { filter.add(new InclusionFilenameFilter(type, inclusions)); } if (exclusions != null) { filter.add(new ExclusionFilenameFilter(type, exclusions)); } } size = DirectoryHelper.squeeze(directory, size, filter, recurse); IDataHelper.put(cursor, "$size.squeezed", size, String.class); } catch(IOException ex) { ExceptionHelper.raise(ex); } finally { cursor.destroy(); } // --- <<IS-END>> --- } }