/** {@inheritDoc} */ @Override public void updateFarm(Long farmNo, String comment, String domainName) { // 引数チェック if (farmNo == null) { throw new AutoApplicationException("ECOMMON-000003", "farmNo"); } // TODO: 長さチェック(comment,domainName) // TODO: 形式チェック(domainName) // ファームの存在チェック Farm farm = farmDao.read(farmNo); if (farm == null) { // ファームが存在しない場合 throw new AutoApplicationException("ESERVICE-000204", farmNo); } if (!farm.getDomainName().equals(domainName)) { // ドメイン名を変更しようとした場合 // 全てのインスタンスが停止状態であることのチェック List<Instance> instances = instanceDao.readByFarmNo(farmNo); for (Instance instance : instances) { if (InstanceStatus.fromStatus(instance.getStatus()) != InstanceStatus.STOPPED) { // インスタンスが停止状態でない場合 throw new AutoApplicationException("ESERVICE-000205", instance.getInstanceName()); } } // ドメイン名の一意チェック // TODO: データベース上で一意キーを設定するべきか? List<Farm> checkFarms = farmDao.readAll(); for (Farm checkFarm : checkFarms) { if (checkFarm.getDomainName().equals(domainName)) { // 同名のドメイン名が存在する場合 throw new AutoApplicationException("ESERVICE-000206", domainName); } } } // インスタンスの更新 farm.setComment(comment); farm.setDomainName(domainName); farmDao.update(farm); // イベントログ出力 eventLogger.log( EventLogLevel.INFO, farmNo, farm.getFarmName(), null, null, null, null, "FarmUpdate", null, null, null); }