# HG changeset patch # User Claus Gittinger # Date 1253526073 -7200 # Node ID 646fdd59f4ef2f770a0c4af04a7b6626d7909b04 # Parent b767db0f53a31a534c24bcbbf98f252a1c455095 *** empty log message *** diff -r b767db0f53a3 -r 646fdd59f4ef Tools__StoreProjectBrowser.st --- a/Tools__StoreProjectBrowser.st Mon Sep 21 10:19:52 2009 +0200 +++ b/Tools__StoreProjectBrowser.st Mon Sep 21 11:41:13 2009 +0200 @@ -35,7 +35,14 @@ Object subclass:#PundleVersion instanceVariableNames:'id pundle version user timestamp comment timestampInt commentId - isBundle' + isBundle blessingLevel' + classVariableNames:'' + poolDictionaries:'' + privateIn:StoreProjectBrowser +! + +Object subclass:#StoreProjectChangeSetReader + instanceVariableNames:'browser dbConnection bundleOrPackage version changeSet' classVariableNames:'' poolDictionaries:'' privateIn:StoreProjectBrowser @@ -68,6 +75,32 @@ " ! ! +!StoreProjectBrowser class methodsFor:'image specs'! + +bundleImage + "This resource specification was automatically generated + by the ImageEditor of ST/X." + + "Do not manually edit this!! If it is corrupted, + the ImageEditor may not be able to read the specification." + + " + self bundleImage inspect + ImageEditor openOnClass:self andSelector:#bundleImage + Icon flushCachedIcons + " + + + + ^Icon + constantNamed:'Tools::StoreProjectBrowser class bundleImage' + ifAbsentPut:[(Depth8Image new) width: 17; height: 16; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:' +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BP$IBP$IBP$IBP$IBP@@@@@INS$9A!!\$BQ$YFRDI@@@@@@$9KSX?MP4IFP@*K0$@@@@@BS$C +E@PIEP$YJ#0VBP@@@@@IA!!PDBQ$IBSL/help/appName' "/ directory, and open a viewer with: "/ HTMLDocumentView openFullOnDocumentationFile:'help//TOP.html'. +! + +versionsListMenuBrowse + |reader changeSet environment| + + reader := StoreProjectChangeSetReader new. + reader + browser:self dbConnection:connection + bundleOrPackage:selectedBundleOrPackage version:selectedVersion. + changeSet :=reader changeSet. + ChangeSetBrowser openOn:changeSet. +self halt. + + environment := StoreProjectEnvironment for:selectedVersion connection:connection. + SystemBrowser + openOn:environment + label:(resources string:'%1' with:selectedBundleOrPackage name , ' ' , selectedVersion version) +! + +versionsListMenuLoad +self halt. +! + +versionsListMenuUpdate +self halt. ! ! !StoreProjectBrowser::Pundle methodsFor:'accessing'! @@ -936,6 +1002,14 @@ !StoreProjectBrowser::PundleVersion methodsFor:'accessing'! +blessingLevel + ^ blessingLevel +! + +blessingLevel:something + blessingLevel := something. +! + commentId ^ commentId ! @@ -1034,8 +1108,154 @@ ^ version , ' (',user,') ' , self timestamp printString ! ! +!StoreProjectBrowser::StoreProjectChangeSetReader methodsFor:'accessing'! + +browser:browserArg dbConnection:dbConnectionArg bundleOrPackage:bundleOrPackageArg version:versionArg + browser := browserArg. + dbConnection := dbConnectionArg. + bundleOrPackage := bundleOrPackageArg. + version := versionArg. +! ! + +!StoreProjectBrowser::StoreProjectChangeSetReader methodsFor:'reading'! + +allClassesDo:aBlock + |packageId cursor row entries classes| + + packageId := bundleOrPackage id. + + entries := OrderedCollection new. + cursor := dbConnection + execute:('SELECT classref,metaclassref,definitionorder FROM tw_pkgclasses WHERE packageref = %1' + bindWith:packageId) + release:false. + + [cursor next notNil] whileTrue:[ + row := cursor rowAsObject. + entries add:row. + ]. + cursor release. + + classes := entries collect:[:entry | + |records classRecord metaclassRecord| + + "/ entry classref + "/ entry metaclassref + "/ entry definitionorder + cursor := dbConnection + execute:('SELECT name,definitionid,commentid,environmentstring,superclass + FROM tw_classrecord WHERE primarykey = %1' + bindWith:entry classref) + release:false. + records := OrderedCollection new. + [cursor next notNil] whileTrue:[ + row := cursor rowAsObject. + records add:row. + ]. + cursor release. + self assert:(records size == 1). + classRecord := records first. + + cursor := dbConnection + execute:('SELECT name,definitionid,commentid,environmentstring,superclass + FROM tw_classrecord WHERE primarykey = %1' + bindWith:entry metaclassref) + release:false. + records := OrderedCollection new. + [cursor next notNil] whileTrue:[ + row := cursor rowAsObject. + records add:row. + ]. + cursor release. + self assert:(records size == 1). + metaclassRecord := records first. + + { classRecord. metaclassRecord. entry definitionorder } + ]. +! + +changeSet + "build a changeSet from the bundle or package + Return the changeSet." + + changeSet := ChangeSet new. + self fetchClassDefinitions. +"/ changesFromStream:aStream +"/ for:changeSet +"/ reader:(ChangeFileReader new) +"/ do:[:aChange :lineNumberOrNil :posOrNil | +"/ changeSet add:aChange. +"/ (aConditionBlock value:aChange) ifFalse:[^ changeSet]. +"/ ]. + + ^ changeSet +! + +fetchClassDefinitions + |packageId cursor row entries classes change| + + packageId := version id. + + entries := OrderedCollection new. + cursor := dbConnection + execute:('SELECT classref,metaclassref,definitionorder FROM tw_pkgclasses WHERE packageref = %1' + bindWith:packageId) + release:false. + + [cursor next notNil] whileTrue:[ + row := cursor rowAsObject. + entries add:row. + ]. + cursor release. + + classes := entries collect:[:entry | + |records classRecord metaclassRecord definitionString| + + "/ entry classref + "/ entry metaclassref + "/ entry definitionorder + cursor := dbConnection + execute:('SELECT name,definitionid,commentid,environmentstring,superclass + FROM tw_classrecord WHERE primarykey = %1' + bindWith:entry classref) + release:false. + records := OrderedCollection new. + [cursor next notNil] whileTrue:[ + row := cursor rowAsObject. + records add:row. + ]. + cursor release. + self assert:(records size == 1). + classRecord := records first. + + cursor := dbConnection + execute:('SELECT name,definitionid,commentid,environmentstring,superclass + FROM tw_classrecord WHERE primarykey = %1' + bindWith:entry metaclassref) + release:false. + records := OrderedCollection new. + [cursor next notNil] whileTrue:[ + row := cursor rowAsObject. + records add:row. + ]. + cursor release. + self assert:(records size == 1). + metaclassRecord := records first. + + change := ClassDefinitionChange new. + definitionString := browser getBlob:(classRecord definitionid). + change source:definitionString. + change className:classRecord name. + "/ change superClassName:metaclassRecord name. + change package:bundleOrPackage name. + changeSet add:change. + + { classRecord. metaclassRecord. entry definitionorder } + ]. +! ! + !StoreProjectBrowser class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libtool/Tools__StoreProjectBrowser.st,v 1.10 2009-09-21 08:04:06 cg Exp $' + ^ '$Header: /cvs/stx/stx/libtool/Tools__StoreProjectBrowser.st,v 1.11 2009-09-21 09:41:13 cg Exp $' ! !