'use strict';

var LayerStats = require('./layer-stats');
var EmptyLayerStats = require('./empty-layer-stats');
var MapnikLayerStats = require('./mapnik-layer-stats');
var TorqueLayerStats = require('./torque-layer-stats');

module.exports = function LayerStatsFactory(type) {
    var layerStatsIterator = [];
    var selectedType = type || 'ALL';

    if (selectedType === 'ALL') {
        layerStatsIterator.push(new EmptyLayerStats({ http: true, plain: true }));
        layerStatsIterator.push(new MapnikLayerStats());
        layerStatsIterator.push(new TorqueLayerStats());
    } else if (selectedType === 'mapnik') {
        layerStatsIterator.push(new EmptyLayerStats({ http: true, plain: true, torque: true }));
        layerStatsIterator.push(new MapnikLayerStats());
    } else if (selectedType === 'torque') {
        layerStatsIterator.push(new EmptyLayerStats({ http: true, plain: true, mapnik: true }));
        layerStatsIterator.push(new TorqueLayerStats());
    }

    return new LayerStats(layerStatsIterator);
};
