content: package alien4cloud.model.deployment;
  
  import java.util.Date;
  import java.util.Map;
  
  import lombok.AllArgsConstructor;
  import lombok.Getter;
  import lombok.NoArgsConstructor;
  import lombok.Setter;
  
  import org.elasticsearch.annotation.ESObject;
  import org.elasticsearch.annotation.Id;
  import org.elasticsearch.annotation.StringField;
  import org.elasticsearch.annotation.TimeStamp;
  import org.elasticsearch.annotation.query.TermFilter;
  import org.elasticsearch.mapping.IndexType;
  
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonInclude.Include;
  import com.google.common.collect.Maps;
  
  /**
   * Represents a deployment in ALIEN.
   */
  @Getter
  @Setter
  @AllArgsConstructor
  @NoArgsConstructor
  @JsonInclude(Include.NON_NULL)
  @ESObject
  public class Deployment {
      /** Unique id of the deployment as stored in Alien */
      @Id
      private String id;
  
      /**
       * Unique id of the deployment on the orchestration technology.
       * This is unique for deployments that have a null end date but you may have multiple completed deployments that share the same paasId.
       */
      @TermFilter
      @StringField(indexType = IndexType.not_analyzed)
      private String orchestratorDeploymentId;
  
      @TermFilter
      @StringField(indexType = IndexType.not_analyzed)
      private String deployerUsername;
  
      @TermFilter
      @StringField(indexType = IndexType.not_analyzed)
      private DeploymentSourceType sourceType;
  
      /** Id of the orchestrator that manages the deployment. */
      @TermFilter
      @StringField(indexType = IndexType.not_analyzed, includeInAll = false)
      private String orchestratorId;
  
      /** Id of the locations on which it is deployed. */
      @TermFilter
      @StringField(indexType = IndexType.not_analyzed, includeInAll = false)
      private String[] locationIds;
  
      /** Id of the application that has been deployed */
      @TermFilter
      @StringField(indexType = IndexType.not_analyzed, includeInAll = false)
      private String sourceId;
  
      /** Name of the application. This is used as backup if application is deleted. */
      @TermFilter
      @StringField(indexType = IndexType.not_analyzed)
      private String sourceName;
  
      /** Id of the environment on which this deployment has been created */
      @TermFilter
      @StringField(indexType = IndexType.not_analyzed, includeInAll = false)
      private String environmentId;
  
      /** Id of the version of the topology on which this deployment has been created */
      @TermFilter
      @StringField(indexType = IndexType.not_analyzed, includeInAll = false)
      private String versionId;
  
      /** Start date of the deployment */
      @TimeStamp(format = "")
      private Date startDate;
  
      /** End date of the deployment. */
      @TermFilter
      private Date endDate;
  
      /** Id of the services this deployment depends on. */
      @TermFilter
      @StringField(indexType = IndexType.not_analyzed, includeInAll = false)
      private String[] serviceResourceIds;
  
      /**
       * The last PaaS execution id per workflow.
       */
      private Map<String, String> workflowExecutions = Maps.newHashMap();
  }