+
+ @Override
+ public int getStart()
+ {
+ return super.getStart();
+ }
+
+ @Override
+ public int getEnd()
+ {
+ if (datasetSequence == null && dummy && getFeatures() != null
+ && getFeatures().hasFeatures())
+ {
+ return getFeatures().getFeatureExtent().get(1);
+ }
+ return super.getEnd();
+ }
+
+ @Override
+ public char[] getSequence()
+ {
+ checkSeqData();
+ return super.getSequence();
+ }
+
+ @Override
+ public String getSequenceAsString(int start, int end)
+ {
+ checkSeqData();
+ return super.getSequenceAsString(start, end);
+ }
+
+ private void checkSeqData()
+ {
+ // materialise a dummy sequence of the correct length
+ if (datasetSequence == null && dummy && getFeatures() != null
+ && getFeatures().hasFeatures())
+ {
+ int endS = getEnd();
+ char[] sq = super.getSequence();
+ if (endS > sq.length)
+ {
+ setSequence(
+ String.valueOf(sq) + Strings.repeat("X", endS - sq.length));
+ }
+ }
+ }
+
+ @Override
+ public String getSequenceAsString()
+ {
+ checkSeqData();
+ return super.getSequenceAsString();
+ }
+
+ @Override
+ public SequenceI createDatasetSequence()
+ {
+ if (dummy && datasetSequence == null)
+ {
+ checkSeqData();
+ datasetSequence = new SequenceDummy(this.getName());
+ super.updateDatasetFrom((Sequence) datasetSequence, this);
+ super.setEnd(datasetSequence.getEnd());
+ }
+ return super.createDatasetSequence();
+ }