/** * 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 (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(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(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() { return configsCollection; }, /** * clear all configs * @method clearAll */ clearAll: function() { configsCollection = []; configsCollectionMap = {}; } });