Jalview-JS/JAL-3253-applet additional static final preferences
[jalview.git] / src / jalview / io / gff / SequenceOntologyFactory.java
index 258b16a..2ba41da 100644 (file)
  */
 package jalview.io.gff;
 
-import jalview.bin.Instance;
+import jalview.bin.ApplicationSingletonProvider;
+import jalview.bin.ApplicationSingletonProvider.ApplicationSingletonI;
 
 /**
  * A factory class that returns a model of the Sequence Ontology. By default a
- * hard-coded subset is used (for the applet, or testing), or setInstance() can
- * be used to set full Ontology data.
+ * hard-coded subset is used (for the applet, or testing), or
+ * setSequenceOntology() can be used to set full Ontology data.
  * 
  * @author gmcarstairs
  *
  */
-public class SequenceOntologyFactory
+public class SequenceOntologyFactory implements ApplicationSingletonI
 {
+  /**
+   * Answers an instance of this class for the current application context. Note
+   * that this supports running two JS 'applets' on the same page, one with the
+   * full Sequence Ontology (USE_FULL_SO = true) and one with a hard-coded
+   * subset (USE_FULL_SO = false). If this is overkill, could change this method
+   * to just return a common static instance.
+   * 
+   * @return
+   */
+  private static synchronized SequenceOntologyFactory getInstance()
+  {
+    return (SequenceOntologyFactory) ApplicationSingletonProvider
+            .getInstance(SequenceOntologyFactory.class);
+  }
 
+  /**
+   * Answers the configured model of the Sequence Ontology.
+   * 
+   * @return
+   */
   public static synchronized SequenceOntologyI getSequenceOntology()
   {
-    SequenceOntologyFactory j = getInstance();
-    return (j.sequenceOntology == null
-            ? j.sequenceOntology = new SequenceOntologyLite()
-            : j.sequenceOntology);
+    SequenceOntologyFactory f = getInstance();
+    return (f.sequenceOntology == null
+            ? f.sequenceOntology = new SequenceOntologyLite()
+            : f.sequenceOntology);
   }
 
   /**
@@ -46,7 +66,7 @@ public class SequenceOntologyFactory
    * 
    * @param so
    */
-  public static void setInstance(SequenceOntologyI so)
+  public static void setSequenceOntology(SequenceOntologyI so)
   {
     getInstance().sequenceOntology = so;
   }
@@ -58,12 +78,4 @@ public class SequenceOntologyFactory
     // private singleton
   }
 
-  private static synchronized SequenceOntologyFactory getInstance()
-  {
-    Instance j = Instance.getInstance();
-    return (j.sequenceOntologyFactory == null
-            ? j.sequenceOntologyFactory = new SequenceOntologyFactory()
-            : j.sequenceOntologyFactory);
-  }
-
 }