diff --git a/artemis_sqlmap/FeatureRelationship.xml b/artemis_sqlmap/FeatureRelationship.xml index 0d9c4b81f591af4024347a01122203f114058619..81576641ee67d3f7e4860b9b40d98dee84498072 100644 --- a/artemis_sqlmap/FeatureRelationship.xml +++ b/artemis_sqlmap/FeatureRelationship.xml @@ -47,8 +47,7 @@ <resultMap id="map-parent-relationship" class="FeatureRelationship"> <result property="featureRelationshipId" column="feature_relationship_id"/> - <result property="featureBySubjectId" column="subject_id" - select="getLazyFeatureById" /> + <result property="featureBySubjectId.featureId" column="subject_id" /> <!--<result property="featureByObjectId" column="object_id" select="getLazyFeatureNameAndTypeById" />--> <result property="featureByObjectId" resultMap="Feature.map-feature-name-lazy" /> diff --git a/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java b/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java index 8f46c4aa746be51cec8ad750342e938759eb1d66..a784b77058bab4346a9b38f5bb5bfe7461f8ce37 100644 --- a/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java +++ b/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java @@ -106,10 +106,11 @@ public class ClusterLazyQualifierValue implements LazyQualifierValue final Document document = ((DocumentEntry)feature.getEntry()).getDocument(); List allClusters = ((DatabaseDocument)document).getClustersByFeatureIds(clusterFeatureIds); - /* + // // get parent gene - final List subjectIds = new Vector(); + /* + List subjectIds = new Vector(); for(int i=0;i<allClusters.size(); i++) { final Feature clusterFeature = (Feature)allClusters.get(i); @@ -123,15 +124,62 @@ public class ClusterLazyQualifierValue implements LazyQualifierValue } } - final List geneFeatures = + List geneFeatures = ((DatabaseDocument)document).getParentFeaturesByChildFeatureIds(subjectIds); + final Hashtable genes = new Hashtable(geneFeatures.size()); + subjectIds = new Vector(); + for(int i=0; i<geneFeatures.size(); i++) + { + FeatureRelationship gene = (FeatureRelationship)geneFeatures.get(i); + if(gene.getFeatureByObjectId().getCvTerm().getName().equals("gene") || + gene.getFeatureByObjectId().getCvTerm().getName().equals("pseudogene")) + { + genes.put(new Integer(gene.getFeatureBySubjectId().getFeatureId()), + gene.getFeatureByObjectId().getUniqueName()); + } + else + { + Integer objectId = new Integer(gene.getFeatureByObjectId().getFeatureId()); + subjectIds.add(objectId); + genes.put(new Integer(gene.getFeatureBySubjectId().getFeatureId()), objectId); + } + } + + geneFeatures = + ((DatabaseDocument)document).getParentFeaturesByChildFeatureIds(subjectIds); for(int i=0; i<geneFeatures.size(); i++) { FeatureRelationship gene = (FeatureRelationship)geneFeatures.get(i); - System.out.println(i+" "+gene.getFeatureByObjectId().getUniqueName()+" "+ - gene.getFeatureByObjectId().getCvTerm().getName()+" "+ - gene.getFeatureByObjectId().getFeatureId()); + + if(gene.getFeatureByObjectId().getCvTerm().getName().equals("gene") || + gene.getFeatureByObjectId().getCvTerm().getName().equals("pseudogene")) + { + Integer subjectId = new Integer(gene.getFeatureBySubjectId().getFeatureId()); + + if(genes.containsValue(subjectId)) + { + Enumeration keys = genes.keys(); + while(keys.hasMoreElements()) + { + Integer key = (Integer)keys.nextElement(); + Object val = genes.get(key); + if(val instanceof Integer && subjectId.equals(val)) + genes.put(key, gene.getFeatureByObjectId().getUniqueName()); + } + } + } + } + + Enumeration keys = genes.keys(); + while(keys.hasMoreElements()) + { + Integer key = (Integer)keys.nextElement(); + Object val = genes.get(key); + if(val instanceof String) + { + System.out.println(key.intValue()+" "+val); + } } */