Merge branch 'releases/Release_2_11_3_Branch'
[jalview.git] / src / jalview / structure / StructureImportSettings.java
index b23fd53..22ecdc7 100644 (file)
@@ -1,7 +1,38 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview 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.
+ *  
+ * Jalview 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 Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.structure;
 
-import jalview.datamodel.DBRefSource;
+import java.util.Locale;
 
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.PDBEntry.Type;
+import jalview.util.MessageManager;
+
+/**
+ * bean holding settings for structure IO. TODO: tests for validation of values
+ * TODO: tests for race conditions (all fields are static, is that correct ?)
+ * 
+ * @author tcofoegbu
+ *
+ */
 public class StructureImportSettings
 {
   /**
@@ -14,7 +45,7 @@ public class StructureImportSettings
    * Set true to predict secondary structure (using JMol for protein, Annotate3D
    * for RNA)
    */
-  private static boolean predictSecStr = false;
+  private static boolean processSecStr = false;
 
   /**
    * Set true (with predictSecondaryStructure=true) to predict secondary
@@ -24,15 +55,42 @@ public class StructureImportSettings
 
   private static boolean showSeqFeatures = true;
 
-  private static boolean processHETATMs = false;
+  public enum StructureParser
+  {
+    JMOL_PARSER, JALVIEW_PARSER
+  }
+
+  public static enum TFType
+  {
+    DEFAULT, PLDDT;
+
+    @Override
+    public String toString()
+    {
+      return MessageManager.getString(
+              "label.tftype_" + this.name().toLowerCase(Locale.ROOT));
+    }
+  }
 
-  private static String currentDefaultFormat = DBRefSource.PDB;
+  /**
+   * Determines the default file format for structure files to be downloaded
+   * from the PDB sequence fetcher. Possible options include: PDB|mmCIF
+   */
+  private static PDBEntry.Type defaultStructureFileFormat = Type.PDB;
+
+  /**
+   * Determines the parser used for parsing PDB format file. Possible options
+   * are : JMolParser|JalveiwParser
+   */
+  private static StructureParser defaultPDBFileParser = StructureParser.JMOL_PARSER;
+
+  private static TFType temperatureFactorType;
 
   public static void addSettings(boolean addAlignmentAnnotations,
-          boolean predictSecStr, boolean externalSecStr)
+          boolean processSecStr, boolean externalSecStr)
   {
     StructureImportSettings.visibleChainAnnotation = addAlignmentAnnotations;
-    StructureImportSettings.predictSecStr = predictSecStr;
+    StructureImportSettings.processSecStr = processSecStr;
     StructureImportSettings.externalSecondaryStructure = externalSecStr;
     StructureImportSettings.showSeqFeatures = true;
   }
@@ -42,21 +100,26 @@ public class StructureImportSettings
     return visibleChainAnnotation;
   }
 
+  public static void setTemperatureFactorType(TFType t)
+  {
+    StructureImportSettings.temperatureFactorType = t;
+  }
+
   public static void setVisibleChainAnnotation(
           boolean visibleChainAnnotation)
   {
     StructureImportSettings.visibleChainAnnotation = visibleChainAnnotation;
   }
 
-  public static boolean isPredictSecondaryStructure()
+  public static boolean isProcessSecondaryStructure()
   {
-    return predictSecStr;
+    return processSecStr;
   }
 
-  public static void setPredictSecondaryStructure(
-          boolean predictSecondaryStructure)
+  public static void setProcessSecondaryStructure(
+          boolean processSecondaryStructure)
   {
-    StructureImportSettings.predictSecStr = predictSecondaryStructure;
+    StructureImportSettings.processSecStr = processSecondaryStructure;
   }
 
   public static boolean isExternalSecondaryStructure()
@@ -80,24 +143,38 @@ public class StructureImportSettings
     StructureImportSettings.showSeqFeatures = showSeqFeatures;
   }
 
-  public static String getCurrentDefaultFormat()
+  public static PDBEntry.Type getDefaultStructureFileFormat()
+  {
+    return defaultStructureFileFormat;
+  }
+
+  public static void setDefaultStructureFileFormat(
+          String defaultStructureFileFormat)
+  {
+    StructureImportSettings.defaultStructureFileFormat = PDBEntry.Type
+            .valueOf(defaultStructureFileFormat.toUpperCase(Locale.ROOT));
+  }
+
+  public static String getDefaultPDBFileParser()
   {
-    return currentDefaultFormat;
+    return defaultPDBFileParser.toString();
   }
 
-  public static void setCurrentDefaultFormat(String currentDefaultFormat)
+  public static void setDefaultPDBFileParser(
+          StructureParser defaultPDBFileParser)
   {
-    StructureImportSettings.currentDefaultFormat = currentDefaultFormat;
+    StructureImportSettings.defaultPDBFileParser = defaultPDBFileParser;
   }
 
-  public static boolean isProcessHETATMs()
+  public static void setDefaultPDBFileParser(String defaultPDBFileParser)
   {
-    return processHETATMs;
+    StructureImportSettings.defaultPDBFileParser = StructureParser
+            .valueOf(defaultPDBFileParser.toUpperCase(Locale.ROOT));
   }
 
-  public static void setProcessHETATMs(boolean processHETATMs)
+  public static TFType getTemperatureFactorType()
   {
-    StructureImportSettings.processHETATMs = processHETATMs;
+    return temperatureFactorType;
   }
 
 }