X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2Fgff%2FSequenceOntologyFactory.java;h=2ba41da1e6abcc3fb1abeddae85fa56fd948e4e0;hb=2ea1fb1e8751ac7272c421820000449525664f02;hp=cd5a22cf4a8db201707c83a5909d5d09dd6899a8;hpb=208f2c3de82e3327c4f930ab7d04f5b812ccd277;p=jalview.git diff --git a/src/jalview/io/gff/SequenceOntologyFactory.java b/src/jalview/io/gff/SequenceOntologyFactory.java index cd5a22c..2ba41da 100644 --- a/src/jalview/io/gff/SequenceOntologyFactory.java +++ b/src/jalview/io/gff/SequenceOntologyFactory.java @@ -20,33 +20,62 @@ */ package jalview.io.gff; -import jalview.bin.Jalview; +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 { - // private static SequenceOntologyI instance; // moved to Jalview.instance for - // JavaScript + /** + * 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); + } - public static synchronized SequenceOntologyI getInstance() + /** + * Answers the configured model of the Sequence Ontology. + * + * @return + */ + public static synchronized SequenceOntologyI getSequenceOntology() { - Jalview j = Jalview.getInstance(); - if (j.sequenceOntology == null) - { - j.sequenceOntology = new SequenceOntologyLite(); - } - return j.sequenceOntology; + SequenceOntologyFactory f = getInstance(); + return (f.sequenceOntology == null + ? f.sequenceOntology = new SequenceOntologyLite() + : f.sequenceOntology); } - public static void setInstance(SequenceOntologyI so) + /** + * For testng only + * + * @param so + */ + public static void setSequenceOntology(SequenceOntologyI so) { - Jalview.getInstance().sequenceOntology = so; + getInstance().sequenceOntology = so; } + + private SequenceOntologyI sequenceOntology; + + private SequenceOntologyFactory() + { + // private singleton + } + }