/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

var App = require('app');

/**
 * Represents an alert-group on the cluster.
 * A alert group is a collection of alert definitions
 *
 * Alert group hierarchy is at 2 levels. For
 * each service there is a 'Default' alert group
 * containing all definitions , this group is read-only
 *
 * User can create new alert group containing alert definitions from
 * any service.
 */
App.AlertGroup = DS.Model.extend({

  name: DS.attr('string'),

  description: DS.attr('string'),

  /**
   * Is this group default for some service
   * @type {boolean}
   */
  default: DS.attr('boolean'),

  /**
   * @type {App.AlertDefinition[]}
   */
  definitions: DS.hasMany('App.AlertDefinition'),

  /**
   * @type {App.AlertNotification[]}
   */
  targets: DS.hasMany('App.AlertNotification'),

  /**
   * @type {string}
   */
  displayName: function () {
    var name = App.config.truncateGroupName(this.get('name'));
    return this.get('default') ? (name + ' Default') : name;
  }.property('name', 'default'),

  /**
   * @type {string}
   */
  displayNameDefinitions: Em.computed.format('{0} ({1})', 'displayName', 'definitions.length'),

  isAddDefinitionsDisabled: Em.computed.alias('default')

});
App.AlertGroup.FIXTURES = [];


