001    package de.kiezatlas.service;
002    
003    import de.kiezatlas.GeoObjects;
004    import de.kiezatlas.GroupedGeoObjects;
005    
006    import de.deepamehta.core.RelatedTopic;
007    import de.deepamehta.core.Topic;
008    import de.deepamehta.core.service.PluginService;
009    import de.deepamehta.core.service.ResultList;
010    
011    import java.util.List;
012    
013    
014    
015    public interface KiezatlasService extends PluginService {
016    
017        /**
018         * Returns the "Kiezatlas Website" topic the given geomap is assigned to.
019         */
020        Topic getWebsite(long geomapId);
021    
022        /**
023         * Returns the facet types assigned to the given Kiezatlas Website.
024         */
025        ResultList<RelatedTopic> getFacetTypes(long websiteId);
026    
027        /**
028         * Returns all Geo Objects assigned to the given geomap.
029         */
030        List<Topic> getGeoObjects(long geomapId);
031    
032        /**
033         * Returns all Geo Objects assigned to the given category.
034         */
035        List<RelatedTopic> getGeoObjectsByCategory(long categoryId);
036    
037        /**
038         * Searches for Geo Objects whose name match the search term (case-insensitive substring search).
039         *
040         * @param   clock   The logical clock value send back to the client (contained in GeoObjects).
041         *                  Allows the client to order asynchronous responses.
042         */
043        GeoObjects searchGeoObjects(String searchTerm, long clock);
044    
045        /**
046         * Searches for categories that match the search term (case-insensitive substring search)
047         * and returns all Geo Objects of those categories, grouped by category.
048         *
049         * @param   clock   The logical clock value send back to the client (contained in GroupedGeoObjects).
050         *                  Allows the client to order asynchronous responses.
051         */
052        GroupedGeoObjects searchCategories(String searchTerm, long clock);
053    }