/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
 */

'use strict';

const models = require('./index');

/**
 * The Data Lake Analytics job error details.
 *
 */
class JobErrorDetails {
  /**
   * Create a JobErrorDetails.
   * @member {string} [description] the error message description
   * @member {string} [details] the details of the error message.
   * @member {number} [endOffset] the end offset in the job where the error was
   * found.
   * @member {string} [errorId] the specific identifier for the type of error
   * encountered in the job.
   * @member {string} [filePath] the path to any supplemental error files, if
   * any.
   * @member {string} [helpLink] the link to MSDN or Azure help for this type
   * of error, if any.
   * @member {string} [internalDiagnostics] the internal diagnostic stack trace
   * if the user requesting the job error details has sufficient permissions it
   * will be retrieved, otherwise it will be empty.
   * @member {number} [lineNumber] the specific line number in the job where
   * the error occured.
   * @member {string} [message] the user friendly error message for the
   * failure.
   * @member {string} [resolution] the recommended resolution for the failure,
   * if any.
   * @member {object} [innerError] the inner error of this specific job error
   * message, if any.
   * @member {number} [innerError.diagnosticCode] the diagnostic error code.
   * @member {string} [innerError.severity] the severity level of the failure.
   * Possible values include: 'Warning', 'Error', 'Info', 'SevereWarning',
   * 'Deprecated', 'UserWarning'
   * @member {string} [innerError.details] the details of the error message.
   * @member {string} [innerError.component] the component that failed.
   * @member {string} [innerError.errorId] the specific identifier for the type
   * of error encountered in the job.
   * @member {string} [innerError.helpLink] the link to MSDN or Azure help for
   * this type of error, if any.
   * @member {string} [innerError.internalDiagnostics] the internal diagnostic
   * stack trace if the user requesting the job error details has sufficient
   * permissions it will be retrieved, otherwise it will be empty.
   * @member {string} [innerError.message] the user friendly error message for
   * the failure.
   * @member {string} [innerError.resolution] the recommended resolution for
   * the failure, if any.
   * @member {string} [innerError.source] the ultimate source of the failure
   * (usually either SYSTEM or USER).
   * @member {string} [innerError.description] the error message description
   * @member {object} [innerError.innerError] the inner error of this specific
   * job error message, if any.
   * @member {string} [severity] the severity level of the failure. Possible
   * values include: 'Warning', 'Error', 'Info', 'SevereWarning', 'Deprecated',
   * 'UserWarning'
   * @member {string} [source] the ultimate source of the failure (usually
   * either SYSTEM or USER).
   * @member {number} [startOffset] the start offset in the job where the error
   * was found
   */
  constructor() {
  }

  /**
   * Defines the metadata of JobErrorDetails
   *
   * @returns {object} metadata of JobErrorDetails
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'JobErrorDetails',
      type: {
        name: 'Composite',
        className: 'JobErrorDetails',
        modelProperties: {
          description: {
            required: false,
            readOnly: true,
            serializedName: 'description',
            type: {
              name: 'String'
            }
          },
          details: {
            required: false,
            readOnly: true,
            serializedName: 'details',
            type: {
              name: 'String'
            }
          },
          endOffset: {
            required: false,
            readOnly: true,
            serializedName: 'endOffset',
            type: {
              name: 'Number'
            }
          },
          errorId: {
            required: false,
            readOnly: true,
            serializedName: 'errorId',
            type: {
              name: 'String'
            }
          },
          filePath: {
            required: false,
            readOnly: true,
            serializedName: 'filePath',
            type: {
              name: 'String'
            }
          },
          helpLink: {
            required: false,
            readOnly: true,
            serializedName: 'helpLink',
            type: {
              name: 'String'
            }
          },
          internalDiagnostics: {
            required: false,
            readOnly: true,
            serializedName: 'internalDiagnostics',
            type: {
              name: 'String'
            }
          },
          lineNumber: {
            required: false,
            readOnly: true,
            serializedName: 'lineNumber',
            type: {
              name: 'Number'
            }
          },
          message: {
            required: false,
            readOnly: true,
            serializedName: 'message',
            type: {
              name: 'String'
            }
          },
          resolution: {
            required: false,
            readOnly: true,
            serializedName: 'resolution',
            type: {
              name: 'String'
            }
          },
          innerError: {
            required: false,
            readOnly: true,
            serializedName: 'innerError',
            type: {
              name: 'Composite',
              className: 'JobInnerError'
            }
          },
          severity: {
            required: false,
            readOnly: true,
            serializedName: 'severity',
            type: {
              name: 'Enum',
              allowedValues: [ 'Warning', 'Error', 'Info', 'SevereWarning', 'Deprecated', 'UserWarning' ]
            }
          },
          source: {
            required: false,
            readOnly: true,
            serializedName: 'source',
            type: {
              name: 'String'
            }
          },
          startOffset: {
            required: false,
            readOnly: true,
            serializedName: 'startOffset',
            type: {
              name: 'Number'
            }
          }
        }
      }
    };
  }
}

module.exports = JobErrorDetails;
