Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Configuration.js 4.61 KiB
"use strict";

/* exported logger */

var logger = require('./logger');

var ConfigurationType = require('./ConfigurationType');
var MiriamType = require('./map/data/MiriamType');
var PrivilegeType = require('./map/data/PrivilegeType');
var ModificationStateType = require('./map/data/ModificationStateType');

function Configuration(json) {
  var self = this;
  var i;

  self._options = [];

  for (i = 0; i < json.options.length; i++) {
    var conf = json.options[i];
    var type = conf.type;
    var value = conf.value;
    self.setOption(type, value);
  }

  var legendFiles = [];
  if (self.getOption("LEGEND_FILE_1") !== undefined) {
    legendFiles.push(self.getOption("LEGEND_FILE_1"));
  }
  if (self.getOption("LEGEND_FILE_2") !== undefined) {
    legendFiles.push(self.getOption("LEGEND_FILE_2"));
  }
  if (self.getOption("LEGEND_FILE_3") !== undefined) {
    legendFiles.push(self.getOption("LEGEND_FILE_3"));
  }
  if (self.getOption("LEGEND_FILE_4") !== undefined) {
    legendFiles.push(self.getOption("LEGEND_FILE_4"));
  }
  self.setOption(ConfigurationType.LEGEND_FILES, legendFiles);

  var overlayTypes = [];
  for (i = 0; i < json.overlayTypes.length; i++) {
    overlayTypes.push(json.overlayTypes[i].name);
  }
  self.setOverlayTypes(overlayTypes);

  self.setImageConverters(json.imageFormats);
  self.setModelConverters(json.modelFormats);
  self.setElementTypes(json.elementTypes);
  self.setReactionTypes(json.reactionTypes);
  self.setMiriamTypes(json.miriamTypes);
  self.setModificationStateTypes(json.modificationStateTypes);
  self.setPrivilegeTypes(json.privilegeTypes);
}

Configuration.prototype.setOption = function (type, value) {
  this._options[type] = value;
};
Configuration.prototype.getOption = function (type) {
  return this._options[type];
};

Configuration.prototype.setOverlayTypes = function (overlayTypes) {
  this._overlayTypes = overlayTypes;
};
Configuration.prototype.getOverlayTypes = function () {
  return this._overlayTypes;
};

Configuration.prototype.setImageConverters = function (imageConverters) {
  this._imageConverters = imageConverters;
};
Configuration.prototype.getImageConverters = function () {
  return this._imageConverters;
};

Configuration.prototype.setModelConverters = function (modelConverters) {
  this._modelConverters = modelConverters;
};
Configuration.prototype.getModelConverters = function () {
  return this._modelConverters;
};

Configuration.prototype.setElementTypes = function (elementTypes) {
  this._elementTypes = elementTypes;
};
Configuration.prototype.getElementTypes = function () {
  return this._elementTypes;
};
Configuration.prototype.getElementTypeNames = function () {
  var result = [];
  for (var i = 0; i < this._elementTypes.length; i++) {
    result.push(this._elementTypes[i].name);
  }
  return result;
};

Configuration.prototype.setReactionTypes = function (reactionTypes) {
  this._reactionTypes = reactionTypes;
};
Configuration.prototype.getReactionTypes = function () {
  return this._reactionTypes;
};

Configuration.prototype.setMiriamTypes = function (miriamTypes) {
  this._miriamTypes = [];
  for (var key in miriamTypes) {
    if (miriamTypes.hasOwnProperty(key)) {
      var typeData = miriamTypes[key];
      this._miriamTypes.push(new MiriamType(typeData, key));
    }
  }
};

Configuration.prototype.setPrivilegeTypes = function (privilegeTypes) {
  this._privilegeTypes = [];
  for (var key in privilegeTypes) {
    if (privilegeTypes.hasOwnProperty(key)) {
      var typeData = privilegeTypes[key];
      this._privilegeTypes.push(new PrivilegeType(typeData, key));
    }
  }
};

Configuration.prototype.getPrivilegeTypes = function () {
  return this._privilegeTypes;
};

Configuration.prototype.getMiriamTypeByName = function (name) {
  var self = this;
  for (var i = 0; i < self._miriamTypes.length; i++) {
    var miriamType = self._miriamTypes[i];
    if (miriamType.getName() === name) {
      return miriamType;
    }
  }
  return null;
};

Configuration.prototype.setModificationStateTypes = function (modificationStateTypes) {
  this._modificationStateTypes = [];
  for (var key in modificationStateTypes) {
    if (modificationStateTypes.hasOwnProperty(key)) {
      var typeData = modificationStateTypes[key];
      this._modificationStateTypes.push(new ModificationStateType(typeData, key));
    }
  }
};
Configuration.prototype.getModificationStateTypeByName = function (name) {
  var self = this;
  for (var i = 0; i < self._modificationStateTypes.length; i++) {
    var modificationStateType = self._modificationStateTypes[i];
    if (modificationStateType.getName() === name) {
      return modificationStateType;
    }
  }
  return null;
};

module.exports = Configuration;