content: /*************************************************************************
  *                                                                        *
  *  This file is part of the 20n/act project.                             *
  *  20n/act enables DNA prediction for synthetic biology/bioengineering.  *
  *  Copyright (C) 2017 20n Labs, Inc.                                     *
  *                                                                        *
  *  Please direct all queries to act@20n.com.                             *
  *                                                                        *
  *  This program is free software: you can redistribute it and/or modify  *
  *  it under the terms of the GNU General Public License as published by  *
  *  the Free Software Foundation, either version 3 of the License, or     *
  *  (at your option) any later version.                                   *
  *                                                                        *
  *  This program is distributed in the hope that it will be useful,       *
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of        *
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
  *  GNU General Public License for more details.                          *
  *                                                                        *
  *  You should have received a copy of the GNU General Public License     *
  *  along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  *                                                                        *
  *************************************************************************/
  
  package com.twentyn.reachables.order;
  
  import com.fasterxml.jackson.annotation.JsonProperty;
  
  public class ServiceConfig {
    // The port on which to listen.
    @JsonProperty(value = "port", required = true)
    Integer port;
  
    // A path to a TSV file containing the reachables.  This will be loaded at startup time.
    @JsonProperty(value = "reachables_file", required = true)
    String reachablesFile;
  
    // The administrator's email address to use in order pages.
    @JsonProperty(value = "admin_email", required = true)
    String adminEmail;
  
    // A URL prefix to use for wiki page links.  Probably just https://wiki.20n.com/ or similar.
    @JsonProperty(value = "wiki_url_prefix", required = true)
    String wikiUrlPrefix;
  
    // A URL prefix to use for molecule images.  Probably https://wiki.20n.com/assets/img or similar.
    @JsonProperty(value = "image_url_prefix", required = true)
    String imageUrlPrefix;
  
    // A keyword that uniquely identifies the client who owns the wiki from which the order request originated.
    @JsonProperty(value = "client_keyword", required = true)
    String clientKeyword;
  
    // AWS access credentials, which can be found in the AWS IAM dashboard.
    @JsonProperty(value = "aws_access_key_id", required = true)
    String accessKeyId;
  
    @JsonProperty(value = "aws_secret_access_key", required = true)
    String secretAccessKey;
  
    // The AWS region where the SNS topic to which to publish order messages lives.
    @JsonProperty(value = "aws_region", required = true)
    String region;
  
    // The SNS topic to which to send order messages.
    @JsonProperty(value = "aws_sns_topic", required = true)
    String snsTopic;
  
    public ServiceConfig() {
    }
  
    public ServiceConfig(Integer port, String reachablesFile, String adminEmail,
                         String wikiUrlPrefix, String imageUrlPrefix, String clientKeyword,
                         String accessKeyId, String secretAccessKey,
                         String region, String snsTopic) {
      this.port = port;
      this.reachablesFile = reachablesFile;
      this.adminEmail = adminEmail;
      this.wikiUrlPrefix = wikiUrlPrefix;
      this.imageUrlPrefix = imageUrlPrefix;
      this.clientKeyword = clientKeyword;
      this.accessKeyId = accessKeyId;
      this.secretAccessKey = secretAccessKey;
      this.region = region;
      this.snsTopic = snsTopic;
    }
  
    public Integer getPort() {
      return port;
    }
  
    public void setPort(Integer port) {
      this.port = port;
    }
  
    public String getReachablesFile() {
      return reachablesFile;
    }
  
    public void setReachablesFile(String reachablesFile) {
      this.reachablesFile = reachablesFile;
    }
  
    public String getAdminEmail() {
      return adminEmail;
    }
  
    public void setAdminEmail(String adminEmail) {
      this.adminEmail = adminEmail;
    }
  
    public String getWikiUrlPrefix() {
      return wikiUrlPrefix;
    }
  
    public void setWikiUrlPrefix(String wikiUrlPrefix) {
      this.wikiUrlPrefix = wikiUrlPrefix;
    }
  
    public String getImageUrlPrefix() {
      return imageUrlPrefix;
    }
  
    public void setImageUrlPrefix(String imageUrlPrefix) {
      this.imageUrlPrefix = imageUrlPrefix;
    }
  
    public String getClientKeyword() {
      return clientKeyword;
    }
  
    public void setClientKeyword(String clientKeyword) {
      this.clientKeyword = clientKeyword;
    }
  
    public String getAccessKeyId() {
      return accessKeyId;
    }
  
    public void setAccessKeyId(String accessKeyId) {
      this.accessKeyId = accessKeyId;
    }
  
    public String getSecretAccessKey() {
      return secretAccessKey;
    }
  
    public void setSecretAccessKey(String secretAccessKey) {
      this.secretAccessKey = secretAccessKey;
    }
  
    public String getRegion() {
      return region;
    }
  
    public void setRegion(String region) {
      this.region = region;
    }
  
    public String getSnsTopic() {
      return snsTopic;
    }
  
    public void setSnsTopic(String snsTopic) {
      this.snsTopic = snsTopic;
    }
  }
  