# Source: AuditRecord.js

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

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

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

                //////////////////////////////////////////////////////////////////////////////////////////////
                //
                // PRIVILEGED METHODS
                //
                //////////////////////////////////////////////////////////////////////////////////////////////

                /**
                 * Gets the Gitana Data Store object.
                 *
                 * @inner
                 *
                 * @returns {Gitana.DataStore} The Gitana DataStore object
                 */
                this.getDataStore = function() { return datastore; };

                /**
                 * Gets the Gitana Data Store id.
                 *
                 * @inner
                 *
                 * @returns {String} The Gitana DataStore id
                 */
                this.getDataStoreId = function() { return datastore.getId(); };

            },

            /**
             * @OVERRIDE
             */
            getUri: function()
            {
                return this.datastore.getUri() + "/audit";
            },

            /**
             * @override
             */
            clone: function()
            {
                return this.getFactory().auditRecord(this.getDataStore(), this);
            },

            /**
             * @returns {String} the scope of the audit record (i.e. "NODE")
             */
            getScope: function()
            {
                return this.get("scope");
            },

            /**
             * @returns {String} the action of the audit record ("CREATE", "READ", "UPDATE", "DELETE", "MOVE", "COPY", "EXISTS")
             */
            getAction: function()
            {
                return this.get("action");
            },

            /**
             * @returns {String} the principal for the audit record
             */
            getPrincipalId: function()
            {
                return this.get("principal");
            },

            /**
             * @returns {String} method that was invoked
             */
            getMethod: function()
            {
                return this.get("method");
            },

            /**
             * @returns {String} handler
             */
            getHandler: function()
            {
                return this.get("handler");
            },

            /**
             * @returns {Object} argument descriptors
             */
            getArgs: function()
            {
                return this.get("args");
            },

            /**
             * @returns {Object} return value descriptor
             */
            getReturn: function()
            {
                return this.get("return");
            }

        });

    })(window);