Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
119 ghuddy 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
123 ghuddy 4
'                  NEW VERSION
119 ghuddy 5
'               --- PROCESS FORM ---
6
'=====================================================
7
%>
8
<%
9
Option explicit
10
' Good idea to set when using redirect
123 ghuddy 11
Response.Expires = 0   ' always load the page, dont store
119 ghuddy 12
%>
13
 
14
<!--#include file="common/conf.asp"-->
15
<!--#include file="common/globals.asp"-->
16
<!--#include file="common/formating.asp"-->
17
<!--#include file="common/qstr.asp"-->
18
<!--#include file="common/common_subs.asp"-->
19
<!--#include file="common/common_dbedit.asp"-->
20
<%
21
' Set rfile parameter. This is a return page after Login
22
Call objPMod.StoreParameter ( "rfile", "dependencies.asp" )
23
'------------ ACCESS CONTROL ------------------
24
%>
25
<!--#include file="_access_control_login.asp"-->
26
<!--#include file="_access_control_general.asp"-->
27
<!--#include file="_access_control_project.asp"-->
28
<%
29
'------------ Variable Definition -------------
30
Dim parOLDpv_id
31
Dim parFRnewver
32
Dim NEWpv_id
33
Dim parSetToPv_id
34
Dim parSync_rtags
35
Dim toTouch
36
'------------ Constants Declaration -----------
37
'------------ Variable Init -------------------
38
parOLDpv_id = QStrPar("OLDpv_id")
39
parFRnewver = QStrPar("FRnewver")
40
parSetToPv_id = QStrPar("pv_id")
41
parSync_rtags = Request("sync_rtags")
151 ghuddy 42
 
119 ghuddy 43
'----------------------------------------------
44
%>
45
<%
46
Sub New_Version ( SSnewver, NNorig_pv_id, NNSetToPv_id, NNrtag_id, sSyncRtags, retNEWpv_id )
123 ghuddy 47
   Dim cAlterReleaseWhileRestrictive, rsQry
1334 dpurdie 48
   Dim Original_SSnewver
49
   Original_SSnewver = SSnewver
123 ghuddy 50
 
51
   On Error Resume Next
52
   objEH.ErrorRedirect = TRUE
53
 
54
   If Request("build_type") = "A" Then
55
      SSnewver = ""
56
   End If
57
 
58
   OraDatabase.Parameters.Add "ORIG_PV_ID", NNorig_pv_id, ORAPARM_INPUT, ORATYPE_NUMBER
59
 
60
   If Request("build_type") = "M" Then
61
      ' Manual build
62
      OraDatabase.Parameters.Add "PKG_VERSION", SSnewver, ORAPARM_INPUT, ORATYPE_VARCHAR2
63
   Else
64
      ' Automated Build
65
      OraDatabase.Parameters.Add "PKG_VERSION", Request("v_ext"), ORAPARM_INPUT, ORATYPE_VARCHAR2
66
   End If
67
 
68
   ' Access Control - Allow release change while release is in restrictive mode
69
   cAlterReleaseWhileRestrictive = "N"
70
   If objAccessControl.IsActive("AlterReleaseContentsInRestrictiveMode") Then cAlterReleaseWhileRestrictive = "Y"
71
 
72
   OraDatabase.Parameters.Add "BUILD_TYPE",                Request("build_type"),         ORAPARM_INPUT, ORATYPE_CHAR
73
   OraDatabase.Parameters.Add "ALTER_RELEASE",             cAlterReleaseWhileRestrictive, ORAPARM_INPUT, ORATYPE_CHAR
74
   OraDatabase.Parameters.Add "SET_TO_PV_ID",              NNSetToPv_id,                  ORAPARM_INPUT, ORATYPE_NUMBER
75
   OraDatabase.Parameters.Add "RTAG_ID",                   NNrtag_id,                     ORAPARM_INPUT, ORATYPE_NUMBER
76
   OraDatabase.Parameters.Add "USER_ID",                   objAccessControl.UserId,       ORAPARM_INPUT, ORATYPE_NUMBER
77
   OraDatabase.Parameters.Add "enumISSUES_STATE_IMPORTED", enumISSUES_STATE_IMPORTED,     ORAPARM_INPUT, ORATYPE_NUMBER
78
   OraDatabase.Parameters.Add "RETPV_ID",                  0,                             ORAPARM_OUTPUT,ORATYPE_NUMBER
79
 
80
   objEH.TryORA ( OraSession )
81
 
82
   Set rsQry = OraDatabase.DbCreateDynaset("SELECT * FROM RELEASE_CONTENT WHERE RTAG_ID ="& Request("rtag_id") &" AND PV_ID = "& NNorig_pv_id &"", cint(0))
83
 
84
   If (NOT IsNull(rsQry("pkg_id"))) AND rsQry("pkg_state") = 6  Then
85
 
86
      Dim rsPv_id
87
 
88
      If (SSnewver) <> ""  Then
89
 
90
         Set rsPv_id = OraDatabase.DbCreateDynaset("SELECT * FROM PACKAGE_VERSIONS WHERE PKG_VERSION ='"& SSnewver &"' AND PKG_ID = "& rsQry("pkg_id") &"", cint(0))
91
 
92
         retNEWpv_id =  rsPv_id("pv_id")
93
 
94
         rsPv_id.Close()
95
         Set rsPv_id = nothing
96
      Else
97
         retNEWpv_id = NNSetToPv_id
98
      End If
99
      If NOT IsNull(retNewpv_id) Then
100
         OraDatabase.ExecuteSQL _
101
         "BEGIN "&_
102
         " UPDATE RELEASE_CONTENT SET PV_ID ="& retNEWpv_id &" WHERE RTAG_ID ="& Request("rtag_id") &" AND PV_ID ="& Request("OLDpv_id")&"; "&_
103
         "END;"
104
      Else
105
         OraDatabase.ExecuteSQL _
106
         "BEGIN "&_
107
         " PK_PACKAGE.NEW_VERSION ( :ORIG_PV_ID, "&_
108
         "                    :PKG_VERSION,"&_
109
         "                    :BUILD_TYPE,"&_
110
         "                    :SET_TO_PV_ID,"&_
111
         "                    :RTAG_ID,"&_
112
         "                    :USER_ID,"&_
113
         "                    :enumISSUES_STATE_IMPORTED,"&_
114
         "                    :RETPV_ID ); "&_
115
         " PK_RELEASE.CAN_USER_WRITE_TO_RELEASE ( :RTAG_ID, :RETPV_ID, :ALTER_RELEASE ); "&_
116
         " PK_ENVIRONMENT.REPLACE_PACKAGE ( :RETPV_ID, :ORIG_PV_ID, :RTAG_ID, :USER_ID ); "&_
117
         "END;"
118
 
119
         retNEWpv_id = OraDatabase.Parameters("RETPV_ID").Value
161 iaugusti 120
 
1334 dpurdie 121
      If (Original_SSnewver) <> ""  Then
161 iaugusti 122
        Call UpdateSubVersionSrcPath(retNEWpv_id)
1334 dpurdie 123
      End If
161 iaugusti 124
 
123 ghuddy 125
      End If
126
   Else
127
      OraDatabase.ExecuteSQL _
128
      "BEGIN "&_
129
      " PK_PACKAGE.NEW_VERSION ( :ORIG_PV_ID, "&_
130
      "                    :PKG_VERSION,"&_
131
      "                    :BUILD_TYPE,"&_
132
      "                    :SET_TO_PV_ID,"&_
133
      "                    :RTAG_ID,"&_
134
      "                    :USER_ID,"&_
135
      "                    :enumISSUES_STATE_IMPORTED,"&_
136
      "                    :RETPV_ID ); "&_
137
      " PK_RELEASE.CAN_USER_WRITE_TO_RELEASE ( :RTAG_ID, :RETPV_ID, :ALTER_RELEASE ); "&_
138
      " PK_ENVIRONMENT.REPLACE_PACKAGE ( :RETPV_ID, :ORIG_PV_ID, :RTAG_ID, :USER_ID ); "&_
139
      "END;"
140
 
141
      retNEWpv_id = OraDatabase.Parameters("RETPV_ID").Value
161 iaugusti 142
 
1334 dpurdie 143
      If (Original_SSnewver) <> ""  Then
144
        Call UpdateSubVersionSrcPath(retNEWpv_id)
145
      End If
161 iaugusti 146
 
123 ghuddy 147
   End If
148
 
151 ghuddy 149
   objEH.CatchORA ( OraSession )
150
   If objEH.LastOraFailed = FALSE Then
151
      Call UpdateChangeType (retNEWpv_id, Request("change_type"))
152
      Call UpdateReasonForVersion (retNEWpv_id, Request("FRreason"))
153
   End If
154
 
123 ghuddy 155
   rsQry.Close()
156
   Set rsQry = nothing
157
 
158
   OraDatabase.Parameters.Remove "ORIG_PV_ID"
159
   OraDatabase.Parameters.Remove "ALTER_RELEASE"
160
   OraDatabase.Parameters.Remove "PKG_VERSION"
161
   OraDatabase.Parameters.Remove "BUILD_TYPE"
162
   OraDatabase.Parameters.Remove "SET_TO_PV_ID"
163
   OraDatabase.Parameters.Remove "RTAG_ID"
164
   OraDatabase.Parameters.Remove "USER_ID"
165
   OraDatabase.Parameters.Remove "enumISSUES_STATE_IMPORTED"
166
   OraDatabase.Parameters.Remove "RETPV_ID"
119 ghuddy 167
End Sub
168
'---------------------------------------------------------------
169
Function SanityCheck ( newVersion )
170
 
123 ghuddy 171
   SanityCheck = False
119 ghuddy 172
 
123 ghuddy 173
   Dim objRegEx, objRegEx2
174
   Set objRegEx = New RegExp
175
   Set objRegEx2 = New RegExp
119 ghuddy 176
 
123 ghuddy 177
   objRegEx.IgnoreCase = True
178
   objRegEx.Pattern = "^[0-9]+\.[0-9]+\.[0-9]+\.[a-zA-Z0-9]+$"
179
   objRegEx2.Pattern = "\.cots$"
121 hknight 180
 
123 ghuddy 181
   If Len(newVersion) <= 50 Then
182
      If objRegEx.Test( newVersion ) OR objRegEx2.Test( newVersion ) Then
183
         SanityCheck = True
184
      End If
185
   End If
186
 
187
   If Request("build_type") = "A" Then
188
      SanityCheck = True
189
   End If
190
 
191
   Set objRegEx = Nothing
192
   Set objRegEx2 = Nothing
121 hknight 193
End Function
161 iaugusti 194
 
121 hknight 195
'---------------------------------------------------------------
161 iaugusti 196
'Returns a new subversion package source path string by replacing or adding
197
'the specified label to the specified subversion package source path string.
198
Function  GetNewSvnSrcPath(asrc_path, alabel)
199
  Dim ssrc_base
200
  Dim snew_src_path
201
  Dim ssrc_path
202
  Dim slast_char
203
  Dim i,j
204
 
205
  if IsNull(asrc_path) then
206
    ssrc_path = ""
207
  else
208
    ssrc_path = asrc_path
209
  end if
210
 
211
  'get project directory from current package source path, ie path above either "tags" or "branches" or "trunk" directory
212
  i = InStrRev(LCase(ssrc_path), "/tags")
213
  if i = 0 then
214
    i = InStrRev(LCase(ssrc_path), "/branches")
215
    if i = 0 then
216
      i = InStrRev(LCase(ssrc_path), "/trunk")
217
    end if
218
  end if
219
 
220
  if i = 0 then
221
    '"tags" or "branches" or "trunk" not found
222
    'use current package source path as the project directory
223
    ssrc_base = ssrc_path
224
 
225
    'ensure project directory ends in a slash
226
    j = Len(ssrc_base)
227
    slast_char = Right(ssrc_base,1)
228
    if (j > 0) and (slast_char <> "/") then
229
      ssrc_base = ssrc_base & "/"
230
    end if
231
  else
232
    '"tags" or "branches" or "trunk" found so extract project directory
233
    ssrc_base = Mid(ssrc_path,1,i)
234
  end if
235
 
236
  'append new directory to the default project directory string.
237
  'the default path will be <project directory>/branches/<label>
238
  snew_src_path = ssrc_base & "branches/" & alabel
239
 
240
  GetNewSvnSrcPath = snew_src_path
241
 
242
End Function
243
 
244
'------------------------------------------------------------------
245
'This function is used to create the default package source path
246
'string when a new SubVersion package version is added.
247
'Assumes the specified pv_id is for a subversion package
248
Sub UpdateSubVersionSrcPath(apv_id)
249
  Dim rsQry
250
  Dim anew_src_path
251
  Dim ivcs_type_id
252
  Dim apkg_label
253
  Dim asrc_path
254
  Dim ssql
255
 
256
  'select the package and ensure it is a subversion package
257
  ssql = "SELECT * FROM PACKAGE_VERSIONS WHERE PV_ID ="& apv_id &" AND VCS_TYPE_ID=23"
258
 
259
  Set rsQry = OraDatabase.DbCreateDynaset(ssql, cint(0))
260
 
261
  If rsQry.RecordCount > 0 Then
262
    ivcs_type_id = rsQry("vcs_type_id")
263
    'pkg_label contains the new auto generated label for this version
264
    apkg_label = rsQry("pkg_label")
265
    asrc_path = rsQry("src_path")
266
    anew_src_path = GetNewSvnSrcPath(asrc_path,apkg_label)
267
 
268
    OraDatabase.ExecuteSQL _
269
      "BEGIN "&_
270
      " UPDATE PACKAGE_VERSIONS SET SRC_PATH ='"& anew_src_path &"' WHERE PV_ID ="& apv_id &"; "&_
271
      "END;"
272
  End If
273
 
274
  rsQry.Close()
275
  Set rsQry = nothing
276
 
277
End Sub
278
 
279
'-----------------------------------------------------------------------------------
119 ghuddy 280
%>
281
<%
282
'-----------------------  MAIN LINE  ---------------------------
283
Dim rsQry, Query_String, Record_Count
123 ghuddy 284
Dim versionToSanityCheck
161 iaugusti 285
 
119 ghuddy 286
'--- Process submission ---
123 ghuddy 287
   If (parOLDpv_id <> "") AND ( (parFRnewver <> "") OR (parSetToPv_id <> "") ) AND (parRtag_id <> "") Then
288
      ' All mandatory parameters FOUND
119 ghuddy 289
 
123 ghuddy 290
      If ( (parSetToPv_id <> "") OR SanityCheck(parFRnewver) ) Then
119 ghuddy 291
 
131 ghuddy 292
         Record_Count = 0
293
 
123 ghuddy 294
         If Request("build_type") = "M" Then
295
            Query_string = " SELECT pv.pv_id, pv.is_patch, pv.dlocked"&_
296
                           " FROM package_versions pv"&_
297
                           " WHERE pv.pkg_version = '"& parFRnewver &"'"&_
298
                           " AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id"&_
299
                           "  FROM package_versions origpv"&_
300
                           " WHERE origpv.pv_id = "& parOLDpv_id &")"
301
 
302
            Set rsQry = OraDatabase.DbCreateDynaset(Query_String, cint(0))
303
            Record_Count = rsQry.RecordCount
304
            rsQry.Close()
305
            Set rsQry = Nothing
306
         End If
307
 
308
         If Record_Count > 0 And Request("build_type") = "M" Then
309
            Call RaiseMsg ( enum_MSG_PACKAGE_VERSION_EXISTS&"?rtag_id="& parRtag_id &"&pv_id="& parOLDpv_id &"", parFRnewver )
310
         Else
311
            Call New_Version ( parFRnewver, parOLDpv_id, parSetToPv_id, parRtag_id, parSync_rtags, NEWpv_id )
312
 
313
            If objEH.Finally Then
314
               Response.Redirect("dependencies.asp?rtag_id="& parRtag_id &"&pv_id="& NEWpv_id )
315
            End If
316
         End If
317
      Else
318
         Call RaiseMsg( enum_MSG_PACKAGE_VERSION_INVALID&"?rtag_id="& parRtag_id &"&pv_id="& parOLDpv_id &"", parFRnewver )
319
      End If
320
 
321
   Else
322
      Response.write "Some mandatory parameters are missing!" & "<br>" 'TODO
323
      Response.write QSTR_All
324
   End If ' If (parOLDpv_id <> "") AND ( (parFRnewver <> "") OR (parSetToPv_id <> "") ) AND (parRtag_id <> "") Then
119 ghuddy 325
%>
326
 
327
<!-- DESTRUCTOR ------->
123 ghuddy 328
<!--#include file="common/destructor.asp"-->