File indexing completed on 2024-05-12 15:59:16
0001 /* 0002 * SPDX-FileCopyrightText: 2008 Cyrille Berger <cberger@cberger.net> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 #ifndef KIS_META_DATA_MERGE_STRATEGY_P_H 0007 #define KIS_META_DATA_MERGE_STRATEGY_P_H 0008 0009 #include "kis_meta_data_merge_strategy.h" 0010 0011 class QString; 0012 0013 namespace KisMetaData 0014 { 0015 class Schema; 0016 class Value; 0017 /** 0018 * This strategy drop all meta data. 0019 */ 0020 class DropMergeStrategy : public MergeStrategy 0021 { 0022 public: 0023 DropMergeStrategy(); 0024 ~DropMergeStrategy() override; 0025 QString id() const override; 0026 QString name() const override; 0027 QString description() const override; 0028 void merge(Store* dst, QList<const Store*> srcs, QList<double> score) const override; 0029 }; 0030 class PriorityToFirstMergeStrategy : public MergeStrategy 0031 { 0032 public: 0033 PriorityToFirstMergeStrategy(); 0034 ~PriorityToFirstMergeStrategy() override; 0035 QString id() const override; 0036 QString name() const override; 0037 QString description() const override; 0038 void merge(Store* dst, QList<const Store*> srcs, QList<double> score) const override; 0039 }; 0040 class OnlyIdenticalMergeStrategy : public MergeStrategy 0041 { 0042 public: 0043 OnlyIdenticalMergeStrategy(); 0044 ~OnlyIdenticalMergeStrategy() override; 0045 QString id() const override; 0046 QString name() const override; 0047 QString description() const override; 0048 void merge(Store* dst, QList<const Store*> srcs, QList<double> score) const override; 0049 }; 0050 class SmartMergeStrategy : public MergeStrategy 0051 { 0052 public: 0053 SmartMergeStrategy(); 0054 ~SmartMergeStrategy() override; 0055 QString id() const override; 0056 QString name() const override; 0057 QString description() const override; 0058 void merge(Store* dst, QList<const Store*> srcs, QList<double> score) const override; 0059 protected: 0060 /** 0061 * Merge multiple entries in one. 0062 */ 0063 void mergeEntry(Store* dst, QList<const Store*> srcs, const Schema* schema, const QString & identifier) const; 0064 Value election(QList<const Store*> srcs, QList<double> score, const QString & key) const; 0065 }; 0066 } 0067 #endif