package net.ion.craken.node.crud.tree.impl; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Serializable; import net.ion.craken.node.Workspace; import net.ion.framework.parse.gson.JsonPrimitive; import net.ion.framework.util.IOUtil; import net.ion.framework.util.StringUtil; import org.infinispan.io.GridFilesystem; public class GridBlob implements Serializable { private static final long serialVersionUID = -8661240636213998157L; private String path; private transient Workspace workspace; private GridBlob(Workspace workspace, String path) { this.workspace = workspace ; this.path = path ; } public final static GridBlob create(Workspace workspace, String path){ return new GridBlob(workspace, path) ; } public static GridBlob read(String expression) { return new GridBlob(null, StringUtil.substringBetween(expression, "[BLOB:", "]")); } public String path() { return path; } public JsonPrimitive toJsonPrimitive(){ return new JsonPrimitive("[BLOB:" + path + "]") ; } public PropertyValue asPropertyValue() { return PropertyValue.createPrimitive(this); } public InputStream toInputStream() throws FileNotFoundException { return workspace.toInputStream(this) ; } public File toFile(){ return workspace.toFile(this) ; } public GridBlob workspace(Workspace workspace) { this.workspace = workspace ; return this; } public GridBlob saveAt(InputStream input) throws IOException { return workspace.saveAt(this, input) ; } public OutputStream toOutputStream() throws IOException { return workspace.toOutputStream(this) ; } }