EntandoBundle.java

package org.entando.kubernetes.model.bundle;

import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Builder.Default;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.entando.kubernetes.model.job.EntandoBundleJob;
import org.entando.kubernetes.model.job.JobStatus;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude
public class EntandoBundle {

    private String code;
    //private String organization;
    //private String ecrId; // hash(code + organization) = metadata.name
    private String title;
    private String description;
    private BundleType bundleType;
    private String thumbnail;
    private Set<String> componentTypes;
    private EntandoBundleJob installedJob;
    private EntandoBundleJob lastJob;
    private Boolean customInstallation;
    private EntandoBundleVersion latestVersion;

    @Default
    private List<EntandoBundleVersion> versions = new ArrayList<>();

    public boolean isInstalled() {
        return installedJob != null && installedJob.getStatus() == JobStatus.INSTALL_COMPLETED;
    }

    public Optional<EntandoBundleVersion> getLatestVersion() {
        return Optional.ofNullable(latestVersion);
    }

}