File indexing completed on 2024-05-12 05:26:00
0001 /* 0002 * Copyright (C) 2015 Christian Mollekopf <chrigi_1@fastmail.fm> 0003 * 0004 * This program is free software; you can redistribute it and/or modify 0005 * it under the terms of the GNU General Public License as published by 0006 * the Free Software Foundation; either version 2 of the License, or 0007 * (at your option) any later version. 0008 * 0009 * This program is distributed in the hope that it will be useful, 0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0012 * GNU General Public License for more details. 0013 * 0014 * You should have received a copy of the GNU General Public License 0015 * along with this program; if not, write to the 0016 * Free Software Foundation, Inc., 0017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 0018 */ 0019 #pragma once 0020 0021 #include "storage.h" 0022 #include <QSharedPointer> 0023 0024 class TypeIndex; 0025 namespace Sink { 0026 namespace ApplicationDomain { 0027 class ApplicationDomainType; 0028 } 0029 0030 class Indexer 0031 { 0032 public: 0033 virtual ~Indexer() = default; 0034 typedef QSharedPointer<Indexer> Ptr; 0035 virtual void add(const ApplicationDomain::ApplicationDomainType &entity) = 0; 0036 virtual void modify(const ApplicationDomain::ApplicationDomainType &oldEntity, const ApplicationDomain::ApplicationDomainType &newEntity) 0037 { 0038 remove(oldEntity); 0039 add(newEntity); 0040 } 0041 virtual void remove(const ApplicationDomain::ApplicationDomainType &entity) = 0; 0042 virtual void commitTransaction() {}; 0043 virtual void abortTransaction() {}; 0044 0045 protected: 0046 Storage::DataStore::Transaction &transaction(); 0047 TypeIndex &index(); 0048 QByteArray mResourceInstanceIdentifier; 0049 0050 private: 0051 friend class ::TypeIndex; 0052 void setup(TypeIndex *, Storage::DataStore::Transaction *, const QByteArray &resourceId); 0053 Storage::DataStore::Transaction *mTransaction; 0054 TypeIndex *mTypeIndex; 0055 }; 0056 0057 }