001    package railo.runtime.util;
002    
003    import java.io.InputStream;
004    import java.io.Serializable;
005    
006    import org.w3c.dom.Document;
007    
008    import railo.commons.io.res.Resource;
009    import railo.runtime.config.RemoteClient;
010    import railo.runtime.db.DatasourceConnection;
011    import railo.runtime.db.SQL;
012    import railo.runtime.exp.PageException;
013    import railo.runtime.spooler.ExecutionPlan;
014    import railo.runtime.spooler.SpoolerTask;
015    import railo.runtime.type.Array;
016    import railo.runtime.type.Collection;
017    import railo.runtime.type.Collection.Key;
018    import railo.runtime.type.Query;
019    import railo.runtime.type.Struct;
020    import railo.runtime.type.dt.Date;
021    import railo.runtime.type.dt.DateTime;
022    import railo.runtime.type.dt.Time;
023    import railo.runtime.type.dt.TimeSpan;
024    import railo.runtime.type.scope.ClusterEntry;
025    
026    /**
027     * Creation of different Objects
028     */
029    public interface Creation {
030    
031        /**
032         * creates and returns a array instance
033         * @return array
034         */
035        public abstract Array createArray();
036        
037    
038        /**
039         * creates and returns a array based on a string list
040         * @return array
041         */
042        public abstract Array createArray(String list, String delimeter,boolean removeEmptyItem,boolean trim);
043    
044        /**
045         * creates and returns a DateTime instance
046         * @param time 
047         * @return DateTime
048         */
049        public abstract DateTime createDateTime(long time);
050        
051        /**
052         * creates and returns a DateTime instance
053         * @param year 
054         * @param month 
055         * @param day 
056         * @param hour 
057         * @param minute 
058         * @param seond 
059         * @param millis 
060         * @return DateTime
061         */
062        public abstract DateTime createDateTime(int year,int month,int day,int hour,int minute,int seond,int millis) throws PageException;
063    
064        /**
065         * creates and returns a Date instance
066         * @param time 
067         * @return DateTime
068         */
069        public abstract Date createDate(long time);
070        
071        /**
072         * creates and returns a Date instance
073         * @param year 
074         * @param month 
075         * @param day 
076         * @return DateTime
077         */
078        public abstract Date createDate(int year,int month,int day) throws PageException;
079    
080        /**
081         * creates and returns a Time instance
082         * @param time 
083         * @return DateTime
084         */
085        public abstract Time createTime(long time);
086    
087        /**
088         * creates and returns a Time instance
089         * @param hour 
090         * @param minute 
091         * @param second 
092         * @param millis 
093         * @return DateTime
094         */
095        public abstract Time createTime(int hour,int minute,int second,int millis);
096        
097        /**
098         * creates and returns a TimeSpan instance
099         * @param day 
100         * @param hour 
101         * @param minute 
102         * @param second 
103         * @return TimeSpan
104         */
105        public abstract TimeSpan createTimeSpan(int day,int hour,int minute,int second);
106        
107        /**
108         * creates and returns a array instance
109         * @param dimension 
110         * @return array
111         * @throws PageException 
112         */
113        public abstract Array createArray(int dimension) throws PageException;
114        
115        /**
116         * creates and returns a struct instance
117         * @return struct
118         */
119        public abstract Struct createStruct();
120        
121        public abstract Struct createStruct(int type);
122    
123        /**
124         * creates a query object with given data
125         * @param columns
126         * @param rows
127         * @param name
128         * @return created query Object
129         */
130        public abstract Query createQuery(String[] columns, int rows, String name);
131    
132        /**
133             * creates a query object with a resultset from a sql query
134             * @param dc Connection to a database
135             * @param name 
136             * @param sql sql to execute
137             * @param maxrow maxrow for the resultset
138         * @throws PageException
139         * @deprecated replaced with <code>{@link #createQuery(DatasourceConnection, SQL, int, int, int, String)}</code>
140             */     
141        public abstract Query createQuery(DatasourceConnection dc,SQL sql,int maxrow, String name) throws PageException;
142    
143        /**
144         * @param dc Connection to a database
145             * @param sql sql to execute
146             * @param maxrow maxrow for the resultset
147         * @param fetchsize
148         * @param timeout
149         * @param name
150         * @return created Query
151         * @throws PageException
152         */
153        public abstract Query createQuery(DatasourceConnection dc,SQL sql,int maxrow, int fetchsize, int timeout,String name) throws PageException;
154    
155    
156        /**
157         * creates and returns a xml Document instance
158         * @return struct
159         * @throws PageException 
160         */
161        public abstract Document createDocument() throws PageException;
162        
163        /**
164         * creates and returns a xml Document instance
165         * @param file 
166         * @param isHtml 
167         * @return struct
168         * @throws PageException 
169         */
170        public abstract Document createDocument(Resource file, boolean isHtml) throws PageException;
171        
172        /**
173         * creates and returns a xml Document instance
174         * @param xml 
175         * @param isHtml 
176         * @return struct
177         * @throws PageException 
178         */
179        public abstract Document createDocument(String xml, boolean isHtml) throws PageException;
180        
181        /**
182         * creates and returns a xml Document instance
183         * @param is 
184         * @param isHtml 
185         * @return struct
186         * @throws PageException 
187         */
188        public abstract Document createDocument(InputStream is, boolean isHtml) throws PageException;
189    
190            /**
191             * creates a collecton Key out of a String
192             * @param key
193             */
194            public abstract Collection.Key createKey(String key);
195            
196            public SpoolerTask createRemoteClientTask(ExecutionPlan[] plans,RemoteClient remoteClient,Struct attrColl,String callerId, String type);
197    
198            public ClusterEntry createClusterEntry(Key key,Serializable value, int offset);
199    
200    
201            public Resource createResource(String path, boolean existing) throws PageException;
202    
203                    
204    
205    }