# Source: cluster/Job.js

    (function(window)
    {
        var Gitana = window.Gitana;

        Gitana.Job = Gitana.AbstractClusterObject.extend(
        /** @lends Gitana.Job.prototype */
        {
            /**
             * @constructs
             * @augments Gitana.AbstractClusterObject
             *
             * @class Job
             *
             * @param {Gitana.Cluster} cluster
             * @param [Object] object json object (if no callback required for populating)
             */
            constructor: function(cluster, object)
            {
                this.base(cluster, object);

                this.objectType = function() { return "Gitana.Job"; };
            },

            /**
             * @override
             */
            clone: function()
            {
                return new Gitana.Job(this.getCluster(), this);
            },

            /**
             * @returns {String} the type id of the job
             */
            getType: function()
            {
                return this.get("type");
            },

            /**
             * @returns {String} the id of the principal that this job will run as
             */
            getRunAsPrincipalId: function()
            {
                return this.get("runAsPrincipal");
            },

            /**
             * @returns {String} the domain of the principal that this job will run as
             */
            getRunAsPrincipalDomainId: function()
            {
                return this.get("runAsPrincipalDomain");
            },

            /**
             * @returns {String} the state of the job
             */
            getState: function()
            {
                return this.get("state");
            },

            /**
             * @returns {String} the platform id
             */
            getPlatformId: function()
            {
                return this.get("platformId");
            },

            /**
             * @returns {Number} the priority of the job
             */
            getPriority: function()
            {
                return this.get("priority");
            },

            /**
             * @returns {Number} the number of attempts made to run this job
             */
            getAttempts: function()
            {
                return this.get("attempts");
            },

            /**
             * @returns {Object} when the job is scheduled to start (or null)
             */
            getScheduledStartTime: function()
            {
                return this.get("schedule_start_ms");
            },

            /**
             * @returns [Array] array of status log objects
             */
            getLogEntries: function()
            {
                return this.get("log_entries");
            },

            getCurrentThread: function()
            {
                return this.get("current_thread");
            },

            getCurrentServer: function()
            {
                return this.get("current_server");
            },

            getCurrentServerTimeStamp: function()
            {
                return this.get("current_server_timestamp");
            },

            getSubmittedBy: function()
            {
                return this.get("submitted_by");
            },

            getSubmittedTimestamp: function()
            {
                return this.get("submitted_timestamp");
            },

            getStarted: function()
            {
                return this.get("started");
            },

            getStartedBy: function()
            {
                return this.get("started_by");
            },

            getStartedTimestamp: function()
            {
                return this.get("started_timestamp");
            },

            getStopped: function()
            {
                return this.get("stopped");
            },

            getStoppedTimestamp: function()
            {
                return this.get("stopped_timestamp");
            },

            getPaused: function()
            {
                return this.get("paused");
            },

            getPausedBy: function()
            {
                return this.get("paused_by");
            },

            getPausedTimestamp: function()
            {
                return this.get("paused_timestamp");
            }
        });

    })(window);