Unverified Commit da202e09 authored by davelopez's avatar davelopez
Browse files

Check various preconditions in FeatureLocationIndexDataProvider

And raise appropriate error otherwise
parent 8dd7a9e5
Loading
Loading
Loading
Loading
+43 −32
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ from galaxy.datatypes.util.gff_util import (
    GFFReaderWrapper,
    parse_gff_attributes,
)
from galaxy.exceptions import MessageException
from galaxy.model import DatasetInstance
from galaxy.visualization.data_providers.basic import BaseDataProvider
from galaxy.visualization.data_providers.cigar import get_ref_based_read_seq_and_cigar
@@ -106,9 +107,21 @@ class FeatureLocationIndexDataProvider(BaseDataProvider):
        self.converted_dataset = converted_dataset

    def get_data(self, query):
        if self.converted_dataset is None or not self.converted_dataset.is_ok:
            raise MessageException("The dataset is not available or is in an error state.")
        # Init.
        textloc_file = open(self.converted_dataset.get_file_name())
        line_len = int(textloc_file.readline())
        result = []
        with open(self.converted_dataset.get_file_name()) as textloc_file:
            line = textloc_file.readline()
            if not line:
                raise MessageException("The dataset is empty.")
            try:
                line_len = int(line)
            except ValueError:
                raise MessageException(f"Expected an integer at first line, but found: '{line}'")
            if line_len < 1:
                raise MessageException(f"The first line must be a positive integer, but found: {line_len}")

            file_len = os.path.getsize(self.converted_dataset.get_file_name())
            query = query.lower()

@@ -133,7 +146,6 @@ class FeatureLocationIndexDataProvider(BaseDataProvider):
            textloc_file.seek(position)

            # At right point in file, generate hits.
        result = []
            while True:
                line = textloc_file.readline()
                if not line.startswith(query):
@@ -142,7 +154,6 @@ class FeatureLocationIndexDataProvider(BaseDataProvider):
                    line = line[:-1]
                result.append(line.split()[1:])

        textloc_file.close()
        return result