Le service StoredSearchService expose toutes les opérations disponibles autour des composants de type StoredSearch.
Récupération
Récupération de toutes les recherches sauvegardées
Les exemples ci-dessous indiquent comment récupérer toutes les recherches sauvegardées d’un scope.
GET {{core}}/rest/storedsearch HTTP/1.1
-- Paramètre d'URL -- 
core: host de FlowerDocs core
-- Headers -- 
token: {{token}}
    @Autowired
    private StoredSearchService service;
    public List<StoredSearch> getAllStoredSearch() throws FunctionalException, TechnicalException
    {
        return service.getAll();
    }
Récupération d’une liste définie
Les exemples ci-dessous indiquent comment récupérer une liste de recherches sauvegardées à partir de leurs identifiants.
GET {{core}}/rest/storedsearch/{ids} HTTP/1.1
-- Paramètre d'URL -- 
core: host de FlowerDocs core
ids: liste d'identifiants de recherches sauvegardées
-- Headers -- 
token: {{token}}
    @Autowired
    private StoredSearchService service;
    public List<StoredSearch> getStoredSearch() throws FunctionalException, TechnicalException
    {
        List<Id> storedSearchIds = Lists.newArrayList(new Id("folderStoredSearch"));
        return service.get(storedSearchIds);
    }
Création
Les exemples ci-dessous indiquent comment créer une recherche sauvegardée.
POST {{core}}/rest/storedsearch HTTP/1.1
-- Paramètre d'URL -- 
core: host de FlowerDocs core
-- Headers -- 
token: {{token}}
Content-Type: application/json
-- Body (json) --
[
    {
        "template": "DefaultSearch",
        "data": {
            "owner": "phu",
            "creationDate": "2024-04-05 1403.790 +0200",
            "lastUpdateDate": "2024-04-05 1403.790 +0200",
            "ACL": "STORED_SEARCH"
        },
        "recipients": {
            "users": [
                "phu"
            ]
        },
        "id": "testFolderStoredSearch",
        "category": "FOLDER",
        "request": {
            "selectClause": {
                "fields": [
                    "name",
                    "classid",
                    "creationDate"
                ]
            },
            "orderClauses": [
                {
                    "name": "creationDate",
                    "type": "TIMESTAMP",
                    "ascending": false
                }
            ],
            "start": 0,
            "max": 10
        },
        "displayNames": [
            {
                "value": "test folder stored search",
                "language": "EN"
            },
            {
                "value": "test dossier recherche sauvegardée",
                "language": "FR"
            }
        ]
    }
]
    @Autowired
    private StoredSearchService service;
    
    public List<StoredSearch> createStoredSearch() throws FunctionalException, TechnicalException
    {
        List<Id> usersIds = Lists.newArrayList(new Id("phu"));
        RecipientPrincipals users = new RecipientPrincipals();
        users.setUsers(usersIds);
        List<I18NLabel> labels = new ArrayList<>();
        I18NLabel labelFR = new I18NLabel("test dossier recherche sauvegardée", "FR");
        I18NLabel labelEN = new I18NLabel("test folder search stored", "EN");
        labels.add(labelFR);
        labels.add(labelEN);
        List<String> fields = Lists.newArrayList("name");
        fields.add("classid");
        fields.add("creationDate");
        SelectClause selectClause = new SelectClause();
        selectClause.setFields(fields);
        OrderClause orderClause = new OrderClause("creationDate", TIMESTAMP, false);
        List<OrderClause> orderClauses = Lists.newArrayList(orderClause);
        SearchRequest request = new SearchRequest();
        request.setStart(0);
        request.setMax(10);
        request.setSelectClause(selectClause);
        request.setOrderClauses(orderClauses);
        StoredSearch search = new StoredSearch();
        search.setId(new Id("testFolderStoredSearch"));
        search.setCategory(FOLDER);
        search.setTemplate("DefaultSearch");
        search.setDisplayNames(labels);
        search.setData(new Data());
        search.getData().setOwner("phu");
        search.getData().setACL(new Id("STORED_SEARCH"));
        search.setRecipients(users);
        search.setRequest(request);
        List<StoredSearch> storedSearchList = Lists.newArrayList(search);
        return service.create(storedSearchList);
    }
Modification
Les exemples ci-dessous indiquent comment modifier une recherche sauvegardée.
POST {{core}}/rest/storedsearch/{ids} HTTP/1.1
-- Paramètre d'URL -- 
core: host de FlowerDocs core
ids : liste des identifiants de recherches sauvegardés
-- Headers --
token: {{token}}
Content-Type: application/json
-- Body (json) --
[
    {
        "template": "DefaultSearch",
        "data": {
            "owner": "phu",
            "creationDate": "2024-04-05 1403.790 +0200",
            "lastUpdateDate": "2024-04-05 1403.790 +0200",
            "ACL": "STORED_SEARCH"
        },
        "recipients": {
            "users": [
                "phu",
                "jna"
            ]
        },
        "id": "testFolderStoredSearch",
        "category": "FOLDER",
        "request": {
            "selectClause": {
                "fields": [
                    "name",
                    "classid",
                    "creationDate"
                ]
            },
            "orderClauses": [
                {
                    "name": "creationDate",
                    "type": "TIMESTAMP",
                    "ascending": false
                }
            ],
            "start": 0,
            "max": 20
        },
        "displayNames": [
            {
                "value": "Folder",
                "language": "EN"
            },
            {
                "value": "Dossier",
                "language": "FR"
            }
        ]
    }
]
    @Autowired
    private StoredSearchService service;
    
    public List<StoredSearch> updateStoredSearch(StoredSearch search) throws FunctionalException, TechnicalException
    {
        List<I18NLabel> labels = new ArrayList<>();
        I18NLabel labelFR = new I18NLabel("Dossiers", "FR");
        I18NLabel labelEN = new I18NLabel("Folder", "EN");
        labels.add(labelFR);
        labels.add(labelEN);
        search.getRecipients().getUsers().add(new Id("jna"));
        search.getRequest().setMax(20);
        search.setDisplayNames(labels);
        List<StoredSearch> storedSearchList = Lists.newArrayList(search);
        return service.update(storedSearchList);
    }
En utilisant le service REST, les informations non renseignées seront vidées : il faut envoyer la totalité de la recherche sauvegardée et pas seulement les informations à modifier.
        Suppression
Les exemples ci-dessous indiquent comment supprimer une liste de recherche sauvegardées.
DELETE {{core}}/rest/storedsearch/{ids} HTTP/1.1
-- Paramètre d'URL -- 
core: host de FlowerDocs core
ids : liste des identifiants de recherches sauvegardées
-- Headers --
token: {{token}}
    @Autowired
    private StoredSearchService service;
    
    public void deleteStoredSearch() throws FunctionalException, TechnicalException
    {
        List<Id> storedSearchIds = Lists.newArrayList(new Id("testFolderStoredSearch"));
        service.delete(storedSearchIds);
    }