Ejemplo n.º 1
0
        /// <summary>
        /// 設置設定ファイル用のArchiveFileを作成する
        /// </summary>
        /// <param name="messageObject">設置設定インスタンス</param>
        /// <param name="equipmentUid">機器UID</param>
        /// <param name="createDatetime">作成日時</param>
        /// <param name="configMessage">設置設定ファイル内容</param>
        /// <returns>ArchiveFile</returns>
        private ArchiveFile MakeArchiveFile(
            InstallBaseConfig messageObject,
            string equipmentUid,
            DateTime createDatetime,
            out string configMessage)
        {
            Assert.IfNull(messageObject);
            Assert.IfNull(equipmentUid);

            configMessage = messageObject.ToStringJsonIndented();

            // メタデータなしで作成
            return(new ArchiveFile()
            {
                ContainerName = _settings.DeliveringBlobContainerNameInstallbase,
                FilePath = string.Format(_settings.DeliveringBlobInstallbaseFilePath, equipmentUid),
                CreatedAt = createDatetime
            });
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 機器情報を更新する
        /// </summary>
        /// <remarks>sd 04-01.機器登録</remarks>
        /// <param name="utilParam">>Utility型機器情報</param>
        /// <param name="baseConfig">設置設定情報</param>
        /// <returns>結果付きDB保存済み機器情報</returns>
        public Result <DtDevice> Update(DtDevice utilParam, InstallBaseConfig baseConfig)
        {
            Result <DtDevice>     result = null;
            CreateAndUpdateStatus status = CreateAndUpdateStatus.Other;

            try
            {
                _logger.EnterJson("In Param: {0}", utilParam);

                // 一連の動きのためトランザクション処理開始
                using (TransactionScope scope = new TransactionScope())
                {
                    // Sq3.2.1:機器情報を保存する
                    status = CreateAndUpdateStatus.UpdateDtDevice;
                    DtDevice updatedDeviceInfo = _dtDeviceRepository.UpdateDtDevice(utilParam);
                    if (updatedDeviceInfo == null)
                    {
                        // 指定SIDのデータがないとnullが返る
                        _logger.Error(nameof(Resources.CO_API_DVU_003), new object[] { "指定したSIDのデータがDBにありません" });
                        return(new Result <DtDevice>(
                                   ResultCode.NotFound,
                                   string.Format(Resources.CO_API_DVU_003, new object[] { "指定したSIDのデータがDBにありません" }),
                                   utilParam));
                    }

                    // 設置設定インスタンスにエッジID・機器UIDを登録する
                    string edgeId = updatedDeviceInfo.EdgeId.ToString();
                    baseConfig.OwnConfig.EdgeId       = edgeId;
                    baseConfig.OwnConfig.EquipmentUid = updatedDeviceInfo.EquipmentUid;

                    string configMessage = string.Empty;

                    // Sq3.2.2:設置設定ファイルを生成する(機器情報)
                    status = CreateAndUpdateStatus.MakeArchiveFile;
                    var archiveFile = MakeArchiveFile(
                        baseConfig,
                        updatedDeviceInfo.EquipmentUid,
                        updatedDeviceInfo.UpdateDatetime,
                        out configMessage);

                    // Sq3.2.3:設置設定ファイルをアップロードする(設置設定ファイル)
                    status = CreateAndUpdateStatus.Upload;
                    _deliveringRepository.Upload(archiveFile, configMessage);

                    // 正常終了
                    status = CreateAndUpdateStatus.Other;
                    _logger.Info(nameof(Resources.CO_API_DVU_007), new object[] { edgeId });
                    result = new Result <DtDevice>(
                        ResultCode.Succeed,
                        string.Format(Resources.CO_API_DVU_007, new object[] { edgeId }),
                        updatedDeviceInfo);

                    scope.Complete();
                }

                return(result);
            }
            catch (RmsParameterException e)
            {
                // Sq3.2.1
                _logger.Error(e, nameof(Resources.CO_API_DVU_003), new object[] { e.Message });

                return(new Result <DtDevice>(
                           ResultCode.ParameterError,
                           string.Format(Resources.CO_API_DVU_003, new object[] { e.Message }),
                           utilParam));
            }
            catch (Exception) when(status == CreateAndUpdateStatus.Other)
            {
                // 想定外のエラーは呼び出し側に返却する
                throw;
            }
            catch (Exception e)
            {
                string errorMessage = string.Empty;

                switch (status)
                {
                case CreateAndUpdateStatus.UpdateDtDevice:
                    // Sq3.2.1
                    _logger.Error(e, nameof(Resources.CO_API_DVU_004), new object[] { e.Message });
                    errorMessage = string.Format(Resources.CO_API_DVU_004, new object[] { e.Message });
                    break;

                case CreateAndUpdateStatus.MakeArchiveFile:
                    // Sq3.2.2
                    _logger.Error(e, nameof(Resources.CO_API_DVU_005), new object[] { e.Message });
                    errorMessage = string.Format(Resources.CO_API_DVU_005, new object[] { e.Message });
                    break;

                case CreateAndUpdateStatus.Upload:
                default:
                    // Sq3.2.3
                    _logger.Error(e, nameof(Resources.CO_API_DVU_006), new object[] { e.Message });
                    errorMessage = string.Format(Resources.CO_API_DVU_006, new object[] { e.Message });
                    break;
                }

                return(new Result <DtDevice>(ResultCode.ServerEerror, errorMessage, utilParam));
            }
            finally
            {
                _logger.LeaveJson("Out Param: {0}", result);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 機器情報を更新する
 /// </summary>
 /// <remarks>sd 04-01.機器登録</remarks>
 /// <param name="utilParam">>Utility型機器情報</param>
 /// <param name="baseConfig">設置設定情報</param>
 /// <returns>結果付きDB保存済み機器情報</returns>
 public Result <DtDevice> Update(DtDevice utilParam, InstallBaseConfig baseConfig)
 {
     throw new Exception();
 }