package org.gmod.schema.cfg; import org.gmod.schema.feature.Transcript; import org.gmod.schema.feature.Gap; import org.hibernate.cfg.Configuration; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import java.util.Collection; public class OrganismHeirachy implements ApplicationContextAware { private String beanName; private ApplicationContext applicationContext; private Collection<Integer> ids; public void afterPropertiesSet() { ChadoSessionFactoryBean csfb = applicationContext.getBean('&' +beanName, ChadoSessionFactoryBean.class); Configuration cfg = csfb.getConfiguration(); if (!(cfg instanceof ChadoAnnotationConfiguration)) { throw new IllegalArgumentException( String.format("Configuration is '%s', not an instance of ChadoAnnotationConfiguration", cfg.getClass())); } ChadoAnnotationConfiguration cac = (ChadoAnnotationConfiguration) cfg; ids = cac.getTypeIdsByClass(Transcript.class); ids.addAll(cac.getTypeIdsByClass(Gap.class)); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } public void setBeanName(String beanName) { this.beanName = beanName; } public Collection<Integer> getIds() { return ids; } }