#ifndef STORAGE_ACCESS_PROXY_H #define STORAGE_ACCESS_PROXY_H #include "data/access/StorageAccess.h" #include "utility/messaging/MessageListener.h" #include "utility/messaging/type/MessageErrorFilterChanged.h" class StorageAccessProxy : public StorageAccess , public MessageListener { public: StorageAccessProxy(); virtual ~StorageAccessProxy(); bool hasSubject() const; void setSubject(StorageAccess* subject); // StorageAccess implementation virtual Id getIdForNodeWithNameHierarchy(const NameHierarchy& nameHierarchy) const; virtual Id getIdForEdge( Edge::EdgeType type, const NameHierarchy& fromNameHierarchy, const NameHierarchy& toNameHierarchy) const; virtual StorageEdge getEdgeById(Id edgeId) const; virtual bool checkEdgeExists(Id edgeId) const; virtual NameHierarchy getNameHierarchyForNodeWithId(Id id) const; virtual Node::NodeType getNodeTypeForNodeWithId(Id id) const; virtual bool checkNodeExistsByName(const std::string& serializedName) const; virtual std::shared_ptr getFullTextSearchLocations( const std::string& searchTerm, bool caseSensitive) const; virtual std::vector getAutocompletionMatches(const std::string& query) const; virtual std::vector getSearchMatchesForTokenIds(const std::vector& tokenIds) const; virtual std::shared_ptr getGraphForAll() const; virtual std::shared_ptr getGraphForActiveTokenIds(const std::vector& tokenIds, bool* isActiveNamespace = nullptr) const; virtual std::vector getActiveTokenIdsForId(Id tokenId, Id* declarationId) const; virtual std::vector getNodeIdsForLocationIds(const std::vector& locationIds) const; virtual std::vector getLocalSymbolIdsForLocationIds(const std::vector& locationIds) const; virtual std::vector getTokenIdsForMatches(const std::vector& matches) const; virtual Id getTokenIdForFileNode(const FilePath& filePath) const; virtual std::shared_ptr getTokenLocationsForTokenIds( const std::vector& tokenIds ) const; virtual std::shared_ptr getTokenLocationsForLocationIds( const std::vector& locationIds ) const; virtual std::shared_ptr getTokenLocationsForFile(const std::string& filePath) const; virtual std::shared_ptr getTokenLocationsForLinesInFile( const std::string& filePath, uint firstLineNumber, uint lastLineNumber ) const; virtual std::shared_ptr getCommentLocationsInFile(const FilePath& filePath) const; virtual std::shared_ptr getFileContent(const FilePath& filePath) const; virtual FileInfo getFileInfoForFilePath(const FilePath& filePath) const; virtual std::vector getFileInfosForFilePaths(const std::vector& filePaths) const; virtual StorageStats getStorageStats() const; virtual ErrorCountInfo getErrorCount() const; virtual std::vector getErrors() const; virtual std::shared_ptr getErrorTokenLocations(std::vector* errors) const; virtual Id addNodeBookmark(const NodeBookmark& bookmark); virtual Id addEdgeBookmark(const EdgeBookmark& bookmark); virtual Id addBookmarkCategory(const BookmarkCategory& category); virtual std::vector getAllNodeBookmarks() const; virtual NodeBookmark getNodeBookmarkById(const Id bookmarkId) const; virtual bool checkNodeBookmarkExistsByTokens(const std::vector& tokenNames) const; virtual void removeNodeBookmark(Id id); virtual void editNodeBookmark(const NodeBookmark& bookmark); virtual std::vector getAllEdgeBookmarks() const; virtual EdgeBookmark getEdgeBookmarkById(const Id bookmarkId) const; virtual bool checkEdgeBookmarkExistsByTokens(const std::vector& tokenNames) const; virtual void removeEdgeBookmark(Id id); virtual void editEdgeBookmark(const EdgeBookmark& bookmark); virtual virtual std::vector getAllBookmarkCategories() const; virtual bool checkBookmarkCategoryExists(const std::string& name) const; virtual void removeBookmarkCategory(Id id); protected: virtual void setErrorFilter(const ErrorFilter& filter); private: void handleMessage(MessageErrorFilterChanged* message); StorageAccess* m_subject; }; #endif // STORAGE_ACCESS_PROXY_H