Interface CoreService

  • All Known Implementing Classes:
    CoreServiceImpl

    public interface CoreService
    The DMX Core Service provides generic database operations (create, retrieve, update, delete) to deal with the DMX Core objects: Topics, Associations, Topic Types, Association Types.

    Inside the PluginActivator and Migration (sub)classes an instance of the DMX Core Service is available as the dmx object.

    • Method Detail

      • getTopic

        Topic getTopic​(long topicId)
        Retrieves a topic by ID.
        Returns:
        the topic.
        Throws:
        RuntimeException - if no topic is found.
      • getTopicByUri

        Topic getTopicByUri​(String uri)
        Retrieves a topic by URI.
        Returns:
        the topic, or null if no topic is found.
      • getTopicByValue

        Topic getTopicByValue​(String typeUri,
                              SimpleValue value)
        Retrieves a single topic by type and exact value. Throws if more than one topic is found. Lucene query syntax (wildcards, phrase search, ...) is not supported. A text search is case-sensitive.
        Parameters:
        typeUri - a topic type URI; only topics of this type are searched; mandatory
        value - the value to search for
        Returns:
        the found topic, or null if no topic is found.
        Throws:
        RuntimeException - If more than one topic is found.
        RuntimeException - If null is given for "typeUri".
      • getTopicsByValue

        List<Topic> getTopicsByValue​(String typeUri,
                                     SimpleValue value)
        Retrieves topics by type and exact value. Lucene query syntax (wildcards, phrase search, ...) is not supported. A text search is case-sensitive.
        Parameters:
        typeUri - a topic type URI; only topics of this type are searched; mandatory
        value - the value to search for
        Returns:
        a list of found topics, may be empty.
        Throws:
        RuntimeException - If null is given for "typeUri".
      • queryTopics

        List<Topic> queryTopics​(String typeUri,
                                String query)
        Retrieves topics by type and value. Lucene query syntax is supported. A topic is regarded a hit if the search term matches the topic's entire value (in contrast to a fulltext search). Spaces must be escaped though. Search is case-sensitive.
        Parameters:
        typeUri - a topic type URI; only topics of this type are searched; mandatory
        query - The query. Must be non-empty. Lucene query syntax is supported:
        • "*" matches arbitrary characters
        • "?" matches a single character
        • phrases enclosed in double quotes (")
        • escape special character by preceding with back slash (\)
        • combining search terms by "AND"/"OR" (uppercase required). Default is "OR". "&&" and "||" are respective synonyms.
        Returns:
        a list of found topics, may be empty.
        Throws:
        RuntimeException - If null is given for "typeUri".
      • queryTopicsFulltext

        TopicResult queryTopicsFulltext​(String query,
                                        String typeUri,
                                        boolean searchChildTopics)
        Performs a fulltext search in topic values and in entire topic trees. Single words are found in entire text-value. Lucene query syntax is supported. Search is case-insensitive.
        Parameters:
        query - The search query. Must be non-empty. Lucene query syntax is supported:
        • "*" matches arbitrary characters
        • "?" matches a single character
        • phrases enclosed in double quotes (")
        • escape special character by preceding with back slash (\)
        • combining search terms by "AND"/"OR" (uppercase required). Default is "OR". "&&" and "||" are respective synonyms.
        typeUri - Optional: a topic type URI; only topics of this type are searched. If null all topics are searched.
        If given, all returned topics are of this type (regardless of the "searchChildTopics" setting).
        searchChildTopics - Applicable only if "topicTypeUri" is given (ignored otherwise): if true the topic's child topics are searched as well.
        Example: to search for Persons where "Berlin" appears in *any* child topic pass "dmx.contacts.person" for "topicTypeUri", and set "searchChildTopics" to true.
        Returns:
        a TopicResult object that wraps both the original query parameters and the resulting topic list (may be empty).
      • indexTopicFulltext

        void indexTopicFulltext​(long topicId,
                                String text,
                                String indexKey)
      • deleteTopic

        void deleteTopic​(long topicId)
      • getAssoc

        Assoc getAssoc​(long assocId)
      • getAssocsByRoleType

        List<Assoc> getAssocsByRoleType​(String roleTypeUri)
      • getAssocs

        List<Assoc> getAssocs​(long topic1Id,
                              long topic2Id)
        Returns all associations between two topics. If no such association exists an empty list is returned.
      • getAssocs

        List<Assoc> getAssocs​(long topic1Id,
                              long topic2Id,
                              String assocTypeUri)
        Returns the associations between two topics. If no such association exists an empty list is returned.
        Parameters:
        assocTypeUri - Assoc type filter. Pass null to switch filter off.
      • getAssocBetweenTopicAndTopic

        Assoc getAssocBetweenTopicAndTopic​(String assocTypeUri,
                                           long topic1Id,
                                           long topic2Id,
                                           String roleTypeUri1,
                                           String roleTypeUri2)
        Returns the association between two topics, qualified by association type and both role types. If no such association exists null is returned. If more than one association exist, a runtime exception is thrown.
        Parameters:
        assocTypeUri - Assoc type filter. Pass null to switch filter off.
      • getAssocBetweenTopicAndAssoc

        Assoc getAssocBetweenTopicAndAssoc​(String assocTypeUri,
                                           long topicId,
                                           long assocId,
                                           String topicRoleTypeUri,
                                           String assocRoleTypeUri)
      • getAssocByValue

        Assoc getAssocByValue​(String typeUri,
                              SimpleValue value)
        Retrieves a single association by type and exact value. Throws if more than one association is found. Lucene query syntax (wildcards, phrase search, ...) is not supported. A text search is case-sensitive.
        Parameters:
        typeUri - an association type URI; only associations of this type are searched; mandatory
        value - the value to search for
        Returns:
        the found association, or null if no association is found.
        Throws:
        RuntimeException - If more than one association is found.
        RuntimeException - If null is given for "typeUri".
      • queryAssocs

        List<Assoc> queryAssocs​(String typeUri,
                                String query)
        Retrieves associations by type and value. Lucene query syntax is supported. An association is regarded a hit if the search term matches the association's entire value (in contrast to a fulltext search). Spaces must be escaped though. Search is case-sensitive.
        Parameters:
        typeUri - an association type URI; only associations of this type are searched; mandatory
        query - The query. Must be non-empty. Lucene query syntax is supported:
        • "*" matches arbitrary characters
        • "?" matches a single character
        • phrases enclosed in double quotes (")
        • escape special character by preceding with back slash (\)
        • combining search terms by "AND"/"OR" (uppercase required). Default is "OR". "&&" and "||" are respective synonyms.
        Returns:
        a list of found associations, may be empty.
        Throws:
        RuntimeException - If null is given for "typeUri".
      • updateAssoc

        void updateAssoc​(AssocModel updateModel)
      • deleteAssoc

        void deleteAssoc​(long assocId)
      • getTopicTypeImplicitly

        TopicType getTopicTypeImplicitly​(long topicId)
        Acccesses a topic type while enforcing the implicit READ permission. A user has implicit READ permission for the topic type if she has READ permission for the given topic.
      • updateTopicType

        void updateTopicType​(TopicTypeModel updateModel)
      • deleteTopicType

        void deleteTopicType​(String topicTypeUri)
      • getAssocTypeImplicitly

        AssocType getAssocTypeImplicitly​(long assocId)
        Acccesses an association type while enforcing the implicit READ permission. A user has implicit READ permission for the association type if she has READ permission for the given association.
      • updateAssocType

        void updateAssocType​(AssocTypeModel updateModel)
      • deleteAssocType

        void deleteAssocType​(String assocTypeUri)
      • getRoleTypeImplicitly

        RoleType getRoleTypeImplicitly​(long assocId,
                                       String roleTypeUri)
      • getObject

        DMXObject getObject​(long id)
      • getProperty

        Object getProperty​(long id,
                           String propUri)
        Returns a topic's or association's property value associated with the given property URI. If there's no property value associated with the property URI an exception is thrown.
        Parameters:
        id - a topic ID, or an association ID
      • hasProperty

        boolean hasProperty​(long id,
                            String propUri)
        Checks whether for a given topic or association a property value is associated with a given property URI.
        Parameters:
        id - a topic ID, or an association ID
      • addTopicPropertyIndex

        void addTopicPropertyIndex​(String propUri)
      • addAssocPropertyIndex

        void addAssocPropertyIndex​(String propUri)
      • getDatabaseVendorObject

        Object getDatabaseVendorObject()