package jp.primecloud.auto.api.address;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import jp.primecloud.auto.api.ApiSupport;
import jp.primecloud.auto.api.ApiValidate;
import jp.primecloud.auto.api.response.address.AddAwsAddressResponse;
import jp.primecloud.auto.api.response.address.AwsAddressResponse;
import jp.primecloud.auto.entity.crud.AwsAddress;
import jp.primecloud.auto.entity.crud.Platform;
import jp.primecloud.auto.entity.crud.User;
import jp.primecloud.auto.exception.AutoApplicationException;
import jp.primecloud.auto.process.aws.AwsProcessClient;
import org.apache.commons.lang.BooleanUtils;
@Path("/AddAwsAddress")
public class AddAwsAddress extends ApiSupport {
@GET
@Produces(MediaType.APPLICATION_JSON)
public AddAwsAddressResponse addAwsAddress(@QueryParam(PARAM_NAME_PLATFORM_NO) String platformNo) {
// 入力チェック
ApiValidate.validatePlatformNo(platformNo);
// ユーザ取得
User user = checkAndGetUser();
// プラットフォーム取得
Platform platform = platformDao.read(Long.parseLong(platformNo));
// プラットフォームが存在しない場合
if (platform == null) {
throw new AutoApplicationException("EAPI-100000", "Platform", PARAM_NAME_PLATFORM_NO, platformNo);
}
// プラットフォームを選択できない場合
if (BooleanUtils.isNotTrue(platform.getSelectable())) {
throw new AutoApplicationException("EAPI-000020", "Platform", PARAM_NAME_PLATFORM_NO, platformNo);
}
// プラットフォームを利用できない場合
if (!platformService.isUsablePlatform(user.getUserNo(), platform)) {
throw new AutoApplicationException("EAPI-000020", "Platform", PARAM_NAME_PLATFORM_NO, platformNo);
}
// AWSアドレスを作成
AwsProcessClient awsProcessClient = awsProcessClientFactory.createAwsProcessClient(user.getUserNo(),
platform.getPlatformNo());
AwsAddress awsAddress = awsAddressProcess.createAddress(awsProcessClient);
AwsAddressResponse awsAddressResponse = new AwsAddressResponse(awsAddress);
AddAwsAddressResponse response = new AddAwsAddressResponse(awsAddressResponse);
return response;
}
}