2.1. BPMN for Accessor

2.1.1. Short description of Dtos

Bucket Dto
public class AccessorBucket {
  /**
   * Bucket name
   */
  private String id;
  /**
   * Site for this Bucket
   */
  private String site;
  /**
   * Creation or Deletion datetime
   */
  private Instant creation;
  /**
   * Optional expiry datetime
   */
  private Instant expires;
  /**
   * Status of this Bucket
   */
  private AccessorStatus status = AccessorStatus.UNKNOWN;
Object Dto
public class AccessorObject {
  /**
   * Internal Id
   */
  private String id;
  /**
   * Site for this Object
   */
  private String site;
  /**
   * Bucket name
   */
  private String bucket;
  /**
   * Object name
   */
  private String name;
  /**
   * Optional: SHA 256 hash
   */
  private String hash;
  /**
   * Status of this Object
   */
  private AccessorStatus status = AccessorStatus.UNKNOWN;
  /**
   * Creation or Modification datetime
   */
  private Instant creation;
  /**
   * Optional expiry datetime
   */
  private Instant expires;
  /**
   * Length of the content of this Object
   */
  private long size;
  /**
   * Metadata if any for this Object
   */
  private final Map<String, String> metadata = new HashMap<>();

Note: Metadata keys must be lower case, starting with a letter [a-z], following by any letter [a-z], number [0-9] and “_”. This is a limitation coming from Cloud storages. Values can be string containing anything but limited in size globally (< 2KB).

Filter Dto
public class AccessorFilter {
  /**
   * Optional Prefix for the name, including path
   */
  private String namePrefix;
  /**
   * Optional list of status to filter on
   */
  private AccessorStatus[] statuses;
  /**
   * Optional datetime for creation before this date
   */
  private Instant creationBefore;
  /**
   * Optional datetime for creation after this date
   */
  private Instant creationAfter;
  /**
   * Optional datetime for expiry before this date
   */
  private Instant expiresBefore;
  /**
   * Optional datetime for expiry after this date
   */
  private Instant expiresAfter;
  /**
   * Optional length filter less than this length
   */
  private long sizeLessThan;
  /**
   * Optional length filter greater than this length
   */
  private long sizeGreaterThan;
  /**
   * Optional metadata filter based on equality
   */
  private final Map<String, String> metadataFilter = new HashMap<>();

2.1.2. Status logic

Status for Objects and Buckets

Status for Objects and Buckets

2.1.3. Bucket

Create Bucket

Create Bucket

Check Local Existence Bucket (GET for Metadata)

Check Local Existence Bucket (GET for Metadata)

Check Local/Remote Existence Bucket (GET for Metadata)

Check Local/Remote Existence Bucket (GET for Metadata)

Delete Bucket

Delete Bucket

List Buckets

List Buckets

2.1.4. Object

Create Object

Create Object

Check Local Existence Object or GET Metadata

Check Local Existence Object or GET Metadata

Check Local/Remote Existence Object or GET Metadata

Check Local/Remote Existence Object or GET Metadata

Get Local Object's Content

Get Local Object’s Content

Get Local/Remote Object's Content

Get Local/Remote Object’s Content

Delete Object

Delete Object

List Objects in Bucket

List Objects in Bucket

2.1.5. Object with special Buffered option

Create Object with Buffered Option

Create Object with Buffered Option

Get Local/Remote Object's Content with Buffered option

Get Local/Remote Object’s Content with Buffered option

2.1.6. Bucket Internal

Specific implementations for Internal Accessor:

Check Existence and Get Metadata for Local Bucket

Check Existence and Get Metadata for Local Bucket

2.1.7. Object Internal

Specific implementations for Internal Accessor:

Get Local Object's Content

Get Local Object’s Content