package tundra;
// -----( IS Java Code Template v1.2
// -----( CREATED: 2017-05-06 15:51:46 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.Closeable;
import java.io.IOException;
import java.nio.charset.Charset;
import permafrost.tundra.data.IDataHelper;
import permafrost.tundra.io.CloseableHelper;
import permafrost.tundra.io.FileHelper;
import permafrost.tundra.io.InputStreamHelper;
import permafrost.tundra.io.OutputStreamHelper;
import permafrost.tundra.lang.BooleanHelper;
import permafrost.tundra.lang.CharsetHelper;
import permafrost.tundra.lang.ExceptionHelper;
import permafrost.tundra.lang.ObjectConvertMode;
import permafrost.tundra.lang.ObjectHelper;
import permafrost.tundra.math.LongHelper;
import permafrost.tundra.server.ServiceHelper;
// --- <<IS-END-IMPORTS>> ---
public final class file
{
// ---( internal utility methods )---
final static file _instance = new file();
static file _newInstance() { return new file(); }
static file _cast(Object o) { return (file)o; }
// ---( server methods )---
public static final void copy (IData pipeline)
throws ServiceException
{
// --- <<IS-START(copy)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file.source
// [i] field:0:required $file.target
// [i] field:0:optional $mode {"append","write"}
IDataCursor cursor = pipeline.getCursor();
try {
String source = IDataHelper.get(cursor, "$file.source", String.class);
String target = IDataHelper.get(cursor, "$file.target", String.class);
String mode = IDataHelper.get(cursor, "$mode", String.class);
FileHelper.copy(source, target, mode == null || mode.equalsIgnoreCase("append"));
} catch(IOException ex) {
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:optional $file
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
IDataHelper.put(cursor, "$file", FileHelper.create(file));
} catch(IOException ex) {
ExceptionHelper.raise(ex);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void executable (IData pipeline)
throws ServiceException
{
// --- <<IS-START(executable)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file
// [o] field:0:required $executable?
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
IDataHelper.put(cursor, "$executable?", FileHelper.isExecutable(file), String.class);
} 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 $file
// [o] field:0:required $exists?
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
IDataHelper.put(cursor, "$exists?", FileHelper.exists(file), 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 $file
// [i] field:0:optional $file.gzip
// [i] field:0:optional $replace? {"false","true"}
// [o] field:0:required $file.gzip
IDataCursor cursor = pipeline.getCursor();
try {
String source = IDataHelper.get(cursor, "$file", String.class);
String target = IDataHelper.get(cursor, "$file.gzip", String.class);
boolean replace = IDataHelper.getOrDefault(cursor, "$replace?", Boolean.class, false);
IDataHelper.put(cursor, "$file.gzip", FileHelper.gzip(source, target, replace));
} catch(IOException ex) {
ExceptionHelper.raise(ex);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void length (IData pipeline)
throws ServiceException
{
// --- <<IS-START(length)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file
// [o] field:0:required $length
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
IDataHelper.put(cursor, "$length", FileHelper.length(file), String.class);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void match (IData pipeline)
throws ServiceException
{
// --- <<IS-START(match)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file
// [i] field:0:required $pattern
// [i] field:0:optional $mode {"regular expression","wildcard"}
// [o] field:0:required $match?
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
String pattern = IDataHelper.get(cursor, "$pattern", String.class);
String mode = IDataHelper.get(cursor, "$mode", String.class);
IDataHelper.put(cursor, "$match?", FileHelper.match(file, pattern, mode == null || mode.equalsIgnoreCase("regular expression") || mode.equalsIgnoreCase("regex")), String.class);
} 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 $file
// [o] field:0:required $file
IDataCursor cursor = pipeline.getCursor();
try {
IDataHelper.put(cursor, "$file", FileHelper.normalize(IDataHelper.get(cursor, "$file", String.class)));
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void process (IData pipeline)
throws ServiceException
{
// --- <<IS-START(process)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file
// [i] field:0:optional $mode {"read","append","write"}
// [i] field:0:required $service
// [i] record:0:optional $pipeline
// [i] field:0:optional $service.input
// [o] record:0:optional $pipeline
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
String mode = IDataHelper.get(cursor, "$mode", String.class);
String service = IDataHelper.get(cursor, "$service", String.class);
String input = IDataHelper.get(cursor, "$service.input", String.class);
IData scope = IDataHelper.get(cursor, "$pipeline", IData.class);
boolean scoped = scope != null;
scope = process(file, mode, service, input, scoped? scope : pipeline);
if (scoped) IDataHelper.put(cursor, "$pipeline", scope);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void read (IData pipeline)
throws ServiceException
{
// --- <<IS-START(read)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file
// [i] field:0:optional $mode {"stream","bytes","string"}
// [i] field:0:optional $encoding
// [o] object:0:required $content
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
Charset charset = IDataHelper.get(cursor, "$encoding", Charset.class);
ObjectConvertMode mode = IDataHelper.get(cursor, "$mode", ObjectConvertMode.class);
IDataHelper.put(cursor, "$content", ObjectHelper.convert(FileHelper.readToBytes(file), charset, mode));
} catch(IOException ex) {
ExceptionHelper.raise(ex);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void readable (IData pipeline)
throws ServiceException
{
// --- <<IS-START(readable)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file
// [o] field:0:required $readable?
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
IDataHelper.put(cursor, "$readable?", FileHelper.isReadable(file), String.class);
} 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 $file
// [o] record:0:required $file.properties
// [o] - field:0:required exists?
// [o] - field:0:optional parent
// [o] - field:0:optional name
// [o] - field:0:optional base
// [o] - field:0:optional extension
// [o] - field:0:optional type
// [o] - field:0:optional length
// [o] - field:0:optional modified
// [o] - field:0:optional executable?
// [o] - field:0:optional readable?
// [o] - field:0:optional writable?
// [o] - field:0:required uri
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
IDataHelper.put(cursor, "$file.properties", FileHelper.getPropertiesAsIData(file));
} 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:optional $file
IDataCursor cursor = pipeline.getCursor();
try {
FileHelper.remove(IDataHelper.get(cursor, "$file", String.class));
} 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 $file.source
// [i] field:0:required $file.target
IDataCursor cursor = pipeline.getCursor();
try {
String source = IDataHelper.get(cursor, "$file.source", String.class);
String target = IDataHelper.get(cursor, "$file.target", String.class);
FileHelper.rename(source, target);
} catch(IOException ex) {
ExceptionHelper.raise(ex);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void touch (IData pipeline)
throws ServiceException
{
// --- <<IS-START(touch)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file
IDataCursor cursor = pipeline.getCursor();
try {
FileHelper.touch(IDataHelper.get(cursor, "$file", String.class));
} catch(IOException ex) {
ExceptionHelper.raise(ex);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void type (IData pipeline)
throws ServiceException
{
// --- <<IS-START(type)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file
// [o] field:0:required $type
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
IDataHelper.put(cursor, "$type", FileHelper.getMIMEType(file));
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void writable (IData pipeline)
throws ServiceException
{
// --- <<IS-START(writable)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file
// [o] field:0:required $writable?
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
IDataHelper.put(cursor, "$writable?", FileHelper.isWritable(file), String.class);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void write (IData pipeline)
throws ServiceException
{
// --- <<IS-START(write)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:optional $file
// [i] field:0:optional $mode {"append","write"}
// [i] object:0:optional $content
// [i] field:0:optional $encoding
// [o] field:0:required $file
IDataCursor cursor = pipeline.getCursor();
try {
String file = IDataHelper.get(cursor, "$file", String.class);
String mode = IDataHelper.get(cursor, "$mode", String.class);
Object content = IDataHelper.get(cursor, "$content");
Charset charset = IDataHelper.get(cursor, "$encoding", Charset.class);
file = FileHelper.writeFromStream(file, InputStreamHelper.normalize(content, charset), mode == null || mode.equalsIgnoreCase("append"));
IDataHelper.put(cursor, "$file", file);
} catch(IOException ex) {
ExceptionHelper.raise(ex);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
public static final void zip (IData pipeline)
throws ServiceException
{
// --- <<IS-START(zip)>> ---
// @subtype unknown
// @sigtype java 3.5
// [i] field:0:required $file
// [i] field:0:optional $file.zip
// [i] field:0:optional $replace? {"false","true"}
// [o] field:0:required $file.zip
IDataCursor cursor = pipeline.getCursor();
try {
String source = IDataHelper.get(cursor, "$file", String.class);
String target = IDataHelper.get(cursor, "$file.zip", String.class);
boolean replace = IDataHelper.get(cursor, "$replace?", Boolean.class);
IDataHelper.put(cursor, "$file.zip", FileHelper.zip(source, target, replace));
} catch(IOException ex) {
ExceptionHelper.raise(ex);
} finally {
cursor.destroy();
}
// --- <<IS-END>> ---
}
// --- <<IS-START-SHARED>> ---
// opens a file for reading, appending, or writing, and processes it by calling the given service with the resulting $stream
public static IData process(java.io.File file, String mode, String service, String input, IData pipeline) throws ServiceException {
if (file != null) {
if (input == null) input = "$stream";
Closeable stream = null;
try {
if (mode == null || mode.equals("read")) {
stream = InputStreamHelper.normalize(new java.io.FileInputStream(file));
} else {
if (!FileHelper.exists(file)) FileHelper.create(file);
stream = OutputStreamHelper.normalize(new java.io.FileOutputStream(file, mode.equalsIgnoreCase("append")));
}
IDataCursor cursor = pipeline.getCursor();
IDataUtil.put(cursor, input, stream);
cursor.destroy();
pipeline = ServiceHelper.invoke(service, pipeline);
} catch (IOException ex) {
ExceptionHelper.raise(ex);
} finally {
CloseableHelper.close(stream);
IDataCursor cursor = pipeline.getCursor();
IDataUtil.remove(cursor, input);
cursor.destroy();
}
}
return pipeline;
}
// opens a file for reading, appending, or writing, and processes it by calling the given service with the resulting $stream
public static IData process(String filename, String mode, String service, String input, IData pipeline) throws ServiceException {
return process(FileHelper.construct(filename), mode, service, input, pipeline);
}
// --- <<IS-END-SHARED>> ---
}