1/*
2 * Copyright 2013-2014, Stephan A��mus <superstippi@gmx.de>.
3 * Copyright 2016-2023, Andrew Lindesay <apl@lindesay.co.nz>.
4 * All rights reserved. Distributed under the terms of the MIT License.
5 */
6#ifndef DEPOT_INFO_H
7#define DEPOT_INFO_H
8
9#include <vector>
10
11#include <String.h>
12#include <Referenceable.h>
13
14#include "PackageInfo.h"
15
16
17class DepotInfo : public BReferenceable {
18public:
19								DepotInfo();
20								DepotInfo(const BString& name);
21								DepotInfo(const DepotInfo& other);
22
23			DepotInfo&			operator=(const DepotInfo& other);
24			bool				operator==(const DepotInfo& other) const;
25			bool				operator!=(const DepotInfo& other) const;
26
27			const BString&		Name() const
28									{ return fName; }
29
30			void				SetIdentifier(const BString& value);
31			const BString&		Identifier() const
32									{ return fIdentifier; }
33
34			int32				CountPackages() const;
35			PackageInfoRef		PackageAtIndex(int32 index);
36			void				AddPackage(PackageInfoRef& package);
37			PackageInfoRef		PackageByName(const BString& packageName);
38			bool				HasPackage(const BString& packageName);
39
40			void				SyncPackagesFromDepot(
41									const BReference<DepotInfo>& other);
42
43			bool				HasAnyProminentPackages() const;
44
45			void				SetWebAppRepositoryCode(const BString& code);
46			const BString&		WebAppRepositoryCode() const
47									{ return fWebAppRepositoryCode; }
48
49			void				SetWebAppRepositorySourceCode(
50									const BString& code);
51			const BString&		WebAppRepositorySourceCode() const
52									{ return fWebAppRepositorySourceCode; }
53
54private:
55			BString				fName;
56			BString				fIdentifier;
57			std::vector<PackageInfoRef>
58								fPackages;
59			BString				fWebAppRepositoryCode;
60			BString				fWebAppRepositorySourceCode;
61};
62
63
64typedef BReference<DepotInfo> DepotInfoRef;
65
66
67#endif // DEPOT_INFO_H
68