Author: mlandres Date: Thu Jun 14 17:41:16 2007 New Revision: 5753 URL: http://svn.opensuse.org/viewcvs/zypp?rev=5753&view=rev Log: Change ResolvableDataConsumer IF to return the RecordId of the object created. Added: trunk/libzypp/zypp/cache/CacheInitializer.cc - copied unchanged from r5746, trunk/libzypp/zypp/cache/CacheInitializer.cpp trunk/libzypp/zypp/cache/CacheStore.cc - copied, changed from r5746, trunk/libzypp/zypp/cache/CacheStore.cpp trunk/libzypp/zypp/cache/Utils.cc - copied unchanged from r5748, trunk/libzypp/zypp/cache/Utils.cpp Removed: trunk/libzypp/zypp/cache/CacheInitializer.cpp trunk/libzypp/zypp/cache/CacheStore.cpp trunk/libzypp/zypp/cache/Utils.cpp Modified: trunk/libzypp/zypp/CMakeLists.txt trunk/libzypp/zypp/cache/CacheStore.h trunk/libzypp/zypp/data/ResolvableDataConsumer.h Modified: trunk/libzypp/zypp/CMakeLists.txt URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/CMakeLists.txt?rev=5753&r1=5752&r2=5753&view=diff ============================================================================== --- trunk/libzypp/zypp/CMakeLists.txt (original) +++ trunk/libzypp/zypp/CMakeLists.txt Thu Jun 14 17:41:16 2007 @@ -1013,13 +1013,13 @@ SET( zypp_cache_SRCS ${CMAKE_BINARY_DIR}/zypp/sqlite-schema.h - cache/CacheInitializer.cpp + cache/CacheInitializer.cc cache/CacheException.cc cache/CacheTypes.cc cache/ResolvableQuery.cc - cache/CacheStore.cpp + cache/CacheStore.cc cache/CacheFSCK.cc - cache/Utils.cpp + cache/Utils.cc ) SET( zypp_cache_HEADERS Copied: trunk/libzypp/zypp/cache/CacheStore.cc (from r5746, trunk/libzypp/zypp/cache/CacheStore.cpp) URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/cache/CacheStore.cc?p2=trunk/libzypp/zypp/cache/CacheStore.cc&p1=trunk/libzypp/zypp/cache/CacheStore.cpp&r1=5746&r2=5753&rev=5753&view=diff ============================================================================== --- trunk/libzypp/zypp/cache/CacheStore.cpp (original) +++ trunk/libzypp/zypp/cache/CacheStore.cc Thu Jun 14 17:41:16 2007 @@ -237,26 +237,28 @@ appendStringAttribute( pkgid, "Package", "location", package->repositoryLocation.filePath.asString() ); } -void CacheStore::consumePackage( const RecordId & repository_id, +RecordId CacheStore::consumePackage( const RecordId & repository_id, const data::Package_Ptr & package ) { - RecordId pkgid = appendResolvable( repository_id, ResTraits<Package>::kind, + RecordId id = appendResolvable( repository_id, ResTraits<Package>::kind, NVRA( package->name, package->edition, package->arch ), package->deps ); - appendResObjectAttributes( pkgid, package ); - appendPackageBaseAttributes( pkgid, package ); + appendResObjectAttributes( id, package ); + appendPackageBaseAttributes( id, package ); + return id; } -void CacheStore::consumeSourcePackage( const data::RecordId & repository_id, +RecordId CacheStore::consumeSourcePackage( const data::RecordId & repository_id, const data::SrcPackage_Ptr & package ) { - RecordId pkgid = appendResolvable( repository_id, ResTraits<SrcPackage>::kind, + RecordId id = appendResolvable( repository_id, ResTraits<SrcPackage>::kind, NVRA( package->name, package->edition, package->arch ), package->deps ); - appendResObjectAttributes( pkgid, package ); - appendPackageBaseAttributes( pkgid, package ); -#warning TBD + appendResObjectAttributes( id, package ); + appendPackageBaseAttributes( id, package ); +#warning TBD WRONG IMPLEMENTATION + return id; } -void CacheStore::consumePatch( const data::RecordId & repository_id, +RecordId CacheStore::consumePatch( const data::RecordId & repository_id, const data::Patch_Ptr & patch) { RecordId id = appendResolvable( @@ -307,9 +309,10 @@ } DBG << endl; + return id; } -void CacheStore::consumePackageAtom( const data::RecordId & repository_id, +RecordId CacheStore::consumePackageAtom( const data::RecordId & repository_id, const data::PackageAtom_Ptr & atom ) { RecordId id = appendResolvable( repository_id, ResTraits<Atom>::kind, @@ -324,9 +327,10 @@ for (setdata::DeltaRpm_Ptr::const_iterator d = atom->deltaRpms.begin(); d != atom->deltaRpms.end(); ++d) appendDeltaRpm(*d); + return id; } -void CacheStore::consumeMessage( const data::RecordId & repository_id, +RecordId CacheStore::consumeMessage( const data::RecordId & repository_id, const data::Message_Ptr & message ) { RecordId id = appendResolvable( repository_id, ResTraits<Message>::kind, @@ -334,9 +338,10 @@ appendResObjectAttributes( id, message ); appendTranslatedStringAttribute( id, "Message", "text", message->text ); + return id; } -void CacheStore::consumeScript( const data::RecordId & repository_id, +RecordId CacheStore::consumeScript( const data::RecordId & repository_id, const data::Script_Ptr & script ) { RecordId id = appendResolvable( repository_id, ResTraits<Script>::kind, @@ -351,9 +356,10 @@ appendStringAttribute( id, "Script", "undoScriptLocation", script->undoScriptLocation.filePath.asString() ); appendStringAttribute( id, "Script", "undoScriptChecksum", script->undoScriptLocation.fileChecksum.checksum() ); appendStringAttribute( id, "Script", "undoScriptChecksumType", script->undoScriptLocation.fileChecksum.type() ); + return id; } -void CacheStore::consumePattern( const data::RecordId & repository_id, +RecordId CacheStore::consumePattern( const data::RecordId & repository_id, const data::Pattern_Ptr & pattern ) { RecordId id = appendResolvable( repository_id, ResTraits<Pattern>::kind, @@ -365,9 +371,10 @@ appendTranslatedStringAttribute( id, "Pattern", "category", pattern->category ); appendStringAttribute( id, "Pattern", "icon", pattern->icon ); appendStringAttribute( id, "Pattern", "order", pattern->order ); + return id; } -void CacheStore::consumeProduct( const data::RecordId & repository_id, +RecordId CacheStore::consumeProduct( const data::RecordId & repository_id, const data::Product_Ptr & product ) { RecordId id = appendResolvable( repository_id, ResTraits<Product>::kind, @@ -377,16 +384,16 @@ appendTranslatedStringAttribute( id, "Product", "shortName", product->shortName ); appendTranslatedStringAttribute( id, "Product", "longName", product->longName ); appendStringContainerAttribute( id, "Product", "flags", product->flags.begin(), product->flags.end() ); - appendStringAttribute( id, "Pattern", "releasenotesUrl", product->releasenotesUrl.asString() ); - //! \todo figure out how to store list of Urls. A separate method appendUrlContainerAttribute? Or change it to plain string in ResolvableData.h? -// appendStringContainerAttribute( id, "Product", "updateUrls", product->updateUrls ); -// appendStringContainerAttribute( id, "Product", "extraUrls", product->extraUrls ); -// appendStringContainerAttribute( id, "Product", "optionalUrls", product->optionalUrls ); - appendStringAttribute( id, "Pattern", "distributionName", product->distributionName ); - appendStringAttribute( id, "Pattern", "distributionEdition", product->distributionEdition.asString() ); + appendStringAttribute( id, "Product", "releasenotesUrl", product->releasenotesUrl.asString() ); + appendStringContainerAttribute( id, "Product", "updateUrls", product->updateUrls ); + appendStringContainerAttribute( id, "Product", "extraUrls", product->extraUrls ); + appendStringContainerAttribute( id, "Product", "optionalUrls", product->optionalUrls ); + appendStringAttribute( id, "Product", "distributionName", product->distributionName ); + appendStringAttribute( id, "Product", "distributionEdition", product->distributionEdition.asString() ); + return id; } -void CacheStore::consumeChangelog( const data::RecordId & repository_id, +RecordId CacheStore::consumeChangelog( const data::RecordId & repository_id, const data::Resolvable_Ptr & resolvable, const Changelog & changelog ) { @@ -395,7 +402,7 @@ //! (first, we'll see how fast is the inserting without remembering those ids) } -void CacheStore::consumeFilelist( const data::RecordId & repository_id, +RecordId CacheStore::consumeFilelist( const data::RecordId & repository_id, const data::Resolvable_Ptr & resolvable, const data::Filenames & filenames ) { @@ -627,7 +634,7 @@ _pimpl->append_patch_baseversion_cmd->bind(":epoch", (int) (*bv)->edition.epoch()); _pimpl->append_patch_baseversion_cmd->executenonquery(); } - + return id; } @@ -715,7 +722,7 @@ RecordId CacheStore::lookupOrAppendRepository( const string &alias ) { _pimpl->select_repository_cmd->bind(":alias", alias); - + long long id = 0; try { id = _pimpl->select_repository_cmd->executeint64(); @@ -737,7 +744,7 @@ { sqlite3_command cmd( _pimpl->con, "delete from repositories where id=:id"); cmd.bind(":id", id); - + try { cmd.executenonquery(); @@ -747,7 +754,7 @@ ZYPP_THROW(CacheRecordNotFoundException()); } } - + void CacheStore::cleanRepository( const std::string &alias ) { cleanRepository(lookupRepository(alias)); @@ -757,7 +764,7 @@ { sqlite3_command cmd( _pimpl->con, "select id,alias,checksum,timestamp from repositories where id=:id"); cmd.bind(":id", id); - + try { sqlite3_reader reader = cmd.executereader(); @@ -790,7 +797,7 @@ { return false; } - + return true; } @@ -798,7 +805,7 @@ { sqlite3_command cmd(_pimpl->con, "select id from repositories where alias=:alias;"); cmd.bind(":alias", alias); - + long long id = 0; try { id = cmd.executeint64(); @@ -982,7 +989,7 @@ { // don't bother with writing if the string is empty if (value.empty()) return; - + RecordId type_id = lookupOrAppendType(klass, name); appendStringAttribute( resolvable_id, type_id, value ); } Modified: trunk/libzypp/zypp/cache/CacheStore.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/cache/CacheStore.h?rev=5753&r1=5752&r2=5753&view=diff ============================================================================== --- trunk/libzypp/zypp/cache/CacheStore.h (original) +++ trunk/libzypp/zypp/cache/CacheStore.h Thu Jun 14 17:41:16 2007 @@ -78,8 +78,8 @@ * \param repository_id ownership. * \param package Package data */ - virtual void consumePackage(const data::RecordId &repository_id, - const data::Package_Ptr & package); + virtual data::RecordId consumePackage(const data::RecordId &repository_id, + const data::Package_Ptr & package); /** * Implementation of the \ref ResolvableConsumer interface @@ -88,9 +88,8 @@ * \param catalog_id ownership. * \param srcpackage Source package data */ - virtual void consumeSourcePackage( - const data::RecordId &catalog_id, - const data::SrcPackage_Ptr & srcpackage ); + virtual data::RecordId consumeSourcePackage( const data::RecordId &catalog_id, + const data::SrcPackage_Ptr & srcpackage ); /** * Implementation of the \ref ResolvableConsumer interface @@ -99,8 +98,8 @@ * \param repository_id ownership. * \param patch Patch data */ - virtual void consumePatch( const data::RecordId &repository_id, - const data::Patch_Ptr & patch ); + virtual data::RecordId consumePatch( const data::RecordId &repository_id, + const data::Patch_Ptr & patch ); /** * Implementation of the \ref ResolvableConsumer interface. @@ -114,8 +113,8 @@ * \note this is somewhat specific to current YUM patch metadata design * and may change (to consumeAtom(data::RecordId,data::Atom)). */ - virtual void consumePackageAtom( const data::RecordId &repository_id, - const data::PackageAtom_Ptr & atom ); + virtual data::RecordId consumePackageAtom( const data::RecordId &repository_id, + const data::PackageAtom_Ptr & atom ); /** * Implementation of the \ref ResolvableConsumer interface @@ -124,8 +123,8 @@ * \param repository_id ownership. * \param message Message data */ - virtual void consumeMessage( const data::RecordId & repository_id, - const data::Message_Ptr & message); + virtual data::RecordId consumeMessage( const data::RecordId & repository_id, + const data::Message_Ptr & message); /** * Implementation of the \ref ResolvableConsumer interface @@ -134,8 +133,8 @@ * \param repository_id ownership. * \param script Script data */ - virtual void consumeScript( const data::RecordId & repository_id, - const data::Script_Ptr & script); + virtual data::RecordId consumeScript( const data::RecordId & repository_id, + const data::Script_Ptr & script); /** * Implementation of the \ref ResolvableConsumer interface @@ -144,8 +143,8 @@ * \param repository_id ownership. * \param pattern Pattern data */ - virtual void consumePattern( const data::RecordId & repository_id, - const data::Pattern_Ptr & pattern ); + virtual data::RecordId consumePattern( const data::RecordId & repository_id, + const data::Pattern_Ptr & pattern ); /** * Implementation of the \ref ResolvableConsumer interface @@ -154,8 +153,8 @@ * \param repository_id ownership. * \param pattern Pattern data */ - virtual void consumeProduct( const data::RecordId &repository_id, - const data::Product_Ptr & product ); + virtual data::RecordId consumeProduct( const data::RecordId &repository_id, + const data::Product_Ptr & product ); /** * Implementation of the \ref ResolvableConsumer interface @@ -166,9 +165,9 @@ * \param changelog the changelog * \todo see implementation */ - virtual void consumeChangelog( const data::RecordId & repository_id, - const data::Resolvable_Ptr & resolvable, - const Changelog & changelog ); + virtual data::RecordId consumeChangelog( const data::RecordId & repository_id, + const data::Resolvable_Ptr & resolvable, + const Changelog & changelog ); /** * Implementation of the \ref ResolvableConsumer interface @@ -179,9 +178,9 @@ * \param filenames list of filenames the resolvable contains * \todo see implementation */ - virtual void consumeFilelist( const data::RecordId &repository_id, - const data::Resolvable_Ptr & resolvable, - const data::Filenames & filenames ); + virtual data::RecordId consumeFilelist( const data::RecordId &repository_id, + const data::Resolvable_Ptr & resolvable, + const data::Filenames & filenames ); /** * Appends a resolvable to the store. @@ -500,6 +499,21 @@ appendStringAttribute( resolvable_id, klass, name, value ); } + /** + * Append strings from a _Container to a resolvable. + * + * Convenience method taking the container instead of it's + * begin/end iterators as argument. + * + * \see appendStringContainerAttribute + */ + template <class _Container> + void appendStringContainerAttribute( const data::RecordId &resolvable_id, + const std::string &klass, + const std::string &name, + const _Container & container ) + { appendStringContainerAttribute( resolvable_id, klass, name, container.begin(), container.end() ); } + /** * Update a known repository checksum and timestamp * @@ -515,7 +529,7 @@ void updateRepository( const data::RecordId &id, const std::string &checksum, const Date ×tamp = Date::now() ); - + /** * \short Clean repository from cache * @@ -527,7 +541,7 @@ * id does not refer to a valid repository. */ void cleanRepository( const data::RecordId &id ); - + /** * \short Clean repository from cache * @@ -539,7 +553,7 @@ * alias does not refer to a valid repository. */ void cleanRepository( const std::string &alias ); - + /** * get the status of a cached repository * @@ -553,7 +567,7 @@ * id does not refer to a valid repository. */ RepoStatus repositoryStatus( const data::RecordId &id ); - + /** * get the status of a cached repository * @@ -574,7 +588,7 @@ * True if the repository is cached */ bool isCached( const std::string &alias ); - + /** * \short looks the id for a repository in cache * @@ -584,8 +598,8 @@ * alias is unknown */ data::RecordId lookupRepository( const std::string &alias ); - - + + /** * Returns the record id of a file entry \a path * @@ -649,7 +663,7 @@ /** * Append a bool attribute to a resolvable. Will be stored as * numeric 1 or 0. - * + * * \param resolvable_id Resovable Id, owner of the attribute * \param type_id attribute id * \param value bool value Modified: trunk/libzypp/zypp/data/ResolvableDataConsumer.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/data/ResolvableDataConsumer.h?rev=5753&r1=5752&r2=5753&view=diff ============================================================================== --- trunk/libzypp/zypp/data/ResolvableDataConsumer.h (original) +++ trunk/libzypp/zypp/data/ResolvableDataConsumer.h Thu Jun 14 17:41:16 2007 @@ -28,17 +28,17 @@ ResolvableDataConsumer(); virtual ~ResolvableDataConsumer(); - virtual void consumePackage( const data::RecordId &repository_id, const data::Package_Ptr &) = 0; - virtual void consumeSourcePackage( const data::RecordId &repository_id, const data::SrcPackage_Ptr &) = 0; - virtual void consumeProduct( const data::RecordId &repository_id, const data::Product_Ptr &) = 0; - virtual void consumePatch( const data::RecordId &repository_id, const data::Patch_Ptr &) = 0; - virtual void consumePackageAtom( const data::RecordId &repository_id, const data::PackageAtom_Ptr & ) = 0; - virtual void consumeMessage( const data::RecordId &repository_id, const data::Message_Ptr &) = 0; - virtual void consumeScript( const data::RecordId &repository_id, const data::Script_Ptr &) = 0; - virtual void consumePattern( const data::RecordId &repository_id, const data::Pattern_Ptr &) = 0; + virtual data::RecordId consumePackage ( const data::RecordId & repository_id, const data::Package_Ptr & ) = 0; + virtual data::RecordId consumeSourcePackage( const data::RecordId & repository_id, const data::SrcPackage_Ptr & ) = 0; + virtual data::RecordId consumeProduct ( const data::RecordId & repository_id, const data::Product_Ptr & ) = 0; + virtual data::RecordId consumePatch ( const data::RecordId & repository_id, const data::Patch_Ptr & ) = 0; + virtual data::RecordId consumePackageAtom ( const data::RecordId & repository_id, const data::PackageAtom_Ptr & ) = 0; + virtual data::RecordId consumeMessage ( const data::RecordId & repository_id, const data::Message_Ptr & ) = 0; + virtual data::RecordId consumeScript ( const data::RecordId & repository_id, const data::Script_Ptr & ) = 0; + virtual data::RecordId consumePattern ( const data::RecordId & repository_id, const data::Pattern_Ptr & ) = 0; - virtual void consumeChangelog( const data::RecordId & repository_id, const data::Resolvable_Ptr &, const Changelog & ) = 0; - virtual void consumeFilelist( const data::RecordId & repository_id, const data::Resolvable_Ptr &, const data::Filenames & ) = 0; + virtual data::RecordId consumeChangelog ( const data::RecordId & repository_id, const data::Resolvable_Ptr &, const Changelog & ) = 0; + virtual data::RecordId consumeFilelist ( const data::RecordId & repository_id, const data::Resolvable_Ptr &, const data::Filenames & ) = 0; }; } // namespace parser -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org