001    /**
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements.  See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership.  The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the
007     * "License"); you may not use this file except in compliance
008     * with the License.  You may obtain a copy of the License at
009     *
010     *      http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS,
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    package org.apache.oozie;
019    
020    import java.io.DataInput;
021    import java.io.DataOutput;
022    import java.io.IOException;
023    import java.sql.Timestamp;
024    import java.util.Date;
025    
026    import javax.persistence.Basic;
027    import javax.persistence.Column;
028    import javax.persistence.Entity;
029    import javax.persistence.Lob;
030    import javax.persistence.NamedQueries;
031    import javax.persistence.NamedQuery;
032    
033    import org.apache.hadoop.io.Writable;
034    import org.apache.oozie.client.CoordinatorJob;
035    import org.apache.oozie.client.rest.JsonCoordinatorJob;
036    import org.apache.oozie.util.DateUtils;
037    import org.apache.oozie.util.WritableUtils;
038    import org.apache.openjpa.persistence.jdbc.Index;
039    
040    @Entity
041    @NamedQueries( {
042            @NamedQuery(name = "UPDATE_COORD_JOB", query = "update CoordinatorJobBean w set w.appName = :appName, w.appPath = :appPath, w.concurrency = :concurrency, w.conf = :conf, w.externalId = :externalId, w.frequency = :frequency, w.lastActionNumber = :lastActionNumber, w.timeOut = :timeOut, w.timeZone = :timeZone, w.authToken = :authToken, w.createdTimestamp = :createdTime, w.endTimestamp = :endTime, w.execution = :execution, w.jobXml = :jobXml, w.lastActionTimestamp = :lastAction, w.lastModifiedTimestamp = :lastModifiedTime, w.nextMaterializedTimestamp = :nextMaterializedTime, w.origJobXml = :origJobXml, w.slaXml=:slaXml, w.startTimestamp = :startTime, w.status = :status, w.timeUnitStr = :timeUnit where w.id = :id"),
043    
044            @NamedQuery(name = "UPDATE_COORD_JOB_STATUS", query = "update CoordinatorJobBean w set w.status = :status, w.lastModifiedTimestamp = :lastModifiedTime where w.id = :id"),
045    
046            @NamedQuery(name = "UPDATE_COORD_JOB_PENDING", query = "update CoordinatorJobBean w set w.pending = :pending, w.lastModifiedTimestamp = :lastModifiedTime where w.id = :id"),
047    
048            @NamedQuery(name = "DELETE_COORD_JOB", query = "delete from CoordinatorJobBean w where w.id = :id"),
049    
050            @NamedQuery(name = "GET_COORD_JOBS", query = "select OBJECT(w) from CoordinatorJobBean w"),
051    
052            @NamedQuery(name = "GET_COORD_JOB", query = "select OBJECT(w) from CoordinatorJobBean w where w.id = :id"),
053    
054            @NamedQuery(name = "GET_COORD_JOBS_PENDING", query = "select OBJECT(w) from CoordinatorJobBean w where w.pending = 1 order by w.lastModifiedTimestamp"),
055    
056            @NamedQuery(name = "GET_COORD_JOBS_COUNT", query = "select count(w) from CoordinatorJobBean w"),
057    
058            @NamedQuery(name = "GET_COORD_JOBS_COLUMNS", query = "select w.id, w.appName, w.status, w.user, w.group, w.startTimestamp, w.endTimestamp, w.appPath, w.concurrency, w.frequency, w.lastActionTimestamp, w.nextMaterializedTimestamp, w.createdTimestamp, w.timeUnitStr, w.timeZone, w.timeOut from CoordinatorJobBean w order by w.createdTimestamp desc"),
059    
060            @NamedQuery(name = "GET_COORD_JOBS_OLDER_THAN", query = "select OBJECT(w) from CoordinatorJobBean w where w.startTimestamp <= :matTime AND (w.status = 'PREP' OR w.status = 'RUNNING' or w.status = 'RUNNINGWITHERROR') AND (w.nextMaterializedTimestamp < :matTime OR w.nextMaterializedTimestamp IS NULL) AND (w.nextMaterializedTimestamp IS NULL OR (w.endTimestamp > w.nextMaterializedTimestamp AND (w.pauseTimestamp IS NULL OR w.pauseTimestamp > w.nextMaterializedTimestamp))) order by w.lastModifiedTimestamp"),
061    
062            @NamedQuery(name = "GET_COORD_JOBS_OLDER_THAN_STATUS", query = "select OBJECT(w) from CoordinatorJobBean w where w.status = :status AND w.lastModifiedTimestamp <= :lastModTime order by w.lastModifiedTimestamp"),
063    
064            @NamedQuery(name = "GET_COMPLETED_COORD_JOBS_OLDER_THAN_STATUS", query = "select OBJECT(w) from CoordinatorJobBean w where ( w.status = 'SUCCEEDED' OR w.status = 'FAILED' or w.status = 'KILLED') AND w.lastModifiedTimestamp <= :lastModTime order by w.lastModifiedTimestamp"),
065    
066            @NamedQuery(name = "GET_COORD_JOBS_UNPAUSED", query = "select OBJECT(w) from CoordinatorJobBean w where w.status = 'RUNNING' OR w.status = 'RUNNINGWITHERROR' OR w.status = 'PREP' order by w.lastModifiedTimestamp"),
067    
068            @NamedQuery(name = "GET_COORD_JOBS_PAUSED", query = "select OBJECT(w) from CoordinatorJobBean w where w.status = 'PAUSED' OR w.status = 'PAUSEDWITHERROR' OR w.status = 'PREPPAUSED' order by w.lastModifiedTimestamp"),
069    
070            @NamedQuery(name = "GET_COORD_JOBS_FOR_BUNDLE", query = "select OBJECT(w) from CoordinatorJobBean w where w.bundleId = :bundleId order by w.lastModifiedTimestamp") })
071    public class CoordinatorJobBean extends JsonCoordinatorJob implements Writable {
072    
073        @Basic
074        @Index
075        @Column(name = "status")
076        private String status = CoordinatorJob.Status.PREP.toString();
077    
078        @Basic
079        @Column(name = "auth_token")
080        @Lob
081        private String authToken = null;
082    
083        @Basic
084        @Column(name = "start_time")
085        private java.sql.Timestamp startTimestamp = null;
086    
087        @Basic
088        @Column(name = "end_time")
089        private java.sql.Timestamp endTimestamp = null;
090    
091        @Basic
092        @Column(name = "pause_time")
093        private java.sql.Timestamp pauseTimestamp = null;
094    
095        @Basic
096        @Index
097        @Column(name = "created_time")
098        private java.sql.Timestamp createdTimestamp = null;
099    
100        @Basic
101        @Column(name = "time_unit")
102        private String timeUnitStr = CoordinatorJob.Timeunit.NONE.toString();
103    
104        @Basic
105        @Column(name = "execution")
106        private String execution = CoordinatorJob.Execution.FIFO.toString();
107    
108        @Basic
109        @Column(name = "last_action")
110        private java.sql.Timestamp lastActionTimestamp = null;
111    
112        @Basic
113        @Index
114        @Column(name = "next_matd_time")
115        private java.sql.Timestamp nextMaterializedTimestamp = null;
116    
117        @Basic
118        @Index
119        @Column(name = "last_modified_time")
120        private java.sql.Timestamp lastModifiedTimestamp = null;
121    
122        @Basic
123        @Index
124        @Column(name = "suspended_time")
125        private java.sql.Timestamp suspendedTimestamp = null;
126    
127        @Column(name = "job_xml")
128        @Lob
129        private String jobXml = null;
130    
131        @Column(name = "orig_job_xml")
132        @Lob
133        private String origJobXml = null;
134    
135        @Column(name = "sla_xml")
136        @Lob
137        private String slaXml = null;
138    
139        @Basic
140        @Column(name = "pending")
141        private int pending = 0;
142    
143        @Basic
144        @Column(name = "done_materialization")
145        private int doneMaterialization = 0;
146    
147        @Basic
148        @Column(name = "app_namespace")
149        private String appNamespace = null;
150    
151        /**
152         * Get start timestamp
153         *
154         * @return start timestamp
155         */
156        public java.sql.Timestamp getStartTimestamp() {
157            return startTimestamp;
158        }
159    
160        /**
161         * Set start timestamp
162         *
163         * @param startTimestamp start timestamp
164         */
165        public void setStartTimestamp(java.sql.Timestamp startTimestamp) {
166            super.setStartTime(DateUtils.toDate(startTimestamp));
167            this.startTimestamp = startTimestamp;
168        }
169    
170        /**
171         * Get end timestamp
172         *
173         * @return end timestamp
174         */
175        public java.sql.Timestamp getEndTimestamp() {
176            return endTimestamp;
177        }
178    
179        /**
180         * Set end timestamp
181         *
182         * @param endTimestamp end timestamp
183         */
184        public void setEndTimestamp(java.sql.Timestamp endTimestamp) {
185            super.setEndTime(DateUtils.toDate(endTimestamp));
186            this.endTimestamp = endTimestamp;
187        }
188    
189        /**
190         * Get next materialized timestamp
191         *
192         * @return next materialized timestamp
193         */
194        public Timestamp getNextMaterializedTimestamp() {
195            return nextMaterializedTimestamp;
196        }
197    
198        /**
199         * Set next materialized timestamp
200         *
201         * @param nextMaterializedTimestamp next materialized timestamp
202         */
203        public void setNextMaterializedTimestamp(java.sql.Timestamp nextMaterializedTimestamp) {
204            super.setNextMaterializedTime(DateUtils.toDate(nextMaterializedTimestamp));
205            this.nextMaterializedTimestamp = nextMaterializedTimestamp;
206        }
207    
208        /**
209         * Get last modified timestamp
210         *
211         * @return last modified timestamp
212         */
213        public Timestamp getLastModifiedTimestamp() {
214            return lastModifiedTimestamp;
215        }
216    
217        /**
218         * Set last modified timestamp
219         *
220         * @param lastModifiedTimestamp last modified timestamp
221         */
222        public void setLastModifiedTimestamp(java.sql.Timestamp lastModifiedTimestamp) {
223            this.lastModifiedTimestamp = lastModifiedTimestamp;
224        }
225    
226        /**
227         * Get suspended timestamp
228         *
229         * @return suspended timestamp
230         */
231        public Timestamp getSuspendedTimestamp() {
232            return suspendedTimestamp;
233        }
234    
235        /**
236         * Set suspended timestamp
237         *
238         * @param suspendedTimestamp suspended timestamp
239         */
240        public void setSuspendedTimestamp(java.sql.Timestamp suspendedTimestamp) {
241            this.suspendedTimestamp = suspendedTimestamp;
242        }
243    
244        /**
245         * Get job xml
246         *
247         * @return job xml
248         */
249        public String getJobXml() {
250            return jobXml;
251        }
252    
253        /**
254         * Set job xml
255         *
256         * @param jobXml job xml
257         */
258        public void setJobXml(String jobXml) {
259            this.jobXml = jobXml;
260        }
261    
262        /**
263         * Get original job xml
264         *
265         * @return original job xml
266         */
267        public String getOrigJobXml() {
268            return origJobXml;
269        }
270    
271        /**
272         * Set original job xml
273         *
274         * @param origJobXml
275         */
276        public void setOrigJobXml(String origJobXml) {
277            this.origJobXml = origJobXml;
278        }
279    
280        /**
281         * Get sla xml
282         *
283         * @return sla xml
284         */
285        public String getSlaXml() {
286            return slaXml;
287        }
288    
289        /**
290         * Set sla xml
291         *
292         * @param slaXml sla xml
293         */
294        public void setSlaXml(String slaXml) {
295            this.slaXml = slaXml;
296        }
297    
298        /* (non-Javadoc)
299         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#setTimeUnit(org.apache.oozie.client.CoordinatorJob.Timeunit)
300         */
301        @Override
302        public void setTimeUnit(Timeunit timeUnit) {
303            super.setTimeUnit(timeUnit);
304            this.timeUnitStr = timeUnit.toString();
305        }
306    
307        /**
308         * Set last action timestamp
309         *
310         * @param lastActionTimestamp last action timestamp
311         */
312        public void setLastActionTimestamp(java.sql.Timestamp lastActionTimestamp) {
313            super.setLastActionTime(DateUtils.toDate(lastActionTimestamp));
314            this.lastActionTimestamp = lastActionTimestamp;
315        }
316    
317        /**
318         * Set auth token
319         *
320         * @param authToken auth token
321         */
322        public void setAuthToken(String authToken) {
323            this.authToken = authToken;
324        }
325    
326        /**
327         * Set pending to true
328         */
329        @Override
330        public void setPending() {
331            super.setPending();
332            this.pending = 1;
333        }
334    
335        /**
336         * Set pending to false
337         */
338        @Override
339        public void resetPending() {
340            super.resetPending();
341            this.pending = 0;
342        }
343    
344        /**
345         * Return if the action is pending.
346         *
347         * @return if the action is pending.
348         */
349        public boolean isPending() {
350            return pending == 1 ? true : false;
351        }
352    
353        /**
354         * Set doneMaterialization to true
355         */
356        public void setDoneMaterialization() {
357            this.doneMaterialization = 1;
358        }
359    
360        /**
361         * Set doneMaterialization to false
362         */
363        public void resetDoneMaterialization() {
364            this.doneMaterialization = 0;
365        }
366    
367        /**
368         * Return if the action is done with materialization
369         *
370         * @return if the action is done with materialization
371         */
372        public boolean isDoneMaterialization() {
373            return doneMaterialization == 1 ? true : false;
374        }
375    
376    
377        /**
378         * Get app namespce
379         *
380         * @return app namespce
381         */
382        public String getAppNamespace() {
383            return appNamespace;
384        }
385    
386        /**
387         * Set app namespce
388         *
389         * @param appNamespace the app namespce to set
390         */
391        public void setAppNamespace(String appNamespace) {
392            this.appNamespace = appNamespace;
393        }
394    
395        public CoordinatorJobBean() {
396        }
397    
398        /*
399         * Serialize the coordinator bean to a data output. @param dataOutput data
400         * output. @throws IOException thrown if the coordinator bean could not be
401         * serialized.
402         */
403        public void write(DataOutput dataOutput) throws IOException {
404            WritableUtils.writeStr(dataOutput, getAppPath());
405            WritableUtils.writeStr(dataOutput, getAppName());
406            WritableUtils.writeStr(dataOutput, getId());
407            WritableUtils.writeStr(dataOutput, getConf());
408            WritableUtils.writeStr(dataOutput, getStatusStr());
409            dataOutput.writeInt(getFrequency());
410            WritableUtils.writeStr(dataOutput, getTimeUnit().toString());
411            WritableUtils.writeStr(dataOutput, getTimeZone());
412            dataOutput.writeInt(getConcurrency());
413            WritableUtils.writeStr(dataOutput, getExecutionOrder().toString());
414            dataOutput.writeLong((getLastActionTime() != null) ? getLastActionTime().getTime() : -1);
415            dataOutput.writeLong((getNextMaterializedTime() != null) ? getNextMaterializedTime().getTime() : -1);
416            dataOutput.writeLong((getStartTime() != null) ? getStartTime().getTime() : -1);
417            dataOutput.writeLong((getEndTime() != null) ? getEndTime().getTime() : -1);
418            WritableUtils.writeStr(dataOutput, getUser());
419            WritableUtils.writeStr(dataOutput, getGroup());
420            WritableUtils.writeStr(dataOutput, getExternalId());
421            dataOutput.writeInt(getTimeout());
422            dataOutput.writeInt(getMatThrottling());
423            if (isPending()) {
424                dataOutput.writeInt(1);
425            } else {
426                dataOutput.writeInt(0);
427            }
428            if (isDoneMaterialization()) {
429                dataOutput.writeInt(1);
430            } else {
431                dataOutput.writeInt(0);
432            }
433            WritableUtils.writeStr(dataOutput, getAppNamespace());
434        }
435    
436        /**
437         * Deserialize a coordinator bean from a data input.
438         *
439         * @param dataInput data input.
440         * @throws IOException thrown if the workflow bean could not be deserialized.
441         */
442        public void readFields(DataInput dataInput) throws IOException {
443            setAppPath(WritableUtils.readStr(dataInput));
444            setAppName(WritableUtils.readStr(dataInput));
445            setId(WritableUtils.readStr(dataInput));
446            setConf(WritableUtils.readStr(dataInput));
447            setStatus(CoordinatorJob.Status.valueOf(WritableUtils.readStr(dataInput)));
448            setFrequency(dataInput.readInt());
449            setTimeUnit(CoordinatorJob.Timeunit.valueOf(WritableUtils.readStr(dataInput)));
450            setTimeZone(WritableUtils.readStr(dataInput));
451            setConcurrency(dataInput.readInt());
452            setExecutionOrder(Execution.valueOf(WritableUtils.readStr(dataInput)));
453    
454            long d = dataInput.readLong();
455            if (d != -1) {
456                setLastActionTime(new Date(d));
457            }
458            d = dataInput.readLong();
459            if (d != -1) {
460                setNextMaterializedTime(new Date(d));
461            }
462            d = dataInput.readLong();
463            if (d != -1) {
464                setStartTime(new Date(d));
465            }
466    
467            d = dataInput.readLong();
468            if (d != -1) {
469                setEndTime(new Date(d));
470            }
471            setUser(WritableUtils.readStr(dataInput));
472            setGroup(WritableUtils.readStr(dataInput));
473            setExternalId(WritableUtils.readStr(dataInput));
474            setTimeout(dataInput.readInt());
475            setMatThrottling(dataInput.readInt());
476    
477            d = dataInput.readInt();
478            if (d == 1) {
479                setPending();
480            }
481    
482            d = dataInput.readInt();
483            if (d == 1) {
484                setDoneMaterialization();
485            }
486    
487            setAppNamespace(WritableUtils.readStr(dataInput));
488        }
489    
490        /* (non-Javadoc)
491         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#getStatus()
492         */
493        @Override
494        public Status getStatus() {
495            return Status.valueOf(this.status);
496        }
497    
498        /**
499         * Get status
500         *
501         * @return status
502         */
503        public String getStatusStr() {
504            return status;
505        }
506    
507        /* (non-Javadoc)
508         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#setStatus(org.apache.oozie.client.Job.Status)
509         */
510        @Override
511        public void setStatus(Status val) {
512            super.setStatus(val);
513            this.status = val.toString();
514        }
515    
516        /**
517         * Get time unit
518         *
519         * @return time unit
520         */
521        public String getTimeUnitStr() {
522            return timeUnitStr;
523        }
524    
525        /* (non-Javadoc)
526         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#getTimeUnit()
527         */
528        @Override
529        public Timeunit getTimeUnit() {
530            return Timeunit.valueOf(this.timeUnitStr);
531        }
532    
533        /**
534         * Set order
535         *
536         * @param order
537         */
538        public void setExecution(Execution order) {
539            this.execution = order.toString();
540            super.setExecutionOrder(order);
541        }
542    
543        /* (non-Javadoc)
544         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#getExecutionOrder()
545         */
546        @Override
547        public Execution getExecutionOrder() {
548            return Execution.valueOf(this.execution);
549        }
550    
551        /**
552         * Get execution
553         *
554         * @return execution
555         */
556        public String getExecution() {
557            return execution;
558        }
559    
560        /* (non-Javadoc)
561         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#setLastActionTime(java.util.Date)
562         */
563        @Override
564        public void setLastActionTime(Date lastAction) {
565            this.lastActionTimestamp = DateUtils.convertDateToTimestamp(lastAction);
566            super.setLastActionTime(lastAction);
567        }
568    
569        /* (non-Javadoc)
570         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#getLastActionTime()
571         */
572        @Override
573        public Date getLastActionTime() {
574            return DateUtils.toDate(lastActionTimestamp);
575        }
576    
577        /**
578         * Get last action timestamp
579         *
580         * @return last action timestamp
581         */
582        public Timestamp getLastActionTimestamp() {
583            return lastActionTimestamp;
584        }
585    
586        /* (non-Javadoc)
587         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#setNextMaterializedTime(java.util.Date)
588         */
589        @Override
590        public void setNextMaterializedTime(Date nextMaterializedTime) {
591            super.setNextMaterializedTime(nextMaterializedTime);
592            this.nextMaterializedTimestamp = DateUtils.convertDateToTimestamp(nextMaterializedTime);
593        }
594    
595        /* (non-Javadoc)
596         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#getNextMaterializedTime()
597         */
598        @Override
599        public Date getNextMaterializedTime() {
600            return DateUtils.toDate(nextMaterializedTimestamp);
601        }
602    
603        /**
604         * Set last modified time
605         *
606         * @param lastModifiedTime last modified time
607         */
608        public void setLastModifiedTime(Date lastModifiedTime) {
609            this.lastModifiedTimestamp = DateUtils.convertDateToTimestamp(lastModifiedTime);
610        }
611    
612        /**
613         * Get last modified time
614         *
615         * @return last modified time
616         */
617        public Date getLastModifiedTime() {
618            return DateUtils.toDate(lastModifiedTimestamp);
619        }
620    
621        /**
622         * Set suspended time
623         *
624         * @param suspendedTime suspended time
625         */
626        public void setSuspendedTime(Date suspendedTime) {
627            this.suspendedTimestamp = DateUtils.convertDateToTimestamp(suspendedTime);
628        }
629    
630        /**
631         * Get suspended time
632         *
633         * @return suspended time
634         */
635        public Date getSuspendedTime() {
636            return DateUtils.toDate(suspendedTimestamp);
637        }
638    
639        /* (non-Javadoc)
640         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#setStartTime(java.util.Date)
641         */
642        @Override
643        public void setStartTime(Date startTime) {
644            super.setStartTime(startTime);
645            this.startTimestamp = DateUtils.convertDateToTimestamp(startTime);
646        }
647    
648        /* (non-Javadoc)
649         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#getStartTime()
650         */
651        @Override
652        public Date getStartTime() {
653            return DateUtils.toDate(startTimestamp);
654        }
655    
656        /* (non-Javadoc)
657         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#setEndTime(java.util.Date)
658         */
659        @Override
660        public void setEndTime(Date endTime) {
661            super.setEndTime(endTime);
662            this.endTimestamp = DateUtils.convertDateToTimestamp(endTime);
663        }
664    
665        /* (non-Javadoc)
666         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#setPauseTime(java.util.Date)
667         */
668        @Override
669        public void setPauseTime(Date pauseTime) {
670            super.setPauseTime(pauseTime);
671            this.pauseTimestamp = DateUtils.convertDateToTimestamp(pauseTime);
672        }
673    
674        /* (non-Javadoc)
675         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#getEndTime()
676         */
677        @Override
678        public Date getEndTime() {
679            return DateUtils.toDate(endTimestamp);
680        }
681    
682        /* (non-Javadoc)
683         * @see org.apache.oozie.client.rest.JsonCoordinatorJob#getPauseTime()
684         */
685        @Override
686        public Date getPauseTime() {
687            return DateUtils.toDate(pauseTimestamp);
688        }
689    
690        /**
691         * Set created time
692         *
693         * @param createTime created time
694         */
695        public void setCreatedTime(Date createTime) {
696            this.createdTimestamp = DateUtils.convertDateToTimestamp(createTime);
697        }
698    
699        /**
700         * Get created time
701         *
702         * @return created time
703         */
704        public Date getCreatedTime() {
705            return DateUtils.toDate(createdTimestamp);
706        }
707    
708        /**
709         * Get created timestamp
710         *
711         * @return created timestamp
712         */
713        public Timestamp getCreatedTimestamp() {
714            return createdTimestamp;
715        }
716    
717        /**
718         * Get auth token
719         *
720         * @return auth token
721         */
722        public String getAuthToken() {
723            return this.authToken;
724        }
725    
726    }