package ecologylab.bigsemantics.seeding;
import java.io.File;
import java.util.ArrayList;
import ecologylab.appframework.SingletonApplicationEnvironment;
import ecologylab.bigsemantics.namesandnums.CFPrefNames;
import ecologylab.bigsemantics.namesandnums.SemanticsAssetVersions;
import ecologylab.io.Assets;
import ecologylab.serialization.ElementState;
import ecologylab.serialization.SIMPLTranslationException;
import ecologylab.serialization.SimplTypesScope;
import ecologylab.serialization.annotations.simpl_collection;
import ecologylab.serialization.annotations.simpl_inherit;
import ecologylab.serialization.annotations.simpl_nowrap;
import ecologylab.serialization.annotations.simpl_scope;
import ecologylab.serialization.formatenums.Format;
/**
* A collection + registry of SeedSets.
*
* @author andruid
*/
public @simpl_inherit class CuratedSeedSets extends ElementState
implements CFPrefNames
{
@simpl_collection
@simpl_nowrap
@simpl_scope(BaseSeedTranslations.TSCOPE_NAME)
ArrayList<SeedSet> arrayList;
static CuratedSeedSets singleton;
static SimplTypesScope TSCOPE = SimplTypesScope.get("curated_seed_sets", BaseSeedTranslations.get(), CuratedSeedSets.class);
public CuratedSeedSets()
{
super();
}
//TODO -- don't use getElementStateById; instead use @simpl_map
public static SeedSet lookup(String id)
{
if (singleton == null)
init();
return (SeedSet) singleton.getElementStateById(id);
}
private static void init()
{
File seedingsFile = Assets.getAsset(SemanticsAssetVersions.SEMANTICS_ASSETS_ROOT, CFPrefNames.CURATED + "/curated_seed_sets.xml");
if (!SingletonApplicationEnvironment.runningInEclipse())
Assets.updateAssetsXml("CuratedSeedSets.init()");
try
{
CuratedSeedSets cs = (CuratedSeedSets) TSCOPE.deserialize(seedingsFile, Format.XML);
singleton = cs;
} catch (SIMPLTranslationException e)
{
e.printStackTrace();
}
}
static CuratedSeedSets all()
{
if (singleton == null)
init();
return singleton;
}
}