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