// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT-0
package aws.proserve.bcs.dr.ce;
import aws.proserve.bcs.dr.project.Side;
import aws.proserve.bcs.dr.project.SubProject;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBIgnore;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperFieldModel.DynamoDBAttributeType;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTyped;
import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.annotation.Nullable;
import java.util.List;
/**
* A DRP CloudEndure project.
*
* Such a project manages a cutover and a cutback CloudEndure project, two at maximum. This is to simulate one
* disaster-recovery project with two migration projects.
*/
public class CloudEndureProject extends SubProject {
private boolean publicNetwork;
private String sourceVpcId;
private String targetVpcId;
private String sourceInstanceType;
private String targetInstanceType;
@Override
public List getItems() {
return super.getItems();
}
@Override
public void setItems(List items) {
super.setItems(items);
}
@Nullable
public CloudEndureItem getItem(Side side) {
return side == Side.source ? getCutover() : getCutback();
}
@Nullable
@JsonIgnore
@DynamoDBIgnore
public CloudEndureItem getCutover() {
return getItems().isEmpty() ? null : getItems().get(0);
}
@JsonIgnore
@DynamoDBIgnore
public CloudEndureItem getCutback() {
return getItems().size() <= 1 ? null : getItems().get(1);
}
@DynamoDBTyped(DynamoDBAttributeType.BOOL)
public boolean isPublicNetwork() {
return publicNetwork;
}
public void setPublicNetwork(boolean publicNetwork) {
this.publicNetwork = publicNetwork;
}
public String getSourceVpcId() {
return sourceVpcId;
}
public void setSourceVpcId(String sourceVpcId) {
this.sourceVpcId = sourceVpcId;
}
public String getTargetVpcId() {
return targetVpcId;
}
public void setTargetVpcId(String targetVpcId) {
this.targetVpcId = targetVpcId;
}
public String getVpcId(Side side) {
return side == Side.source ? getSourceVpcId() : getTargetVpcId();
}
public String getSourceInstanceType() {
return sourceInstanceType;
}
public void setSourceInstanceType(String sourceInstanceType) {
this.sourceInstanceType = sourceInstanceType;
}
public String getTargetInstanceType() {
return targetInstanceType;
}
public void setTargetInstanceType(String targetInstanceType) {
this.targetInstanceType = targetInstanceType;
}
}