001 package railo.runtime.util; 002 003 import java.io.File; 004 import java.io.InputStream; 005 import java.io.OutputStream; 006 import java.io.Serializable; 007 import java.util.Map; 008 009 import javax.servlet.http.Cookie; 010 import javax.servlet.http.HttpServletRequest; 011 import javax.servlet.http.HttpServletResponse; 012 import javax.servlet.http.HttpSession; 013 014 import org.w3c.dom.Document; 015 016 import railo.commons.io.res.Resource; 017 import railo.runtime.Component; 018 import railo.runtime.PageContext; 019 import railo.runtime.config.RemoteClient; 020 import railo.runtime.db.DatasourceConnection; 021 import railo.runtime.db.SQL; 022 import railo.runtime.exp.PageException; 023 import railo.runtime.spooler.ExecutionPlan; 024 import railo.runtime.spooler.SpoolerTask; 025 import railo.runtime.type.Array; 026 import railo.runtime.type.Collection; 027 import railo.runtime.type.Collection.Key; 028 import railo.runtime.type.Query; 029 import railo.runtime.type.Struct; 030 import railo.runtime.type.dt.Date; 031 import railo.runtime.type.dt.DateTime; 032 import railo.runtime.type.dt.Time; 033 import railo.runtime.type.dt.TimeSpan; 034 import railo.runtime.type.scope.ClusterEntry; 035 036 /** 037 * Creation of different Objects 038 */ 039 public interface Creation { 040 041 /** 042 * creates and returns a array instance 043 * @return array 044 */ 045 public abstract Array createArray(); 046 047 048 /** 049 * creates and returns a array based on a string list 050 * @return array 051 */ 052 public abstract Array createArray(String list, String delimiter,boolean removeEmptyItem,boolean trim); 053 054 /** 055 * creates and returns a DateTime instance 056 * @param time 057 * @return DateTime 058 */ 059 public abstract DateTime createDateTime(long time); 060 061 /** 062 * creates and returns a DateTime instance 063 * @param year 064 * @param month 065 * @param day 066 * @param hour 067 * @param minute 068 * @param seond 069 * @param millis 070 * @return DateTime 071 */ 072 public abstract DateTime createDateTime(int year,int month,int day,int hour,int minute,int seond,int millis) throws PageException; 073 074 /** 075 * creates and returns a Date instance 076 * @param time 077 * @return DateTime 078 */ 079 public abstract Date createDate(long time); 080 081 /** 082 * creates and returns a Date instance 083 * @param year 084 * @param month 085 * @param day 086 * @return DateTime 087 */ 088 public abstract Date createDate(int year,int month,int day) throws PageException; 089 090 /** 091 * creates and returns a Time instance 092 * @param time 093 * @return DateTime 094 */ 095 public abstract Time createTime(long time); 096 097 /** 098 * creates and returns a Time instance 099 * @param hour 100 * @param minute 101 * @param second 102 * @param millis 103 * @return DateTime 104 */ 105 public abstract Time createTime(int hour,int minute,int second,int millis); 106 107 /** 108 * creates and returns a TimeSpan instance 109 * @param day 110 * @param hour 111 * @param minute 112 * @param second 113 * @return TimeSpan 114 */ 115 public abstract TimeSpan createTimeSpan(int day,int hour,int minute,int second); 116 117 /** 118 * creates and returns a array instance 119 * @param dimension 120 * @return array 121 * @throws PageException 122 */ 123 public abstract Array createArray(int dimension) throws PageException; 124 125 /** 126 * creates and returns a struct instance 127 * @return struct 128 */ 129 public abstract Struct createStruct(); 130 131 public abstract Struct createStruct(int type); 132 133 // FUTURE public abstract Struct createStruct(String type); 134 135 /** 136 * creates a query object with given data 137 * @param columns 138 * @param rows 139 * @param name 140 * @return created query Object 141 * @deprecated usse instead <code>createQuery(Collection.Key[] columns, int rows, String name)</code> 142 */ 143 public abstract Query createQuery(String[] columns, int rows, String name); 144 145 /** 146 * creates a query object with given data 147 * @param columns 148 * @param rows 149 * @param name 150 * @return created query Object 151 */ 152 public abstract Query createQuery(Collection.Key[] columns, int rows, String name) throws PageException; 153 154 /** 155 * creates a query object with a resultset from a sql query 156 * @param dc Connection to a database 157 * @param name 158 * @param sql sql to execute 159 * @param maxrow maxrow for the resultset 160 * @throws PageException 161 * @deprecated replaced with <code>{@link #createQuery(DatasourceConnection, SQL, int, int, int, String)}</code> 162 */ 163 public abstract Query createQuery(DatasourceConnection dc,SQL sql,int maxrow, String name) throws PageException; 164 165 /** 166 * @param dc Connection to a database 167 * @param sql sql to execute 168 * @param maxrow maxrow for the resultset 169 * @param fetchsize 170 * @param timeout 171 * @param name 172 * @return created Query 173 * @throws PageException 174 */ 175 public abstract Query createQuery(DatasourceConnection dc,SQL sql,int maxrow, int fetchsize, int timeout,String name) throws PageException; 176 177 178 /** 179 * creates and returns a xml Document instance 180 * @return struct 181 * @throws PageException 182 */ 183 public abstract Document createDocument() throws PageException; 184 185 /** 186 * creates and returns a xml Document instance 187 * @param file 188 * @param isHtml 189 * @return struct 190 * @throws PageException 191 */ 192 public abstract Document createDocument(Resource file, boolean isHtml) throws PageException; 193 194 /** 195 * creates and returns a xml Document instance 196 * @param xml 197 * @param isHtml 198 * @return struct 199 * @throws PageException 200 */ 201 public abstract Document createDocument(String xml, boolean isHtml) throws PageException; 202 203 /** 204 * creates and returns a xml Document instance 205 * @param is 206 * @param isHtml 207 * @return struct 208 * @throws PageException 209 */ 210 public abstract Document createDocument(InputStream is, boolean isHtml) throws PageException; 211 212 /** 213 * creates a collecton Key out of a String 214 * @param key 215 */ 216 public abstract Collection.Key createKey(String key); 217 218 public SpoolerTask createRemoteClientTask(ExecutionPlan[] plans,RemoteClient remoteClient,Struct attrColl,String callerId, String type); 219 220 public ClusterEntry createClusterEntry(Key key,Serializable value, int offset); 221 222 223 public Resource createResource(String path, boolean existing) throws PageException; 224 225 226 public abstract HttpServletRequest createHttpServletRequest(File contextRoot,String serverName, String scriptName,String queryString, 227 Cookie[] cookies, Map<String,Object> headers, Map<String, String> parameters, Map<String,Object> attributes, HttpSession session); 228 229 public abstract HttpServletResponse createHttpServletResponse(OutputStream io); 230 231 232 public abstract PageContext createPageContext(HttpServletRequest req, HttpServletResponse rsp, OutputStream out); 233 234 /** 235 * creates a component object from (Full)Name, for example railo.extensions.net.HTTPUtil 236 * @param pc Pagecontext for loading the CFC 237 * @param fullname fullanem of the cfc example:railo.extensions.net.HTTPUtil 238 * @return loaded cfc 239 * @throws PageException 240 */ 241 public abstract Component createComponentFromName(PageContext pc, String fullName) throws PageException; 242 243 /** 244 * creates a component object from a absolute local path, for example /Users/susi/Projects/Sorglos/wwwrooot/railo/extensions/net/HTTPUtil.cfc 245 * @param pc Pagecontext for loading the CFC 246 * @param path path of the cfc example:/Users/susi/Projects/Sorglos/wwwrooot/railo/extensions/net/HTTPUtil.cfc 247 * @return loaded cfc 248 * @throws PageException 249 */ 250 public abstract Component createComponentFromPath(PageContext pc, String path) throws PageException; 251 252 253 254 255 }