1/*
2 * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include <package/hpkg/v1/PackageInfoContentHandler.h>
8
9#include <package/PackageInfo.h>
10#include <package/hpkg/ErrorOutput.h>
11#include <package/hpkg/PackageInfoAttributeValue.h>
12
13
14namespace BPackageKit {
15
16namespace BHPKG {
17
18namespace V1 {
19
20
21BPackageInfoContentHandler::BPackageInfoContentHandler(
22	BPackageInfo& packageInfo, BErrorOutput* errorOutput)
23	:
24	fPackageInfo(packageInfo),
25	fErrorOutput(errorOutput)
26{
27}
28
29
30BPackageInfoContentHandler::~BPackageInfoContentHandler()
31{
32}
33
34
35status_t
36BPackageInfoContentHandler::HandleEntry(BPackageEntry* entry)
37{
38	return B_OK;
39}
40
41
42status_t
43BPackageInfoContentHandler::HandleEntryAttribute(BPackageEntry* entry,
44	BPackageEntryAttribute* attribute)
45{
46	return B_OK;
47}
48
49
50status_t
51BPackageInfoContentHandler::HandleEntryDone(BPackageEntry* entry)
52{
53	return B_OK;
54}
55
56
57status_t
58BPackageInfoContentHandler::HandlePackageAttribute(
59	const BPackageInfoAttributeValue& value)
60{
61	switch (value.attributeID) {
62		case B_PACKAGE_INFO_NAME:
63			fPackageInfo.SetName(value.string);
64			break;
65
66		case B_PACKAGE_INFO_SUMMARY:
67			fPackageInfo.SetSummary(value.string);
68			break;
69
70		case B_PACKAGE_INFO_DESCRIPTION:
71			fPackageInfo.SetDescription(value.string);
72			break;
73
74		case B_PACKAGE_INFO_VENDOR:
75			fPackageInfo.SetVendor(value.string);
76			break;
77
78		case B_PACKAGE_INFO_PACKAGER:
79			fPackageInfo.SetPackager(value.string);
80			break;
81
82		case B_PACKAGE_INFO_FLAGS:
83			fPackageInfo.SetFlags(value.unsignedInt);
84			break;
85
86		case B_PACKAGE_INFO_ARCHITECTURE:
87			fPackageInfo.SetArchitecture(
88				(BPackageArchitecture)value.unsignedInt);
89			break;
90
91		case B_PACKAGE_INFO_VERSION:
92			fPackageInfo.SetVersion(value.version);
93			break;
94
95		case B_PACKAGE_INFO_COPYRIGHTS:
96			fPackageInfo.AddCopyright(value.string);
97			break;
98
99		case B_PACKAGE_INFO_LICENSES:
100			fPackageInfo.AddLicense(value.string);
101			break;
102
103		case B_PACKAGE_INFO_PROVIDES:
104			fPackageInfo.AddProvides(value.resolvable);
105			break;
106
107		case B_PACKAGE_INFO_REQUIRES:
108			fPackageInfo.AddRequires(value.resolvableExpression);
109			break;
110
111		case B_PACKAGE_INFO_SUPPLEMENTS:
112			fPackageInfo.AddSupplements(value.resolvableExpression);
113			break;
114
115		case B_PACKAGE_INFO_CONFLICTS:
116			fPackageInfo.AddConflicts(value.resolvableExpression);
117			break;
118
119		case B_PACKAGE_INFO_FRESHENS:
120			fPackageInfo.AddFreshens(value.resolvableExpression);
121			break;
122
123		case B_PACKAGE_INFO_REPLACES:
124			fPackageInfo.AddReplaces(value.string);
125			break;
126
127		case B_PACKAGE_INFO_URLS:
128			fPackageInfo.AddURL(value.string);
129			break;
130
131		case B_PACKAGE_INFO_SOURCE_URLS:
132			fPackageInfo.AddSourceURL(value.string);
133			break;
134
135		case B_PACKAGE_INFO_CHECKSUM:
136			fPackageInfo.SetChecksum(value.string);
137			break;
138
139		case B_PACKAGE_INFO_INSTALL_PATH:
140			fPackageInfo.SetInstallPath(value.string);
141			break;
142
143		default:
144			if (fErrorOutput != NULL) {
145				fErrorOutput->PrintError(
146					"Invalid package attribute section: unexpected package "
147					"attribute id %d encountered\n", value.attributeID);
148			}
149			return B_BAD_DATA;
150	}
151
152	return B_OK;
153}
154
155
156void
157BPackageInfoContentHandler::HandleErrorOccurred()
158{
159}
160
161
162}	// namespace V1
163
164}	// namespace BHPKG
165
166}	// namespace BPackageKit
167