swift
artifactlist.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2017 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_DB_ARTIFACTLIST_H
7 #define SWIFT_MISC_DB_ARTIFACTLIST_H
8 
9 #include <QString>
10 
11 #include "misc/collection.h"
12 #include "misc/db/artifact.h"
16 #include "misc/platformset.h"
17 #include "misc/sequence.h"
18 #include "misc/swiftmiscexport.h"
19 
20 SWIFT_DECLARE_SEQUENCE_MIXINS(swift::misc::db, CArtifact, CArtifactList)
21 
22 namespace swift::misc::db
23 {
26  public CSequence<CArtifact>,
27  public IDatastoreObjectList<CArtifact, CArtifactList, int>,
28  public mixin::MetaType<CArtifactList>
29  {
30  public:
33 
35  CArtifactList();
36 
38  CArtifactList(const CSequence<CArtifact> &other);
39 
41  CPlatformSet getPlatforms() const;
42 
44  CArtifact findFirstByMatchingPlatformOrDefault(const CPlatform &platform) const;
45 
47  CArtifact findFirstByMatchingNameOrDefault(const QString &name,
48  Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
49 
51  CArtifactList findByMatchingPlatform(const CPlatform &platform) const;
52 
54  CArtifactList findByType(const CArtifact::ArtifactType type) const;
55 
57  CArtifactList findMatchingForCurrentPlatform() const;
58 
60  CArtifactList findByDistribution(const CDistribution &distribution,
61  bool findMoreStableDistribution = false) const;
62 
64  CArtifactList findWithUnrestrictedDistributions() const;
65 
67  CArtifactList findByDistributionAndPlatform(const CDistribution &distribution, const CPlatform &platform,
68  bool findMoreStableDistributions = false) const;
69 
71  CArtifact findFirstByVersionOrDefault(const QVersionNumber &version) const;
72 
74  CArtifact findFirstByVersionOrDefault(const QString &version) const;
75 
77  CDistributionList getDistributions() const;
78 
80  void sortByVersion(Qt::SortOrder order = Qt::AscendingOrder);
81 
83  CArtifact getLatestArtifactOrDefault() const;
84 
86  network::CRemoteFileList asRemoteFiles() const;
87 
89  QString getLatestVersion() const;
90 
92  QVersionNumber getLatestQVersion() const;
93 
96  QStringList getSortedNames() const;
97 
100  QStringList getSortedVersions() const;
101 
103  qint64 getTotalFileSize() const;
104 
106  QString getTotalFileSizeHumanReadable() const;
107 
109  static CArtifactList fromDatabaseJson(const QJsonArray &array);
110 
112  static CArtifactList fromDatabaseJson(const QString &json);
113  };
114 } // namespace swift::misc::db
115 
116 Q_DECLARE_METATYPE(swift::misc::db::CArtifactList)
118 
119 #endif // SWIFT_MISC_DB_ARTIFACTLIST_H
Generic ordered container with value semantics.
Definition: collection.h:107
Platform (i.e.
Definition: platform.h:24
Value object for a set of platforms.
Definition: platformset.h:22
Generic sequential container with value semantics.
Definition: sequence.h:86
CSequence()=default
Default constructor.
Artifacts ("our software" products)
Definition: artifact.h:23
Distributions for channel.
Definition: distribution.h:27
Multiple distributions for different channels:
List of objects read from database. Such objects should implement.
CRTP class template from which a derived class can inherit common methods dealing with the metatype o...
Definition: mixinmetatype.h:29
Value object encapsulating a list of remote files.
#define SWIFT_MISC_DECLARE_USING_MIXIN_METATYPE(DERIVED)
When a derived class and a base class both inherit from mixin::MetaType, the derived class uses this ...
#define SWIFT_DECLARE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template declaration of mixins for a CSequence subclass to be placed near the top of the hea...
Definition: sequence.h:62
#define SWIFT_MISC_EXPORT
Export a class or function from the library.