Code coverage report for app/utils/configs_collection.js

Statements: 100% (15 / 15)      Branches: 100% (6 / 6)      Functions: 100% (6 / 6)      Lines: 100% (15 / 15)      Ignored: none     

All files » app/utils/ » configs_collection.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102    1                                     1                           1               1                 22 19 8   19                   109 107                     102 100                 16               7 7        
'use strict';
 
;require.register("utils/configs_collection", function (exports, require, module) {
  /**
   * 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');
 
  /**
   * This is util for storing static config info
   * Such way of managing config is much faster rather then Ember data
   * since it's using plain objects
   * This util has simple method to manipulate config objects
   */
 
  /**
   * these variables are used to store configs in array and in object to get config quickly
   * these properties shouldn't be managed in other way rather then method of configCollection
   * @type {Array}
   */
  var configsCollection = [],
 
  /**
   * this should be object with key - config id and value - config object
   * @type {Object}
   */
  configsCollectionMap = {};
 
  App.configsCollection = Em.Object.create({
 
    /**
     * adds config property to configs array and map
     * should assert error if config has no id
     * @param c
     * @method add
     */
    add: function add(c) {
      Em.assert('id should be defined', c && c.id);
      if (!configsCollectionMap[c.id]) {
        configsCollection.push(c);
      }
      configsCollectionMap[c.id] = c;
    },
 
    /**
     * get config by id from map
     * @param id
     * @returns {Object}
     * @method getConfig
     */
    getConfig: function getConfig(id) {
      Em.assert('id should be defined', id);
      return configsCollectionMap[id];
    },
 
    /**
     * get config from map by name and fileName
     * @param name
     * @param fileName
     * @returns {*|Object}
     * @method getConfigByName
     */
    getConfigByName: function getConfigByName(name, fileName) {
      Em.assert('name and filename should be defined', name && fileName);
      return this.getConfig(App.config.configId(name, fileName));
    },
 
    /**
     * get all configs
     * @returns {Array}
     * @method getAll
     */
    getAll: function getAll() {
      return configsCollection;
    },
 
    /**
     * clear all configs
     * @method clearAll
     */
    clearAll: function clearAll() {
      configsCollection = [];
      configsCollectionMap = {};
    }
 
  });
});