RepositoryInfo.h revision fda0bf77
1/*
2 * Copyright 2011, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _PACKAGE__REPOSITORY_INFO_H_
6#define _PACKAGE__REPOSITORY_INFO_H_
7
8
9#include <Archivable.h>
10#include <Entry.h>
11#include <StringList.h>
12#include <String.h>
13
14#include <package/PackageArchitecture.h>
15
16
17namespace BPackageKit {
18
19
20class BRepositoryInfo : public BArchivable {
21	typedef	BArchivable			inherited;
22
23public:
24								BRepositoryInfo();
25								BRepositoryInfo(BMessage* data);
26								BRepositoryInfo(const BEntry& entry);
27	virtual						~BRepositoryInfo();
28
29	virtual	status_t			Archive(BMessage* data, bool deep = true) const;
30
31			status_t			SetTo(const BMessage* data);
32			status_t			SetTo(const BEntry& entry);
33			status_t			InitCheck() const;
34
35			const BString&		Name() const;
36			const BString&		OriginalBaseURL() const;
37			const BString&		Vendor() const;
38			const BString&		Summary() const;
39			uint8				Priority() const;
40			BPackageArchitecture	Architecture() const;
41			const BStringList&	LicenseNames() const;
42			const BStringList&	LicenseTexts() const;
43
44			void				SetName(const BString& name);
45			void				SetOriginalBaseURL(const BString& url);
46			void				SetVendor(const BString& vendor);
47			void				SetSummary(const BString& summary);
48			void				SetPriority(uint8 priority);
49			void				SetArchitecture(BPackageArchitecture arch);
50
51			status_t			AddLicense(const BString& licenseName,
52									const BString& licenseText);
53			void				ClearLicenses();
54
55public:
56	static	BRepositoryInfo*	Instantiate(BMessage* data);
57
58	static	const uint8			kDefaultPriority;
59
60	static	const char* const	kNameField;
61	static	const char* const	kURLField;
62	static	const char* const	kVendorField;
63	static	const char*	const	kSummaryField;
64	static	const char*	const	kPriorityField;
65	static	const char*	const	kArchitectureField;
66	static	const char*	const	kLicenseNameField;
67	static	const char*	const	kLicenseTextField;
68
69private:
70			status_t			_SetTo(const BMessage* data);
71			status_t			_SetTo(const BEntry& entry);
72
73private:
74			status_t			fInitStatus;
75
76			BString				fName;
77			BString				fOriginalBaseURL;
78			BString				fVendor;
79			BString				fSummary;
80			uint8				fPriority;
81			BPackageArchitecture	fArchitecture;
82			BStringList			fLicenseNames;
83			BStringList			fLicenseTexts;
84};
85
86
87}	// namespace BPackageKit
88
89
90#endif // _PACKAGE__REPOSITORY_INFO_H_
91