00001 /** 00002 * @file IDataMerger.h 00003 * @brief 差し込み印刷インタフェース 00004 * 00005 * @author Nakashima h 00006 * @date 2021-10-06 00007 * 00008 * $Id: IDataMerger.h 32 2022-07-14 03:20:43Z shingo.yoneda $ 00009 * 00010 * Copyright (c) 2020-2022 Antenna House, Inc. All rights reserved. 00011 */ 00012 00013 #pragma once 00014 #include <queue> 00015 #include <memory> 00016 00017 #include "SimpleTypeParameter.h" 00018 #include "CompoundTypeParameter.h" 00019 #include "NestedTableTypeParameter.h" 00020 00021 /** 00022 * @brief 差し込み印刷インタフェース 00023 */ 00024 class IDataMerger { 00025 protected: 00026 /** 00027 * @brief デフォルトコンストラクタ 00028 */ 00029 IDataMerger() = default; 00030 00031 /** 00032 * @brief コピーコンストラクタ 00033 */ 00034 IDataMerger(const IDataMerger&) = delete; 00035 /** 00036 * @brief コピー代入演算子 00037 */ 00038 IDataMerger& operator=(const IDataMerger&) = delete; 00039 00040 /** 00041 * @brief ムーブコンストラクタ 00042 */ 00043 IDataMerger(IDataMerger&&) = delete; 00044 /** 00045 * @brief ムーブ代入演算子 00046 */ 00047 IDataMerger& operator=(IDataMerger&&) = delete; 00048 00049 public: 00050 00051 /** 00052 * @brief デストラクタ 00053 */ 00054 virtual ~IDataMerger() = default; 00055 00056 /** 00057 * @brief 差し込み印刷フィールド名の一覧を取得 00058 * @param input_param - 入力パラメータ 00059 * @return 差し込み印刷フィールド名の一覧 00060 */ 00061 virtual std::vector<std::string> getDataMergeFields(InputParam const& input_param) = 0; 00062 00063 /** 00064 * @brief シンプル版の差し込み印刷を実行するオブジェクトを生成する 00065 * @param simple_type_parameter - シンプル版の差し込み印刷に使用するパラメータ 00066 * @return シンプル版の差し込み印刷を実行するオブジェクト 00067 */ 00068 static std::unique_ptr<IDataMerger> create(SimpleTypeParameter simple_type_parameter); 00069 00070 /** 00071 * @brief 複合版の差し込み印刷を実行するオブジェクトを生成する 00072 * @param compound_type_parameter - 複合版の差し込み印刷に使用するパラメータ 00073 * @return 複合版の差し込み印刷を実行するオブジェクト 00074 */ 00075 static std::unique_ptr<IDataMerger> create(CompoundTypeParameter compound_type_parameter); 00076 00077 /** 00078 * @brief ネスト構造のテーブル版の差し込み印刷を実行するオブジェクトを生成する 00079 * @param nested_table_type_parameter - ネスト構造のテーブル版の差し込み印刷に使用するパラメータ 00080 * @return ネスト構造のテーブル版の差し込み印刷を実行するオブジェクト 00081 */ 00082 static std::unique_ptr<IDataMerger> create(NestedTableTypeParameter nested_table_type_parameter); 00083 00084 /** 00085 * @brief テンプレートへの差し込み印刷を実行 00086 * @param input_param - 入力パラメータ 00087 * @param output_param - 出力パラメータ 00088 */ 00089 virtual void execute(InputParam const& input_param, OutputParam const& output_param) = 0; 00090 };