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    }