blob: 9cd0a351fa73d41bf15abb3bc9aa3c8558a1fa5b [file] [log] [blame]
package com.epam.dlab.backendapi.domain;
import com.epam.dlab.dto.UserInstanceStatus;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.List;
import java.util.Set;
@Data
@Builder
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProjectDTO {
@NotNull
private final String name;
@NotNull
private final Set<String> groups;
@NotNull
@Pattern(regexp = "^ssh-.*\\n", message = "format is incorrect. Please use the openSSH format")
private final String key;
@NotNull
private final String tag;
private final Integer budget;
private final List<ProjectEndpointDTO> endpoints;
private final boolean sharedImageEnabled;
public enum Status {
CREATING,
ACTIVE,
FAILED,
DELETED,
DELETING,
DEACTIVATING,
ACTIVATING,
NOT_ACTIVE;
public static Status from(UserInstanceStatus userInstanceStatus) {
if (userInstanceStatus == UserInstanceStatus.RUNNING) {
return ACTIVE;
} else if (userInstanceStatus == UserInstanceStatus.TERMINATED) {
return DELETED;
} else if (userInstanceStatus == UserInstanceStatus.TERMINATING) {
return DELETING;
} else if (userInstanceStatus == UserInstanceStatus.STOPPING) {
return DEACTIVATING;
} else if (userInstanceStatus == UserInstanceStatus.STOPPED) {
return NOT_ACTIVE;
} else if (userInstanceStatus == UserInstanceStatus.STARTING) {
return ACTIVATING;
} else if (userInstanceStatus == UserInstanceStatus.CREATING) {
return CREATING;
} else if (userInstanceStatus == UserInstanceStatus.FAILED) {
return FAILED;
}
return Status.valueOf(userInstanceStatus.name());
}
public static UserInstanceStatus from(Status status) {
if (status == ACTIVE) {
return UserInstanceStatus.RUNNING;
} else if (status == ACTIVATING) {
return UserInstanceStatus.STARTING;
} else if (status == DEACTIVATING) {
return UserInstanceStatus.STOPPING;
} else if (status == NOT_ACTIVE) {
return UserInstanceStatus.STOPPED;
} else if (status == DELETING) {
return UserInstanceStatus.TERMINATING;
} else if (status == DELETED) {
return UserInstanceStatus.TERMINATED;
} else if (status == CREATING) {
return UserInstanceStatus.CREATING;
} else if (status == FAILED) {
return UserInstanceStatus.FAILED;
}
throw new IllegalArgumentException();
}
}
}