package railo.runtime.util; import java.io.File; import java.io.InputStream; import java.io.OutputStream; import java.io.Serializable; import java.util.Map; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.w3c.dom.Document; import railo.commons.io.res.Resource; import railo.runtime.Component; import railo.runtime.PageContext; import railo.runtime.config.RemoteClient; import railo.runtime.db.DatasourceConnection; import railo.runtime.db.SQL; import railo.runtime.exp.PageException; import railo.runtime.spooler.ExecutionPlan; import railo.runtime.spooler.SpoolerTask; import railo.runtime.type.Array; import railo.runtime.type.Collection; import railo.runtime.type.Collection.Key; import railo.runtime.type.Query; import railo.runtime.type.Struct; import railo.runtime.type.dt.Date; import railo.runtime.type.dt.DateTime; import railo.runtime.type.dt.Time; import railo.runtime.type.dt.TimeSpan; import railo.runtime.type.scope.ClusterEntry; /** * Creation of different Objects */ public interface Creation { /** * creates and returns a array instance * @return array */ public abstract Array createArray(); /** * creates and returns a array based on a string list * @return array */ public abstract Array createArray(String list, String delimiter,boolean removeEmptyItem,boolean trim); /** * creates and returns a DateTime instance * @param time * @return DateTime */ public abstract DateTime createDateTime(long time); /** * creates and returns a DateTime instance * @param year * @param month * @param day * @param hour * @param minute * @param seond * @param millis * @return DateTime */ public abstract DateTime createDateTime(int year,int month,int day,int hour,int minute,int seond,int millis) throws PageException; /** * creates and returns a Date instance * @param time * @return DateTime */ public abstract Date createDate(long time); /** * creates and returns a Date instance * @param year * @param month * @param day * @return DateTime */ public abstract Date createDate(int year,int month,int day) throws PageException; /** * creates and returns a Time instance * @param time * @return DateTime */ public abstract Time createTime(long time); /** * creates and returns a Time instance * @param hour * @param minute * @param second * @param millis * @return DateTime */ public abstract Time createTime(int hour,int minute,int second,int millis); /** * creates and returns a TimeSpan instance * @param day * @param hour * @param minute * @param second * @return TimeSpan */ public abstract TimeSpan createTimeSpan(int day,int hour,int minute,int second); /** * creates and returns a array instance * @param dimension * @return array * @throws PageException */ public abstract Array createArray(int dimension) throws PageException; /** * creates and returns a struct instance * @return struct */ public abstract Struct createStruct(); public abstract Struct createStruct(int type); // FUTURE public abstract Struct createStruct(String type); /** * creates a query object with given data * @param columns * @param rows * @param name * @return created query Object * @deprecated usse instead <code>createQuery(Collection.Key[] columns, int rows, String name)</code> */ public abstract Query createQuery(String[] columns, int rows, String name); /** * creates a query object with given data * @param columns * @param rows * @param name * @return created query Object */ public abstract Query createQuery(Collection.Key[] columns, int rows, String name) throws PageException; /** * creates a query object with a resultset from a sql query * @param dc Connection to a database * @param name * @param sql sql to execute * @param maxrow maxrow for the resultset * @throws PageException * @deprecated replaced with <code>{@link #createQuery(DatasourceConnection, SQL, int, int, int, String)}</code> */ public abstract Query createQuery(DatasourceConnection dc,SQL sql,int maxrow, String name) throws PageException; /** * @param dc Connection to a database * @param sql sql to execute * @param maxrow maxrow for the resultset * @param fetchsize * @param timeout * @param name * @return created Query * @throws PageException */ public abstract Query createQuery(DatasourceConnection dc,SQL sql,int maxrow, int fetchsize, int timeout,String name) throws PageException; /** * creates and returns a xml Document instance * @return struct * @throws PageException */ public abstract Document createDocument() throws PageException; /** * creates and returns a xml Document instance * @param file * @param isHtml * @return struct * @throws PageException */ public abstract Document createDocument(Resource file, boolean isHtml) throws PageException; /** * creates and returns a xml Document instance * @param xml * @param isHtml * @return struct * @throws PageException */ public abstract Document createDocument(String xml, boolean isHtml) throws PageException; /** * creates and returns a xml Document instance * @param is * @param isHtml * @return struct * @throws PageException */ public abstract Document createDocument(InputStream is, boolean isHtml) throws PageException; /** * creates a collecton Key out of a String * @param key */ public abstract Collection.Key createKey(String key); public SpoolerTask createRemoteClientTask(ExecutionPlan[] plans,RemoteClient remoteClient,Struct attrColl,String callerId, String type); public ClusterEntry createClusterEntry(Key key,Serializable value, int offset); public Resource createResource(String path, boolean existing) throws PageException; public abstract HttpServletRequest createHttpServletRequest(File contextRoot,String serverName, String scriptName,String queryString, Cookie[] cookies, Map<String,Object> headers, Map<String, String> parameters, Map<String,Object> attributes, HttpSession session); public abstract HttpServletResponse createHttpServletResponse(OutputStream io); public abstract PageContext createPageContext(HttpServletRequest req, HttpServletResponse rsp, OutputStream out); /** * creates a component object from (Full)Name, for example railo.extensions.net.HTTPUtil * @param pc Pagecontext for loading the CFC * @param fullname fullanem of the cfc example:railo.extensions.net.HTTPUtil * @return loaded cfc * @throws PageException */ public abstract Component createComponentFromName(PageContext pc, String fullName) throws PageException; /** * creates a component object from a absolute local path, for example /Users/susi/Projects/Sorglos/wwwrooot/railo/extensions/net/HTTPUtil.cfc * @param pc Pagecontext for loading the CFC * @param path path of the cfc example:/Users/susi/Projects/Sorglos/wwwrooot/railo/extensions/net/HTTPUtil.cfc * @return loaded cfc * @throws PageException */ public abstract Component createComponentFromPath(PageContext pc, String path) throws PageException; }