def convert_attribute(self, attribute, value, value_type=None):
     """
     Convert the attribute into a value that can be stored in the generated json file and properly
     returned for verification against the alias default value
     :param attribute: attribute name
     :param value: attribute value
     :param value_type: type of the attribute value
     :return: converted value
     """
     _method_name = 'convert_attribute'
     self.__logger.entering(attribute, value, value_type, class_name=self.__class_name, method_name=_method_name)
     if value is not None and '$Proxy' in str(type(value)):
         if value.isProxyClass(ObjectName):
             return_value = value.getKeyProperty('Name')
         else:
             return_value = value.toString()
     elif value is None or value_type == alias_constants.PASSWORD or \
             (value_type == alias_constants.STRING and (value == 'null' or value == 'none')):
         return_value = 'None'
     elif value is None or value == 'null' or value == 'none' \
             or value_type == alias_constants.PASSWORD:
         return_value = 'None'
     elif not isinstance(value, basestring) and \
             (value_type == alias_constants.BOOLEAN or value_type == alias_constants.JAVA_LANG_BOOLEAN):
         if value:
             return_value = Boolean.toString(Boolean.TRUE)
         else:
             return_value = Boolean.toString(Boolean.FALSE)
     elif isinstance(value, (types.ListType, types.TupleType, PyArray)):
         return_value = list()
         for entry in value:
             return_value.append(self.convert_attribute(attribute, entry, value_type))
     elif value_type == alias_constants.OBJECT or isinstance(value, Object):
         return_value = value.toString()
     else:
         return_value = value
     self.__logger.exiting(class_name=self.__class_name, method_name=_method_name, result=return_value)
     return return_value
示例#2
0
def _format_json_value(value):
    """
    Format the value as a JSON snippet.
    :param value: the value
    :return: the JSON snippet
    """
    import java.lang.StringBuilder as StringBuilder
    builder = StringBuilder()
    if type(value) == bool or (isinstance(value, types.StringTypes) and (value == 'true' or value == 'false')):
        builder.append(JBoolean.toString(value))
    elif isinstance(value, types.StringTypes):
        builder.append('"').append(_escape_text(value.strip())).append('"')
    else:
        builder.append(value)
    return builder.toString()
示例#3
0
def _format_json_value(value):
    """
    Format the value as a JSON snippet.
    :param value: the value
    :return: the JSON snippet
    """
    import java.lang.StringBuilder as StringBuilder
    builder = StringBuilder()
    if type(value) == bool or (type(value) == str and
                               (value == 'true' or value == 'false')):
        builder.append(JBoolean.toString(value))
    elif type(value) == str:
        builder.append('"').append(_quote_embedded_quotes(value)).append('"')
    else:
        builder.append(value)
    return builder.toString()
    def __search(self):
        requireEscape = False
        recordsPerPage = self.__portal.recordsPerPage
        uri = URLDecoder.decode(self.request.getAttribute("RequestURI"))
        query = None
        pagePath = self.__portal.getName() + "/" + self.pageName
        if query is None or query == "":
            query = self.formData.get("query")
            requireEscape = True
        if query is None or query == "":
            query = "*:*"

        if query == "*:*":
            self.__query = ""
        else:
            self.__query = query
            if requireEscape:
                query = self.__escapeQuery(query)
            query = "%s:%s" % (self.__searchField, query)
        self.sessionState.set("query", self.__query)

        # find objects with annotations matching the query
        if query != "*:*":
            anotarQuery = self.__query
            if requireEscape:
                anotarQuery = self.__escapeQuery(anotarQuery)
            annoReq = SearchRequest(anotarQuery)
            annoReq.setParam("facet", "false")
            annoReq.setParam("rows", str(99999))
            annoReq.setParam("sort", "dateCreated asc")
            annoReq.setParam("start", str(0))
            anotarOut = ByteArrayOutputStream()
            self.services.indexer.annotateSearch(annoReq, anotarOut)
            resultForAnotar = SolrResult(
                ByteArrayInputStream(anotarOut.toByteArray()))
            resultForAnotar = resultForAnotar.getResults()
            ids = HashSet()
            for annoDoc in resultForAnotar:
                annotatesUri = annoDoc.getFirst("annotatesUri")
                ids.add(annotatesUri)
                self.log.debug("Found annotation for %s" % annotatesUri)
            # add annotation ids to query
            query += ' OR id:("' + '" OR "'.join(ids) + '")'

        portalSearchQuery = self.__portal.searchQuery
        if portalSearchQuery == "":
            portalSearchQuery = query
        else:
            if query != "*:*":
                query += " AND " + portalSearchQuery
            else:
                query = portalSearchQuery

        req = SearchRequest(query)
        req.setParam("facet", "true")
        req.setParam("rows", str(recordsPerPage))
        req.setParam("facet.field", self.__portal.facetFieldList)
        req.setParam("facet.sort",
                     Boolean.toString(self.__portal.getFacetSort()))
        req.setParam("facet.limit", str(self.__portal.facetCount))
        req.setParam("sort", self.__sortBy)

        # setup facets
        if self.__useSessionNavigation:
            action = self.formData.get("verb")
            value = self.formData.get("value")
            fq = self.sessionState.get("fq")
            if fq is not None:
                self.__pageNum = 1
                req.setParam("fq", fq)
            if action == "add_fq":
                self.__pageNum = 1
                req.addParam("fq", URLDecoder.decode(value, "UTF-8"))
            elif action == "remove_fq":
                self.__pageNum = 1
                req.removeParam("fq", URLDecoder.decode(value, "UTF-8"))
            elif action == "clear_fq":
                self.__pageNum = 1
                req.removeParam("fq")
            elif action == "select-page":
                self.__pageNum = int(value)
        else:
            navUri = uri[len(pagePath):]
            self.__pageNum, fq, self.__fqParts = self.__parseUri(navUri)
            savedfq = self.sessionState.get("savedfq")
            limits = []
            if savedfq:
                limits.extend(savedfq)
            if fq:
                limits.extend(fq)
                self.sessionState.set("savedfq", limits)
                for q in fq:
                    req.addParam("fq", URLDecoder.decode(q, "UTF-8"))

        portalQuery = self.__portal.query
        if portalQuery:
            req.addParam("fq", portalQuery)
        req.addParam("fq", 'item_type:"object"')
        if req.getParams("fq"):
            self.__selected = ArrayList(req.getParams("fq"))

        if self.__useSessionNavigation:
            self.sessionState.set("fq", self.__selected)
            self.sessionState.set("searchQuery", portalSearchQuery)
            self.sessionState.set("pageNum", self.__pageNum)

        # Make sure 'fq' has already been set in the session
        if not self.page.authentication.is_admin():
            current_user = self.page.authentication.get_username()
            security_roles = self.page.authentication.get_roles_list()
            security_filter = 'security_filter:("' + '" OR "'.join(
                security_roles) + '")'
            security_exceptions = 'security_exception:"' + current_user + '"'
            owner_query = 'owner:"' + current_user + '"'
            security_query = "(" + security_filter + ") OR (" + security_exceptions + ") OR (" + owner_query + ")"
            req.addParam("fq", security_query)
        ## uncomment to ensure guest users not logged in cannot see alerts in browse page
        # self.filterOutWorkflowStepForUnAuth(req, "inbox")

        req.setParam("start", str((self.__pageNum - 1) * recordsPerPage))

        self.log.debug(" * search.py: %s, page: %s" %
                       (req.toString(), self.__pageNum))

        out = ByteArrayOutputStream()
        self.services.indexer.search(req, out)
        self.__result = SolrResult(ByteArrayInputStream(out.toByteArray()))
        if self.__result is not None:
            self.__paging = Pagination(self.__pageNum,
                                       self.__result.getNumFound(),
                                       self.__portal.recordsPerPage)
示例#5
0
 def __search(self):
     requireEscape = False
     recordsPerPage = self.__portal.recordsPerPage
     uri = URLDecoder.decode(self.request.getAttribute("RequestURI"))
     query = None
     pagePath = self.__portal.getName() + "/" + self.pageName
     if query is None or query == "":
         query = self.formData.get("query")
         requireEscape = True
     if query is None or query == "":
         query = "*:*"
     
     if query == "*:*":
         self.__query = ""
     else:
         self.__query = query
         if requireEscape:
             query = self.__escapeQuery(query)
         query = "%s:%s" % (self.__searchField, query)
     self.sessionState.set("query", self.__query)
     
     # find objects with annotations matching the query
     if query != "*:*":
         anotarQuery = self.__query
         if requireEscape:
             anotarQuery = self.__escapeQuery(anotarQuery)
         annoReq = SearchRequest(anotarQuery)
         annoReq.setParam("facet", "false")
         annoReq.setParam("rows", str(99999))
         annoReq.setParam("sort", "dateCreated asc")
         annoReq.setParam("start", str(0))
         anotarOut = ByteArrayOutputStream()
         self.services.indexer.annotateSearch(annoReq, anotarOut)
         resultForAnotar = SolrResult(ByteArrayInputStream(anotarOut.toByteArray()))
         resultForAnotar = resultForAnotar.getResults()
         ids = HashSet()
         for annoDoc in resultForAnotar:
             annotatesUri = annoDoc.getFirst("annotatesUri")
             ids.add(annotatesUri)
             self.log.debug("Found annotation for %s" % annotatesUri)
         # add annotation ids to query
         query += ' OR id:("' + '" OR "'.join(ids) + '")'
     
     portalSearchQuery = self.__portal.searchQuery
     if portalSearchQuery == "":
         portalSearchQuery = query
     else:
         if query != "*:*":
             query += " AND " + portalSearchQuery
         else:
             query = portalSearchQuery
     
     req = SearchRequest(query)
     req.setParam("facet", "true")
     req.setParam("rows", str(recordsPerPage))
     req.setParam("facet.field", self.__portal.facetFieldList)
     req.setParam("facet.sort", Boolean.toString(self.__portal.getFacetSort()))
     req.setParam("facet.limit", str(self.__portal.facetCount))
     req.setParam("sort", self.__sortBy)
     
     # setup facets
     if self.__useSessionNavigation:
         action = self.formData.get("verb")
         value = self.formData.get("value")
         fq = self.sessionState.get("fq")
         if fq is not None:
             self.__pageNum = 1
             req.setParam("fq", fq)
         if action == "add_fq":
             self.__pageNum = 1
             req.addParam("fq", URLDecoder.decode(value, "UTF-8"))
         elif action == "remove_fq":
             self.__pageNum = 1
             req.removeParam("fq", URLDecoder.decode(value, "UTF-8"))
         elif action == "clear_fq":
             self.__pageNum = 1
             req.removeParam("fq")
         elif action == "select-page":
             self.__pageNum = int(value)
     else:
         navUri = uri[len(pagePath):]
         self.__pageNum, fq, self.__fqParts = self.__parseUri(navUri)
         savedfq = self.sessionState.get("savedfq")
         limits = []
         if savedfq:
             limits.extend(savedfq)
         if fq:
             limits.extend(fq)
             self.sessionState.set("savedfq", limits)
             for q in fq:
                 req.addParam("fq", URLDecoder.decode(q, "UTF-8"))
     
     portalQuery = self.__portal.query
     if portalQuery:
         req.addParam("fq", portalQuery)
     req.addParam("fq", 'item_type:"object"')
     if req.getParams("fq"):
         self.__selected = ArrayList(req.getParams("fq"))
     
     if self.__useSessionNavigation:
         self.sessionState.set("fq", self.__selected)
         self.sessionState.set("searchQuery", portalSearchQuery)
         self.sessionState.set("pageNum", self.__pageNum)
     
     # Make sure 'fq' has already been set in the session
     if not self.page.authentication.is_admin():
         current_user = self.page.authentication.get_username()
         security_roles = self.page.authentication.get_roles_list()
         security_filter = 'security_filter:("' + '" OR "'.join(security_roles) + '")'
         security_exceptions = 'security_exception:"' + current_user + '"'
         owner_query = 'owner:"' + current_user + '"'
         security_query = "(" + security_filter + ") OR (" + security_exceptions + ") OR (" + owner_query + ")"
         req.addParam("fq", security_query)
     
     req.setParam("start", str((self.__pageNum - 1) * recordsPerPage))
     
     #print " * search.py:", req.toString(), self.__pageNum
     
     out = ByteArrayOutputStream()
     self.services.indexer.search(req, out)
     self.__result = SolrResult(ByteArrayInputStream(out.toByteArray()))
     if self.__result is not None:
         self.__paging = Pagination(self.__pageNum,
                                    self.__result.getNumFound(),
                                    self.__portal.recordsPerPage)
示例#6
0
def useSingleYAxis():
    ''' use the same Y axis for all Y fields in the Scan Plot
    '''
    LocalProperties.set("gda.plot.ScanPlotSettings.separateYAxes",
                        Boolean.toString(False))
示例#7
0
def useSeparateYAxes():
    '''use separate Y axes for each Y field in the Scan Plot
    '''
    LocalProperties.set("gda.plot.ScanPlotSettings.separateYAxes",
                        Boolean.toString(True))