Newer
Older
final boolean readChildren)
throws SQLException, ReadFormatException, ConnectException, IOException
CvTermThread cvThread = null;
{
cvThread = new CvTermThread(dao);
cvThread.start();
}
boolean singleSchema = true;
final List pg_schemas = dao.getSchema();
Iterator schemasIt = pg_schemas.iterator();
while(schemasIt.hasNext())
{
String thisSchema = (String)schemasIt.next();
if( thisSchema.equalsIgnoreCase(schema) )
{
singleSchema = false;
break;
}
}
if(singleSchema)
logger4j.debug("SINGLE SCHEMA");
else
reset((String)getLocation(), (String)schema_search.get(0));
List features = dao.getFeaturesByUniqueName(search_gene);
if(features == null || features.size() == 0)
throw new IOException();
Feature chadoFeature = (Feature)(features.get(0));
ChadoCanonicalGene chado_gene = new ChadoCanonicalGene();
id_store.put(Integer.toString(chadoFeature.getFeatureId()),
List featurelocs = new Vector(chadoFeature.getFeatureLocsForFeatureId());
FeatureLoc featureloc = (FeatureLoc) featurelocs.get(0);
int src_id = featureloc.getSrcFeatureId();
srcFeatureId = Integer.toString(src_id);
parent = dao.getLazyFeatureNoResiduesById(new Integer(src_id));
buildGffLineFromId(dao, chadoFeature.getFeatureId(),
id_store, parent.getUniqueName(), src_id, buff, chadoFeature);
if(!readChildren)
{
logger4j.debug( new String(buff.getBytes()) );
return buff;
}
// get children of gene
List relations = new Vector(chadoFeature.getFeatureRelationshipsForObjectId());
Set idsSeen = new HashSet();
for(int i = 0; i < relations.size(); i++)
{
int id = ((FeatureRelationship) relations.get(i)).getFeatureBySubjectId().getFeatureId();
Integer idInt = new Integer(id);
if(idsSeen.contains(idInt))
continue;
idsSeen.add(idInt);
Feature transcript = buildGffLineFromId(dao, id, id_store, parent.getUniqueName(),
src_id, buff, null);
if( transcript == null || transcript.getCvTerm() == null ||
transcript.getCvTerm().getName() == null ||
(transcript.getCvTerm().getName().indexOf("RNA") < 0 &&
transcript.getCvTerm().getName().indexOf("transcript") < 0 ) )
continue;
// get children of transcript - exons and pp
logger4j.debug("GET CHILDREN OF "+transcript.getName());
List transcipt_relations = new Vector(
transcript.getFeatureRelationshipsForObjectId());
for(int j = 0; j < transcipt_relations.size(); j++)
{
id = ((FeatureRelationship) transcipt_relations.get(j)).getFeatureBySubjectId().getFeatureId();
buildGffLineFromId(dao, id, id_store, parent.getUniqueName(),
src_id, buff, null);
logger4j.debug( "GFF:\n"+new String(buff.getBytes()) );
// now wait for cvterm to be loaded
if(cvThread != null)
{
while(cvThread.isAlive())
try
{
Thread.sleep(10);
}
catch(InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return buff;
}
/**
*
* @param dao
* @param featureId
* @param id_store
* @param parentName
* @param srcFeatureId
* @param this_buff
* @param chadoFeature
* @return
*/
private Feature buildGffLineFromId(final GmodDAO dao,
final int featureId,
final Hashtable id_store,
final String parentName,
final int srcFeatureId,
final ByteBuffer this_buff,
Feature chadoFeature)
{
if(chadoFeature == null)
chadoFeature = (Feature)dao.getFeatureById(featureId);
id_store.put(Integer.toString(chadoFeature.getFeatureId()),
chadoFeature.getFeatureLocsForFeatureId()), srcFeatureId);
if(loc == null)
{
logger4j.debug("FEATURELOC NOT FOUND :: "+chadoFeature.getUniqueName());
return null;
}
final Hashtable dbxrefs = IBatisDAO.mergeDbXRef(
dao.getFeatureDbXRefsByFeatureUniquename(chadoFeature.getUniqueName()));
final Hashtable synonym = getAllFeatureSynonyms(
dao.getFeatureSynonymsByFeatureUniquename(chadoFeature.getUniqueName()));
final Hashtable featureCvTerms = getFeatureCvTermsByFeature(dao,
final Hashtable featureCvTermDbXRefs = getFeatureCvTermDbXRef(dao,
dao.getFeatureCvTermDbXRefByFeature(chadoFeature));
try
{
featureCvTermPubs = getFeatureCvTermPub(dao,
dao.getFeatureCvTermPubByFeature(chadoFeature));
}
catch(RuntimeException re){re.printStackTrace();}
final Hashtable featurePubs = getFeaturePubs(dao,
dao.getFeaturePubsByFeature(chadoFeature));
List pubDbXRefs= new Vector(); //dao.getPubDbXRef();
chadoToGFF(chadoFeature, parentName, dbxrefs, synonym, featureCvTerms,
pubDbXRefs, featureCvTermDbXRefs, featureCvTermPubs, featurePubs,
id_store, dao, loc, this_buff, gene_builder);
/**
* Convert the chado feature into a GFF line
* @param feat Chado feature
* @param parentFeature parent of this feature
* @param dbxrefs hashtable containing dbxrefs
* @param synonym hashtable containing synonynms
* @param featureCvTerms
* @param pubDbXRefs
* @param featureCvTermDbXRefs
* @param id_store id store for looking up parent names
* @param dao chado data access
* @param featureloc feature location for this chado feature
private static void chadoToGFF(final Feature feat,
final String parentFeature,
final Hashtable dbxrefs,
final Hashtable synonym,
final Hashtable featureCvTerms,
final Hashtable id_store,
final ByteBuffer this_buff,
final boolean gene_builder)
final int fmin = featureloc.getFmin().intValue() + 1;
final int fmax = featureloc.getFmax().intValue();
final int type_id = feat.getCvTerm().getCvTermId();
final Short strand = featureloc.getStrand();
final Integer phase = featureloc.getPhase();
final String name = feat.getUniqueName();
final String typeName = getCvtermName(type_id, dao, gene_builder);
final Integer featureId = new Integer(feat.getFeatureId());
final String timelastmodified = Long.toString(feat.getTimeLastModified().getTime());
String parent_id = null;
String parent_relationship = null;
/* if(feat.getFeatureRelationship() != null)
FeatureRelationship feat_relationship = feat.getFeatureRelationship();
parent_id = Integer.toString(feat_relationship.getFeatureByObjectId().getFeatureId());
long parent_type_id = feat_relationship.getCvTerm().getCvTermId();
parent_relationship = feat_relationship.getCvTerm().getName();
if(parent_relationship == null)
parent_relationship = getCvtermName(parent_type_id, dao);
}
if(feat.getFeatureRelationshipsForSubjectId() != null)
Collection relations = feat.getFeatureRelationshipsForSubjectId();
Iterator it = relations.iterator();
Set featureRelationshipIds = new HashSet();
//Set duplicates = new HashSet();
while(it.hasNext())
final FeatureRelationship fr =
(FeatureRelationship)it.next();
final Integer featureRelationShipId = new Integer( fr.getFeatureRelationshipId() );
if(featureRelationshipIds.contains( featureRelationShipId ))
continue;
featureRelationshipIds.add(featureRelationShipId);
final String cvTermName;
if( fr.getCvTerm().getName() == null )
{
int parent_type_id = fr.getCvTerm().getCvTermId();
cvTermName = getCvtermName(parent_type_id, dao, gene_builder);
}
else
cvTermName = fr.getCvTerm().getName();
if(cvTermName.equals("derives_from") || cvTermName.equals("part_of") ||
cvTermName.equals("proper_part_of") ||
cvTermName.equals("partof") || cvTermName.equals("producedby")) // flybase
parent_relationship = cvTermName;
parent_id = Integer.toString(fr.getFeatureByObjectId().getFeatureId());
rank = fr.getRank();
}
else
{
if(clusterOrthoParalog == null)
clusterOrthoParalog = new ByteBuffer();
// ortholog/paralog/cluster data
int orthologueFeature = fr.getFeatureByObjectId().getFeatureId();
clusterOrthoParalog.append(cvTermName+"="+
GFFStreamFeature.encode("object_id="+orthologueFeature+"; rank="+fr.getRank())+";");
}
if(parent_id != null && id_store != null && id_store.containsKey(parent_id))
parent_id = ((Feature)id_store.get(parent_id)).getUniqueName();
// make gff format
Vector dbxref = null;
// append dbxrefs
if(dbxrefs != null &&
dbxrefs.containsKey(featureId))
dbxref = (Vector)dbxrefs.get(featureId);
if(((String)dbxref.get(j)).startsWith("GFF_source:"))
gff_source = ((String)dbxref.get(j)).substring(11);
dbxref.removeElementAt(j);
this_buff.append(parentFeature + "\t"); // seqid
if(gff_source != null)
this_buff.append(gff_source+"\t"); // source
else
this_buff.append("chado\t");
if(typeName.equals("exon"))
this_buff.append(EXONMODEL + "\t"); // type
else
this_buff.append(typeName + "\t"); // type
this_buff.append(fmin + "\t"); // start
this_buff.append(fmax + "\t"); // end
this_buff.append(".\t"); // score
if(strand.equals( new Short((short)-1)) ) // strand
else if(strand.equals( new Short((short)1)) )
this_buff.append("+\t");
else
this_buff.append(".\t");
this_buff.append(".\t"); // phase
else
this_buff.append(phase+"\t");
this_buff.append("ID=" + name + ";");
this_buff.append("feature_id=" + featureId.toString() + ";");
if(feat.getName() != null)
this_buff.append("Name=" + feat.getName() + ";");
if(parent_id != null && !parent_id.equals("0"))
{
if(parent_relationship.equals("derives_from"))
this_buff.append("Derives_from=" + parent_id + ";");
this_buff.append("Parent=" + parent_id + ";");
}
this_buff.append("timelastmodified=" + timelastmodified + ";");
this_buff.append("isObsolete=" + Boolean.toString(feat.isObsolete()) + ";");
if(featureloc.isFminPartial())
this_buff.append("isFminPartial;");
if(featureloc.isFmaxPartial())
this_buff.append("isFmaxPartial;");
// this is the chado feature_relationship.rank used
this_buff.append("feature_relationship_rank="+rank+";");
//this_buff.append("feature_id="+feature_id+";");
if(feat.getFeatureProps() != null &&
feat.getFeatureProps().size() > 0)
Collection featureprops = feat.getFeatureProps();
Iterator it = featureprops.iterator();
while(it.hasNext())
String qualifier_name = getCvtermName(featprop.getCvTerm().getCvTermId(), dao, gene_builder);
this_buff.append(GFFStreamFeature.encode(qualifier_name)+ "=" +
GFFStreamFeature.encode(featprop.getValue())+";");
if(clusterOrthoParalog != null)
this_buff.append(clusterOrthoParalog);
boolean foundPrimaryDbXRef = false;
if(feat.getDbXRef() != null)
this_buff.append(GFFStreamFeature.encode(
feat.getDbXRef().getDb().getName()+":"+feat.getDbXRef().getAccession()));
foundPrimaryDbXRef = true;
if(dbxref == null || dbxref.size() == 0)
this_buff.append(";");
}
if(dbxref != null && dbxref.size() > 0)
{
if(foundPrimaryDbXRef)
this_buff.append(",");
else
this_buff.append("Dbxref=");
this_buff.append(";");
}
// append synonyms
if(synonym != null &&
synonym.containsKey(featureId))
Vector v_synonyms = (Vector)synonym.get(featureId);
this_buff.append( getCvtermName(alias.getSynonym().getCvTerm().getCvTermId(), dao, gene_builder) + "=" );
//this_buff.append(alias.getSynonym().getCvterm().getName()+"=");
this_buff.append(alias.getSynonym().getName());
if(!alias.isCurrent())
this_buff.append(GFFStreamFeature.encode(";current=false"));
// /literature
if(featurePubs != null &&
featurePubs.containsKey(featureId))
{
FeaturePub featurePub;
Vector v_featurePubs = (Vector)featurePubs.get(featureId);
for(int j=0; j<v_featurePubs.size(); j++)
{
featurePub = (FeaturePub)v_featurePubs.get(j);
this_buff.append( "literature=" );
this_buff.append(featurePub.getPub().getUniqueName());
this_buff.append(";");
}
}
if(featureCvTerms != null &&
featureCvTerms.containsKey(featureId))
{
FeatureCvTerm feature_cvterm;
Vector v_feature_cvterms = (Vector)featureCvTerms.get(featureId);
for(int j=0; j<v_feature_cvterms.size(); j++)
{
feature_cvterm = (FeatureCvTerm)v_feature_cvterms.get(j);
Integer featureCvTermId = new Integer( feature_cvterm.getFeatureCvTermId() );
if(featureCvTermDbXRefs != null)
featureCvTermDbXRefList = (List)featureCvTermDbXRefs.get(featureCvTermId);
List featureCvTermPubList = null;
if(featureCvTermPubs != null)
featureCvTermPubList = (List)featureCvTermPubs.get(featureCvTermId);
featureCvTermDbXRefList,featureCvTermPubList, pubDbXRefs, gene_builder);
}
//System.out.println(new String(this_buff.getBytes()));
}
this_buff.append("\n");
}
/**
* Appends controlled vocabulary terms to the buffer
* @param attr_buff
* @param dao
* @param feature_cvterm
* @param featureCvTermDbXRef
*/
public static void appendControlledVocabulary(final ByteBuffer attr_buff,
final GmodDAO dao,
final FeatureCvTerm feature_cvterm,
final List featureCvTermDbXRefs,
final List pubDbXRefs,
final boolean gene_builder)
CvTerm cvterm = getCvTerm( feature_cvterm.getCvTerm().getCvTermId(), dao, gene_builder);
DbXRef dbXRef = feature_cvterm.getCvTerm().getDbXRef();
if(cvterm.getCv().getName().startsWith(DatabaseDocument.CONTROLLED_CURATION_TAG_CVNAME))
{
attr_buff.append("controlled_curation=");
attr_buff.append("term="+
GFFStreamFeature.encode(feature_cvterm.getCvTerm().getName())+"%3B");
attr_buff.append("cv="+
GFFStreamFeature.encode(feature_cvterm.getCvTerm().getCv().getName())+"%3B");
// N.B. the db_xref may be a FeatureCvTermDbXRef or a Pub for /controlled_curation
int nfound_dbxref = 0;
if(feature_cvterm.getPub().getUniqueName() != null &&
!feature_cvterm.getPub().getUniqueName().equalsIgnoreCase("NULL"))
{
// PMID
Pub pub = feature_cvterm.getPub();
// internal check
checkPubDbXRef(pubDbXRefs, pub.getPubId(), pub, feature_cvterm);
attr_buff.append("db_xref="+ pub.getUniqueName());
nfound_dbxref++;
}
if(featureCvTermDbXRefs != null &&
featureCvTermDbXRefs.size() > 0)
{
for(int i=0; i<featureCvTermDbXRefs.size(); i++)
FeatureCvTermDbXRef featureCvTermDbXRef =
(FeatureCvTermDbXRef)featureCvTermDbXRefs.get(i);
if(feature_cvterm.getFeatureCvTermId() !=
featureCvTermDbXRef.getFeatureCvTerm().getFeatureCvTermId())
continue;
if(nfound_dbxref == 0)
attr_buff.append("db_xref=");
DbXRef fc_dbXRef = featureCvTermDbXRef.getDbXRef();
attr_buff.append(fc_dbXRef.getDb().getName()+":");
attr_buff.append(fc_dbXRef.getAccession());
nfound_dbxref++;
}
if(nfound_dbxref > 0)
attr_buff.append("%3B");
List feature_cvtermprops = (List) feature_cvterm.getFeatureCvTermProps();
for(int i = 0; i < feature_cvtermprops.size(); i++)
{
FeatureCvTermProp feature_cvtermprop =
(FeatureCvTermProp)feature_cvtermprops.get(i);
attr_buff.append(getCvtermName(feature_cvtermprop.getCvTerm()
.getCvTermId(), dao, gene_builder));
attr_buff.append(GFFStreamFeature.encode(feature_cvtermprop.getValue()));
if(i < feature_cvtermprops.size()-1)
attr_buff.append("%3B");
}
attr_buff.append(";");
}
else if(cvterm.getCv().getName().equals(DatabaseDocument.PRODUCTS_TAG_CVNAME))
{
attr_buff.append("product=");
constructCvTermString(attr_buff, dao, feature_cvterm, featureCvTermDbXRefs,
featureCvTermPubs, dbXRef, false, gene_builder);
else if(cvterm.getCv().getName().equals(DatabaseDocument.RILEY_TAG_CVNAME))
{
attr_buff.append(dbXRef.getAccession()+"::"+
feature_cvterm.getCvTerm().getCvTermId()+";");
if(cvterm.getCv().getName().equals("molecular_function"))
attr_buff.append("aspect=F%3B");
else if(cvterm.getCv().getName().equals("cellular_component"))
attr_buff.append("aspect=C%3B");
else if(cvterm.getCv().getName().equals("biological_process"))
attr_buff.append("aspect=P%3B");
constructCvTermString(attr_buff, dao, feature_cvterm, featureCvTermDbXRefs,
featureCvTermPubs, dbXRef, true, gene_builder);
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
}
}
/**
* Construct the GFF qualifier string for a FeatureCvTerm
* @param attr_buff
* @param dao
* @param feature_cvterm
* @param featureCvTermDbXRefs
* @param featureCvTermPubs
* @param dbXRef
* @param showDbId
*/
private static void constructCvTermString(final ByteBuffer attr_buff,
final GmodDAO dao,
final FeatureCvTerm feature_cvterm,
final List featureCvTermDbXRefs,
final List featureCvTermPubs,
final DbXRef dbXRef,
final boolean showDbId,
final boolean gene_builder)
{
if(feature_cvterm.isNot())
attr_buff.append("qualifier=NOT%3B");
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
+ dbXRef.getAccession() + "%3B");
attr_buff.append("term="+
GFFStreamFeature.encode(feature_cvterm.getCvTerm().getName())+"%3B");
// PMID
int nfound_pub = 0;
if(feature_cvterm.getPub() != null &&
feature_cvterm.getPub().getUniqueName() != null &&
!feature_cvterm.getPub().getUniqueName().equalsIgnoreCase("NULL"))
{
Pub pub = feature_cvterm.getPub();
attr_buff.append("db_xref="+
pub.getUniqueName());
nfound_pub++;
}
if(featureCvTermPubs != null &&
featureCvTermPubs.size() > 0)
{
for(int i=0; i<featureCvTermPubs.size(); i++)
FeatureCvTermPub featureCvTermPub =
(FeatureCvTermPub)featureCvTermPubs.get(i);
if(feature_cvterm.getFeatureCvTermId() !=
featureCvTermPub.getFeatureCvTerm().getFeatureCvTermId())
continue;
if(nfound_pub == 0)
attr_buff.append("db_xref=");
else if(nfound_pub > 0)
attr_buff.append("|");
attr_buff.append(featureCvTermPub.getPub().getUniqueName());
}
if(nfound_pub > 0)
attr_buff.append("%3B");
if(featureCvTermDbXRefs != null &&
featureCvTermDbXRefs.size() > 0 )
{
int nfound = 0;
for(int i=0; i<featureCvTermDbXRefs.size(); i++)
FeatureCvTermDbXRef featureCvTermDbXRef =
(FeatureCvTermDbXRef)featureCvTermDbXRefs.get(i);
if(feature_cvterm.getFeatureCvTermId() !=
featureCvTermDbXRef.getFeatureCvTerm().getFeatureCvTermId())
if(nfound == 0)
attr_buff.append("with=");
attr_buff.append("|");
DbXRef fc_dbXRef = featureCvTermDbXRef.getDbXRef();
attr_buff.append(fc_dbXRef.getDb().getName()+":");
attr_buff.append(fc_dbXRef.getAccession());
nfound++;
}
List feature_cvtermprops = (List)feature_cvterm
.getFeatureCvTermProps();
for(int i = 0; i < feature_cvtermprops.size(); i++)
{
FeatureCvTermProp feature_cvtermprop =
(FeatureCvTermProp)feature_cvtermprops.get(i);
if(feature_cvtermprop.getValue() == null)
continue;
attr_buff.append(getCvtermName(feature_cvtermprop.getCvTerm()
.getCvTermId(), dao, gene_builder));
attr_buff.append("=");
attr_buff.append(GFFStreamFeature.encode(feature_cvtermprop.getValue()));
if(i < feature_cvtermprops.size()-1)
attr_buff.append("%3B");
attr_buff.append(";");
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
/**
* Check the PubDbXref contains the Pub in FeatureCvTerm
* @param pubDbXRefs
* @param pubId
* @param pub
* @param feature_cvterm
*/
private static void checkPubDbXRef(final List pubDbXRefs, final int pubId,
final Pub pub, final FeatureCvTerm feature_cvterm)
{
PubDbXRef pubDbXRef = null;
for(int i = 0; i < pubDbXRefs.size(); i++)
{
pubDbXRef = (PubDbXRef) pubDbXRefs.get(i);
if(pubDbXRef.getPub().getPubId() == pubId)
{
DbXRef dbxref = pubDbXRef.getDbXRef();
Splash.logger4j.debug("Checking PubDbXRef and found Pub "+dbxref.getDb().getName()+
":"+dbxref.getAccession());
break;
}
}
if(pubDbXRef == null ||
!pub.getUniqueName().endsWith(pubDbXRef.getDbXRef().getAccession()))
{
Splash.logger4j.debug("Checking PubDbXRef and not found Pub "+
feature_cvterm.getPub().getUniqueName());
/*JOptionPane.showMessageDialog(null, "Cannot find pub_dbxref for:\n"+
JOptionPane.ERROR_MESSAGE);*/
/**
* Look up the cvterm_id for a controlled vocabulary name.
* @param name
* @return
*/
public static Integer getCvtermID(final String name)
Enumeration enum_cvterm = cvterms.keys();
if(name.equalsIgnoreCase( ((CvTerm)cvterms.get(key)).getName() ))
* Look up a cvterm name from the collection of cvterms.
* @param id a cvterm_id
* @return the cvterm name
private static String getCvtermName(final int id,
final GmodDAO dao,
final boolean gene_builder)
if(gene_builder)
return dao.getCvTermById(id).getName();
return getCvTerm(id, dao, gene_builder).getName();
private static CvTerm getCvTerm(final int id,
final GmodDAO dao,
final boolean gene_builder)
if(gene_builder)
return dao.getCvTermById(id);
/**
* Use the CvTerm name to return a CvTerm.
* @param cvTermId
* @return
*/
public static CvTerm getCvTermByCvTermName(final String cvterm_name)
{
Enumeration enum_cvterm = cvterms.elements();
while(enum_cvterm.hasMoreElements())
{
CvTerm cvterm = (CvTerm)enum_cvterm.nextElement();
if(cvterm_name.equalsIgnoreCase( cvterm.getName() ))
/**
* Use the CvTermId to return a CvTerm.
* @param cvTermId
* @return
*/
public static CvTerm getCvTermByCvTermId(final int cvTermId,
final uk.ac.sanger.artemis.io.Feature feature)
if(cvterms == null)
{
try
{
DatabaseDocument doc =
(DatabaseDocument) ((DocumentEntry)feature.getEntry()).getDocument();
return doc.getDAO().getCvTermById(cvTermId);
}
catch(ConnectException e)
{
logger4j.warn(e.getMessage());
}
catch(SQLException e)
{
logger4j.warn(e.getMessage());
}
}
Enumeration enum_cvterm = cvterms.elements();
while(enum_cvterm.hasMoreElements())
{
CvTerm cvterm = (CvTerm)enum_cvterm.nextElement();
if(cvterm.getCvTermId() == cvTermId)
return cvterm;
}
return null;
}
* @param cvterm_name
* @param cvName
* @return
*/
public static CvTerm getCvTermByCvAndCvTerm(final String cvterm_name,
final String cvName)
{
if(cvName.equals( cvterm.getCv().getName() ) &&
cvterm_name.equals( cvterm.getName() ))
return cvterm;
}
return null;
}
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
/**
* This is different from getCvTermByCvAndCvTerm as it makes sure
* the Cv name part matches the name supplied to the function, i.e.
* by matching just the start.
* @param cvterm_name
* @param cvName
* @return
*/
public static CvTerm getCvTermByCvPartAndCvTerm(final String cvterm_name,
final String cvName)
{
Enumeration enum_cvterm = cvterms.elements();
while(enum_cvterm.hasMoreElements())
{
CvTerm cvterm = (CvTerm)enum_cvterm.nextElement();
if(cvterm.getCv().getName().startsWith( cvName ) &&
cvterm_name.equals( cvterm.getName() ))
return cvterm;
}
return null;
}
* @param dao the data access object
* @return the cvterm <code>Hashtable</code>
private static Hashtable getCvterms(final GmodDAO dao)
final List cvterm_list = dao.getCvTerms();
final Iterator it = cvterm_list.iterator();
cvterms = new Hashtable(cvterm_list.size());
catch(RuntimeException sqle)
System.err.println("SQLException retrieving CvTerms");
/**
* Get CvTerm's in a given CV
* @param cvName
* @return
*/
public Vector getCvTermsByCvName(final String cvName)
{
if(cvterms == null)
{
logger4j.debug("getCvTermsByCvName LOADING CVTERMS");
return getCvterms("", cvName, false);
GmodDAO dao = getDAOOnly();
List dbs = dao.getDbs();
List names = new Vector();
Iterator it = dbs.iterator();
while(it.hasNext())
public Organism getOrganismByCommonName(final String commonName)
{
GmodDAO dao = getDAOOnly();
return dao.getOrganismByCommonName(commonName);
}
if(organismNames != null && organismNames.size() > 0)
return organismNames;
Organism organism = (Organism)it.next();
organismNames.add(organism.getCommonName());
public static Vector getCvterms(final String search_str,
final String cv_name,
final boolean ignoreCase)
{
final Vector cvterm_match = new Vector();
Enumeration enum_cvterm = cvterms.keys();
while(enum_cvterm.hasMoreElements())
{
Integer key = (Integer)enum_cvterm.nextElement();
CvTerm cvterm = (CvTerm)cvterms.get(key);
if(cvterm.getCv().getName().startsWith(cv_name))
{
if(ignoreCase)
{
if(indexOfIgnoreCase(cvterm.getName(),search_str,0) > -1)
cvterm_match.add(cvterm);
}
else
{
if(cvterm.getName().indexOf(search_str) > -1)
cvterm_match.add(cvterm);
}