Manipuler un dossier

Créez, récupérez, modifiez, supprimez et recherchez vos dossiers, gérez les enfants

Le service Folder expose toutes les opérations disponibles autour des composants de type FOLDER.

Récupération de dossier

Les exemples ci-dessous indiquent comment récupérer des dossiers à partir d’une liste d’identifiants.


# <CORE_HOST> : URL de base de FlowerDocs Core
# <TOKEN> : jeton d'authentification
# <IDS> : liste des identifiants de dossiers à récupérer
curl -X GET "<CORE_HOST>/rest/folders/<IDS>" \
  -H "token: <TOKEN>"

    @Autowired
    private FolderService folderService;

    public List<Folder> get() throws TechnicalException, FunctionalException
    {
        List<Id> ids = Lists.newArrayList(new Id("folderId"));
        return folderService.get(ids);
    }

Création de dossier

Les exemples ci-dessous indiquent comment créer une liste de dossiers.


# <CORE_HOST> : URL de base de FlowerDocs Core
# <TOKEN> : jeton d'authentification
curl -X POST "<CORE_HOST>/rest/folders" \
  -H "token: <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '[
  {
    "category": "FOLDER",
    "data": {
      "ACL": "acl-dossier",
      "classId": "ClasseDossier",
      "owner": "jna"
    },
    "name": "Mon dossier",
    "tags": [
      {
        "name": "RefDossier",
        "readOnly": false,
        "value": [
          "REF-001"
        ]
      },
      {
        "name": "Description",
        "readOnly": false,
        "value": [
          "Exemple de dossier"
        ]
      }
    ]
  }
]'

    @Autowired
    private FolderService folderService;

    public List<Folder> create() throws FunctionalException, TechnicalException
    {
        Folder folder = ComponentBuilder.component(Category.FOLDER).name("Mon dossier")
                .classId(new Id("ClasseDossier")).acl("acl-dossier").build();
        folder.getData().setOwner("jna");
        folder.setTags(new Tags());
        folder.getTags().getTags().add(TagBuilder.name("RefDossier").value("REF-001").build());
        folder.getTags().getTags().add(TagBuilder.name("Description").value("Exemple de dossier").build());
        return folderService.create(Arrays.asList(folder));
    }

Modification de dossier

Cette opération permet de mettre à jour les données d’un dossier : tags et data (identifiant de la classe, ACL, owner …).


Ce service fonctionne en annule et remplace, l’ensemble des valeurs de tags doit donc être fourni par le service au moment de la mise à jour. Il est donc préconisé de réaliser une récupération du dossier, effectuer les modifications et faire l’appel au service de mise à jour.


# <CORE_HOST> : URL de base de FlowerDocs Core
# <TOKEN> : jeton d'authentification
# <IDS> : liste des identifiants de dossiers à mettre à jour
curl -X POST "<CORE_HOST>/rest/folders/<IDS>" \
  -H "token: <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '[
  {
    "category": "FOLDER",
    "data": {
      "ACL": "acl-dossier",
      "classId": "ClasseDossier",
      "owner": "jna"
    },
    "name": "Mon dossier modifié",
    "tags": [
      {
        "name": "RefDossier",
        "readOnly": false,
        "value": [
          "REF-001"
        ]
      },
      {
        "name": "Description",
        "readOnly": false,
        "value": [
          "Description modifiée"
        ]
      }
    ]
  }
]'

    @Autowired
    private FolderService folderService;

    public List<Folder> update(Folder folder) throws FunctionalException, TechnicalException
    {
      folder.setName("Mon dossier modifié");
      folder.getData().setACL(new Id("acl-dossier"));
      folder.getData().setClassId(new Id("ClasseDossier"));
      ComponentHelper.setTagValue(folder, "Description", "Description modifiée");
      return folderService.update(Arrays.asList(folder));
    }

Recherche de dossier

Les opérations de recherche fonctionnent toutes sur le même modèle décrit ici.

Suppression de dossier

Les exemples ci-dessous indiquent comment supprimer une liste de dossiers à partir d’une liste d’identifiants.


# <CORE_HOST> : URL de base de FlowerDocs Core
# <TOKEN> : jeton d'authentification
# <IDS> : liste des identifiants de dossiers à supprimer
curl -X DELETE "<CORE_HOST>/rest/folders/<IDS>" \
  -H "token: <TOKEN>"

    @Autowired
    private FolderService folderService;

    public void delete() throws FunctionalException, TechnicalException
    {
        List<Id> ids = Lists.newArrayList(new Id("folderId"));
        folderService.delete(ids);
    }

Gestion des enfants

Les dossiers peuvent contenir des enfants (documents, tâches ou autres dossiers). Les opérations suivantes permettent de gérer les enfants d’un dossier.

Ajout d’enfants

Cette opération ajoute des enfants à un dossier sans supprimer les enfants existants.


# <CORE_HOST> : URL de base de FlowerDocs Core
# <TOKEN> : jeton d'authentification
# <ID> : identifiant du dossier
curl -X PUT "<CORE_HOST>/rest/folders/<ID>/children" \
  -H "token: <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '[
  {
    "id": "documentId1",
    "category": "DOCUMENT"
  },
  {
    "id": "taskId1",
    "category": "TASK"
  }
]'

    @Autowired
    private FolderService folderService;

    public void addChildren() throws FunctionalException, TechnicalException
    {
        Id folderId = new Id("folderId");
        List<ComponentReference> children = new ArrayList<>();
        children.add(new ComponentReference(new Id("documentId1"), Category.DOCUMENT));
        children.add(new ComponentReference(new Id("taskId1"), Category.TASK));
        folderService.addChildren(folderId, children);
    }

Remplacement des enfants

Cette opération remplace tous les enfants existants par la liste fournie.


Cette opération supprime tous les enfants existants avant d’ajouter les nouveaux. Assurez-vous d’inclure tous les enfants souhaités dans la requête.


# <CORE_HOST> : URL de base de FlowerDocs Core
# <TOKEN> : jeton d'authentification
# <ID> : identifiant du dossier
curl -X POST "<CORE_HOST>/rest/folders/<ID>/children" \
  -H "token: <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '[
  {
    "id": "documentId1",
    "category": "DOCUMENT"
  },
  {
    "id": "documentId2",
    "category": "DOCUMENT"
  }
]'

    @Autowired
    private FolderService folderService;

    public void replaceChildren() throws FunctionalException, TechnicalException
    {
        Id folderId = new Id("folderId");
        List<ComponentReference> children = new ArrayList<>();
        children.add(new ComponentReference(new Id("documentId1"), Category.DOCUMENT));
        children.add(new ComponentReference(new Id("documentId2"), Category.DOCUMENT));
        folderService.replaceChildren(folderId, children);
    }

Suppression d’enfants

Cette opération supprime des enfants spécifiques d’un dossier.


# <CORE_HOST> : URL de base de FlowerDocs Core
# <TOKEN> : jeton d'authentification
# <ID> : identifiant du dossier
curl -X DELETE "<CORE_HOST>/rest/folders/<ID>/children" \
  -H "token: <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '[
  {
    "id": "documentId1",
    "category": "DOCUMENT"
  }
]'

    @Autowired
    private FolderService folderService;

    public void removeChildren() throws FunctionalException, TechnicalException
    {
        Id folderId = new Id("folderId");
        List<ComponentReference> children = new ArrayList<>();
        children.add(new ComponentReference(new Id("documentId1"), Category.DOCUMENT));
        folderService.deleteChildren(folderId, children);
    }