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 act.installer.brenda;
  
  import java.util.regex.Pattern;
  
  public class BrendaRxnEntry {
    public static final Pattern BRACKETS_PATTERN = Pattern.compile("^\\[.*\\]");
  
    protected String ecNumber;
    protected String substrates;
    protected String commentarySubstrates;
    protected String literatureSubstrates;
    protected String organismSubstrates;
    protected String products;
    protected String reversibility;
    protected Integer id;
    protected Boolean isNatural;
  
    public BrendaRxnEntry(String ecNumber, String substrates, String commentarySubstrates, String literatureSubstrates,
                          String organismSubstrates, String products, String reversibility,
                          Integer id, Boolean isNatural) {
      this.ecNumber = ecNumber;
      this.substrates = substrates;
      this.commentarySubstrates = commentarySubstrates;
      this.literatureSubstrates = literatureSubstrates;
      if (organismSubstrates != null) {
        organismSubstrates = organismSubstrates.trim();
        if (BRACKETS_PATTERN.matcher(organismSubstrates).find()) {
          // Remove the square braces around the organism's genus to handle cases like '[Brevibacterium] flavum'.
          organismSubstrates = organismSubstrates.replace("[", "").replace("]", "");
        }
      }
  
      this.organismSubstrates = organismSubstrates;
      this.products = products;
      this.reversibility = reversibility;
      this.id = id;
      this.isNatural = isNatural;
    }
  
    public String getOrganism() {
      return this.organismSubstrates;
    }
  
    public String getReversibility() {
      return this.reversibility;
    }
  
    public String getSubstrateStr() {
      return this.substrates;
    }
  
    public String getProductStr() {
      return this.products;
    }
  
    public String getEC() {
      return this.ecNumber;
    }
  
    public String getLiteratureRef() {
      return this.literatureSubstrates;
    }
  
    public String getBrendaID() {
      return this.id.toString();
    }
  
    public Boolean isNatural() {
      return this.isNatural;
    }
  }
  
  