Example #1
0
    def create_get_values_site_response(self, site, startDateTime,
                                        endDateTime):

        timeSeriesResponse = WaterML.TimeSeriesResponseType()
        logging.debug(
            'create_get_values_site_response: timeSeriesResponse created')
        queryInfo = WaterML.QueryInfoType(creationTime=datetime.datetime.now())
        criteria = WaterML.criteriaType(MethodCalled='GetValuesForASite')
        pType_site = WaterML.parameterType(name='site', value=site)
        criteria.add_parameter(pType_site)
        if startDateTime is not None:
            pType_sdate = WaterML.parameterType(name='startDate',
                                                value=startDateTime)
            criteria.add_parameter(pType_sdate)
        if endDateTime is not None:
            pType_edate = WaterML.parameterType(name='endDate',
                                                value=endDateTime)
            criteria.add_parameter(pType_edate)
        queryInfo.set_criteria(criteria)
        # queryInfoNote = WaterML.NoteType()
        # queryInfo.add_note(queryInfoNote)
        # queryInfo.set_extension('')
        timeSeriesResponse.set_queryInfo(queryInfo)
        logging.debug(
            'create_get_values_site_response: queryInfo set to timeSeriesResponse'
        )

        siteCode = self.get_site_code(site)
        seriesResultArr = self.dao.get_series_by_sitecode(siteCode)
        logging.debug(
            'create_get_values_site_response: seriesResultArr: {} series'.
            format(len(seriesResultArr)))
        if seriesResultArr:
            for seriesResult in seriesResultArr:
                valueResultArr = self.dao.get_datavalues_series(
                    seriesResult, startDateTime, endDateTime)
                logging.debug(
                    'create_get_values_site_response: valueResultArr determined'
                )
                # if not valueResultArr:
                #    raise Exception(
                #        ('ERROR: No data found for {} for dates '
                #         '{} - {}').format(site, startDateTime, endDateTime))
                if not valueResultArr or len(valueResultArr) == 0:
                    continue

                timeSeries = self.create_timeseries(
                    siteCode, seriesResult.Variable.VariableCode,
                    valueResultArr)
                timeSeriesResponse.add_timeSeries(timeSeries)

        return timeSeriesResponse
Example #2
0
    def create_get_values_response(self,
                                   siteArg,
                                   varArg,
                                   startDateTime=None,
                                   endDateTime=None):

        # TODO: Tim thinks the DAO should handle network and vocab parsing,
        #      not WOF
        # Flavio:
        # cleans the siteCode, by eliminating the network part in the
        # network:siteCode representation
        # cleans the varCode, by eliminating the vocabulary part in the
        # vocabular:varCode representation
        siteCode = self.get_site_code(siteArg)
        varCode = self.get_variable_code(varArg)

        valueResultArr = self.dao.get_datavalues(siteCode, varCode,
                                                 startDateTime, endDateTime)
        # if not valueResultArr:
        #    raise Exception(
        #        "ERROR: No data found for {}:{} for dates {} - {}".format(
        #            siteCode, varCode, startDateTime, endDateTime
        #        )
        #    )

        # Flavio:
        # Creates timeSeriesResponse (a WaterML1.1 TimeSeriesResponseType object)
        # with queryInfo (site, variable, startDate, endDate)
        timeSeriesResponse = WaterML.TimeSeriesResponseType()

        queryInfo = WaterML.QueryInfoType(creationTime=datetime.datetime.now())
        criteria = WaterML.criteriaType(MethodCalled='GetValues')
        pType_site = WaterML.parameterType(name='site', value=siteArg)
        criteria.add_parameter(pType_site)
        pType_var = WaterML.parameterType(name='variable', value=varArg)
        criteria.add_parameter(pType_var)
        if startDateTime is not None:
            pType_sdate = WaterML.parameterType(name='startDate',
                                                value=startDateTime)
            criteria.add_parameter(pType_sdate)
        if endDateTime is not None:
            pType_edate = WaterML.parameterType(name='endDate',
                                                value=endDateTime)
            criteria.add_parameter(pType_edate)
        queryInfo.set_criteria(criteria)
        # queryInfoNote = WaterML.NoteType()
        # queryInfo.add_note(queryInfoNote)
        # queryInfo.set_extension('')
        timeSeriesResponse.set_queryInfo(queryInfo)
        logging.debug(
            'create_get_values_response: timeSeriesResponse created with queryInfo'
        )

        # if not valueResultArr:
        #    timeSeries = WaterML.TimeSeriesType()
        #    timeSeriesResponse.add_timeSeries(timeSeries)
        #    return timeSeriesResponse

        if not valueResultArr:
            raise Exception(
                "Values Not Found for {}:{} for dates {} - {}".format(
                    siteCode, varCode, startDateTime, endDateTime))

        if isinstance(valueResultArr, dict):
            logging.debug('create_get_values_response: valueResultArr is dict')
            for key in valueResultArr.keys():
                timeSeries = self.create_timeseries(siteCode, key,
                                                    valueResultArr[key])
                timeSeriesResponse.add_timeSeries(timeSeries)
        else:
            logging.debug(
                'create_get_values_response: valueResultArr is not dict')
            timeSeries = self.create_timeseries(siteCode, varCode,
                                                valueResultArr)
            timeSeriesResponse.add_timeSeries(timeSeries)
        return timeSeriesResponse
Example #3
0
    def create_get_values_response(self,
                                   siteArg,
                                   varArg,
                                   startDateTime=None,
                                   endDateTime=None):

        # TODO: Tim thinks the DAO should handle network and vocab parsing,
        #      not WOF
        siteCode = self.get_site_code(siteArg)
        varCode = self.get_variable_code(varArg)

        valueResultArr = self.dao.get_datavalues(siteCode, varCode,
                                                 startDateTime, endDateTime)
        # if not valueResultArr:
        #    raise Exception(
        #        "ERROR: No data found for {}:{} for dates {} - {}".format(
        #            siteCode, varCode, startDateTime, endDateTime
        #        )
        #    )

        timeSeriesResponse = WaterML.TimeSeriesResponseType()

        queryInfo = WaterML.QueryInfoType(creationTime=datetime.datetime.now())
        criteria = WaterML.criteriaType(MethodCalled='GetValues')
        pType_site = WaterML.parameterType(name='site', value=siteArg)
        criteria.add_parameter(pType_site)
        pType_var = WaterML.parameterType(name='variable', value=varArg)
        criteria.add_parameter(pType_var)
        if startDateTime is not None:
            pType_sdate = WaterML.parameterType(name='startDate',
                                                value=startDateTime)
            criteria.add_parameter(pType_sdate)
        if endDateTime is not None:
            pType_edate = WaterML.parameterType(name='endDate',
                                                value=endDateTime)
            criteria.add_parameter(pType_edate)
        queryInfo.set_criteria(criteria)
        # queryInfoNote = WaterML.NoteType()
        # queryInfo.add_note(queryInfoNote)
        # queryInfo.set_extension('')
        timeSeriesResponse.set_queryInfo(queryInfo)

        # if not valueResultArr:
        #    timeSeries = WaterML.TimeSeriesType()
        #    timeSeriesResponse.add_timeSeries(timeSeries)
        #    return timeSeriesResponse

        if not valueResultArr:
            raise Exception(
                "Values Not Found for {}:{} for dates {} - {}".format(
                    siteCode, varCode, startDateTime, endDateTime))

        if isinstance(valueResultArr, dict):
            for key in valueResultArr.keys():
                timeSeries = self.create_timeseries(siteCode, key,
                                                    valueResultArr[key])
                timeSeriesResponse.add_timeSeries(timeSeries)
        else:
            timeSeries = self.create_timeseries(siteCode, varCode,
                                                valueResultArr)
            timeSeriesResponse.add_timeSeries(timeSeries)
        return timeSeriesResponse