package uk.org.squirm3.model.type; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import uk.org.squirm3.model.type.def.BasicType; import uk.org.squirm3.model.type.def.RandomBasicType; import uk.org.squirm3.model.type.def.RandomBuilderType; import uk.org.squirm3.model.type.def.SpecialType; import uk.org.squirm3.model.type.def.WildcardType; public abstract class Types { final static Collection<? extends AtomType> atomTypes; final static Collection<? extends BuilderType> builderTypes; final static Collection<? extends ChemicalType> chemicalTypes; final static Collection<? extends ReactionType> reactionTypes; static { final Collection<AtomType> modifiableAtomTypes = new ArrayList<AtomType>(); modifiableAtomTypes.addAll(Arrays.asList(BasicType.values())); modifiableAtomTypes.addAll(Arrays.asList(SpecialType.values())); atomTypes = Collections.unmodifiableCollection(modifiableAtomTypes); final Collection<BuilderType> modifiableBuilderTypes = new ArrayList<BuilderType>(); modifiableBuilderTypes.addAll(Arrays.asList(BasicType.values())); modifiableBuilderTypes.addAll(Arrays.asList(RandomBasicType.values())); modifiableBuilderTypes .addAll(Arrays.asList(RandomBuilderType.values())); modifiableBuilderTypes.addAll(Arrays.asList(SpecialType.values())); builderTypes = Collections .unmodifiableCollection(modifiableBuilderTypes); final Collection<ChemicalType> modifiableChemicalTypes = new ArrayList<ChemicalType>(); modifiableChemicalTypes.addAll(Arrays.asList(BasicType.values())); modifiableChemicalTypes.addAll(Arrays.asList(RandomBasicType.values())); modifiableChemicalTypes .addAll(Arrays.asList(RandomBuilderType.values())); modifiableChemicalTypes.addAll(Arrays.asList(SpecialType.values())); modifiableChemicalTypes.addAll(Arrays.asList(WildcardType.values())); chemicalTypes = Collections .unmodifiableCollection(modifiableChemicalTypes); final Collection<ReactionType> modifiableReactionTypes = new ArrayList<ReactionType>(); modifiableReactionTypes.addAll(Arrays.asList(BasicType.values())); modifiableReactionTypes.addAll(Arrays.asList(WildcardType.values())); reactionTypes = Collections .unmodifiableCollection(modifiableReactionTypes); } public static final Collection<? extends AtomType> getAtomTypes() { return atomTypes; } public static final Collection<? extends BuilderType> getBuilderTypes() { return builderTypes; } public static final Collection<? extends ChemicalType> getChemicalTypes() { return chemicalTypes; } public static final Collection<? extends ReactionType> getReactionTypes() { return reactionTypes; } }