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