DataBaseSourceCodeManager.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 31 Mar 2012 01:14:49 +0100
branchjv
changeset 3042 48e76977cdc3
parent 3012 4f40b8304d54
child 3063 5334204e354f
permissions -rw-r--r--
Added info-record processing support into changeset reader
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 2011 by Claus Gittinger
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 hereby transferred.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic3' }"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
AbstractSourceCodeManager subclass:#DataBaseSourceCodeManager
2689
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
    15
	instanceVariableNames:''
2733
e164eb9dbd69 shownInSourceCodeManager from superclass
Claus Gittinger <cg@exept.de>
parents: 2717
diff changeset
    16
	classVariableNames:'Verbose RepositoryName ModuleDBs CachedDBHandles'
2689
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
    17
	poolDictionaries:''
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
    18
	category:'System-SourceCodeManagement'
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!DataBaseSourceCodeManager class methodsFor:'documentation'!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
copyright
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
 COPYRIGHT (c) 2011 by Claus Gittinger
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
              All Rights Reserved
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
 This software is furnished under a license and may be used
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 only in accordance with the terms of that license and with the
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
 be provided or otherwise made available to, or used by, any
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 other person.  No title to or ownership of the software is
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 hereby transferred.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
documentation
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    39
    A simple database sourceCodeManager, which saves versions in a relational db
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    41
    unfinished
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    [author:]
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
        Claus Gittinger
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
! !
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
!DataBaseSourceCodeManager class methodsFor:'accessing'!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    50
getRepositoryDBForModule:aModuleName
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    "internal: used when accessing a source repository.
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    52
     Return the db-name for a particular module.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    53
     If no specific db was defined for that module, return the value of
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    54
     the global (fallBack) repositoryDB.
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
     Nil is returned if no repository is available." 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    57
    ModuleDBs isNil ifTrue:[^ RepositoryName].
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    58
    aModuleName isNil ifTrue:[^ RepositoryName].
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    59
    ^ ModuleDBs at:aModuleName ifAbsent:RepositoryName.
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    "Modified: / 20-05-1998 / 16:30:12 / cg"
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    62
    "Created: / 26-12-2011 / 00:30:17 / cg"
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
knownModules
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    "return the modules, we currently know"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    68
    ModuleDBs isEmptyOrNil ifTrue:[^ #() ].
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    69
    ^ ModuleDBs keys
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    70
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    71
    "Modified: / 26-12-2011 / 00:48:51 / cg"
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    72
!
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    74
repositoryName
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    75
    "return the default repository"
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    76
2717
45a75154a883 default
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
    77
    ^ RepositoryName ? self defaultRepositoryName
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    78
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    79
    "Created: / 26-12-2011 / 00:34:14 / cg"
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    82
repositoryName:aDBSpec
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    83
    "set the default repository"
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    84
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    85
    RepositoryName := aDBSpec.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    86
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    87
    "Created: / 26-12-2011 / 01:13:59 / cg"
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    88
! !
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    89
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    90
!DataBaseSourceCodeManager class methodsFor:'private'!
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    91
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    92
dbHandleForModule:aModuleName
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    93
    |dbName handle|
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    94
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    95
    CachedDBHandles isNil ifTrue:[
2689
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
    96
        CachedDBHandles := WeakValueDictionary new.
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    97
    ].
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
    99
    handle := CachedDBHandles at:aModuleName ifAbsent:nil.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   100
    handle notNil ifTrue:[^ handle ].
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   101
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   102
    dbName := self getRepositoryDBForModule:aModuleName.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   103
    dbName isNil ifTrue:[
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   104
        self error:'no database'.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   105
        ^ nil
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   106
    ].
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   108
    handle := self openDB:dbName.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   109
    handle isNil ifTrue:[
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   110
        self error:'no database'.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   111
        ^ nil
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   112
    ].
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   113
    CachedDBHandles at:aModuleName put:handle.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   114
    ^ handle.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   115
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   116
    "Created: / 26-12-2011 / 00:59:49 / cg"
2684
4fed20db7ecb added: #repositoryPath: (fixes preference save/load problem)
vrany
parents: 2674
diff changeset
   117
!
4fed20db7ecb added: #repositoryPath: (fixes preference save/load problem)
vrany
parents: 2674
diff changeset
   118
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   119
openDB:aDBName
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   120
    |idx dbType dbSpec|
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   121
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   122
    idx := aDBName indexOf:$:.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   123
    dbType := aDBName copyTo:idx-1.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   124
    dbSpec := aDBName copyFrom:idx+1.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   125
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   126
    dbType = 'sqlite' ifTrue:[
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   127
        ^ self openSQLite:dbSpec
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   128
    ].
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   129
    dbType = 'odbc' ifTrue:[
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   130
        ^ self openODBC:dbSpec
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   131
    ].
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   132
    self error:'unsupported dbtype'
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   133
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   134
    "Created: / 26-12-2011 / 01:05:57 / cg"
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   135
!
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   136
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   137
openODBC:dbSpec
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   138
self halt.
2684
4fed20db7ecb added: #repositoryPath: (fixes preference save/load problem)
vrany
parents: 2674
diff changeset
   139
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   140
    "Created: / 26-12-2011 / 01:06:41 / cg"
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   141
!
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   142
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   143
openSQLite:dbSpec
2689
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   144
    |file con crsr tables row|
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   145
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   146
    file := dbSpec.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   147
    con := SQLiteConnection fileNamed:file.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   148
    con open.
2684
4fed20db7ecb added: #repositoryPath: (fixes preference save/load problem)
vrany
parents: 2674
diff changeset
   149
2689
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   150
    tables := OrderedCollection new.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   151
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   152
    SqliteError handle:[:ex |
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   153
    ] do:[
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   154
        crsr := con executeQuery:'SELECT * FROM sqlite_master WHERE type=''table'';'. 
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   155
    ].
2689
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   156
    crsr notNil ifTrue:[
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   157
        [ 
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   158
            crsr next.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   159
            row := crsr rowAsDictionary.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   160
            row notNil 
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   161
        ] whileTrue:[
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   162
            tables add:(row at:'name')
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   163
        ].
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   164
    ].
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   165
2689
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   166
    (tables includes:'versions') ifTrue:[
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   167
        Transcript showCR:'table "versions" already present.'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   168
    ] ifFalse:[
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   169
        Transcript showCR:'creating table "versions"...'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   170
        con executeQuery:'CREATE table versions (versionId, name, packageId, author, timestamp);'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   171
    ].
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   172
    (tables includes:'packages') ifTrue:[
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   173
        Transcript showCR:'table "packages" already present.'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   174
    ] ifFalse:[
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   175
        Transcript showCR:'creating table "packages"...'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   176
        con executeQuery:'CREATE table packages (packageId, name);'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   177
    ].
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   178
    (tables includes:'classes') ifTrue:[
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   179
        Transcript showCR:'table "classes" already present.'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   180
    ] ifFalse:[
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   181
        Transcript showCR:'creating table "classes"...'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   182
        con executeQuery:'CREATE table classes (id, name, superclass, category, definition, packageId, versionId);'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   183
    ].
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   184
    (tables includes:'methods') ifTrue:[
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   185
        Transcript showCR:'table "methods" already present.'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   186
    ] ifFalse:[
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   187
        Transcript showCR:'creating table "methods"...'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   188
        con executeQuery:'CREATE table methods (id, className, selector, source, bytecode, packageId, versionId);'.
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   189
    ].
0c20a2edaac8 variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents: 2687
diff changeset
   190
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   191
    ^ con
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   192
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   193
    "Created: / 26-12-2011 / 01:06:37 / cg"
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
! !
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
!DataBaseSourceCodeManager class methodsFor:'queries'!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
defaultRepositoryName
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
    "/ '<db-type>:[<user>[.<password>]@][<host>]<db-name>[:<table-name>]'
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
    ^ 'sqlite:repository.db'
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    "Created: / 22-12-2011 / 00:19:43 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
enabled
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
    ^ true "/ false.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
    "Created: / 21-12-2011 / 17:53:34 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
isContainerBased
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    "true, if the SCM uses some kind of source container (,v files).
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
     False, if it is like a database or filesystem."
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
    ^ false
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    "Created: / 21-12-2011 / 18:53:55 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
isResponsibleForPackage:aString
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
    ^ true.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
    "Created: / 09-07-2011 / 14:32:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
    "Modified (format): / 22-12-2011 / 00:05:39 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
managerTypeName
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
    ^ 'DBRepository'
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
    "Created: / 16-08-2006 / 11:05:56 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
nameOfVersionMethodForExtensions
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    ^ #'extensionsVersion_DB'
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
    "Modified: / 22-12-2011 / 00:06:15 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
nameOfVersionMethodInClasses
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    ^ #'version_DB'
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
    "Modified: / 22-12-2011 / 00:06:21 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
repositoryNameForPackage:packageId 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
    "superclass AbstractSourceCodeManager class says that I am responsible to implement this method"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
    ^ self getDBNameForModule:(packageId upTo:$: )
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    "Created: / 21-12-2011 / 23:07:02 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
settingsApplicationClass
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
    "link to my settings application (needed for the settings dialog"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    ^ DataBaseSourceCodeManagementSettingsAppl
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    "Created: / 19-04-2011 / 12:43:29 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
    "Modified: / 22-12-2011 / 00:06:53 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
! !
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
!DataBaseSourceCodeManager class methodsFor:'saving'!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
savePreferencesOn:aStream
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    aStream nextPutLine:'DataBaseSourceCodeManager notNil ifTrue:['.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
    self repositoryInfoPerModule notEmptyOrNil ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
        aStream nextPutLine:'    DataBaseSourceCodeManager repositoryInfoPerModule:' , self repositoryInfoPerModule storeString , '.'.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
    (Smalltalk at:#SourceCodeManager) == self ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
        aStream nextPutLine:'    Smalltalk at:#SourceCodeManager put:DataBaseSourceCodeManager.'.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
    ].
2694
5620f0a2fcc8 fixed: #savePreferencesOn:
vrany
parents: 2689
diff changeset
   273
    aStream nextPutLine:'    DataBaseSourceCodeManager repositoryName:' , self repositoryName storeString , '.'.
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
    aStream nextPutLine:'].'.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
    "Created: / 09-11-2006 / 15:09:25 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
    "Modified: / 22-12-2011 / 00:48:25 / cg"
2694
5620f0a2fcc8 fixed: #savePreferencesOn:
vrany
parents: 2689
diff changeset
   278
    "Modified: / 01-01-2012 / 17:02:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
! !
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
!DataBaseSourceCodeManager class methodsFor:'source code administration'!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
checkForExistingContainer:fileName inModule:moduleName directory:dirName
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
    ^ self checkForExistingModule:moduleName directory:dirName
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
    "Created: / 21-12-2011 / 17:56:23 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
checkForExistingModule:moduleDir
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
    "check for a package directory to be present"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   292
    ^ true.
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
"/    dir := self moduleDirectoryFor:moduleDir.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
"/    ^ dir exists
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
    "Created: / 21-12-2011 / 18:37:28 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
checkForExistingModule:moduleDir directory:packageDir
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   301
    "check for a package directory to be present; return true, if it does"
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   302
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   303
    |handle packagePresent name|
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   304
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   305
    handle := self dbHandleForModule:moduleDir.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   306
    name := moduleDir,':',packageDir.
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   308
    packagePresent := false.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   309
    handle
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   310
        withResultForQuery: ('select * from packages where name = "%1"' bindWith:name) 
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   311
        do:[:result |
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   312
            packagePresent := result numRows > 0.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   313
        ].
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   314
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   315
    ^ packagePresent
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
    "Created: / 21-12-2011 / 18:03:33 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
checkinClass:aClass fileName:classFileName directory:packageDir module:moduleDir source:sourceFile logMessage:logMessage force:force
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
    "Return true if ok, false if not."
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   323
    aClass definition.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   324
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   325
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
    self halt.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
"/    |targetDir newestRevision newRevision newFile packageMode filter outStream|
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
"/    targetDir := self packageDirectoryForModule:moduleDir package:packageDir.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
"/    (targetDir filesMatching:(classFileName,'_*')) do:[:eachVersionFile |
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
"/        |versionString|
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
"/        versionString := eachVersionFile copyFrom:(classFileName size + 2).
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
"/        (newestRevision isNil 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
"/        or:[ self isRevision:versionString after:newestRevision ]) ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
"/            newestRevision := versionString
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
"/        ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
"/    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
"/    newestRevision isNil ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
"/        newRevision := '1'
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
"/    ] ifFalse:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
"/        newRevision := self revisionAfter:newestRevision
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
"/    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
"/    newFile := (targetDir construct:classFileName,'_',newRevision printString).
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
"/    self updateVersionMethodOf:aClass for:(self revisionStringFor:aClass inModule:moduleDir directory:packageDir container:classFileName revision:newRevision).
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
"/    packageMode := self checkMethodPackagesOf:aClass.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
"/    packageMode == #base ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
"/        filter := [:mthd | mthd package = aClass package].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
"/    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
"/    [
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
"/        outStream := newFile writeStream.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
"/    ] on:FileStream openErrorSignal do:[:ex|
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
"/        self reportError:('fileout failed').
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
"/        ^ false
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
"/    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
"/    Method flushSourceStreamCache.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
"/    Class fileOutErrorSignal handle:[:ex |
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
"/        outStream close.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
"/        newFile delete.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
"/        self reportError:('fileout failed (',ex description,')').
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
"/        ^ false
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
"/    ] do:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
"/        self 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
"/            fileOutSourceCodeOf:aClass 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
"/            on:outStream 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
"/            withTimeStamp:false 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
"/            withInitialize:true 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
"/            withDefinition:true
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
"/            methodFilter:filter.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
"/    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
"/    outStream close.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
"/    newFile exists ifFalse:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
"/        self reportError:'fileout failed'.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
"/        ^ false.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
"/    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
"/    ^ true
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
    "Created: / 21-12-2011 / 19:01:07 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
createModule:moduleDir
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
    "create a module directory"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
    self halt.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
"/    |dir|
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
"/    dir := self moduleDirectoryFor:moduleDir.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
"/    dir recursiveMakeDirectory.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
"/    ^ dir exists.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
    "Created: / 21-12-2011 / 18:38:22 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   403
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
createModule:moduleDir directory:packageDir
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
    "create a package directory"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
2687
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   407
    |handle id name|
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   408
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   409
    id := UUID new.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   410
    name := (moduleDir,':',packageDir).
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   411
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   412
    handle := self dbHandleForModule:moduleDir.
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   413
    handle
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   414
        withResultForQuery: ('insert into packages values (''%1'', ''%2'')' bindWith:id with:name) 
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   415
        do:[:result |
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   416
        ].
9336f40dbf61 class definition
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   417
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   418
    self halt.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
"/    |dir|
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
"/    dir := self packageDirectoryForModule:moduleDir package:packageDir.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
"/    dir recursiveMakeDirectory.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
"/    ^ dir exists.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
    "Created: / 21-12-2011 / 18:44:20 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
initialRevisionStringFor:aClass inModule:moduleDir directory:packageDir container:fileName
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
    "return a string usable as initial revision string"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
    ^ self 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
        revisionStringFor:aClass 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
        inModule:moduleDir 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
        directory:packageDir 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
        container:fileName 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
        revision:'1'
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
    "Created: / 21-12-2011 / 18:14:03 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   439
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
revisionInfoFromString:aString 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
    "{ Pragma: +optSpace }"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
    "return a VersionInfo object filled with revision info.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
     This extracts the relevant info from aString."
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
    |info path version user ts timeStamp idx1 idx2|
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   448
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   449
    "/ 'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826'
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   450
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
    idx1 := aString indexOfSubCollection:'Path: '.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
    idx1 ~~ 0 ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
        idx1 := idx1 + 'Path: ' size.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
        idx2 := aString indexOfSubCollection:', ' startingAt:idx1.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
        path := aString copyFrom:idx1 to:idx2-1.     
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
    idx1 := aString indexOfSubCollection:'Version: '.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
    idx1 ~~ 0 ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   459
        idx1 := idx1 + 'Version: ' size.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
        idx2 := aString indexOfSubCollection:', ' startingAt:idx1.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
        idx2 == 0 ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
            version := aString copyFrom:idx1     
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
        ] ifFalse:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
            version := aString copyFrom:idx1 to:idx2-1.     
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   465
        ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
    idx1 := aString indexOfSubCollection:'User: '.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
    idx1 ~~ 0 ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
        idx1 := idx1 + 'User: ' size.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
        idx2 := aString indexOfSubCollection:', ' startingAt:idx1.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
        idx2 == 0 ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
            user := aString copyFrom:idx1     
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
        ] ifFalse:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
            user := aString copyFrom:idx1 to:idx2-1.     
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
        ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   477
    idx1 := aString indexOfSubCollection:'Time: '.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   478
    idx1 ~~ 0 ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
        idx1 := idx1 + 'Time: ' size.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
        idx2 := aString indexOfSubCollection:', ' startingAt:idx1.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
        idx2 == 0 ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
            ts := aString copyFrom:idx1     
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
        ] ifFalse:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
            ts := aString copyFrom:idx1 to:idx2-1.     
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
        ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
        timeStamp := Timestamp readIso8601FormatFrom:ts
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
    info := VersionInfo new.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
    path notNil ifTrue:[ info fileName:(path asFilename baseName) ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
    info revision:version.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
    user notNil ifTrue:[ info user:user ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
    timeStamp notNil ifTrue:[ info timeStamp:timeStamp ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
    ^ info
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
    "
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
     self revisionInfoFromString:'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826' 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
    "
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
    "Created: / 21-12-2011 / 14:50:12 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
revisionLogOf:clsOrNil fromRevision:rev1OrNil toRevision:rev2OrNil numberOfRevisions:limitOrNil fileName:classFileName directory:packageDir module:moduleDir 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
    "Return true if ok, false if not."
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
    self halt.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
"/    |info log targetDir count newestRevision|
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
"/    targetDir := self packageDirectoryForModule:moduleDir package:packageDir.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
"/    targetDir exists ifFalse:[^ nil ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
"/    info := IdentityDictionary new.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
"/    log := OrderedCollection new.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
"/    count := 0.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
"/    (targetDir filesMatching:(classFileName,'_*')) do:[:eachVersionFile |
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   517
"/        |versionString cs versionChange info|
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
"/        versionString := eachVersionFile copyFrom:(classFileName size + 2).
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
"/        count := count + 1.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
"/        (newestRevision isNil 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   522
"/        or:[ self isRevision:versionString after:newestRevision ]) ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   523
"/            newestRevision := versionString
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   524
"/        ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   526
"/        (rev1OrNil isNil 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
"/            or:[ rev1OrNil = 0
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   528
"/            or:[ versionString = rev1OrNil
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   529
"/            or:[ self isRevision:versionString after:rev1OrNil ]]])
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
"/        ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   531
"/            (rev2OrNil isNil 
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
"/                or:[ rev2OrNil = 0
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
"/                or:[ versionString = rev2OrNil
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
"/                or:[ self isRevision:rev2OrNil after:versionString ]]])
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
"/            ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   536
"/                (limitOrNil isNil
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   537
"/                or:[ log size < limitOrNil ])
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   538
"/                ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   539
"/                    cs := ChangeSet fromFile:(targetDir construct:eachVersionFile).
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   540
"/                    versionChange := cs detect:[:chg | chg isMethodChange
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   541
"/                                                       and:[chg selector = self nameOfVersionMethodInClasses]]
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   542
"/                                        ifNone:nil.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   543
"/                    versionChange notNil ifTrue:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   544
"/                        info := self revisionInfoFromString:versionChange source.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   545
"/                    ] ifFalse:[
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   546
"/                        info := VersionInfo new.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   547
"/                    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   548
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
"/                    info revision:versionString.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   550
"/                    log add:info.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   551
"/                ]
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   552
"/            ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   553
"/        ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   554
"/    ].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   555
"/    log sort:[:a :b | self isRevision:b revision after:a revision].
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   556
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   557
"/    info at:#revisions put:log.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   558
"/    info at:#numberOfRevisions put:count.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   559
"/    info at:#newestRevision put:newestRevision.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   560
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   561
"/    ^ info
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   562
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   563
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   564
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   565
    "Created: / 21-12-2011 / 20:39:31 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   566
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   567
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   568
revisionStringFor:aClass inModule:moduleDir directory:packageDir container:fileName revision:revisionString
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   569
    "return a string usable as initial revision string"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   570
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   571
    ^ 'Path: %1/%2/%3, Version: %4, User: %5, Time: %6'
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   572
        bindWith:moduleDir
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   573
        with:packageDir
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   574
        with:fileName
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   575
        with:revisionString
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   576
        with:(OperatingSystem getLoginName)
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   577
        with:(Timestamp now printStringIso8601Format)
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   579
    "
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   580
     self revisionStringFor:Array inModule:'stx' directory:'libbasic' container:'Array.st' revision:'123'
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   581
    "
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   582
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   583
    "Created: / 21-12-2011 / 19:33:33 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   585
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   586
streamForClass:aClass fileName:classFileName revision:revision directory:packageDir module:moduleDir cache:doCache
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   587
    self halt.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   588
"/    |targetDir oldFile|
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   589
"/
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   590
"/    targetDir := self packageDirectoryForModule:moduleDir package:packageDir.
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   591
"/    oldFile := (targetDir construct:classFileName,'_',revision).
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   592
"/    ^ oldFile readStream
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   593
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   594
    "Created: / 21-12-2011 / 20:49:01 / cg"
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   595
! !
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   597
!DataBaseSourceCodeManager class methodsFor:'documentation'!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   598
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   599
version
3042
48e76977cdc3 Added info-record processing support into changeset reader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3012
diff changeset
   600
    ^ '$Id: DataBaseSourceCodeManager.st 1909 2012-03-31 00:14:49Z vranyj1 $'
2674
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   601
!
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   602
7612087d1a82 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   603
version_CVS
3011
1997ff6e7e55 trunk branched into /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2733
diff changeset
   604
    ^ '§Header: /cvs/stx/stx/libbasic3/DataBaseSourceCodeManager.st,v 1.9 2012/01/19 15:19:52 cg Exp §'
3012
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   605
!
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   606
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   607
version_SVN
3042
48e76977cdc3 Added info-record processing support into changeset reader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3012
diff changeset
   608
    ^ '$Id: DataBaseSourceCodeManager.st 1909 2012-03-31 00:14:49Z vranyj1 $'
3012
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   609
! !