Exemples
########

Recherche d'unités archivistiques par ArchivalAgencyArchiveUnitIdentifier
=========================================================================

EndPoint: /access-external/v1/units

**Client Java**

.. code-block:: java

  try (AccessExternalClient client = AccessExternalClientFactory.getInstance().getClient()) {
        Integer tenantId = 0; // à titre d'exemple
        String contract = "myContract"; // à titre d'exemple
        final String selectQuery = "{\"$query\": [{\"$eq\": {\"ArchivalAgencyArchiveUnitIdentifier\" : \"20130456/3\"}}]}";
        final JsonNode queryJson = JsonHandler.getFromString(selectQuery);            
        client.selectUnits(new VitamContext(tenantId).setAccessContract(contract), queryJson);
    } catch (InvalidParseOperationException | VitamClientException e) {
        ///Log ...
  }

**Client Java avec construction DSL**

EndPoint: access-external/v1/units

..  code-block:: java

  JsonNode queryDsql = null;
  Integer tenantId = 0; // à titre d'exemple
  String contract = "myContract"; // à titre d'exemple
  try (AccessExternalClient client = AccessExternalClientFactory.getInstance().getClient()) {            
      Query query = QueryHelper.eq("ArchivalAgencyArchiveUnitIdentifier", "20130456/3");
      SelectMultiQuery select = new SelectMultiQuery()
        .addQueries(query)
        .setLimitFilter(0, 100);    
      client.selectUnits(new VitamContext(tenantId).setAccessContract(contract), select.getFinalSelect());
  } catch (InvalidCreateOperationException | InvalidParseOperationException | VitamClientException e) {
      ///Log ...
  }

**Postman**

POST /access-external/v1/units

Indiquer pour la requête POST :  
 
 * Header : 
 
  * X-Http-Method-Override : GET
  * X-Tenant-Id : 0
  * X-Access-Contract-Id : myContract
  * Accept: application/json
  * Content-Type: application/json
 
 * Body :

.. code-block:: json
   
  {
    "$roots": [],
    "$query": [
      {
        "$eq": {
          "ArchivalAgencyArchiveUnitIdentifier": "20130456/3"
        }
      }
    ],
    "$filter": {},
    "$projection": {}
  } 


Recherche de registre de fonds par producteur (FRAN_NP_005568)
==============================================================

**Client Java**

Endpoint : /admin-external/v1/accessionregisters

.. code-block:: java

  Integer tenantId = 0; // à titre d'exemple
  String contract = "myContract"; // à titre d'exemple
  final String queryDsl = "{\"$query\": [{\"$eq\": {\"OriginatingAgency\" : \"FRAN_NP_005568\"}}]}";
  try (AdminExternalClient client = AdminExternalClientFactory.getInstance().getClient()) {
      final JsonNode queryJson = JsonHandler.getFromString(queryDsl);
      client.findAccessionRegister(new VitamContext(tenantId).setAccessContract(contract), queryJson);
  } catch (InvalidParseOperationException | VitamClientException e) {
      // LOG
  }

**Client Java avec construction DSL**

Endpoint : /admin-external/v1/accessionregisters

.. code-block:: java

  Integer tenantId = 0; // à titre d'exemple
  String contract = "myContract"; // à titre d'exemple=
  Select select = new Select();
  try (AdminExternalClient client = AdminExternalClientFactory.getInstance().getClient()) {
      select.setQuery(QueryHelper.eq("OriginatingAgency", "FRAN_NP_005568"));
      client.findAccessionRegister(new VitamContext(tenantId).setAccessContract(contract),
          select.getFinalSelect());
  } catch (VitamClientException | InvalidCreateOperationException e) {
      // LOG
  }

     
**Postman**

POST /admin-external/v1/accessionregisters

Indiquer pour la requête POST :  
 
 * Header : 

  * X-Http-Method-Override : GET
  * X-Tenant-Id : 0
  * X-Access-Contract-Id : myContract
  * Accept: application/json
  * Content-Type: application/json
 
 * Body

.. code-block:: json
   
  {
    "$query" : { 
        "$eq" : { "OriginatingAgency" : "FRAN_NP_005568" }
    },
    "$filter":{},
    "$projection":{}      
  }


Recherche d'unités archivistiques par titre AND description AND dates
=====================================================================

**Client Java**

Endpoint : /access-external/v1/units

.. code-block:: java

  Integer tenantId = 0; // à titre d'exemple
  String contract = "myContract"; // à titre d'exemple
  Select select = new Select();
  try (AccessExternalClient client = AccessExternalClientFactory.getInstance().getClient()) {
      MatchQuery titleQ = QueryHelper.match("Title", "myTitle");
      CompareQuery dateQ = QueryHelper.eq("StartDate", "2015-07-24T02:15:28.28Z");
      MatchQuery descQ = QueryHelper.match("Description", "myDescription");
      select.setQuery(QueryHelper.and().add(titleQ, dateQ, descQ));            
      client.selectUnits(new VitamContext(tenantId).setAccessContract(contract), select.getFinalSelect());
  } catch (InvalidCreateOperationException | VitamClientException e) {
      ///Log ...
  }

**Postman**

GET /access-external/v1/units
Indiquer pour la requête POST :  
 
 * Header : 
 
  * X-Http-Method-Override : GET
  * X-Tenant-Id : 0
  * X-Access-Contract-Id : myContract
  * Accept: application/json
  * Content-Type: application/json
 
 * Body :

.. code-block:: json
   
  {
    "$roots": [],
    "$query": [
      {
        "$and": [
          {
            "$match": {
              "Title" : "myTitle"
            }
          },
          {
            "$match": {
              "Description" : "myDescription"
            }
          }, 
          {
            "$eq" : { 
              "StartDate" : "2015-07-24T02:15:28.28Z" 
            }
          }
        ]
      }
    ],
    "$filter": {},
    "$projection": {}
  } 

Recherche d'unités archivistiques par libre titre OR description
================================================================

**Client Java**

Endpoint : /access-external/v1/units

.. code-block:: java

  Integer tenantId = 0; // à titre d'exemple
  String contract = "myContract"; // à titre d'exemple
  Select select = new Select();
  try (AccessExternalClient client = AccessExternalClientFactory.getInstance().getClient()) {
      MatchQuery titleQ = QueryHelper.match("Title", "myTitle");
      MatchQuery descQ = QueryHelper.match("Description", "myDescription");
      select.setQuery(QueryHelper.or().add(titleQ, descQ));            
      client.selectUnits(new VitamContext(tenantId).setAccessContract(contract), select.getFinalSelect());
  } catch (InvalidCreateOperationException | VitamClientException e) {
      ///Log ...
  }


**Postman**

GET /access-external/v1/units

Indiquer pour la requête POST :  
 
 * Header : 
 
  * X-Http-Method-Override : GET
  * X-Tenant-Id : 0
  * X-Access-Contract-Id : myContract
  * Accept: application/json
  * Content-Type: application/json
 
 * Body :

.. code-block:: json
  
  {
    "$roots": [],
    "$query": [
      {
        "$or": [
          {
            "$match": {
              "Title" : "myTitle"
            }
          },
          {
            "$match": {
              "Description" : "myDescription"
            }
          }
        ]
      }
    ],
    "$filter": {},
    "$projection": {}
  }

