diff --git a/uk/ac/sanger/artemis/util/DatabaseDocument.java b/uk/ac/sanger/artemis/util/DatabaseDocument.java index ae348ec564268f3835107c47c3868b6c84a49334..940ae4b4ba8bf986eb9b7049e22fe193827971ea 100644 --- a/uk/ac/sanger/artemis/util/DatabaseDocument.java +++ b/uk/ac/sanger/artemis/util/DatabaseDocument.java @@ -127,6 +127,7 @@ public class DatabaseDocument extends Document // include children in reading from the database private boolean readChildren = true; + // range to retrieve features for private Range range; private Feature geneFeature; @@ -480,14 +481,21 @@ public class DatabaseDocument extends Document // Retrieve all features within a range // List schemaList = new Vector(); // schemaList.add(schema); - - Collection featureLocs = geneFeature.getFeatureLocsForFeatureId(); - Iterator it = featureLocs.iterator(); - final FeatureLoc featureLoc = (FeatureLoc)it.next(); + final Feature srcFeature; + if(geneFeature != null) + { + Collection featureLocs = geneFeature.getFeatureLocsForFeatureId(); + Iterator it = featureLocs.iterator(); + final FeatureLoc featureLoc = (FeatureLoc)it.next(); - final Feature srcFeature = featureLoc.getFeatureBySrcFeatureId(); - setName(srcFeature.getUniqueName()); - this.srcFeatureId = Integer.toString(srcFeature.getFeatureId()); + srcFeature = featureLoc.getFeatureBySrcFeatureId(); + setName(srcFeature.getUniqueName()); + this.srcFeatureId = Integer.toString(srcFeature.getFeatureId()); + } + else + { + srcFeature = dao.getFeatureById(Integer.parseInt(srcFeatureId)); + } ByteBuffer entryBuffer = getFeaturesInRange(srcFeature, range, dao); getChadoSequence(srcFeature, entryBuffer); @@ -2966,4 +2974,9 @@ public class DatabaseDocument extends Document getCvterms(dao); } } + + public void setRange(Range range) + { + this.range = range; + } }