Subversion Repositories DevTools

Rev

Rev 2546 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2546 Rev 3889
Line 1... Line 1...
1
--------------------------------------------------------
1
--------------------------------------------------------
2
--  File created - Monday-October-29-2012   
2
--  File created - Monday-July-08-2013
-
 
3
--  Removed TEST packages as these cause great confusion   
3
--------------------------------------------------------
4
--------------------------------------------------------
4
 
5
 
5
--------------------------------------------------------
6
--------------------------------------------------------
6
--  DDL for Function ORA_SYSDATE
-
 
7
--------------------------------------------------------
-
 
8
 
-
 
9
  CREATE OR REPLACE FUNCTION "ORA_SYSDATE" 
-
 
10
RETURN DATE
-
 
11
IS
-
 
12
/* ---------------------------------------------------------------------------
-
 
13
    Version: 3.0.0
-
 
14
   --------------------------------------------------------------------------- */
-
 
15
BEGIN
-
 
16
 
-
 
17
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
-
 
18
END ORA_SYSDATE;
-
 
19
/
-
 
20
--------------------------------------------------------
-
 
21
--  DDL for Function GET_AUTOMATED_LABEL
-
 
22
--------------------------------------------------------
-
 
23
 
-
 
24
  CREATE OR REPLACE FUNCTION "GET_AUTOMATED_LABEL" ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
-
 
25
 
-
 
26
/* ---------------------------------------------------------------------------
-
 
27
    Version: 3.0.0
-
 
28
   --------------------------------------------------------------------------- */
-
 
29
 
-
 
30
	sPkgName VARCHAR2(4000);
-
 
31
	sVext VARCHAR2(4000);
-
 
32
 
-
 
33
BEGIN
-
 
34
 
-
 
35
	-- Get package details
-
 
36
	SELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVext
-
 
37
	  FROM PACKAGE_VERSIONS pv,
-
 
38
	  	   PACKAGES pkg
-
 
39
	 WHERE pv.PKG_ID = pkg.PKG_ID
-
 
40
	   AND pv.PV_ID = nPvId;
-
 
41
 
-
 
42
 
-
 
43
	-- Generate Label for automated build
-
 
44
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
-
 
45
 
-
 
46
END GET_AUTOMATED_LABEL;
-
 
47
/
-
 
48
--------------------------------------------------------
-
 
49
--  DDL for Function CAN_EDIT_PKG_IN_PROJECT
7
--  DDL for Function CAN_EDIT_PKG_IN_PROJECT
50
--------------------------------------------------------
8
--------------------------------------------------------
51
 
9
 
52
  CREATE OR REPLACE FUNCTION "CAN_EDIT_PKG_IN_PROJECT" ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
10
  CREATE OR REPLACE FUNCTION "CAN_EDIT_PKG_IN_PROJECT" ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
53
 
11
 
Line 153... Line 111...
153
 
111
 
154
	
112
	
155
END CAN_EDIT_PKG_IN_PROJECT;
113
END CAN_EDIT_PKG_IN_PROJECT;
156
/
114
/
157
--------------------------------------------------------
115
--------------------------------------------------------
158
--  DDL for Function GET_PV_FIRST_MODIFIED
116
--  DDL for Function DT_ADDUSEROBJECT
159
--------------------------------------------------------
117
--------------------------------------------------------
160
 
118
 
161
  CREATE OR REPLACE FUNCTION "GET_PV_FIRST_MODIFIED" (v_pv_id NUMBER) RETURN DATE IS
119
  CREATE OR REPLACE FUNCTION "DT_ADDUSEROBJECT" RETURN NUMBER IS NEWOBJECTID NUMBER; BEGIN /* GET THE NEXT VALUE FROM THE SEQUENCE FOR THE OBJECT ID */ SELECT MICROSOFTSEQDTPROPERTIES.NEXTVAL INTO NEWOBJECTID FROM DUAL; /* ADD THE PARENT NODE FOR THE NEW OBJECT */ INSERT INTO MICROSOFTDTPROPERTIES ( ID, OBJECTID, PROPERTY ) VALUES ( NEWOBJECTID, NEWOBJECTID, 'DtgSchemaOBJECT' ); RETURN( NEWOBJECTID ); END DT_ADDUSEROBJECT;
-
 
120
/
-
 
121
--------------------------------------------------------
-
 
122
--  DDL for Function GET_AUTOMATED_LABEL
-
 
123
--------------------------------------------------------
-
 
124
 
-
 
125
  CREATE OR REPLACE FUNCTION "GET_AUTOMATED_LABEL" ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
-
 
126
 
-
 
127
/* ---------------------------------------------------------------------------
162
  ret DATE;
128
    Version: 3.0.0
-
 
129
   --------------------------------------------------------------------------- */
-
 
130
 
-
 
131
	sPkgName VARCHAR2(4000);
-
 
132
	sVext VARCHAR2(4000);
-
 
133
 
163
BEGIN
134
BEGIN
164
  SELECT q.modified_stamp
-
 
165
    INTO ret
-
 
166
    FROM (
-
 
167
            SELECT level AS lvl, pvc.pv_id, pvc.modified_stamp, pvc.change_type
-
 
168
              FROM package_versions pvc
-
 
169
              START WITH pvc.pv_id = v_pv_id
-
 
170
            CONNECT BY NOCYCLE pvc.pv_id = PRIOR pvc.last_pv_id
-
 
171
          ) Q
-
 
172
  WHERE q.change_type IS NOT NULL
-
 
173
    AND rownum = 1
-
 
174
  ORDER BY q.lvl;
-
 
175
 
135
 
176
  RETURN ret;
136
	-- Get package details
-
 
137
	SELECT pkg.PKG_NAME, pv.V_EXT INTO sPkgName, sVext
-
 
138
	  FROM PACKAGE_VERSIONS pv,
-
 
139
	  	   PACKAGES pkg
-
 
140
	 WHERE pv.PKG_ID = pkg.PKG_ID
-
 
141
	   AND pv.PV_ID = nPvId;
-
 
142
 
-
 
143
 
-
 
144
	-- Generate Label for automated build
-
 
145
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
177
END;
146
 
-
 
147
END GET_AUTOMATED_LABEL;
178
/
148
/
179
--------------------------------------------------------
149
--------------------------------------------------------
180
--  DDL for Function GET_BUILD_NUMBER
150
--  DDL for Function GET_BUILD_NUMBER
181
--------------------------------------------------------
151
--------------------------------------------------------
182
 
152
 
Line 193... Line 163...
193
        RETURN 0;
163
        RETURN 0;
194
    END IF;
164
    END IF;
195
END get_build_number;
165
END get_build_number;
196
/
166
/
197
--------------------------------------------------------
167
--------------------------------------------------------
198
--  DDL for Function ORA_SYSDATETIME
-
 
199
--------------------------------------------------------
-
 
200
 
-
 
201
  CREATE OR REPLACE FUNCTION "ORA_SYSDATETIME" 
-
 
202
RETURN DATE
-
 
203
IS
-
 
204
/* ---------------------------------------------------------------------------
-
 
205
    Version: 3.0.0
-
 
206
   --------------------------------------------------------------------------- */
-
 
207
BEGIN
-
 
208
 
-
 
209
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
-
 
210
END ORA_SYSDATETIME;
-
 
211
/
-
 
212
--------------------------------------------------------
-
 
213
--  DDL for Function IS_VERSION_EXTENSION
168
--  DDL for Function GET_PATCH_VERSION
214
--------------------------------------------------------
169
--------------------------------------------------------
215
 
170
 
216
  CREATE OR REPLACE FUNCTION "IS_VERSION_EXTENSION" (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
171
  CREATE OR REPLACE FUNCTION "GET_PATCH_VERSION" (s_version IN VARCHAR2) RETURN VARCHAR2
217
IS
172
IS
218
/* ---------------------------------------------------------------------------
173
/* ---------------------------------------------------------------------------
219
    Version: 3.0.0
174
    Version: 1.0.0
220
   --------------------------------------------------------------------------- */
175
   --------------------------------------------------------------------------- */
221
 
-
 
222
BEGIN
176
BEGIN
223
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
177
    IF is_number(s_version) AND LENGTH(s_version) > 3
224
    THEN
178
    THEN
225
        RETURN FALSE;
179
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
226
    ELSE
180
    ELSE
227
        RETURN TRUE;
181
        RETURN s_version;
228
    END IF;
182
    END IF;
229
 
-
 
230
END IS_VERSION_EXTENSION;
183
END get_patch_version;
231
/
184
/
232
--------------------------------------------------------
185
--------------------------------------------------------
233
--  DDL for Function IS_NUMBER
186
--  DDL for Function GET_PV_FIRST_MODIFIED
234
--------------------------------------------------------
187
--------------------------------------------------------
235
 
188
 
236
  CREATE OR REPLACE FUNCTION "IS_NUMBER" (p_val IN VARCHAR2) RETURN BOOLEAN
189
  CREATE OR REPLACE FUNCTION "GET_PV_FIRST_MODIFIED" (v_pv_id NUMBER) RETURN DATE IS
237
IS
-
 
238
   temp_num NUMBER;
190
  ret DATE;
239
/* ---------------------------------------------------------------------------
-
 
240
    Version: 1.0.0
-
 
241
   --------------------------------------------------------------------------- */
-
 
242
BEGIN
191
BEGIN
243
   temp_num := TO_NUMBER(p_val);
192
  SELECT q.modified_stamp
244
   RETURN true;
193
    INTO ret
-
 
194
    FROM (
-
 
195
            SELECT level AS lvl, pvc.pv_id, pvc.modified_stamp, pvc.change_type
-
 
196
              FROM package_versions pvc
-
 
197
              START WITH pvc.pv_id = v_pv_id
-
 
198
            CONNECT BY NOCYCLE pvc.pv_id = PRIOR pvc.last_pv_id
-
 
199
          ) Q
245
EXCEPTION WHEN VALUE_ERROR THEN
200
  WHERE q.change_type IS NOT NULL
-
 
201
    AND rownum = 1
-
 
202
  ORDER BY q.lvl;
-
 
203
 
246
   RETURN false;
204
  RETURN ret;
247
END IS_NUMBER;
205
END;
248
/
206
/
249
--------------------------------------------------------
207
--------------------------------------------------------
250
--  DDL for Function GET_PATCH_VERSION
208
--  DDL for Function GET_V_EXT
251
--------------------------------------------------------
209
--------------------------------------------------------
252
 
210
 
253
  CREATE OR REPLACE FUNCTION "GET_PATCH_VERSION" (s_version IN VARCHAR2) RETURN VARCHAR2
211
  CREATE OR REPLACE FUNCTION "GET_V_EXT" (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
254
IS
212
 
255
/* ---------------------------------------------------------------------------
213
/* ---------------------------------------------------------------------------
256
    Version: 1.0.0
214
    Version: 3.0.0
257
   --------------------------------------------------------------------------- */
215
   --------------------------------------------------------------------------- */
-
 
216
 
-
 
217
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
-
 
218
    lastDot NUMBER;
-
 
219
 
258
BEGIN
220
BEGIN
-
 
221
    lastDot := INSTR (SSpkg_version, '.', -1);
-
 
222
 
259
    IF is_number(s_version) AND LENGTH(s_version) > 3
223
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
260
    THEN
224
    THEN
-
 
225
        -- YES dot separator found --
-
 
226
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
-
 
227
 
261
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
228
        IF IS_VERSION_EXTENSION ( SSV_EXT )
-
 
229
        THEN
-
 
230
            RETURN SSV_EXT;
-
 
231
        ELSE
-
 
232
            RETURN NULL;
-
 
233
        END IF;
-
 
234
 
262
    ELSE
235
    ELSE
-
 
236
        -- NO dot separator found --
263
        RETURN s_version;
237
        RETURN NULL;
264
    END IF;
238
    END IF;
-
 
239
 
265
END get_patch_version;
240
END GET_V_EXT;
266
/
241
/
267
--------------------------------------------------------
242
--------------------------------------------------------
268
--  DDL for Function IN_LIST_NUMBER2
243
--  DDL for Function IN_LIST_NUMBER
269
--------------------------------------------------------
244
--------------------------------------------------------
270
 
245
 
271
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER2" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
246
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
272
 
247
 
273
/* ---------------------------------------------------------------------------
248
/* ---------------------------------------------------------------------------
274
    Version: 3.0.0
249
    Version: 3.0.0
275
   --------------------------------------------------------------------------- */
250
   --------------------------------------------------------------------------- */
276
 
251
 
277
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
252
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
278
	pos				   NUMBER;
253
	pos				   NUMBER;
279
	in_list			   VARCHAR2(32767) := sInList || ',';
254
	in_list			   VARCHAR2(4000) := sInList || ',';
280
 
255
 
281
BEGIN
256
BEGIN
282
 
257
 
283
	IF NOT sInList IS NULL
258
	IF NOT sInList IS NULL
284
	THEN
259
	THEN
Line 290... Line 265...
290
	        in_list := SUBSTR ( in_list, pos+1 );
265
	        in_list := SUBSTR ( in_list, pos+1 );
291
		END LOOP;
266
		END LOOP;
292
	END IF;
267
	END IF;
293
 
268
 
294
	RETURN sync_rtags;
269
	RETURN sync_rtags;
295
END IN_LIST_NUMBER2;
270
END IN_LIST_NUMBER;
296
/
-
 
297
--------------------------------------------------------
-
 
298
--  DDL for Function DT_ADDUSEROBJECT
-
 
299
--------------------------------------------------------
-
 
300
 
-
 
301
  CREATE OR REPLACE FUNCTION "DT_ADDUSEROBJECT" RETURN NUMBER IS NEWOBJECTID NUMBER; BEGIN /* GET THE NEXT VALUE FROM THE SEQUENCE FOR THE OBJECT ID */ SELECT MICROSOFTSEQDTPROPERTIES.NEXTVAL INTO NEWOBJECTID FROM DUAL; /* ADD THE PARENT NODE FOR THE NEW OBJECT */ INSERT INTO MICROSOFTDTPROPERTIES ( ID, OBJECTID, PROPERTY ) VALUES ( NEWOBJECTID, NEWOBJECTID, 'DtgSchemaOBJECT' ); RETURN( NEWOBJECTID ); END DT_ADDUSEROBJECT;
-
 
302
/
271
/
303
--------------------------------------------------------
272
--------------------------------------------------------
304
--  DDL for Function IN_LIST_NUMBER
273
--  DDL for Function IN_LIST_NUMBER2
305
--------------------------------------------------------
274
--------------------------------------------------------
306
 
275
 
307
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
276
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER2" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
308
 
277
 
309
/* ---------------------------------------------------------------------------
278
/* ---------------------------------------------------------------------------
310
    Version: 3.0.0
279
    Version: 3.0.0
311
   --------------------------------------------------------------------------- */
280
   --------------------------------------------------------------------------- */
312
 
281
 
313
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
282
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
314
	pos				   NUMBER;
283
	pos				   NUMBER;
315
	in_list			   VARCHAR2(4000) := sInList || ',';
284
	in_list			   VARCHAR2(32767) := sInList || ',';
316
 
285
 
317
BEGIN
286
BEGIN
318
 
287
 
319
	IF NOT sInList IS NULL
288
	IF NOT sInList IS NULL
320
	THEN
289
	THEN
Line 326... Line 295...
326
	        in_list := SUBSTR ( in_list, pos+1 );
295
	        in_list := SUBSTR ( in_list, pos+1 );
327
		END LOOP;
296
		END LOOP;
328
	END IF;
297
	END IF;
329
 
298
 
330
	RETURN sync_rtags;
299
	RETURN sync_rtags;
331
END IN_LIST_NUMBER;
300
END IN_LIST_NUMBER2;
332
/
-
 
333
--------------------------------------------------------
-
 
334
--  DDL for Function RELEASE_MODE
-
 
335
--------------------------------------------------------
-
 
336
 
-
 
337
  CREATE OR REPLACE FUNCTION "RELEASE_MODE" ( nRtagId IN NUMBER ) RETURN CHAR IS
-
 
338
 
-
 
339
/* ---------------------------------------------------------------------------
-
 
340
    Version: 3.0.0
-
 
341
   --------------------------------------------------------------------------- */
-
 
342
 
-
 
343
   returnValue CHAR(1);
-
 
344
 
-
 
345
BEGIN
-
 
346
 
-
 
347
    /*--------------- Business Rules Here -------------------*/
-
 
348
	/*-------------------------------------------------------*/
-
 
349
	
-
 
350
	-- Get release mode
-
 
351
	SELECT rt.OFFICIAL INTO returnValue
-
 
352
	  FROM RELEASE_TAGS rt
-
 
353
	 WHERE rt.RTAG_ID = nRtagId;
-
 
354
	
-
 
355
	RETURN returnValue;
-
 
356
	
-
 
357
END RELEASE_MODE;
-
 
358
/
-
 
359
--------------------------------------------------------
-
 
360
--  DDL for Function PERL_DBD_TESTFUNC
-
 
361
--------------------------------------------------------
-
 
362
 
-
 
363
  CREATE OR REPLACE FUNCTION "PERL_DBD_TESTFUNC" (a in integer, b in integer) return integer is c integer; begin if b is null then c := 0; else c := b; end if; return a * c + 1; end;
-
 
364
/
-
 
365
--------------------------------------------------------
-
 
366
--  DDL for Function GET_V_EXT
-
 
367
--------------------------------------------------------
-
 
368
 
-
 
369
  CREATE OR REPLACE FUNCTION "GET_V_EXT" (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
-
 
370
 
-
 
371
/* ---------------------------------------------------------------------------
-
 
372
    Version: 3.0.0
-
 
373
   --------------------------------------------------------------------------- */
-
 
374
 
-
 
375
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
-
 
376
    lastDot NUMBER;
-
 
377
 
-
 
378
BEGIN
-
 
379
    lastDot := INSTR (SSpkg_version, '.', -1);
-
 
380
 
-
 
381
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
-
 
382
    THEN
-
 
383
        -- YES dot separator found --
-
 
384
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
-
 
385
 
-
 
386
        IF IS_VERSION_EXTENSION ( SSV_EXT )
-
 
387
        THEN
-
 
388
            RETURN SSV_EXT;
-
 
389
        ELSE
-
 
390
            RETURN NULL;
-
 
391
        END IF;
-
 
392
 
-
 
393
    ELSE
-
 
394
        -- NO dot separator found --
-
 
395
        RETURN NULL;
-
 
396
    END IF;
-
 
397
 
-
 
398
END GET_V_EXT;
-
 
399
/
301
/
400
--------------------------------------------------------
302
--------------------------------------------------------
401
--  DDL for Function IN_LIST_VARCHAR2
303
--  DDL for Function IN_LIST_VARCHAR2
402
--------------------------------------------------------
304
--------------------------------------------------------
403
 
305
 
Line 432... Line 334...
432
 
334
 
433
	RETURN cItemCollection;
335
	RETURN cItemCollection;
434
END IN_LIST_VARCHAR2;
336
END IN_LIST_VARCHAR2;
435
/
337
/
436
--------------------------------------------------------
338
--------------------------------------------------------
437
--  DDL for Package PK_PROJECT
339
--  DDL for Function IS_NUMBER
438
--------------------------------------------------------
340
--------------------------------------------------------
439
 
341
 
440
  CREATE OR REPLACE PACKAGE "PK_PROJECT" IS
342
  CREATE OR REPLACE FUNCTION "IS_NUMBER" (p_val IN VARCHAR2) RETURN BOOLEAN
441
 
343
IS
442
    TYPE typecur IS REF CURSOR;
344
   temp_num NUMBER;
443
 
-
 
444
    /*------------------------------------------------------------------------*/
345
/* ---------------------------------------------------------------------------
445
    PROCEDURE update_base_url (
-
 
446
        nprojid   IN  projects.proj_id%TYPE,
-
 
447
        sbaseurl  IN  VARCHAR2
346
    Version: 1.0.0
448
    );
-
 
449
    /*------------------------------------------------------------------------*/
347
   --------------------------------------------------------------------------- */
450
    PROCEDURE update_project_config (
348
BEGIN
451
    nprojid   IN  projects.proj_id%TYPE,
349
   temp_num := TO_NUMBER(p_val);
452
    sbaseurl  IN  VARCHAR2,
350
   RETURN true;
453
    sjirakey  IN  VARCHAR2
351
EXCEPTION WHEN VALUE_ERROR THEN
454
    );
352
   RETURN false;
455
    /*------------------------------------------------------------------------*/
-
 
456
 
-
 
457
    END pk_project;
353
END IS_NUMBER;
458
/
354
/
459
--------------------------------------------------------
355
--------------------------------------------------------
460
--  DDL for Package PK_PACKAGE
356
--  DDL for Function IS_VERSION_EXTENSION
461
--------------------------------------------------------
357
--------------------------------------------------------
462
 
358
 
463
  CREATE OR REPLACE PACKAGE "PK_PACKAGE" 
359
  CREATE OR REPLACE FUNCTION "IS_VERSION_EXTENSION" (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
464
IS
360
IS
465
/*
-
 
466
------------------------------
361
/* ---------------------------------------------------------------------------
467
||  Last Modified:  Jeremy Tweddle
-
 
468
||  Modified Date:  24/08/2007
362
    Version: 3.0.0
469
||
-
 
470
------------------------------
363
   --------------------------------------------------------------------------- */
471
*/
-
 
472
   TYPE typecur IS REF CURSOR;
-
 
473
 
-
 
474
/*================================================================================================*/
-
 
475
   PROCEDURE new_version (
-
 
476
      nlastpvid                   IN       NUMBER,
-
 
477
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
-
 
478
      cbuildtype                  IN       CHAR,
-
 
479
      nsettopvid                  IN       NUMBER DEFAULT NULL,
-
 
480
      nrtagid                     IN       NUMBER,
-
 
481
      nuserid                     IN       NUMBER,
-
 
482
      enumissues_state_imported   IN       NUMBER,
-
 
483
      returnpvid                  OUT      NUMBER
-
 
484
   );
-
 
485
 
-
 
486
   PROCEDURE change_state (
-
 
487
      pvid       IN   NUMBER,
-
 
488
      newstate   IN   package_versions.dlocked%TYPE,
-
 
489
      userid     IN   NUMBER
-
 
490
   );
-
 
491
 
364
 
492
   PROCEDURE new_patch (
365
BEGIN
493
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
366
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
494
      nparentpvid        IN       NUMBER,
367
    THEN
495
      spatchidlist       IN       VARCHAR2,
368
        RETURN FALSE;
496
      nuserid            IN       NUMBER,
369
    ELSE
497
      returnpatchid      OUT      NUMBER
370
        RETURN TRUE;
498
   );
371
    END IF;
499
 
372
 
500
   PROCEDURE obsolete_patch (
373
END IS_VERSION_EXTENSION;
-
 
374
/
501
      patchid            IN   NUMBER,
375
--------------------------------------------------------
502
      isobsolete         IN   CHAR,
376
--  DDL for Function ORA_SYSDATE
503
      obsoletecomments   IN   VARCHAR2,
377
--------------------------------------------------------
504
      userid             IN   NUMBER
-
 
505
   );
-
 
506
 
378
 
507
   PROCEDURE obsolete_patches (
379
  CREATE OR REPLACE FUNCTION "ORA_SYSDATE" 
508
      spatchidlist       IN   VARCHAR2,
380
RETURN DATE
-
 
381
IS
509
      isobsolete         IN   CHAR,
382
/* ---------------------------------------------------------------------------
510
      obsoletecomments   IN   VARCHAR2,
383
    Version: 3.0.0
511
      userid             IN   NUMBER
384
   --------------------------------------------------------------------------- */
512
   );
385
BEGIN
513
 
386
 
-
 
387
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
514
   PROCEDURE destroy_package (
388
END ORA_SYSDATE;
-
 
389
/
515
      pvid               IN       NUMBER,
390
--------------------------------------------------------
516
      overridewarnings   IN       CHAR DEFAULT 'N',
391
--  DDL for Function ORA_SYSDATETIME
517
      problemstring      OUT      VARCHAR2
392
--------------------------------------------------------
518
   );
-
 
519
 
393
 
520
   PROCEDURE add_process (
-
 
521
      nprocid         IN   processes.proc_id%TYPE,
394
  CREATE OR REPLACE FUNCTION "ORA_SYSDATETIME" 
522
      shealthtag      IN   processes.proc_name%TYPE,
395
RETURN DATE
-
 
396
IS
523
      sprocdesc       IN   processes.proc_description%TYPE,
397
/* ---------------------------------------------------------------------------
524
      scmdinterface   IN   processes.run_as%TYPE,
398
    Version: 3.0.0
525
      spkgowner       IN   processes.pkg_owner%TYPE,
-
 
526
      sisinterface    IN   processes.is_interface%TYPE,
-
 
527
      npvid           IN   package_processes.pv_id%TYPE,
399
   --------------------------------------------------------------------------- */
528
      nuserid         IN   NUMBER
-
 
529
   );
400
BEGIN
530
 
401
 
531
   PROCEDURE add_package_process (
402
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
532
      nprocidlist   IN   VARCHAR2,
403
END ORA_SYSDATETIME;
-
 
404
/
533
      npvid         IN   package_processes.pv_id%TYPE,
405
--------------------------------------------------------
534
      nuserid       IN   NUMBER
406
--  DDL for Function PERL_DBD_TESTFUNC
535
   );
-
 
536
   
-
 
537
   
-
 
-
 
407
--------------------------------------------------------
538
 
408
 
539
   PROCEDURE remove_process (
-
 
540
      nprocid   IN   package_processes.proc_id%TYPE,
-
 
541
      npvid     IN   package_processes.pv_id%TYPE,
-
 
542
      nuserid   IN   NUMBER
-
 
543
   );
-
 
544
   
-
 
545
   PROCEDURE move_package (
-
 
546
   	  npvid  			  IN package_versions.pv_id%TYPE,
-
 
547
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
-
 
548
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
-
 
549
	  nuserid			  IN NUMBER		 
-
 
550
   ); 
-
 
551
   
-
 
552
   PROCEDURE modify_product_state (
-
 
553
   	  npvid IN package_versions.pv_id%TYPE,
-
 
554
	  nrtagid IN release_tags.rtag_id%TYPE,
-
 
555
	  nstateid IN product_states.state_id%TYPE,
-
 
556
	  nuserid IN NUMBER
-
 
557
   );
-
 
558
   
-
 
559
   PROCEDURE add_code_review_url (
-
 
560
        npvid           IN    NUMBER,
-
 
561
        nprojid         IN    NUMBER,
-
 
562
        surl            IN    VARCHAR2,
-
 
563
        sreason         IN    VARCHAR2,
-
 
564
        ddateofreview   IN    DATE
-
 
565
   );
-
 
566
    
-
 
567
   PROCEDURE update_code_review_url (
-
 
568
        ncrid           IN    NUMBER,
-
 
569
        nprojid         IN    NUMBER,
-
 
570
        surl            IN    VARCHAR2,
-
 
571
        sreason         IN    VARCHAR2
-
 
572
   );
-
 
573
        
-
 
574
   PROCEDURE remove_code_review_url (
-
 
575
        ncrid           IN    NUMBER
-
 
576
   );
-
 
577
/*================================================================================================*/
409
  CREATE OR REPLACE FUNCTION "PERL_DBD_TESTFUNC" (a in integer, b in integer) return integer is c integer; begin if b is null then c := 0; else c := b; end if; return a * c + 1; end;
578
END pk_package;
-
 
579
/
410
/
580
--------------------------------------------------------
411
--------------------------------------------------------
581
--  DDL for Package RM_ISSUES
412
--  DDL for Function RELEASE_MODE
582
--------------------------------------------------------
413
--------------------------------------------------------
583
 
414
 
584
  CREATE OR REPLACE PACKAGE "RM_ISSUES" AS
415
  CREATE OR REPLACE FUNCTION "RELEASE_MODE" ( nRtagId IN NUMBER ) RETURN CHAR IS
585
 
416
 
-
 
417
/* ---------------------------------------------------------------------------
586
	TYPE T_Cur IS REF CURSOR;
418
    Version: 3.0.0
-
 
419
   --------------------------------------------------------------------------- */
587
 
420
 
588
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
-
 
589
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
-
 
590
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
-
 
591
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
421
   returnValue CHAR(1);
592
 
422
 
593
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
-
 
594
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
-
 
595
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
-
 
-
 
423
BEGIN
596
 
424
 
-
 
425
    /*--------------- Business Rules Here -------------------*/
-
 
426
	/*-------------------------------------------------------*/
-
 
427
	
-
 
428
	-- Get release mode
-
 
429
	SELECT rt.OFFICIAL INTO returnValue
-
 
430
	  FROM RELEASE_TAGS rt
-
 
431
	 WHERE rt.RTAG_ID = nRtagId;
-
 
432
	
-
 
433
	RETURN returnValue;
-
 
434
	
597
END Rm_Issues;
435
END RELEASE_MODE;
598
/
436
/
599
--------------------------------------------------------
437
--------------------------------------------------------
600
--  DDL for Package PK_APP_UTILS
438
--  DDL for Package PK_APP_UTILS
601
--------------------------------------------------------
439
--------------------------------------------------------
602
 
440
 
Line 618... Line 456...
618
	/*================================================================================================*/
456
	/*================================================================================================*/
619
 
457
 
620
END PK_APP_UTILS;
458
END PK_APP_UTILS;
621
/
459
/
622
--------------------------------------------------------
460
--------------------------------------------------------
623
--  DDL for Package PK_RMAPI_TEST
461
--  DDL for Package PK_ARCHIVE
624
--------------------------------------------------------
462
--------------------------------------------------------
625
 
463
 
626
  CREATE OR REPLACE PACKAGE "PK_RMAPI_TEST" 
464
  CREATE OR REPLACE PACKAGE "PK_ARCHIVE" 
627
IS
465
IS
628
   TYPE typecur IS REF CURSOR;
-
 
629
 
-
 
630
/*================================================================================================*/
-
 
631
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
-
 
632
      RETURN typecur;
-
 
633
 
466
/*
634
   FUNCTION wip_iteration_package (
-
 
635
      projname        VARCHAR2,
467
------------------------------
636
      iterationname   VARCHAR2,
468
||  Author:  Rupesh Solanki
637
      pkgname         VARCHAR2
469
||  Date:    26 October 2006
638
   )
-
 
639
      RETURN typecur;
470
||  Version:   1.0
640
 
-
 
641
/* This version is to be deprecated when auto_make_vcsrelease is used */
-
 
642
   FUNCTION auto_make_release (
471
------------------------------
643
      rtagid                   IN   NUMBER,
-
 
644
      pkgname                  IN   VARCHAR2,
-
 
645
      vext                     IN   VARCHAR2,
-
 
646
      newpkgversion            IN   VARCHAR2,
-
 
647
      label                    IN   VARCHAR2,
-
 
648
      dependenciesimportlist   IN   VARCHAR2,
-
 
649
      isrippled                IN   NUMBER,
-
 
650
      username                 IN   VARCHAR2
-
 
651
   )
-
 
652
      RETURN NUMBER;
-
 
653
 
472
*/
654
   FUNCTION auto_make_vcsrelease (
-
 
655
      rtagid                   IN   NUMBER,
-
 
656
      pkgname                  IN   VARCHAR2,
-
 
657
      vext                     IN   VARCHAR2,
-
 
658
      newpkgversion            IN   VARCHAR2,
-
 
659
      vcstag                   IN   VARCHAR2,
-
 
660
      dependenciesimportlist   IN   VARCHAR2,
-
 
661
      isrippled                IN   NUMBER,
-
 
662
      username                 IN   VARCHAR2
-
 
663
   )
-
 
664
      RETURN NUMBER;
-
 
665
      
-
 
666
 
473
 
-
 
474
   /*================================================================================================*/
667
   PROCEDURE import_dependencies (
475
   PROCEDURE populate_packages_table;
-
 
476
   
668
      pvid                     IN   NUMBER,
477
   PROCEDURE populate_archive_data_table (
669
      dependenciesimportlist   IN   VARCHAR2,
-
 
670
      userid                   IN   NUMBER
478
      nrtagid   IN   release_tags.rtag_id%TYPE
671
   );
479
   );
672
 
480
 
673
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
-
 
674
      RETURN VARCHAR2;
-
 
675
 
-
 
676
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
-
 
677
      RETURN VARCHAR2;
-
 
678
 
-
 
679
   PROCEDURE update_dash_board (rtagid IN NUMBER);
-
 
680
 
-
 
681
   FUNCTION exclude_from_build (
-
 
682
      pvid          IN   NUMBER,
-
 
683
      spkgversion   IN   VARCHAR2,
-
 
684
      rtagid        IN   NUMBER,
-
 
685
      username      IN   VARCHAR2
-
 
686
   )
-
 
687
      RETURN NUMBER;
-
 
688
 
-
 
689
   FUNCTION exclude_indirect_from_build (
-
 
690
      pvid          IN   NUMBER,
-
 
691
      spkgversion   IN   VARCHAR2,
-
 
692
      rtagid        IN   NUMBER,
-
 
693
      username      IN   VARCHAR2,
-
 
694
      rootpvid      IN   NUMBER,
-
 
695
      rootcause     IN   VARCHAR2,
-
 
696
      rootfile      IN   VARCHAR2
-
 
697
   )
-
 
698
      RETURN NUMBER;
-
 
699
/*================================================================================================*/
-
 
700
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
481
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
701
 
-
 
702
   FUNCTION insert_package_metrics (
-
 
703
      rtagid IN NUMBER,
-
 
704
      pkgname IN VARCHAR2,
-
 
705
      vext IN VARCHAR2,
-
 
706
      metricstring IN VARCHAR2
-
 
707
   )
-
 
708
      RETURN NUMBER;
-
 
709
 
-
 
710
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
-
 
711
 
-
 
712
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2;
-
 
713
 
-
 
714
END pk_rmapi_test;
-
 
715
/
-
 
716
--------------------------------------------------------
-
 
717
--  DDL for Package PK_RMAPI
-
 
718
--------------------------------------------------------
-
 
719
 
-
 
720
  CREATE OR REPLACE PACKAGE "PK_RMAPI" 
-
 
721
IS
-
 
722
   TYPE typecur IS REF CURSOR;
-
 
723
 
-
 
724
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
-
 
725
      RETURN typecur;
-
 
726
 
-
 
727
   FUNCTION wip_iteration_package (
-
 
728
      projname        VARCHAR2,
-
 
729
      iterationname   VARCHAR2,
-
 
730
      pkgname         VARCHAR2
-
 
731
   )
-
 
732
      RETURN typecur;
-
 
733
 
-
 
734
   FUNCTION auto_make_vcsrelease (
-
 
735
      rtagid                   IN   NUMBER,
-
 
736
      pkgname                  IN   VARCHAR2,
-
 
737
      vext                     IN   VARCHAR2,
-
 
738
      newpkgversion            IN   VARCHAR2,
-
 
739
      vcstag                   IN   VARCHAR2,
-
 
740
      dependenciesimportlist   IN   VARCHAR2,
-
 
741
      isrippled                IN   NUMBER,
-
 
742
      username                 IN   VARCHAR2
-
 
743
   )
-
 
744
      RETURN NUMBER;
-
 
745
 
-
 
746
 
482
 
747
   PROCEDURE import_dependencies (
483
   PROCEDURE migrate_rtag_to_archive_schema (
748
      pvid                     IN   NUMBER,
484
      nrtagid   IN   release_tags.rtag_id%TYPE
749
      dependenciesimportlist   IN   VARCHAR2,
-
 
750
      userid                   IN   NUMBER
-
 
751
   );
485
   );
752
 
486
 
753
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
-
 
754
      RETURN VARCHAR2;
-
 
755
 
-
 
756
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
-
 
757
      RETURN VARCHAR2;
-
 
758
 
-
 
759
   PROCEDURE update_dash_board (rtagid IN NUMBER);
487
   PROCEDURE clean_up_archive_data_table (
760
 
-
 
761
   FUNCTION exclude_from_build (
-
 
762
      pvid          IN   NUMBER,
-
 
763
      spkgversion   IN   VARCHAR2,
-
 
764
      rtagid        IN   NUMBER,
-
 
765
      username      IN   VARCHAR2
-
 
766
   )
-
 
767
      RETURN NUMBER;
-
 
768
 
-
 
769
   FUNCTION exclude_indirect_from_build (
-
 
770
      pvid          IN   NUMBER,
-
 
771
      spkgversion   IN   VARCHAR2,
-
 
772
      rtagid        IN   NUMBER,
488
      nrtagid   IN   release_tags.rtag_id%TYPE
773
      username      IN   VARCHAR2,
-
 
774
      rootpvid      IN   NUMBER,
-
 
775
      rootcause     IN   VARCHAR2,
-
 
776
      rootfile      IN   VARCHAR2
-
 
777
   )
-
 
778
      RETURN NUMBER;
-
 
779
 
-
 
780
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
-
 
781
 
-
 
782
   FUNCTION insert_package_metrics (
-
 
783
      rtagid IN NUMBER,
-
 
784
      pkgname IN VARCHAR2,
-
 
785
      vext IN VARCHAR2,
-
 
786
      metricstring IN VARCHAR2
-
 
787
   )
489
   );
788
      RETURN NUMBER;
-
 
789
 
-
 
790
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
-
 
791
 
-
 
792
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2;
-
 
793
 
-
 
794
   PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER);
-
 
795
   
-
 
796
   FUNCTION isSVN( pkgid IN NUMBER ) RETURN NUMBER;
-
 
797
   
-
 
798
   FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) RETURN NUMBER;
-
 
799
 
490
 
-
 
491
   PROCEDURE write_action_log (
-
 
492
      nuserid   IN   NUMBER,
-
 
493
      nrtagid   IN   release_tags.rtag_id%TYPE
-
 
494
   );
-
 
495
/*================================================================================================*/
800
END pk_rmapi;
496
END pk_archive;
801
/
497
/
802
--------------------------------------------------------
498
--------------------------------------------------------
803
--  DDL for Package PK_BUILDAPI
499
--  DDL for Package PK_BUILDAPI
804
--------------------------------------------------------
500
--------------------------------------------------------
805
 
501
 
Line 991... Line 687...
991
      sdescription           IN   VARCHAR2
687
      sdescription           IN   VARCHAR2
992
   );
688
   );
993
END pk_buildapi;
689
END pk_buildapi;
994
/
690
/
995
--------------------------------------------------------
691
--------------------------------------------------------
996
--  DDL for Package PK_BUILDAPI_TEST
692
--  DDL for Package PK_ENVIRONMENT
997
--------------------------------------------------------
693
--------------------------------------------------------
998
 
694
 
999
  CREATE OR REPLACE PACKAGE "PK_BUILDAPI_TEST" IS
695
  CREATE OR REPLACE PACKAGE "PK_ENVIRONMENT" IS
1000
/*
696
/*
1001
------------------------------
697
------------------------------
1002
||  Last Modified:  S.Vukovic
698
||  Last Modified:  G.Huddy
1003
||  Modified Date:  30/Mar/2005
699
||  Modified Date:  28/May/2008
1004
||  Spec Version:   1.0
700
||  Spec Version:   1.2
1005
------------------------------
701
------------------------------
1006
*/
702
*/
1007
 
703
 
1008
	/*================================================================================================*/
-
 
1009
	PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
-
 
1010
								  sOsName IN VARCHAR2,
-
 
1011
								  sOrigFilePath IN VARCHAR2,
-
 
1012
								  sFileName IN VARCHAR2,
-
 
1013
								  sDestFilePath IN VARCHAR2,
-
 
1014
								  nByteSize IN NUMBER,
-
 
1015
								  sCRCcksum IN VARCHAR2 );
704
	TYPE typeCur IS REF CURSOR;
1016
 
705
 
1017
	PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 );
-
 
1018
    /*================================================================================================*/
-
 
1019
	FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER;
-
 
1020
	/*================================================================================================*/
-
 
1021
	
-
 
1022
	PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
-
 
1023
			  					   	 sWebServer IN VARCHAR2,
-
 
1024
									 sMailServer IN VARCHAR2,
-
 
1025
									 sMailSender IN VARCHAR2);
-
 
1026
	/*================================================================================================*/
-
 
1027
	
-
 
1028
	PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue IN VARCHAR2 );
-
 
1029
	/*================================================================================================*/
706
	/*================================================================================================*/
1030
	
707
 
-
 
708
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
-
 
709
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
-
 
710
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
-
 
711
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
712
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
713
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
714
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
-
 
715
 
-
 
716
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
717
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
718
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
719
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
720
 
-
 
721
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
-
 
722
 
-
 
723
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
-
 
724
 
-
 
725
 
-
 
726
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
727
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
728
 
-
 
729
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
730
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
731
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
1031
	PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER );
732
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
733
 
-
 
734
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
-
 
735
 
-
 
736
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
-
 
737
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
-
 
738
 
-
 
739
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
-
 
740
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
-
 
741
							 CloneFromPvId IN NUMBER );
-
 
742
 
-
 
743
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
744
 
-
 
745
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
746
 
-
 
747
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
748
 
-
 
749
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
750
 
-
 
751
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
1032
	/*================================================================================================*/
752
	/*================================================================================================*/
-
 
753
 
-
 
754
END PK_ENVIRONMENT;
-
 
755
/
-
 
756
--------------------------------------------------------
-
 
757
--  DDL for Package PK_LICENCING
-
 
758
--------------------------------------------------------
-
 
759
 
1033
	PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 );
760
  CREATE OR REPLACE PACKAGE "PK_LICENCING" IS
-
 
761
/*
-
 
762
------------------------------
-
 
763
||  Last Modified:  G.Huddy
-
 
764
||  Modified Date:  19/Aug/2008
-
 
765
||  Spec Version:   1.0
-
 
766
------------------------------
-
 
767
*/
-
 
768
 
-
 
769
   TYPE typeCur IS REF CURSOR;
-
 
770
 
1034
	/*================================================================================================*/	        
771
    /*================================================================================================*/
1035
    PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER );
772
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
-
 
773
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
-
 
774
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER );
-
 
775
   FUNCTION  IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER;
-
 
776
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER );
1036
	/*================================================================================================*/	
777
   /*================================================================================================*/
1037
	
778
 
1038
END PK_BUILDAPI_TEST;
779
END PK_LICENCING;
1039
/
780
/
1040
--------------------------------------------------------
781
--------------------------------------------------------
1041
--  DDL for Package PK_PACKAGE_TEST
782
--  DDL for Package PK_PACKAGE
1042
--------------------------------------------------------
783
--------------------------------------------------------
1043
 
784
 
1044
  CREATE OR REPLACE PACKAGE "PK_PACKAGE_TEST" 
785
  CREATE OR REPLACE PACKAGE "PK_PACKAGE" 
1045
IS
786
IS
1046
/*
787
/*
1047
------------------------------
788
------------------------------
1048
||  Last Modified:  Rupesh Solanki
789
||  Last Modified:  Jeremy Tweddle
1049
||  Modified Date:  18/05/2006
790
||  Modified Date:  24/08/2007
1050
||
791
||
1051
------------------------------
792
------------------------------
1052
*/
793
*/
1053
   TYPE typecur IS REF CURSOR;
794
   TYPE typecur IS REF CURSOR;
1054
 
795
 
Line 1128... Line 869...
1128
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
869
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
1129
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
870
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
1130
	  nuserid			  IN NUMBER		 
871
	  nuserid			  IN NUMBER		 
1131
   ); 
872
   ); 
1132
   
873
   
1133
PROCEDURE modify_product_state (
874
   PROCEDURE modify_product_state (
1134
   	  npvid IN package_versions.pv_id%TYPE,
875
   	  npvid IN package_versions.pv_id%TYPE,
-
 
876
	  nrtagid IN release_tags.rtag_id%TYPE,
1135
	  nstateid IN product_states.state_id%TYPE,
877
	  nstateid IN product_states.state_id%TYPE,
1136
	  nuserid IN NUMBER
878
	  nuserid IN NUMBER
1137
   );
879
   );
-
 
880
   
-
 
881
   PROCEDURE add_code_review_url (
-
 
882
        npvid           IN    NUMBER,
-
 
883
        nprojid         IN    NUMBER,
-
 
884
        surl            IN    VARCHAR2,
-
 
885
        sreason         IN    VARCHAR2,
-
 
886
        ddateofreview   IN    DATE
-
 
887
   );
-
 
888
    
-
 
889
   PROCEDURE update_code_review_url (
-
 
890
        ncrid           IN    NUMBER,
-
 
891
        nprojid         IN    NUMBER,
-
 
892
        surl            IN    VARCHAR2,
-
 
893
        sreason         IN    VARCHAR2
-
 
894
   );
-
 
895
        
-
 
896
   PROCEDURE remove_code_review_url (
-
 
897
        ncrid           IN    NUMBER
-
 
898
   );
1138
/*================================================================================================*/
899
/*================================================================================================*/
1139
END pk_package_Test;
900
END pk_package;
1140
/
901
/
1141
--------------------------------------------------------
902
--------------------------------------------------------
1142
--  DDL for Package PK_PLANNED
903
--  DDL for Package PK_PLANNED
1143
--------------------------------------------------------
904
--------------------------------------------------------
1144
 
905
 
Line 1163... Line 924...
1163
	/*================================================================================================*/
924
	/*================================================================================================*/
1164
 
925
 
1165
END PK_PLANNED;
926
END PK_PLANNED;
1166
/
927
/
1167
--------------------------------------------------------
928
--------------------------------------------------------
1168
--  DDL for Package PK_ENVIRONMENT_TEST
-
 
1169
--------------------------------------------------------
-
 
1170
 
-
 
1171
  CREATE OR REPLACE PACKAGE "PK_ENVIRONMENT_TEST" IS
-
 
1172
/*
-
 
1173
------------------------------
-
 
1174
||  Last Modified:  Rupesh Solanki
-
 
1175
||  Modified Date:  29/Jan/2007
-
 
1176
||  Spec Version:   1.1
-
 
1177
------------------------------
-
 
1178
*/
-
 
1179
 
-
 
1180
	TYPE typeCur IS REF CURSOR;
-
 
1181
 
-
 
1182
    /*================================================================================================*/
-
 
1183
 
-
 
1184
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
-
 
1185
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
-
 
1186
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
-
 
1187
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1188
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1189
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1190
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
-
 
1191
	
-
 
1192
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1193
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1194
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1195
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1196
	
-
 
1197
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
-
 
1198
 
-
 
1199
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
-
 
1200
	
-
 
1201
	
-
 
1202
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1203
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1204
 
-
 
1205
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1206
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1207
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1208
	
-
 
1209
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
-
 
1210
	
-
 
1211
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
-
 
1212
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
-
 
1213
	
-
 
1214
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN 
-
 
1215
			  			   	 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE, 
-
 
1216
							 CloneFromPvId IN NUMBER );
-
 
1217
							 
-
 
1218
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1219
							 
-
 
1220
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );							 
-
 
1221
							 
-
 
1222
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1223
	
-
 
1224
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );								 							 
-
 
1225
 
-
 
1226
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );	
-
 
1227
	/*================================================================================================*/
-
 
1228
 
-
 
1229
END PK_ENVIRONMENT_test;
-
 
1230
/
-
 
1231
--------------------------------------------------------
-
 
1232
--  DDL for Package PK_ENVIRONMENT
929
--  DDL for Package PK_PROJECT
1233
--------------------------------------------------------
930
--------------------------------------------------------
1234
 
931
 
1235
  CREATE OR REPLACE PACKAGE "PK_ENVIRONMENT" IS
932
  CREATE OR REPLACE PACKAGE "PK_PROJECT" IS
1236
/*
-
 
1237
------------------------------
-
 
1238
||  Last Modified:  G.Huddy
-
 
1239
||  Modified Date:  28/May/2008
-
 
1240
||  Spec Version:   1.2
-
 
1241
------------------------------
-
 
1242
*/
-
 
1243
 
-
 
1244
	TYPE typeCur IS REF CURSOR;
-
 
1245
 
-
 
1246
	/*================================================================================================*/
-
 
1247
 
-
 
1248
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
-
 
1249
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
-
 
1250
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
-
 
1251
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1252
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1253
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1254
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
-
 
1255
 
-
 
1256
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1257
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1258
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1259
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1260
 
-
 
1261
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
-
 
1262
 
-
 
1263
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
-
 
1264
 
-
 
1265
 
-
 
1266
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1267
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1268
 
-
 
1269
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1270
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1271
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1272
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1273
 
-
 
1274
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
-
 
1275
 
-
 
1276
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
-
 
1277
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
-
 
1278
 
-
 
1279
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
-
 
1280
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
-
 
1281
							 CloneFromPvId IN NUMBER );
-
 
1282
 
-
 
1283
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1284
 
-
 
1285
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1286
 
-
 
1287
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
-
 
1288
 
933
 
1289
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
934
    TYPE typecur IS REF CURSOR;
1290
 
935
 
-
 
936
    /*------------------------------------------------------------------------*/
-
 
937
    PROCEDURE update_base_url (
-
 
938
        nprojid   IN  projects.proj_id%TYPE,
-
 
939
        sbaseurl  IN  VARCHAR2
-
 
940
    );
1291
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
941
    /*------------------------------------------------------------------------*/
-
 
942
    PROCEDURE update_project_config (
-
 
943
    nprojid   IN  projects.proj_id%TYPE,
-
 
944
    sbaseurl  IN  VARCHAR2,
-
 
945
    sjirakey  IN  VARCHAR2
-
 
946
    );
1292
	/*================================================================================================*/
947
    /*------------------------------------------------------------------------*/
1293
 
948
 
1294
END PK_ENVIRONMENT;
949
    END pk_project;
1295
/
950
/
1296
--------------------------------------------------------
951
--------------------------------------------------------
1297
--  DDL for Package PK_RELEASE
952
--  DDL for Package PK_RELEASE
1298
--------------------------------------------------------
953
--------------------------------------------------------
1299
 
954
 
Line 1334... Line 989...
1334
	/*================================================================================================*/
989
	/*================================================================================================*/
1335
	
990
	
1336
END PK_RELEASE;
991
END PK_RELEASE;
1337
/
992
/
1338
--------------------------------------------------------
993
--------------------------------------------------------
1339
--  DDL for Package PK_WORK_IN_PROGRESS
994
--  DDL for Package PK_RMAPI
1340
--------------------------------------------------------
995
--------------------------------------------------------
1341
 
996
 
1342
  CREATE OR REPLACE PACKAGE "PK_WORK_IN_PROGRESS" IS
997
  CREATE OR REPLACE PACKAGE "PK_RMAPI" 
1343
/*
998
IS
1344
------------------------------
-
 
1345
||  Last Modified:  S.Vukovic
-
 
1346
||  Modified Date:  2/May/2005
-
 
1347
||  Spec Version:   1.0
999
   TYPE typecur IS REF CURSOR;
1348
------------------------------
-
 
1349
*/
-
 
1350
 
1000
 
-
 
1001
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
1351
	TYPE typeCur IS REF CURSOR;
1002
      RETURN typecur;
1352
 
1003
 
1353
    /*================================================================================================*/
1004
   FUNCTION wip_iteration_package (
1354
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
1005
      projname        VARCHAR2,
1355
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
1006
      iterationname   VARCHAR2,
1356
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
1007
      pkgname         VARCHAR2
-
 
1008
   )
-
 
1009
      RETURN typecur;
1357
 
1010
 
-
 
1011
   FUNCTION auto_make_vcsrelease (
1358
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
1012
      rtagid                   IN   NUMBER,
-
 
1013
      pkgname                  IN   VARCHAR2,
-
 
1014
      vext                     IN   VARCHAR2,
-
 
1015
      newpkgversion            IN   VARCHAR2,
1359
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
1016
      vcstag                   IN   VARCHAR2,
-
 
1017
      dependenciesimportlist   IN   VARCHAR2,
1360
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
1018
      isrippled                IN   NUMBER,
1361
	/*================================================================================================*/
1019
      username                 IN   VARCHAR2
-
 
1020
   )
-
 
1021
      RETURN NUMBER;
1362
 
1022
 
1363
END PK_WORK_IN_PROGRESS;
-
 
1364
/
-
 
1365
--------------------------------------------------------
-
 
1366
--  DDL for Package PK_LICENCING
-
 
1367
--------------------------------------------------------
-
 
1368
 
1023
 
1369
  CREATE OR REPLACE PACKAGE "PK_LICENCING" IS
1024
   PROCEDURE import_dependencies (
1370
/*
-
 
1371
------------------------------
-
 
1372
||  Last Modified:  G.Huddy
1025
      pvid                     IN   NUMBER,
1373
||  Modified Date:  19/Aug/2008
1026
      dependenciesimportlist   IN   VARCHAR2,
1374
||  Spec Version:   1.0
1027
      userid                   IN   NUMBER
1375
------------------------------
-
 
1376
*/
1028
   );
1377
 
1029
 
-
 
1030
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
1378
   TYPE typeCur IS REF CURSOR;
1031
      RETURN VARCHAR2;
1379
 
1032
 
1380
    /*================================================================================================*/
-
 
1381
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
-
 
1382
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
-
 
1383
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER );
-
 
1384
   FUNCTION  IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER;
1033
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
1385
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER );
1034
      RETURN VARCHAR2;
1386
   /*================================================================================================*/
-
 
1387
 
1035
 
1388
END PK_LICENCING;
-
 
1389
/
-
 
1390
--------------------------------------------------------
-
 
1391
--  DDL for Package PK_ARCHIVE
1036
   PROCEDURE update_dash_board (rtagid IN NUMBER);
1392
--------------------------------------------------------
-
 
1393
 
1037
 
1394
  CREATE OR REPLACE PACKAGE "PK_ARCHIVE" 
1038
   FUNCTION exclude_from_build (
1395
IS
-
 
1396
/*
-
 
1397
------------------------------
1039
      pvid          IN   NUMBER,
1398
||  Author:  Rupesh Solanki
1040
      spkgversion   IN   VARCHAR2,
1399
||  Date:    26 October 2006
1041
      rtagid        IN   NUMBER,
1400
||  Version:   1.0
1042
      username      IN   VARCHAR2
1401
------------------------------
-
 
1402
*/
1043
   )
-
 
1044
      RETURN NUMBER;
1403
 
1045
 
1404
   /*================================================================================================*/
1046
   FUNCTION exclude_indirect_from_build (
1405
   PROCEDURE populate_packages_table;
1047
      pvid          IN   NUMBER,
-
 
1048
      spkgversion   IN   VARCHAR2,
1406
   
1049
      rtagid        IN   NUMBER,
1407
   PROCEDURE populate_archive_data_table (
1050
      username      IN   VARCHAR2,
1408
      nrtagid   IN   release_tags.rtag_id%TYPE
1051
      rootpvid      IN   NUMBER,
-
 
1052
      rootcause     IN   VARCHAR2,
-
 
1053
      rootfile      IN   VARCHAR2
1409
   );
1054
   )
-
 
1055
      RETURN NUMBER;
1410
 
1056
 
1411
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
1057
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
1412
 
1058
 
1413
   PROCEDURE migrate_rtag_to_archive_schema (
1059
   FUNCTION insert_package_metrics (
1414
      nrtagid   IN   release_tags.rtag_id%TYPE
1060
      rtagid IN NUMBER,
-
 
1061
      pkgname IN VARCHAR2,
-
 
1062
      vext IN VARCHAR2,
-
 
1063
      metricstring IN VARCHAR2
1415
   );
1064
   )
-
 
1065
      RETURN NUMBER;
1416
 
1066
 
1417
   PROCEDURE clean_up_archive_data_table (
-
 
1418
      nrtagid   IN   release_tags.rtag_id%TYPE
1067
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
1419
   );
-
 
1420
 
1068
 
1421
   PROCEDURE write_action_log (
1069
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2;
-
 
1070
 
1422
      nuserid   IN   NUMBER,
1071
   PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER);
-
 
1072
   
1423
      nrtagid   IN   release_tags.rtag_id%TYPE
1073
   FUNCTION isSVN( pkgid IN NUMBER ) RETURN NUMBER;
1424
   );
1074
   
1425
/*================================================================================================*/
1075
   FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) RETURN NUMBER;
-
 
1076
 
1426
END pk_archive;
1077
END pk_rmapi;
1427
/
1078
/
1428
--------------------------------------------------------
1079
--------------------------------------------------------
1429
--  DDL for Package PK_RELEASE_TEST
1080
--  DDL for Package PK_WORK_IN_PROGRESS
1430
--------------------------------------------------------
1081
--------------------------------------------------------
1431
 
1082
 
1432
  CREATE OR REPLACE PACKAGE "PK_RELEASE_TEST" IS
1083
  CREATE OR REPLACE PACKAGE "PK_WORK_IN_PROGRESS" IS
1433
/*
1084
/*
1434
------------------------------
1085
------------------------------
1435
||  Last Modified:  S.Vukovic
1086
||  Last Modified:  S.Vukovic
1436
||  Modified Date:  12/Sep/2005
1087
||  Modified Date:  2/May/2005
1437
||  Body Version:   3.0
1088
||  Spec Version:   1.0
1438
------------------------------
1089
------------------------------
1439
*/
1090
*/
1440
 
1091
 
1441
	TYPE typeCur IS REF CURSOR;
1092
	TYPE typeCur IS REF CURSOR;
1442
 
1093
 
1443
    /*================================================================================================*/
1094
    /*================================================================================================*/
1444
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
-
 
1445
	PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER );
-
 
1446
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
-
 
1447
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
-
 
1448
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
-
 
1449
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
-
 
1450
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
-
 
1451
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
-
 
1452
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
-
 
1453
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
1095
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
1454
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1455
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
1096
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
1456
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
1097
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
-
 
1098
 
1457
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
1099
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
1458
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
1100
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
1459
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
-
 
1460
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
1101
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
1461
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
-
 
1462
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
-
 
1463
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
-
 
1464
	/*================================================================================================*/
1102
	/*================================================================================================*/
1465
	
1103
 
1466
END PK_RELEASE_TEST;
1104
END PK_WORK_IN_PROGRESS;
1467
/
1105
/
1468
--------------------------------------------------------
1106
--------------------------------------------------------
1469
--  DDL for Package Body PK_PLANNED
1107
--  DDL for Package RM_ISSUES
1470
--------------------------------------------------------
1108
--------------------------------------------------------
1471
 
1109
 
1472
  CREATE OR REPLACE PACKAGE BODY "PK_PLANNED" IS
1110
  CREATE OR REPLACE PACKAGE "RM_ISSUES" AS
1473
 
-
 
1474
/*
-
 
1475
------------------------------
-
 
1476
||  Last Modified:  G.Huddy
-
 
1477
||  Modified Date:  05/Aug/2008
-
 
1478
||  Body Version:   1.2
-
 
1479
------------------------------
-
 
1480
*/
-
 
1481
 
-
 
1482
 
-
 
1483
/*-------------------------------------------------------------------------------------------------------*/
-
 
1484
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
1485
 
-
 
1486
    oldPvId NUMBER;
-
 
1487
    ReleaseLocation VARCHAR2(4000);
-
 
1488
    IsPatch CHAR(1) := NULL;
-
 
1489
    sLocation VARCHAR2(4000) := NULL;
-
 
1490
    nRtagIdLocation NUMBER;
-
 
1491
 
-
 
1492
 
-
 
1493
 
-
 
1494
BEGIN
-
 
1495
    /*--------------- Business Rules Here -------------------*/
-
 
1496
    /*-------------------------------------------------------*/
-
 
1497
 
-
 
1498
    BEGIN
-
 
1499
        -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
-
 
1500
        SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
-
 
1501
          FROM PLANNED pl,
-
 
1502
               RELEASE_TAGS rt,
-
 
1503
               PROJECTS proj
-
 
1504
         WHERE pl.PV_ID = newPvId
-
 
1505
           AND pl.RTAG_ID = rt.RTAG_ID
-
 
1506
           AND rt.OFFICIAL != 'Y'
-
 
1507
           AND rt.PROJ_ID = proj.PROJ_ID;
-
 
1508
 
-
 
1509
        EXCEPTION
-
 
1510
            WHEN NO_DATA_FOUND THEN
-
 
1511
                sLocation := NULL;
-
 
1512
    END;
-
 
1513
 
-
 
1514
 
-
 
1515
 
-
 
1516
    IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
-
 
1517
 
-
 
1518
        -- Add to "Pending" area
-
 
1519
        INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
-
 
1520
        VALUES( RtagId, newPvId, ViewId, 'R' );
-
 
1521
 
-
 
1522
 
-
 
1523
        /* LOG ACTION */
-
 
1524
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
1525
          FROM PROJECTS proj,
-
 
1526
               RELEASE_TAGS rt
-
 
1527
         WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
1528
           AND rt.RTAG_ID = RtagId;
-
 
1529
 
-
 
1530
        Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
-
 
1531
 
-
 
1532
    ELSE
-
 
1533
 
-
 
1534
        RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
-
 
1535
 
-
 
1536
    END IF;
-
 
1537
 
-
 
1538
END;
-
 
1539
/*-------------------------------------------------------------------------------------------------------*/
-
 
1540
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
1541
 
-
 
1542
    ReleaseLocation VARCHAR2(4000);
-
 
1543
 
-
 
1544
BEGIN
-
 
1545
 
-
 
1546
    /*--------------- Business Rules Here -------------------*/
-
 
1547
    /*-------------------------------------------------------*/
-
 
1548
 
-
 
1549
 
-
 
1550
    -- Get release location for logging pusposes
-
 
1551
    SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
1552
      FROM PROJECTS proj,
-
 
1553
           RELEASE_TAGS rt
-
 
1554
     WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
1555
       AND rt.RTAG_ID = RtagId;
-
 
1556
 
-
 
1557
 
-
 
1558
    -- Delete from Work In Progress
-
 
1559
    DELETE
-
 
1560
      FROM PLANNED pl
-
 
1561
     WHERE pl.RTAG_ID = RtagId
-
 
1562
       AND pl.PV_ID = PvId;
-
 
1563
 
-
 
1564
    Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
-
 
1565
 
-
 
1566
 
-
 
1567
 
-
 
1568
 
-
 
1569
END;
-
 
1570
/*-------------------------------------------------------------------------------------------------------*/
-
 
1571
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
-
 
1572
 
-
 
1573
    ReturnValue NUMBER;
-
 
1574
 
-
 
1575
BEGIN
-
 
1576
    SELECT pl.VIEW_ID INTO ReturnValue
-
 
1577
      FROM PLANNED pl
-
 
1578
     WHERE pl.RTAG_ID = RtagId
-
 
1579
       AND pl.PV_ID = PvId;
-
 
1580
 
-
 
1581
    RETURN ReturnValue;
-
 
1582
END;
-
 
1583
/*-------------------------------------------------------------------------------------------------------*/
-
 
1584
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
-
 
1585
 
-
 
1586
    IsBaseView CHAR(1);
-
 
1587
 
-
 
1588
BEGIN
-
 
1589
 
-
 
1590
    -- Check if the view is BASE VIEW
-
 
1591
    SELECT vi.BASE_VIEW INTO IsBaseView
-
 
1592
      FROM VIEWS vi
-
 
1593
     WHERE vi.VIEW_ID = ViewId;
-
 
1594
 
-
 
1595
 
-
 
1596
    IF (IsBaseView = 'Y') THEN
-
 
1597
        -- Get Base view content
-
 
1598
        OPEN RecordSet FOR
-
 
1599
        SELECT 0 AS PKG_STATE,
-
 
1600
               NULL AS DEPRECATED_STATE,
-
 
1601
               pv.pv_id,
-
 
1602
               pkg.pkg_name,
-
 
1603
               pv.pkg_version,
-
 
1604
               pv.dlocked,
-
 
1605
               pv.pv_description,
-
 
1606
               pv.BUILD_TYPE,
-
 
1607
               rel.operation
-
 
1608
          FROM PLANNED rel,
-
 
1609
               packages pkg,
-
 
1610
               package_versions pv
-
 
1611
         WHERE pv.pkg_id = pkg.pkg_id
-
 
1612
           AND rel.pv_id = pv.pv_id
-
 
1613
           AND rel.VIEW_ID = ViewId
-
 
1614
           AND rel.RTAG_ID = RtagId
-
 
1615
         ORDER BY UPPER(pkg.PKG_NAME);
-
 
1616
 
1111
 
1617
    ELSE
1112
	TYPE T_Cur IS REF CURSOR;
1618
 
1113
 
1619
        -- Get non base view content
-
 
1620
        OPEN RecordSet FOR
-
 
1621
        SELECT 0 AS PKG_STATE,
-
 
1622
               NULL AS DEPRECATED_STATE,
1114
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
1623
               pv.pv_id,
-
 
1624
               pkg.pkg_name,
-
 
1625
               pv.pkg_version,
-
 
1626
               pv.dlocked,
-
 
1627
               pv.pv_description,
-
 
1628
               pv.BUILD_TYPE,
-
 
1629
               rel.operation
-
 
1630
          FROM PLANNED rel,
-
 
1631
               packages pkg,
-
 
1632
               package_versions pv,
-
 
1633
               VIEW_DEF vd
-
 
1634
         WHERE pv.pkg_id = pkg.pkg_id
1115
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
1635
           AND rel.pv_id = pv.pv_id
-
 
1636
           AND rel.RTAG_ID = RtagId
1116
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
1637
           AND vd.VIEW_ID = ViewId
-
 
1638
           AND vd.PKG_ID = pv.PKG_ID
-
 
1639
         ORDER BY UPPER(pkg.PKG_NAME);
1117
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
1640
 
1118
 
1641
    END IF;
-
 
-
 
1119
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
-
 
1120
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
-
 
1121
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
1642
 
1122
 
-
 
1123
END Rm_Issues;
-
 
1124
/
-
 
1125
--------------------------------------------------------
-
 
1126
--  DDL for Package Body PK_APP_UTILS
-
 
1127
--------------------------------------------------------
1643
 
1128
 
1644
END;
-
 
1645
/*-------------------------------------------------------------------------------------------------------*/
-
 
1646
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
1129
  CREATE OR REPLACE PACKAGE BODY "PK_APP_UTILS" IS
1647
 
1130
 
-
 
1131
/*
-
 
1132
------------------------------
-
 
1133
||  Last Modified:  S.Vukovic
-
 
1134
||  Modified Date:  26/Apr/2005
-
 
1135
||  Body Version:   1.0
-
 
1136
------------------------------
1648
BEGIN
1137
*/
1649
 
1138
 
1650
    UPDATE PLANNED pl SET
-
 
1651
    pl.VIEW_ID = NewViewId
-
 
1652
    WHERE pl.PV_ID = PvId
-
 
1653
      AND pl.RTAG_ID = RtagId;
-
 
1654
 
1139
 
1655
END;
-
 
1656
/*-------------------------------------------------------------------------------------------------------*/
1140
/*-------------------------------------------------------------------------------------------------------*/
1657
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
-
 
1658
-- version of a package as part of a release-to-release merge operation carried out within release manager.
-
 
1659
-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its
-
 
1660
-- opposite operation, if the opposite already exists in the planned table. This supports user activity
-
 
1661
-- via the Release Manager merge manager display
-
 
1662
 
-
 
1663
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
1141
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
1664
 
1142
 
1665
    ReleaseLocation VARCHAR2(4000);
-
 
1666
 
1143
 
1667
        entryExists NUMBER;
-
 
1668
        existingOperation CHAR;
-
 
1669
BEGIN
1144
BEGIN
1670
    /*--------------- Business Rules Here -------------------*/
-
 
1671
    /*-------------------------------------------------------*/
-
 
1672
 
1145
 
1673
      -- Determine if the specified PV_ID already exists in the planned table....
-
 
1674
      SELECT COUNT (pl.pv_id) INTO entryExists
-
 
1675
      FROM PLANNED pl
-
 
1676
      WHERE pl.pv_id = newPvId
-
 
1677
      AND pl.rtag_id = RtagId
-
 
1678
      AND pl.view_id = ViewId;
-
 
1679
 
1146
 
-
 
1147
	IF (NOT RtagId IS NULL) THEN
1680
      -- If the specified PV_ID already exists in the planned table....
1148
		-- Case with RTAG_ID present
-
 
1149
		OPEN records FOR
-
 
1150
		SELECT rt.PROJ_ID,
1681
      IF entryExists = 1 THEN
1151
			   rt.RTAG_ID AS RTAG_ID
-
 
1152
		  FROM RELEASE_TAGS rt
-
 
1153
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
1682
 
1154
 
1683
         -- Get the operation for the existing entry
1155
	ELSIF (NOT ProjId IS NULL) THEN
1684
         SELECT pl.operation INTO existingOperation
1156
		-- Case with PROJ_ID present
1685
         FROM PLANNED pl
1157
		OPEN records FOR
1686
         WHERE pl.pv_id = newPvId
1158
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
1687
         AND pl.rtag_id = RtagId
1159
			   -1 AS RTAG_ID
1688
         AND pl.view_id = ViewId;
1160
		  FROM DUAL;
1689
 
1161
 
-
 
1162
	ELSE
1690
         -- Is the specified merge operation the opposite of the existing entry?
1163
		-- Case with none present
1691
         -- If it is not, then there is nothing to do, otherwise...
1164
		OPEN records FOR
1692
         -- NOTE: A = Add, S = Subtract
1165
		SELECT -1 AS PROJ_ID,
1693
         IF (mergeOperation = 'S' AND existingOperation = 'A')
1166
			   -1 AS RTAG_ID
1694
            OR (mergeOperation = 'A' AND existingOperation = 'S') THEN
1167
		  FROM DUAL;
1695
 
1168
 
1696
           -- It is the opposite, so effectively it cancels the existing entry
-
 
1697
           -- Remove the entry from the planned table
-
 
1698
           DELETE
1169
	END IF;
1699
            FROM PLANNED pl
-
 
1700
           WHERE pl.pv_id = newPvId
-
 
1701
             AND pl.rtag_id = RtagId
-
 
1702
             AND pl.view_id = ViewId;
-
 
1703
 
1170
 
1704
           -- Log action
-
 
1705
           SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
1706
             FROM PROJECTS proj,
-
 
1707
                  RELEASE_TAGS rt
-
 
1708
            WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
1709
              AND rt.RTAG_ID = RtagId;
-
 
1710
 
1171
 
1711
           Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
-
 
1712
         END IF;
-
 
1713
      ELSE
-
 
1714
         -- Add to Planned tabled
-
 
1715
         INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
-
 
1716
         VALUES( RtagId, newPvId, ViewId, mergeOperation );
-
 
1717
 
1172
 
1718
         -- Log Action
-
 
1719
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
1720
          FROM PROJECTS proj,
-
 
1721
               RELEASE_TAGS rt
-
 
1722
         WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
1723
         AND   rt.RTAG_ID = RtagId;
-
 
1724
 
1173
 
1725
         Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
-
 
1726
      END IF;
1174
   	--RETURN records;
1727
 
1175
 
1728
END;
1176
END;
1729
/*-------------------------------------------------------------------------------------------------------*/
1177
/*-------------------------------------------------------------------------------------------------------*/
1730
END PK_PLANNED;
1178
END PK_APP_UTILS;
1731
/
1179
/
1732
--------------------------------------------------------
1180
--------------------------------------------------------
1733
--  DDL for Package Body PK_RMAPI
1181
--  DDL for Package Body PK_ARCHIVE
1734
--------------------------------------------------------
1182
--------------------------------------------------------
1735
 
1183
 
1736
  CREATE OR REPLACE PACKAGE BODY "PK_RMAPI" 
1184
  CREATE OR REPLACE PACKAGE BODY "PK_ARCHIVE" 
1737
IS
1185
IS
-
 
1186
/*
-
 
1187
------------------------------
-
 
1188
||  Author:  Rupesh Solanki
-
 
1189
||  Date:    26 October 2006
-
 
1190
||  Version:   1.0
-
 
1191
------------------------------
-
 
1192
*/
-
 
1193
/*---------------------------*/
-
 
1194
PROCEDURE populate_packages_table IS
1738
 
1195
 
1739
   /*-------------------------------------------------------------------------------------------------------*/
-
 
1740
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
-
 
1741
      RETURN typecur
-
 
1742
   IS
-
 
1743
      npvid     NUMBER  := 0;
-
 
1744
      RECORDS   typecur;
-
 
1745
   BEGIN
1196
BEGIN
1746
      BEGIN
-
 
1747
         -- Get PV_ID --
-
 
1748
         SELECT pv.pv_id
-
 
1749
           INTO npvid
-
 
1750
           FROM PACKAGES pkg, package_versions pv
-
 
1751
          WHERE pv.pkg_id = pkg.pkg_id
-
 
1752
            AND pkg.pkg_name = pkgname
1197
		  INSERT INTO archive_manager.PACKAGES
1753
            AND pv.pkg_version = pkgversion;
-
 
1754
      EXCEPTION
-
 
1755
         WHEN NO_DATA_FOUND
-
 
1756
         THEN
-
 
1757
            raise_application_error (-20000, 'Package Not Found!');
-
 
1758
            --WHEN OTHERS THEN
-
 
1759
                  -- Consider logging the error and then re-raise
-
 
1760
            RAISE;
-
 
1761
      END;
-
 
1762
 
-
 
1763
      -- Finally get package dependencies --
-
 
1764
      OPEN RECORDS FOR
-
 
1765
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
-
 
1766
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
-
 
1767
          WHERE dep.pv_id = npvid
-
 
1768
            AND dpv.pkg_id = dpkg.pkg_id
-
 
1769
            AND dpv.pv_id = dep.dpv_id;
-
 
1770
 
-
 
1771
      RETURN RECORDS;
-
 
1772
   END;
-
 
1773
 
-
 
1774
/*-------------------------------------------------------------------------------------------------------*/
-
 
1775
   FUNCTION wip_iteration_package (
-
 
1776
      projname        VARCHAR2,
-
 
1777
      iterationname   VARCHAR2,
-
 
1778
      pkgname         VARCHAR2
-
 
1779
   )
1198
		  (
1780
      RETURN typecur
-
 
1781
   IS
-
 
1782
      nrtagid   NUMBER  := 0;
-
 
1783
      RECORDS   typecur;
-
 
1784
   BEGIN
-
 
1785
      BEGIN
-
 
1786
         -- Get latest rtag_id --
-
 
1787
         SELECT rt.rtag_id
-
 
1788
           INTO nrtagid
-
 
1789
           FROM projects proj, release_tags rt
1199
		  select * from packages where pkg_id not in 
1790
          WHERE rt.proj_id = proj.proj_id
-
 
1791
            AND UPPER (proj.proj_name) = UPPER (projname)
1200
		  		  (select pkg_id from archive_manager.packages)
1792
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
-
 
1793
 
-
 
1794
         IF (nrtagid IS NULL)
-
 
1795
         THEN
-
 
1796
            raise_application_error (-20000,
-
 
1797
                                     'Work In Progress is Not Found!');
-
 
1798
         END IF;
-
 
1799
      EXCEPTION
-
 
1800
         WHEN NO_DATA_FOUND
-
 
1801
         THEN
-
 
1802
            raise_application_error (-20000,
-
 
1803
                                     'Work In Progress is Not Found!');
-
 
1804
            RAISE;
-
 
1805
      END;
1201
		  );
1806
 
1202
 
1807
      -- Finally get package dependencies --
1203
          INSERT INTO archive_manager.PROCESSES
1808
      OPEN RECORDS FOR
1204
          (
1809
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
-
 
1810
                pv.src_path
-
 
1811
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
1205
          select * from processes where proc_id not in 
1812
          WHERE pv.pkg_id = pkg.pkg_id
1206
            (select proc_id from archive_manager.processes)
1813
            AND wip.pv_id = pv.pv_id
1207
          );
1814
            AND wip.rtag_id = nrtagid
1208
            
1815
            AND pkg.pkg_name = pkgname;
-
 
1816
 
1209
 
1817
      RETURN RECORDS;
-
 
1818
   END;
-
 
1819
 
1210
 
-
 
1211
END;
1820
/*-------------------------------------------------------------------------------------------------------*/
1212
/*-------------------------------------------------------------------------------------------------------*/
1821
   FUNCTION auto_make_vcsrelease (
1213
   PROCEDURE populate_archive_data_table (
1822
      rtagid                   IN   NUMBER,
1214
      nrtagid   IN   release_tags.rtag_id%TYPE
1823
      pkgname                  IN   VARCHAR2,
-
 
1824
      vext                     IN   VARCHAR2,
-
 
1825
      newpkgversion            IN   VARCHAR2,
-
 
1826
      vcstag                   IN   VARCHAR2,
-
 
1827
      dependenciesimportlist   IN   VARCHAR2,
-
 
1828
      isrippled                IN   NUMBER,
-
 
1829
      username                 IN   VARCHAR2
-
 
1830
   )
1215
   )
1831
      RETURN NUMBER
-
 
1832
   IS
1216
   IS
1833
      pkgid                           NUMBER;
-
 
-
 
1217
/*
1834
      pvid                            NUMBER                        := 0;
1218
Reason: To populate the archive_data table with information regarding the
1835
      userid                          NUMBER;
-
 
1836
      dlocked                         VARCHAR2 (20)                 := NULL;
-
 
1837
      clonefrompvid                   NUMBER;
-
 
1838
      ssv_mm                          package_versions.v_mm%TYPE;
-
 
1839
      ssv_nmm                         package_versions.v_nmm%TYPE;
1219
         number of package versions that exist in other releases.
1840
      ssv_ext                         package_versions.v_ext%TYPE;
-
 
1841
      return_package_not_found        NUMBER                        := -1;
-
 
1842
      return_package_already_exists   NUMBER                        := -2;
-
 
1843
      return_not_approved             NUMBER                        := -3;
-
 
1844
      return_migrated_pkg             NUMBER                        := -4;
-
 
1845
 
1220
*/
1846
      x_vcstypeid                     NUMBER;
1221
      numcount      NUMBER;
1847
      x_tag                           VARCHAR2(32);
-
 
1848
      x_label                         VARCHAR2(60);
1222
      numusedby     NUMBER;
1849
      x_srcpath                       VARCHAR2(2000);
-
 
1850
      p_srcpath                       VARCHAR2(2000);
1223
      numruntime    NUMBER;
1851
 
1224
      
1852
      -- Regular expression constituents
1225
      /* Get all the package versions in the release */
1853
      Token         VARCHAR2(16) := '([^:]+)';  -- a token is anything except a ':' character
-
 
1854
      Seperator     VARCHAR2(4)  := '::';       -- tokens will be seperated by '::'
-
 
1855
      BOL           VARCHAR2(4)  := '^';
1226
      CURSOR archive_cur
1856
      Anything      VARCHAR2(4)  := '.*';
-
 
1857
      ReplaceToken1 VARCHAR2(4)  := '\1';
1227
      IS
1858
      ReplaceToken2 VARCHAR2(4)  := '\2';
1228
         SELECT pv_id
1859
      ReplaceToken3 VARCHAR2(4)  := '\3';
1229
           FROM release_content
1860
      iprev_modifier_id               NUMBER;
1230
          WHERE rtag_id = nrtagid;
1861
 
1231
 
-
 
1232
      archive_rec   archive_cur%ROWTYPE;
1862
   BEGIN
1233
   BEGIN
1863
      /*--------------- Business Rules Here -------------------*/
1234
/*--------------- Business Rules Here -------------------*/
1864
      IF (rtagid IS NULL)
-
 
1865
      THEN
-
 
1866
         raise_application_error (-20000, 'RtagId must be supplied.');
-
 
1867
      END IF;
-
 
1868
 
-
 
1869
      IF (pkgname IS NULL)
-
 
1870
      THEN
-
 
1871
         raise_application_error (-20000, 'PkgName must be supplied.');
-
 
1872
      END IF;
-
 
1873
 
-
 
1874
      IF (newpkgversion IS NULL)
-
 
1875
      THEN
-
 
1876
         raise_application_error (-20000, 'PkgVersion must be supplied.');
-
 
1877
      END IF;
-
 
1878
 
-
 
1879
      IF (vcstag IS NULL)
-
 
1880
      THEN
-
 
1881
         raise_application_error (-20000, 'PkgVcsTag must be supplied.');
-
 
1882
      END IF;
-
 
1883
 
-
 
1884
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
-
 
1885
      THEN
-
 
1886
         raise_application_error
-
 
1887
            (-20000,
-
 
1888
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
-
 
1889
            );
-
 
1890
      END IF;
-
 
1891
 
-
 
1892
      IF (username IS NULL)
-
 
1893
      THEN
-
 
1894
         raise_application_error (-20000, 'UserName must be supplied.');
-
 
1895
      END IF;
-
 
1896
 
-
 
1897
      -- Parse the PkgVcsTag
-
 
1898
      -- Sets up
-
 
1899
      --   x_tag, x_label, x_srcpath
-
 
1900
 
-
 
1901
       BEGIN
-
 
1902
          -- Extract the first token - this will be the short tag name for the VCS (eg. 'CC', 'SVN', etc)
-
 
1903
          x_tag := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Anything, ReplaceToken1);
-
 
1904
 
-
 
1905
          -- Decode the short tag
-
 
1906
          CASE x_tag
-
 
1907
             WHEN 'CC' THEN
-
 
1908
                -- extract the 2nd and 3rd tokens, those being the source path and label respectively
-
 
1909
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
-
 
1910
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
-
 
1911
 
-
 
1912
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
-
 
1913
                -- check for that error as well as the obvious zero-length string conditions.
-
 
1914
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
-
 
1915
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
-
 
1916
                END IF;
-
 
1917
 
-
 
1918
                IF isSVNbyName(pkgname) > 0 THEN
-
 
1919
				    -- Don't allow migrated packages to be released from a CC label
-
 
1920
					return return_migrated_pkg;
-
 
1921
                END IF;
-
 
1922
 
-
 
1923
             WHEN 'SVN' THEN
-
 
1924
                -- extract the 2nd token, that being the subversion tag
-
 
1925
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
-
 
1926
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
-
 
1927
 
-
 
1928
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
-
 
1929
                -- check for that error as well as the obvious zero-length string conditions.
-
 
1930
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
-
 
1931
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
-
 
1932
                END IF;
-
 
1933
 
-
 
1934
             WHEN 'UC' THEN
-
 
1935
                -- nothing to extract, just assign defaults
-
 
1936
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
-
 
1937
                x_label   := 'N/A';
-
 
1938
             ELSE
-
 
1939
                raise_application_error (-20000, 'Unrecognised VCS Tag!');
-
 
1940
          END CASE;
-
 
1941
       END;
-
 
1942
 
-
 
1943
      -- Get the VCS_TYPE_ID for the version control system.
-
 
1944
      BEGIN
-
 
1945
         SELECT vt.vcs_type_id
-
 
1946
         INTO x_vcstypeid
-
 
1947
         FROM VCS_TYPE vt
-
 
1948
         WHERE vt.tag = x_tag;
-
 
1949
         EXCEPTION
-
 
1950
            WHEN NO_DATA_FOUND THEN
-
 
1951
               raise_application_error (-20000, 'Database is missing a version control system tag (' || x_tag || ')!' );
-
 
1952
      END;
-
 
1953
 
-
 
1954
 
-
 
1955
      -- Get user_id
-
 
1956
      BEGIN
-
 
1957
         SELECT usr.user_id
-
 
1958
           INTO userid
-
 
1959
           FROM users usr
-
 
1960
          WHERE UPPER (usr.user_name) = UPPER (username)
-
 
1961
            AND usr.is_disabled IS NULL;
-
 
1962
      EXCEPTION
-
 
1963
         WHEN NO_DATA_FOUND
-
 
1964
         THEN
-
 
1965
            raise_application_error (-20000,
-
 
1966
                                        'UserName '
-
 
1967
                                     || username
-
 
1968
                                     || ' is not valid or disabled.'
-
 
1969
                                    );
-
 
1970
      END;
-
 
1971
 
-
 
1972
/*-------------------------------------------------------*/
1235
/*-------------------------------------------------------*/
-
 
1236
      OPEN archive_cur;
1973
 
1237
 
1974
      -- Create package if necessary
-
 
1975
      IF isrippled = 1
-
 
1976
      THEN
-
 
1977
         /* Ripple Build */
-
 
1978
         BEGIN
-
 
1979
            -- Make sure that package does not exist
-
 
1980
            SELECT pv.pv_id
-
 
1981
              INTO pvid
1238
      FETCH archive_cur
1982
              FROM package_versions pv, PACKAGES pkg
-
 
1983
             WHERE pv.pkg_id = pkg.pkg_id
-
 
1984
               AND pkg.pkg_name = pkgname
-
 
1985
               AND pv.pkg_version = newpkgversion;
-
 
1986
         EXCEPTION
-
 
1987
            WHEN NO_DATA_FOUND
-
 
1988
            THEN
-
 
1989
               pvid := 0;
1239
       INTO archive_rec;
1990
         END;
-
 
1991
 
-
 
1992
         IF (pvid = 0)
-
 
1993
         THEN
-
 
1994
            -- Split current version in parts
-
 
1995
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
-
 
1996
 
-
 
1997
            BEGIN
-
 
1998
               -- Find package to be replaced with the ripple package
-
 
1999
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
-
 
2000
               THEN
-
 
2001
                  SELECT pv.pv_id, pv.src_path
-
 
2002
                    INTO clonefrompvid, p_srcpath
-
 
2003
                    FROM PACKAGES pkg, package_versions pv,
-
 
2004
                         release_content rc
-
 
2005
                   WHERE rc.pv_id = pv.pv_id
-
 
2006
                     AND pv.pkg_id = pkg.pkg_id
-
 
2007
                     AND rc.rtag_id = rtagid
-
 
2008
                     AND pkg.pkg_name = pkgname
-
 
2009
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
-
 
2010
               ELSE
-
 
2011
                  SELECT pv.pv_id, pv.src_path
-
 
2012
                    INTO clonefrompvid, p_srcpath
-
 
2013
                    FROM PACKAGES pkg, package_versions pv,
-
 
2014
                         release_content rc
-
 
2015
                   WHERE rc.pv_id = pv.pv_id
-
 
2016
                     AND pv.pkg_id = pkg.pkg_id
-
 
2017
                     AND rc.rtag_id = rtagid
-
 
2018
                     AND pkg.pkg_name = pkgname
-
 
2019
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
-
 
2020
               END IF;
-
 
2021
            EXCEPTION
-
 
2022
               WHEN NO_DATA_FOUND
-
 
2023
               THEN
-
 
2024
                  raise_application_error
-
 
2025
                                        (-20000,
-
 
2026
                                            'Cannot get CloneFromPvId. VExt='
-
 
2027
                                         || vext
-
 
2028
                                         || ', RtagId='
-
 
2029
                                         || rtagid
-
 
2030
                                         || ', PkgName='
-
 
2031
                                         || pkgname
-
 
2032
                                         || ', SSV_EXT='
-
 
2033
                                         || ssv_ext
-
 
2034
                                        );
-
 
2035
            END;
-
 
2036
 
-
 
2037
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
-
 
2038
            THEN
-
 
2039
               -- Create package
-
 
2040
               seed_package_names_versions (pkgname,
-
 
2041
                                            newpkgversion,
-
 
2042
                                            userid,
-
 
2043
                                            pvid,
-
 
2044
                                            clonefrompvid
-
 
2045
                                           );
-
 
2046
            ELSE
-
 
2047
               -- Create package
-
 
2048
               seed_package_names_versions2 (pkgname,
-
 
2049
                                             newpkgversion,
-
 
2050
                                             userid,
-
 
2051
                                             pvid,
-
 
2052
                                             clonefrompvid
-
 
2053
                                            );
-
 
2054
            END IF;
-
 
2055
 
-
 
2056
            -- Update Package reason for release
-
 
2057
            UPDATE package_versions pv
-
 
2058
               SET pv.comments = 'Rippled Build.',
-
 
2059
                   pv.build_type = 'Y'
-
 
2060
             WHERE pv.pv_id = pvid;
-
 
2061
         ELSE
-
 
2062
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
-
 
2063
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
-
 
2064
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
-
 
2065
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
-
 
2066
            UPDATE package_versions pv
-
 
2067
               SET pv.release_notes_info = null,
-
 
2068
                   pv.modified_stamp = ora_sysdatetime
-
 
2069
             WHERE pv.pv_id = pvid;
-
 
2070
 
-
 
2071
            --DEVI-066151
-
 
2072
            log_action (pvid, 'package_rebuilt', userid, 'Package Re-built...');
-
 
2073
 
1240
 
-
 
1241
      WHILE archive_cur%FOUND
-
 
1242
      LOOP
2074
            RETURN return_package_already_exists;
1243
        /* How many packages depend on this package version? */
2075
         END IF;
1244
         SELECT COUNT (*)
-
 
1245
           INTO numusedby
-
 
1246
           FROM package_dependencies
-
 
1247
          WHERE dpv_id = archive_rec.pv_id;
2076
      ELSE
1248
        
-
 
1249
        /* How many project releases use this package version?  */
-
 
1250
         SELECT COUNT (*)
-
 
1251
           INTO numcount
-
 
1252
           FROM release_content
2077
         /* Auto build from Pending area */
1253
          WHERE pv_id = archive_rec.pv_id;
2078
 
1254
 
2079
         -- Find package in pending area
-
 
2080
         BEGIN
-
 
2081
            SELECT pv.pv_id, pv.dlocked, pv.src_path
-
 
2082
              INTO pvid, dlocked, p_srcpath
-
 
2083
              FROM planned pl, package_versions pv, PACKAGES pkg
1255
        /* How many packages have this package version as runtime
2084
             WHERE pl.pv_id = pv.pv_id
-
 
2085
               AND pv.pkg_id = pkg.pkg_id
-
 
2086
               AND pl.rtag_id = rtagid
-
 
2087
               AND pkg.pkg_name = pkgname
-
 
2088
               AND pv.dlocked = 'A'
-
 
2089
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
-
 
2090
               AND rownum = 1
1256
        dependency? */
2091
             ORDER BY pv.modified_stamp;
-
 
2092
         EXCEPTION
1257
         SELECT COUNT (*)
2093
            WHEN NO_DATA_FOUND
1258
           INTO numruntime
2094
            THEN
1259
           FROM runtime_dependencies
2095
               pvid := 0;
1260
          WHERE rtd_id = archive_rec.pv_id;
2096
         END;
-
 
2097
 
1261
 
2098
         IF (pvid = 0)
-
 
2099
         THEN
-
 
2100
            -- Package does not exist in pending area, hence report it
1262
        /* Insert into the archive_data table if they are not runtime dependant
2101
            RETURN return_package_not_found;
1263
        and package dependant and they exist in that particular release only*/
2102
         ELSIF (dlocked != 'A')
1264
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
2103
         THEN
1265
         THEN
2104
            -- Package is not approved for autobuild
1266
            INSERT INTO archive_data
2105
            RETURN return_not_approved;
1267
                        (rtag_id, pv_id
-
 
1268
                        )
-
 
1269
                 VALUES (nrtagid, archive_rec.pv_id
-
 
1270
                        );
2106
         END IF;
1271
         END IF;
2107
 
1272
 
2108
      END IF;
-
 
2109
 
-
 
2110
      -- Ensure Source Path does not change
-
 
2111
      -- Do not expect the SVN development branch to change
-
 
2112
      -- From the previous package
-
 
2113
      IF ( x_tag = 'SVN' AND p_srcpath != x_srcpath )
-
 
2114
      THEN
-
 
2115
        raise_application_error (-20000, 'Source Path does not match (' || p_srcpath || ','|| x_srcpath || ')' );
-
 
2116
      END IF;
-
 
2117
 
-
 
2118
      BEGIN
-
 
2119
         -- Import Dependencies
1273
         FETCH archive_cur
2120
         import_dependencies (pvid, dependenciesimportlist, userid);
-
 
2121
      END;
-
 
2122
 
-
 
2123
 
-
 
2124
      BEGIN
-
 
2125
         -- Split current version in parts
-
 
2126
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
-
 
2127
 
-
 
2128
         -- Update Package Details
-
 
2129
         UPDATE package_versions pv
-
 
2130
            SET pv.pkg_version = newpkgversion,
-
 
2131
                pv.v_ext = ssv_ext,
-
 
2132
                pv.v_mm = ssv_mm,
-
 
2133
                pv.v_nmm = ssv_nmm,
-
 
2134
                pv.src_path = x_srcpath,
-
 
2135
                pv.pkg_label = x_label,
-
 
2136
                pv.vcs_type_id = x_vcstypeid
-
 
2137
          WHERE pv.pv_id = pvid;
1274
          INTO archive_rec;
2138
      EXCEPTION
-
 
2139
         WHEN DUP_VAL_ON_INDEX
-
 
2140
         THEN
-
 
2141
            -- Package already exists, hence cannot be used for ripple build
-
 
2142
            RETURN return_package_already_exists;
-
 
2143
      END;
1275
      END LOOP;
2144
 
-
 
2145
      -- Update the is_autobuildable
-
 
2146
      UPDATE package_versions
-
 
2147
         SET is_autobuildable = 'Y'
-
 
2148
       WHERE pv_id = pvid;
-
 
2149
 
-
 
2150
      -- DEVI-063601
-
 
2151
      -- For planned builds the modifier_id shouldn't be set to buildadm.
-
 
2152
      -- To ensure this the modifier_id is obtained so it can be restored after
-
 
2153
      -- the function pk_environment.auto_make_release is called.
-
 
2154
      -- This function calls, change_state, which sets the modifier_id to the
-
 
2155
      -- specified userid, which for auto builds is buildadm.
-
 
2156
      SELECT pv.modifier_id INTO iprev_modifier_id
-
 
2157
      FROM package_versions pv WHERE pv.pv_id = pvid;
-
 
2158
 
-
 
2159
      -- Now release package
-
 
2160
      pk_environment.auto_make_release (pvid,
-
 
2161
                                        rtagid,
-
 
2162
                                        userid,
-
 
2163
                                        vext,
-
 
2164
                                        ssv_ext,
-
 
2165
                                        clonefrompvid
-
 
2166
                                       );
-
 
2167
 
-
 
2168
      -- DEVI-063601
-
 
2169
      -- if it is a planned build then restore the modifier_id to the previous modifier
-
 
2170
      UPDATE package_versions pv SET pv.modifier_id = iprev_modifier_id
-
 
2171
      WHERE pv.pv_id = pvid;
-
 
2172
 
-
 
2173
      --Now clean the PLANNED_VERSIONS table
-
 
2174
      SELECT pkg_id
-
 
2175
        INTO pkgid
-
 
2176
        FROM PACKAGES
-
 
2177
       WHERE pkg_name = pkgname;
-
 
2178
 
-
 
2179
      DELETE FROM planned_versions
-
 
2180
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
-
 
2181
 
-
 
2182
      RETURN pvid;
-
 
2183
   END;
1276
   END;
2184
 
1277
 
2185
/*-------------------------------------------------------------------------------------------------------*/
1278
/*-------------------------------------------------------------------------------------------------------*/
2186
   PROCEDURE import_dependencies (
1279
   PROCEDURE migrate_pv_to_archive_schema (
2187
      pvid                     IN   NUMBER,
1280
      nrtagid   IN   release_tags.rtag_id%TYPE
2188
      dependenciesimportlist   IN   VARCHAR2,
-
 
2189
      userid                   IN   NUMBER
-
 
2190
   )
1281
   )
2191
   IS
1282
   IS
2192
/*
-
 
2193
|| DependenciesImportList Format:
-
 
2194
|| "pkgA","1.0.0";"pkgB","2.0.0";
-
 
2195
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
-
 
2196
*/
-
 
2197
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
-
 
2198
         INDEX BY VARCHAR2 (4000);
-
 
2199
 
-
 
2200
      seperator         VARCHAR2 (2)           := '||';
-
 
2201
      pkgname           VARCHAR2 (4000);
-
 
2202
      pkgversion        VARCHAR2 (4000);
-
 
2203
      buildtype         VARCHAR2 (50);
-
 
2204
      pkgid             NUMBER;
-
 
2205
      vext              VARCHAR2 (4000);
-
 
2206
      dpvid             NUMBER;
-
 
2207
      slist             VARCHAR2 (4000);
-
 
2208
      cbuildtypes       tdictionary;
-
 
2209
      dependencyrow     NUMBER;
-
 
2210
      sdependency       VARCHAR2 (4000);
-
 
2211
      first_pos         VARCHAR2 (4000);
-
 
2212
      second_pos        VARCHAR2 (4000);
-
 
2213
      third_pos         VARCHAR2 (4000);
-
 
2214
      forth_pos         VARCHAR2 (4000);
-
 
2215
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
-
 
2216
 
-
 
2217
      CURSOR curbuildtype
-
 
2218
      IS
-
 
2219
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
-
 
2220
                dep.build_type
-
 
2221
           FROM package_dependencies dep, package_versions dpv
-
 
2222
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
-
 
2223
 
-
 
2224
      recbuildtype      curbuildtype%ROWTYPE;
-
 
2225
   BEGIN
1283
   BEGIN
2226
      slist := dependenciesimportlist;
-
 
2227
 
-
 
2228
      -- Preformat String
-
 
2229
      IF NOT slist IS NULL
-
 
2230
      THEN
-
 
2231
         slist := REPLACE (slist, ' ');                      -- Remove spaces
-
 
2232
         slist := REPLACE (slist, UTL_TCP.crlf);
-
 
2233
         -- Remove new line and carriage-return characters
-
 
2234
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
-
 
2235
      END IF;
-
 
2236
 
-
 
2237
      -- Get Current Dependencies
-
 
2238
      OPEN curbuildtype;
-
 
2239
 
-
 
2240
      FETCH curbuildtype
-
 
2241
       INTO recbuildtype;
-
 
2242
 
-
 
2243
      WHILE curbuildtype%FOUND
-
 
2244
      LOOP
-
 
2245
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
-
 
2246
 
-
 
2247
         FETCH curbuildtype
-
 
2248
          INTO recbuildtype;
-
 
2249
      END LOOP;
-
 
2250
 
-
 
2251
      CLOSE curbuildtype;
-
 
2252
 
-
 
2253
      -- Separate dependencies with ; separator
-
 
2254
      citemcollection := in_list_varchar2 (slist, ';');
-
 
2255
 
-
 
2256
      BEGIN
-
 
2257
         -- Remove old dependencies
-
 
2258
         DELETE FROM package_dependencies dep
-
 
2259
               WHERE dep.pv_id = pvid;
-
 
2260
 
-
 
2261
         -- Loop through dependencies
-
 
2262
         FOR dependencyrow IN 1 .. citemcollection.COUNT
-
 
2263
         LOOP
-
 
2264
            -- Extract pkg_name and pkg_version
-
 
2265
            sdependency := citemcollection (dependencyrow);
-
 
2266
            first_pos := INSTR (sdependency, '"', 1, 1);
-
 
2267
            second_pos := INSTR (sdependency, '"', 1, 2);
-
 
2268
            third_pos := INSTR (sdependency, '"', 1, 3);
-
 
2269
            forth_pos := INSTR (sdependency, '"', 1, 4);
-
 
2270
            pkgname :=
-
 
2271
               SUBSTR (sdependency,
-
 
2272
                       (first_pos + 1),
-
 
2273
                       (second_pos - first_pos - 1)
-
 
2274
                      );
-
 
2275
            pkgversion :=
-
 
2276
               SUBSTR (sdependency,
-
 
2277
                       (third_pos + 1),
-
 
2278
                       (forth_pos - third_pos - 1)
-
 
2279
                      );
-
 
2280
 
-
 
2281
            -- Dependency must exits to be linked against
-
 
2282
            BEGIN
-
 
2283
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
-
 
2284
                 INTO dpvid, pkgid, vext
-
 
2285
                 FROM package_versions pv, PACKAGES pkg
-
 
2286
                WHERE pv.pkg_id = pkg.pkg_id
-
 
2287
                  AND pkg.pkg_name = pkgname
-
 
2288
                  AND pv.pkg_version = pkgversion;
-
 
2289
            EXCEPTION
-
 
2290
               WHEN NO_DATA_FOUND
-
 
2291
               THEN
-
 
2292
                  raise_application_error
-
 
2293
                                  (-20000,
-
 
2294
                                      'Dependency ['
-
 
2295
                                   || pkgname
-
 
2296
                                   || ' '
-
 
2297
                                   || pkgversion
-
 
2298
                                   || '] does not exist yet and cannot be used!'
-
 
2299
                                  );
-
 
2300
            END;
-
 
2301
 
1284
 
-
 
1285
      /* MIGRATION - PACKAGE_VERSIONS */
2302
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
1286
      INSERT INTO archive_manager.package_versions
2303
            BEGIN
1287
         SELECT *
-
 
1288
           FROM package_versions
-
 
1289
          WHERE pv_id IN (SELECT pv_id
2304
               buildtype := cbuildtypes (pkgid || seperator || vext);
1290
                            FROM archive_data);
2305
 
1291
 
2306
               IF buildtype IS NULL
1292
      /* MIGRATION - PACKAGE_BUILD_ENV */
2307
               THEN
-
 
2308
                  -- Set build type to LinkPackageArchive by default
1293
      INSERT INTO archive_manager.package_build_env
2309
                  buildtype := 'L';
-
 
2310
               END IF;
-
 
2311
            EXCEPTION
1294
         SELECT *
2312
               WHEN NO_DATA_FOUND
1295
           FROM package_build_env
2313
               THEN
1296
          WHERE pv_id IN (SELECT pv_id
2314
                  buildtype := 'L';
1297
                            FROM archive_data);
2315
            END;
-
 
2316
 
1298
 
2317
            -- Insert Dependencies
1299
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
2318
            update_package_dependency (pvid,
1300
      DELETE FROM package_build_env
2319
                                       pkgname,
-
 
2320
                                       pkgversion,
-
 
2321
                                       buildtype,
-
 
2322
                                       userid,
-
 
2323
                                       0
1301
            WHERE pv_id IN (SELECT pv_id
2324
                                      );
1302
                              FROM archive_data);
2325
         END LOOP;
-
 
2326
      END;
-
 
2327
   END;
-
 
2328
 
1303
 
2329
/*-------------------------------------------------------------------------------------------------------*/
-
 
2330
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
-
 
2331
      RETURN VARCHAR2
1304
      /* MIGRATION - PACKAGE_BUILD_INFO */
2332
   IS
-
 
2333
      pkgversion   VARCHAR2 (4000);
1305
      INSERT INTO archive_manager.package_build_info
2334
   BEGIN
-
 
2335
      BEGIN
-
 
2336
         SELECT pv.pkg_version
1306
         SELECT *
2337
           INTO pkgversion
1307
           FROM package_build_info
2338
           FROM PACKAGES pkg, release_content rc, package_versions pv
-
 
2339
          WHERE pv.pv_id = rc.pv_id
1308
          WHERE pv_id IN (SELECT pv_id
2340
            AND pkg.pkg_id = pv.pkg_id
-
 
2341
            AND pkg.pkg_name = pkgname
-
 
2342
            AND rc.rtag_id = rtagid;
1309
                            FROM archive_data);
2343
 
1310
 
2344
         RETURN pkgversion;
1311
      /* PURGE DATA FROM PACKAGE_BUILD_info */
2345
      END;
1312
      DELETE FROM package_build_info
2346
   END;
1313
            WHERE pv_id IN (SELECT pv_id
-
 
1314
                              FROM archive_data);							  
2347
 
1315
 
2348
/*-------------------------------------------------------------------------------------------------------*/
-
 
2349
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
-
 
2350
      RETURN VARCHAR2
1316
      /* MIGRATION - UNIT_TESTS  */
2351
   IS
-
 
2352
      pkgversion   VARCHAR2 (4000);
1317
      INSERT INTO archive_manager.unit_tests
2353
   BEGIN
-
 
2354
      BEGIN
-
 
2355
         SELECT pv.pkg_version
1318
         SELECT *
2356
           INTO pkgversion
1319
           FROM unit_tests
2357
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
-
 
2358
          WHERE pv.pv_id = wip.pv_id
1320
          WHERE pv_id IN (SELECT pv_id
2359
            AND pkg.pkg_id = pv.pkg_id
-
 
2360
            AND pkg.pkg_name = pkgname
-
 
2361
            AND wip.rtag_id = rtagid;
1321
                            FROM archive_data);
2362
 
1322
 
2363
         IF pkgversion IS NULL
-
 
2364
         THEN
-
 
2365
            SELECT pv.pkg_version
1323
      /* PURGE DATA FROM UNIT_TESTS*/
2366
              INTO pkgversion
1324
      DELETE FROM unit_tests
2367
              FROM PACKAGES pkg, planned pl, package_versions pv
-
 
2368
             WHERE pv.pv_id = pl.pv_id
1325
            WHERE pv_id IN (SELECT pv_id
2369
               AND pkg.pkg_id = pv.pkg_id
-
 
2370
               AND pkg.pkg_name = pkgname
-
 
2371
               AND pl.rtag_id = rtagid;
1326
                              FROM archive_data);
2372
         END IF;
-
 
2373
 
1327
 
2374
         RETURN pkgversion;
1328
      /* MIGRATION - PACKAGE_PROCESSES */
-
 
1329
      INSERT INTO archive_manager.package_processes
2375
      END;
1330
         SELECT *
-
 
1331
           FROM package_processes
2376
   END;
1332
          WHERE pv_id IN (SELECT pv_id
-
 
1333
                            FROM archive_data);
2377
 
1334
 
2378
/*-------------------------------------------------------------------------------------------------------*/
-
 
2379
   PROCEDURE update_dash_board (rtagid IN NUMBER)
1335
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
2380
   IS
-
 
2381
      projid       NUMBER;
-
 
2382
      projiddb     NUMBER;
-
 
2383
      total        NUMBER;
-
 
2384
      auto_total   NUMBER;
-
 
2385
      rtagiddb     NUMBER;
-
 
2386
   BEGIN
-
 
2387
      SELECT COUNT (*)
1336
      DELETE FROM package_processes
2388
        INTO total
-
 
2389
        FROM release_content rc, package_versions pv
1337
            WHERE pv_id IN (SELECT pv_id
2390
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
1338
                              FROM archive_data);
2391
 
1339
 
2392
      SELECT COUNT (*)
1340
      /* MIGRATION - PACKAGE_DEPENDENCIES */
-
 
1341
      INSERT INTO archive_manager.package_dependencies
2393
        INTO auto_total
1342
         SELECT *
2394
        FROM release_content rc, package_versions pv
1343
           FROM package_dependencies
2395
       WHERE pv.pv_id = rc.pv_id
1344
          WHERE pv_id IN (SELECT pv_id
2396
         AND pv.is_autobuildable = 'Y'
-
 
2397
         AND rc.rtag_id = rtagid;
1345
                            FROM archive_data);
2398
 
1346
 
2399
      BEGIN
-
 
2400
         SELECT rtag_id
1347
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
2401
           INTO rtagiddb
1348
      DELETE FROM package_dependencies
2402
           FROM dash_board
1349
            WHERE pv_id IN (SELECT pv_id
2403
          WHERE rtag_id = rtagid;
1350
                              FROM archive_data);
2404
 
1351
 
2405
         SELECT proj_id
1352
      /* MIGRATION - CODE_REVIEWS */
2406
           INTO projiddb
1353
      INSERT INTO archive_manager.code_reviews
2407
           FROM dash_board
1354
         SELECT *
2408
          WHERE rtag_id = rtagid;
1355
           FROM code_reviews
2409
      EXCEPTION
-
 
2410
         WHEN NO_DATA_FOUND
1356
          WHERE pv_id IN (SELECT pv_id
2411
         THEN
-
 
2412
            rtagiddb := '';
1357
                            FROM archive_data);
2413
      END;
-
 
2414
 
1358
 
2415
      IF rtagiddb IS NULL
1359
      /* PURGE DATA FROM CODE_REVIEWS*/
2416
      THEN
-
 
2417
         SELECT proj_id
1360
      DELETE FROM code_reviews
2418
           INTO projid
1361
            WHERE pv_id IN (SELECT pv_id
2419
           FROM release_tags
1362
                              FROM archive_data);
2420
          WHERE rtag_id = rtagid;
-
 
2421
 
1363
 
2422
         INSERT INTO dash_board
-
 
2423
                     (proj_id, rtag_id, last_build_time, automated_packages,
-
 
2424
                      total_packages
1364
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
2425
                     )
-
 
2426
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
1365
      INSERT INTO archive_manager.runtime_dependencies
2427
                      total
-
 
2428
                     );
-
 
2429
      ELSE
1366
         SELECT *
2430
         UPDATE dash_board
-
 
2431
            SET last_build_time = ora_sysdatetime,
1367
           FROM runtime_dependencies
2432
                automated_packages = auto_total,
-
 
2433
                total_packages = total
1368
          WHERE pv_id IN (SELECT pv_id
2434
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
1369
                            FROM archive_data);
2435
      END IF;
-
 
2436
   END;
-
 
2437
 
1370
 
2438
/*-------------------------------------------------------------------------------------------------------*/
-
 
2439
   FUNCTION exclude_from_build (
-
 
2440
      pvid          IN   NUMBER,
1371
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
2441
      spkgversion   IN   VARCHAR2,
-
 
2442
      rtagid        IN   NUMBER,
1372
      DELETE FROM runtime_dependencies
2443
      username      IN   VARCHAR2
1373
            WHERE pv_id IN (SELECT pv_id
2444
   )
-
 
2445
      RETURN NUMBER
-
 
2446
   IS
-
 
2447
      userid              NUMBER;
-
 
2448
      outerrcode          NUMBER;
-
 
2449
      pkgid               NUMBER;
1374
                              FROM archive_data);
2450
 
1375
 
2451
      CURSOR dnr_duplicate_cur
1376
      /* MIGRATION - PACKAGE_DOCUMENTS */
2452
      IS
1377
      INSERT INTO archive_manager.package_documents
2453
         SELECT *
1378
         SELECT *
2454
           FROM do_not_ripple
1379
           FROM package_documents
2455
          WHERE pv_id = pvid AND rtag_id = rtagid;
1380
          WHERE pv_id IN (SELECT pv_id
2456
 
-
 
2457
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1381
                            FROM archive_data);
2458
   BEGIN
-
 
2459
      outerrcode := -1;       -- Set default return error code to ERROR state
-
 
2460
 
1382
 
2461
      /*--------------- Business Rules Here -------------------*/
1383
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
2462
      IF (rtagid IS NULL)
1384
      DELETE FROM package_documents
2463
      THEN
-
 
2464
         RETURN outerrcode;
1385
            WHERE pv_id IN (SELECT pv_id
2465
--         raise_application_error (-20000, 'RtagId must be supplied.');
1386
                              FROM archive_data);
2466
      END IF;
-
 
2467
 
1387
 
2468
      IF (pvid IS NULL)
1388
      /* MIGRATION - PACKAGE_PATCHES */
-
 
1389
      INSERT INTO archive_manager.package_patches
2469
      THEN
1390
         SELECT *
2470
         RETURN outerrcode;
1391
           FROM package_patches
2471
--         raise_application_error (-20000, 'PvId must be supplied.');
1392
          WHERE pv_id IN (SELECT pv_id
2472
      END IF;
1393
                            FROM archive_data);
2473
 
1394
 
2474
      IF (username IS NULL)
1395
      /* PURGE DATA FROM PACKAGE_PATCHES*/
2475
      THEN
1396
      DELETE FROM package_patches
2476
         RETURN outerrcode;
1397
            WHERE pv_id IN (SELECT pv_id
2477
--         raise_application_error (-20000, 'UserName must be supplied.');
1398
                              FROM archive_data);
2478
      END IF;
-
 
2479
 
1399
 
2480
      -- Get user_id
1400
      /* MIGRATION - CQ_ISSUES */
2481
      BEGIN
-
 
2482
         SELECT usr.user_id
1401
      INSERT INTO archive_manager.cq_issues
2483
           INTO userid
1402
         SELECT *
2484
           FROM users usr
1403
           FROM cq_issues
2485
          WHERE UPPER (usr.user_name) = UPPER (username)
-
 
2486
            AND usr.is_disabled IS NULL;
1404
          WHERE pv_id IN (SELECT pv_id
2487
      EXCEPTION
-
 
2488
         WHEN NO_DATA_FOUND
-
 
2489
         THEN
-
 
2490
            RETURN outerrcode;
-
 
2491
--            raise_application_error (-20000,
-
 
2492
--                                        'UserName '
-
 
2493
--                                     || username
-
 
2494
--                                     || ' is not valid or disabled.'
-
 
2495
--                                    );
1405
                            FROM archive_data);
2496
      END;
-
 
2497
 
1406
 
-
 
1407
      /* PURGE DATA FROM CQ_ISSUES*/
2498
      OPEN dnr_duplicate_cur;
1408
      DELETE FROM cq_issues
-
 
1409
            WHERE pv_id IN (SELECT pv_id
-
 
1410
                              FROM archive_data);
2499
 
1411
 
-
 
1412
      /* MIGRATION - ADDITIONAL_NOTES */
-
 
1413
      INSERT INTO archive_manager.additional_notes
-
 
1414
         SELECT *
2500
      FETCH dnr_duplicate_cur
1415
           FROM additional_notes
2501
       INTO dnr_duplicate_rec;
1416
          WHERE pv_id IN (SELECT pv_id
-
 
1417
                            FROM archive_data);
2502
 
1418
 
2503
      IF dnr_duplicate_cur%FOUND
1419
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
2504
      THEN
1420
      DELETE FROM additional_notes
2505
         outerrcode := 0;
1421
            WHERE pv_id IN (SELECT pv_id
2506
      END IF;
1422
                              FROM archive_data);
2507
 
1423
 
2508
      IF dnr_duplicate_cur%NOTFOUND
1424
      /* MIGRATION - RELEASE_COMPONENTS */
-
 
1425
      INSERT INTO archive_manager.release_components
2509
      THEN
1426
         SELECT *
2510
         /* No duplicate recordset */
1427
           FROM release_components
2511
         unripple_package (pvid, rtagid, userid);
1428
          WHERE pv_id IN (SELECT pv_id
2512
         outerrcode := 0;                            -- Set return to SUCCESS
1429
                            FROM archive_data);
2513
      END IF;
-
 
2514
 
1430
 
-
 
1431
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
2515
      CLOSE dnr_duplicate_cur;
1432
      DELETE FROM release_components
-
 
1433
            WHERE pv_id IN (SELECT pv_id
-
 
1434
                              FROM archive_data);
2516
 
1435
 
2517
      SELECT pkg_id
1436
      /* MIGRATION - IGNORE_WARNINGS */
-
 
1437
      INSERT INTO archive_manager.ignore_warnings
2518
        INTO pkgid
1438
         SELECT *
2519
        FROM package_versions
1439
           FROM ignore_warnings
2520
       WHERE pv_id = pvid;
1440
          WHERE pv_id IN (SELECT pv_id
-
 
1441
                            FROM archive_data);
2521
 
1442
 
-
 
1443
      /* PURGE DATA FROM IGNORE_WARNINGS*/
2522
      DELETE FROM planned_versions
1444
      DELETE FROM ignore_warnings
2523
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
1445
            WHERE pv_id IN (SELECT pv_id
-
 
1446
                              FROM archive_data);
2524
 
1447
 
-
 
1448
      /* PURGE DATA FROM WORK_IN_PROGRESS */
2525
      RETURN outerrcode;
1449
      DELETE FROM work_in_progress
2526
   END;
1450
            WHERE rtag_id = nrtagid;
2527
 
1451
 
2528
/*-------------------------------------------------------------------------------------------------------*/
-
 
2529
   FUNCTION exclude_indirect_from_build (
-
 
2530
      pvid          IN   NUMBER,
-
 
2531
      spkgversion   IN   VARCHAR2,
-
 
2532
      rtagid        IN   NUMBER,
-
 
2533
      username      IN   VARCHAR2,
1452
      /* PURGE DATA FROM PLANNED */
2534
      rootpvid      IN   NUMBER,
-
 
2535
      rootcause     IN   VARCHAR2,
-
 
2536
      rootfile      IN   VARCHAR2
-
 
2537
   )
-
 
2538
      RETURN NUMBER
1453
      DELETE FROM planned
2539
   IS
-
 
2540
      userid              NUMBER;
-
 
2541
      outerrcode          NUMBER;
-
 
2542
      pkgid               NUMBER;
1454
            WHERE rtag_id = nrtagid;
2543
 
1455
 
2544
      CURSOR dnr_duplicate_cur
1456
      /* MIGRATION - JIRA_ISSUES */
2545
      IS
1457
      INSERT INTO archive_manager.jira_issues
2546
         SELECT *
1458
         SELECT *
2547
           FROM do_not_ripple
1459
           FROM jira_issues
2548
          WHERE pv_id = pvid AND rtag_id = rtagid;
1460
          WHERE pv_id IN (SELECT pv_id
2549
 
-
 
2550
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1461
                            FROM archive_data);
2551
   BEGIN
-
 
2552
      outerrcode := -1;       -- Set default return error code to ERROR state
-
 
2553
 
-
 
2554
      /*--------------- Business Rules Here -------------------*/
-
 
2555
      IF (rtagid IS NULL)
-
 
2556
      THEN
-
 
2557
         RETURN outerrcode;
-
 
2558
--         raise_application_error (-20000, 'RtagId must be supplied.');
-
 
2559
      END IF;
-
 
2560
 
1462
 
2561
      IF (pvid IS NULL)
1463
      /* PURGE DATA FROM JIRA_ISSUES*/
2562
      THEN
1464
      DELETE FROM jira_issues
2563
         RETURN outerrcode;
1465
            WHERE pv_id IN (SELECT pv_id
2564
--         raise_application_error (-20000, 'PvId must be supplied.');
1466
                              FROM archive_data);
2565
      END IF;
-
 
2566
 
1467
 
2567
      IF (username IS NULL)
1468
      /* MIGRATION - PRODUCT_COMPONENTS */
-
 
1469
      INSERT INTO archive_manager.product_components
2568
      THEN
1470
         SELECT *
2569
         RETURN outerrcode;
1471
           FROM product_components
2570
--         raise_application_error (-20000, 'UserName must be supplied.');
1472
          WHERE pv_id IN (SELECT pv_id
2571
      END IF;
1473
                            FROM archive_data);
2572
 
1474
 
2573
      -- Get user_id
-
 
2574
      BEGIN
-
 
2575
         SELECT usr.user_id
-
 
2576
           INTO userid
-
 
2577
           FROM users usr
-
 
2578
          WHERE UPPER (usr.user_name) = UPPER (username)
-
 
2579
            AND usr.is_disabled IS NULL;
1475
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
2580
      EXCEPTION
-
 
2581
         WHEN NO_DATA_FOUND
-
 
2582
         THEN
-
 
2583
            RETURN outerrcode;
1476
      DELETE FROM product_components
2584
--            raise_application_error (-20000,
1477
            WHERE pv_id IN (SELECT pv_id
2585
--                                        'UserName '
-
 
2586
--                                     || username
1478
                              FROM archive_data);
2587
--                                     || ' is not valid or disabled.'
-
 
2588
--                                    );
-
 
2589
      END;
-
 
2590
 
1479
 
2591
     /* No duplicate recordset */
1480
      /* MIGRATION - ACTION_LOG */
2592
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
1481
      INSERT INTO archive_manager.action_log
-
 
1482
         SELECT *
-
 
1483
           FROM action_log
-
 
1484
          WHERE pv_id IN (SELECT pv_id
2593
     outerrcode := 0;                            -- Set return to SUCCESS
1485
                            FROM archive_data);
2594
 
1486
 
2595
      SELECT pkg_id
1487
      /* PURGE DATA FROM ACTION_LOG*/
2596
        INTO pkgid
1488
      DELETE FROM action_log
2597
        FROM package_versions
1489
            WHERE pv_id IN (SELECT pv_id
2598
       WHERE pv_id = pvid;
1490
                              FROM archive_data);
2599
 
1491
 
2600
      DELETE FROM planned_versions
-
 
2601
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
-
 
2602
 
1492
 
2603
      RETURN outerrcode;
-
 
2604
   END;
-
 
2605
/*-------------------------------------------------------------------------------------------------------*/
-
 
2606
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
-
 
2607
   IS
-
 
2608
   BEGIN
-
 
2609
      INSERT INTO abt_action_log
-
 
2610
                  (rcon_id, action_datetime, action
-
 
2611
                  )
-
 
2612
           VALUES (rconid, ora_sysdatetime, action
-
 
2613
                  );
-
 
2614
   END;
1493
   END;
2615
 
1494
 
2616
/*-------------------------------------------------------------------------------------------------------*/
1495
/*-------------------------------------------------------------------------------------------------------*/
2617
   FUNCTION insert_package_metrics (
1496
   PROCEDURE migrate_rtag_to_archive_schema (
2618
      rtagid                   IN   NUMBER,
1497
      nrtagid   IN   release_tags.rtag_id%TYPE
2619
      pkgname                  IN   VARCHAR2,
-
 
2620
      vext                     IN   VARCHAR2,
-
 
2621
      metricstring             IN   VARCHAR2
-
 
2622
   )
1498
   )
2623
      RETURN NUMBER
-
 
2624
   IS
1499
   IS
2625
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
-
 
2626
      lv_pvid                  NUMBER                 := 0;
1500
   BEGIN
2627
      rownumber                NUMBER;
1501
      /* MIGRATION - DO_NOT_RIPPLE */
2628
      rowcontent               VARCHAR2(4000);
1502
      INSERT INTO archive_manager.do_not_ripple
2629
      metricname               VARCHAR2(1000);
1503
         SELECT *
2630
      metricvalue              VARCHAR2(4000);
1504
           FROM do_not_ripple dnp
2631
      return_insert_error      NUMBER                 := -1;
-
 
2632
      return_insert_success    NUMBER                 := 0;
1505
          WHERE rtag_id = nrtagid;
2633
 
1506
 
2634
      /* Metrics */
-
 
2635
      lv_branches                 NUMBER;
-
 
2636
      lv_branchlist               VARCHAR2(4000);
-
 
2637
      lv_codefiles                NUMBER;
1507
      /* PURGE DATA FROM DO_NOT_RIPPLE */
2638
      lv_ignoredfiles             NUMBER;
-
 
2639
      lv_directories              NUMBER;
1508
      DELETE FROM do_not_ripple
2640
      lv_directorydepth           NUMBER;
1509
            WHERE rtag_id = nrtagid;
-
 
1510
			
2641
      lv_totalfiles               NUMBER;
1511
      /* MIGRATION - ADVISORY_RIPPLES*/
2642
      lv_makefiles                NUMBER;
1512
      INSERT INTO archive_manager.advisory_ripples
2643
      lv_blanklines               NUMBER;
1513
         SELECT *
2644
      lv_codelines                NUMBER;
1514
           FROM advisory_ripple dnp
2645
      lv_commentlines             NUMBER;
1515
          WHERE rtag_id = nrtagid;
2646
 
1516
 
2647
   BEGIN
-
 
2648
      /*--------------- Business Rules Here -------------------*/
1517
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
2649
      IF (rtagid IS NULL)
1518
      DELETE FROM advisory_ripple
2650
      THEN
-
 
2651
         RETURN return_insert_error;
1519
            WHERE rtag_id = nrtagid;			
2652
      END IF;
-
 
2653
 
1520
 
2654
      IF (pkgname IS NULL)
1521
      /* MIGRATION - RELEASE_CONTENT */
-
 
1522
      INSERT INTO archive_manager.release_content
2655
      THEN
1523
         SELECT *
2656
         RETURN return_insert_error;
1524
           FROM release_content
2657
      END IF;
1525
          WHERE rtag_id = nrtagid;
2658
 
1526
 
2659
      IF (metricstring IS NULL)
1527
      /* PURGE DATA FROM RELEASE_CONTENT*/
2660
      THEN
1528
      DELETE FROM release_content
2661
         RETURN return_insert_error;
1529
            WHERE rtag_id = nrtagid;
2662
      END IF;
-
 
2663
 
1530
 
2664
      BEGIN
-
 
2665
         SELECT pv.pv_id
-
 
2666
           INTO lv_pvid
-
 
2667
           FROM package_versions pv, packages pkg, release_content rc
-
 
2668
          WHERE pv.pkg_id = pkg.pkg_id
-
 
2669
            AND rc.rtag_id = rtagid
-
 
2670
            AND pv.pv_id = rc.pv_id
1531
      /* MIGRATION - NOTIFICATION_HISTORY */
2671
            AND pkg.pkg_name = pkgname
1532
      INSERT INTO archive_manager.notification_history
2672
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
-
 
2673
      EXCEPTION
1533
         SELECT *
2674
           WHEN NO_DATA_FOUND
1534
           FROM notification_history
2675
           THEN
-
 
2676
                lv_pvid := 0;
1535
          WHERE rtag_id = nrtagid;
2677
      END;
-
 
2678
 
1536
 
-
 
1537
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
2679
      citemcollection := in_list_varchar2 (metricstring, ';');
1538
      DELETE FROM notification_history
-
 
1539
            WHERE rtag_id = nrtagid;
2680
 
1540
 
-
 
1541
      /* MIGRATION - BUILD_ORDER   */
2681
      FOR rownumber IN 1 .. citemcollection.COUNT
1542
      INSERT INTO archive_manager.build_order
2682
      LOOP
1543
         SELECT *
2683
         rowcontent := citemcollection(rownumber);
1544
           FROM build_order
2684
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
-
 
2685
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
1545
          WHERE rtag_id = nrtagid;
2686
 
1546
 
2687
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
-
 
2688
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
-
 
2689
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
1547
      /* PURGE DATA FROM BUILD_ORDER*/
2690
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
-
 
2691
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
-
 
2692
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
-
 
2693
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
-
 
2694
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
-
 
2695
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
-
 
2696
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
-
 
2697
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
-
 
2698
         END IF;
1548
      DELETE FROM build_order
2699
      END LOOP;
1549
            WHERE rtag_id = nrtagid;
2700
 
1550
 
2701
      IF (lv_pvid > 0)
1551
      /* MIGRATION - PROJECT_ACTION_LOG */
-
 
1552
      INSERT INTO archive_manager.project_action_log
2702
      THEN
1553
         SELECT *
2703
         -- Delete any existing entries for this package version to makes sure our data is untainted
-
 
2704
         DELETE FROM package_metrics pm
1554
           FROM project_action_log
2705
         WHERE pm.pv_id = lv_pvid;
1555
          WHERE rtag_id = nrtagid;
2706
 
1556
 
2707
         -- Insert the new data into the metrics table
1557
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
2708
         INSERT INTO package_metrics
1558
      DELETE FROM project_action_log
2709
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
-
 
2710
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
-
 
2711
                     )
-
 
2712
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
-
 
2713
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
-
 
2714
                     );
1559
            WHERE rtag_id = nrtagid;
2715
 
1560
 
-
 
1561
      /* MIGRATION - DEPRECATED_PACKAGES */
-
 
1562
      INSERT INTO archive_manager.deprecated_packages
-
 
1563
         SELECT *
2716
         -- Now update the Release_Metrics Table
1564
           FROM deprecated_packages
2717
         update_release_metrics(rtagid);
1565
          WHERE rtag_id = nrtagid;
2718
 
1566
 
-
 
1567
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
-
 
1568
      DELETE FROM deprecated_packages
2719
         RETURN return_insert_success;
1569
            WHERE rtag_id = nrtagid;
-
 
1570
			
-
 
1571
      /* MIGRATION - RELEASE_TAGS */
-
 
1572
      INSERT INTO archive_manager.release_tags
2720
      ELSE
1573
         SELECT *
-
 
1574
           FROM release_tags
2721
         RETURN return_insert_error;
1575
          WHERE rtag_id = nrtagid;
-
 
1576
			
-
 
1577
			
-
 
1578
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
-
 
1579
      DELETE FROM package_versions
-
 
1580
            WHERE pv_id IN (SELECT pv_id
-
 
1581
                              FROM archive_data);
-
 
1582
							  
2722
      END IF;
1583
							  			
2723
   END;
1584
   END;
2724
 
1585
 
2725
/*-------------------------------------------------------------------------------------------------------*/
1586
/*-------------------------------------------------------------------------------------------------------*/
-
 
1587
   PROCEDURE clean_up_archive_data_table (
2726
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
1588
      nrtagid   IN   release_tags.rtag_id%TYPE
-
 
1589
   )
2727
   IS
1590
   IS
2728
      lv_totalpackages       NUMBER;
-
 
2729
      lv_autobuilt           NUMBER;
-
 
2730
      lv_linesofcode         NUMBER;
-
 
2731
      lv_unittested          NUMBER;
-
 
2732
      lv_autotested          NUMBER;
-
 
2733
      lv_numOfbranches       NUMBER;
-
 
2734
      lv_lastbuildtime       DATE;
-
 
2735
   BEGIN
1591
   BEGIN
2736
      IF (rtagid > 0)
-
 
2737
      THEN
-
 
2738
         -- Get the total number of packages in this release and the number of
-
 
2739
         -- those that are autobuilt
-
 
2740
         SELECT COUNT (DISTINCT rc.pv_id),
-
 
2741
                COUNT (DISTINCT autobuilt_qry.pv_id)
-
 
2742
           INTO lv_totalpackages, lv_autobuilt
-
 
2743
           FROM release_content rc,
-
 
2744
                package_versions pv,
-
 
2745
                (
-
 
2746
                 SELECT rc.pv_id
-
 
2747
                   FROM release_content rc,
-
 
2748
                        package_versions pv
1592
      /* Cleaning Up The Archive_Data Table */
2749
                  WHERE pv.is_autobuildable = 'Y'
-
 
2750
                    AND pv.pv_id = rc.pv_id
-
 
2751
                    AND rc.rtag_id = rtagid
-
 
2752
                ) autobuilt_qry
-
 
2753
          WHERE pv.pv_id = rc.pv_id
-
 
2754
            AND rc.rtag_id = rtagid
-
 
2755
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
-
 
2756
 
-
 
2757
         -- Get the build time of the last package built in this release and the
-
 
2758
         -- total number of lines of code
-
 
2759
         SELECT MAX(pm.created_stamp),
-
 
2760
                SUM(pm.code_lines)
-
 
2761
           INTO lv_lastbuildtime, lv_linesofcode
-
 
2762
           FROM package_metrics pm, release_content rc
-
 
2763
          WHERE pm.pv_id = rc.pv_id
-
 
2764
            AND rc.rtag_id = rtagid;
-
 
2765
 
-
 
2766
         -- Get the number of packages with unit tests in this release and the
-
 
2767
         -- number of those that are autotested
-
 
2768
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
-
 
2769
           FROM unit_tests ut,
1593
      DELETE FROM archive_data
2770
                release_content rc
-
 
2771
          WHERE ut.pv_id = rc.pv_id
-
 
2772
            AND rc.rtag_id = rtagid
-
 
2773
        AND ut.test_types_fk != 1;
-
 
2774
 
-
 
2775
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
-
 
2776
          FROM unit_tests ut,
-
 
2777
               release_content rc
-
 
2778
         WHERE ut.pv_id = rc.pv_id
-
 
2779
           AND rc.rtag_id = rtagid
-
 
2780
           AND ut.test_types_fk = 7;
-
 
2781
 
-
 
2782
 
-
 
2783
         -- Count the number of unique branches in the packages in this release.
-
 
2784
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
-
 
2785
--           FROM (
-
 
2786
--                SELECT pv_id,
-
 
2787
--                       regexp_substr(str, '[^,]+', 1, level) branch,
-
 
2788
--                       level lv,
-
 
2789
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
-
 
2790
--                  FROM (
-
 
2791
--                       SELECT pm.pv_id,
-
 
2792
--                              ','||pm.branch_list str
-
 
2793
--                         FROM package_metrics pm,
-
 
2794
--                              release_content rc
-
 
2795
--                        WHERE pm.pv_id = rc.pv_id
-
 
2796
--                          AND rc.rtag_id = rtagid
-
 
2797
--                       )
-
 
2798
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
-
 
2799
--                )
-
 
2800
--          WHERE lv != lg;
-
 
2801
 
-
 
2802
         UPDATE release_metrics rm
-
 
2803
            SET rm.total_packages = lv_totalpackages,
-
 
2804
                rm.autobuilt = lv_autobuilt,
-
 
2805
                rm.lines_of_code = lv_linesofcode,
-
 
2806
                rm.unit_tested = lv_unittested,
-
 
2807
                rm.autotested = lv_autotested,
-
 
2808
--                rm.branches = lv_numOfbranches,
-
 
2809
                rm.last_build_time = lv_lastbuildtime
-
 
2810
          WHERE rtag_id = rtagid;
1594
            WHERE rtag_id = nrtagid;
2811
 
-
 
2812
         IF (SQL%ROWCOUNT = 0)
-
 
2813
         THEN
-
 
2814
            INSERT INTO release_metrics
-
 
2815
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
-
 
2816
                         autotested, last_build_time
-
 
2817
                        )
-
 
2818
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
-
 
2819
                         lv_autotested, lv_lastbuildtime
-
 
2820
                        );
-
 
2821
         END IF;
-
 
2822
--         IF (SQL%ROWCOUNT = 0)
-
 
2823
--         THEN
-
 
2824
--            INSERT INTO release_metrics
-
 
2825
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
-
 
2826
--                         autotested, branches, last_build_time
-
 
2827
--                        )
-
 
2828
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
-
 
2829
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
-
 
2830
--                        );
-
 
2831
--         END IF;
-
 
2832
--      ELSE
-
 
2833
--         raise_application_error (-20000, 'RtagId must be supplied.');
-
 
2834
      END IF;
-
 
2835
   END;
1595
   END;
2836
/*-------------------------------------------------------------------------------------------------------*/
-
 
2837
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2
-
 
2838
   IS
-
 
2839
      vcstypeid    NUMBER;
-
 
2840
      vcstag       VARCHAR2(32);
-
 
2841
      label        VARCHAR2(60);
-
 
2842
      srcpath      VARCHAR2(2000);
-
 
2843
      vcstypeid_cc NUMBER;
-
 
2844
      vcstypeid_uc NUMBER;
-
 
2845
   BEGIN
-
 
2846
      -- Get the VCS_TYPE_ID for the ClearCase version control system. We do this so that we make no assumptions about
-
 
2847
      -- what the primary key value is for the ClearCase VCS entry.
-
 
2848
      BEGIN
-
 
2849
         SELECT vt.vcs_type_id
-
 
2850
         INTO vcstypeid_cc
-
 
2851
         FROM VCS_TYPE vt
-
 
2852
         WHERE vt.tag = 'CC';
-
 
2853
         EXCEPTION
-
 
2854
            WHEN NO_DATA_FOUND THEN
-
 
2855
               raise_application_error (-20000, 'Database is missing compulsory CC version control system tag!');
-
 
2856
      END;
-
 
2857
 
-
 
2858
      -- Get the VCS_TYPE_ID for the Uncontrolled version control system. We do this so that we make no assumptions about
-
 
2859
      -- what the primary key value is for the Uncontrolled VCS entry.
-
 
2860
      BEGIN
-
 
2861
         SELECT vt.vcs_type_id
-
 
2862
         INTO vcstypeid_uc
-
 
2863
         FROM VCS_TYPE vt
-
 
2864
         WHERE vt.tag = 'UC';
-
 
2865
         EXCEPTION
-
 
2866
            WHEN NO_DATA_FOUND THEN
-
 
2867
               raise_application_error (-20000, 'Database is missing compulsory UC version control system tag!');
-
 
2868
      END;
-
 
2869
 
-
 
2870
      -- Get the PKG_LABEL, SRC_PATH, VCS_TYPE_ID for the package version
-
 
2871
      -- As additional VCS types are introduced, we may have to extend what this SELECT statement returns
-
 
2872
      BEGIN
-
 
2873
         SELECT pv.pkg_label, pv.src_path,
-
 
2874
           (CASE WHEN pv.pkg_label = 'N/A' AND pv.vcs_type_id IS NULL THEN vcstypeid_uc
-
 
2875
                 WHEN pv.vcs_type_id IS NULL THEN vcstypeid_cc
-
 
2876
                 ELSE pv.vcs_type_id END) AS vcs_type_id
-
 
2877
         INTO label, srcpath, vcstypeid
-
 
2878
         FROM PACKAGE_VERSIONS pv
-
 
2879
         WHERE pv.pv_id = pvid;
-
 
2880
         EXCEPTION
-
 
2881
            WHEN NO_DATA_FOUND THEN
-
 
2882
               raise_application_error (-20000, 'Package Version Not Found!');
-
 
2883
      END;
-
 
2884
 
-
 
2885
      -- Get the VCS TAG for the VCS_TYPE_ID.
-
 
2886
      BEGIN
-
 
2887
         SELECT vt.tag
-
 
2888
         INTO vcstag
-
 
2889
         FROM VCS_TYPE vt
-
 
2890
         WHERE vt.vcs_type_id = vcstypeid;
-
 
2891
         EXCEPTION
-
 
2892
            WHEN NO_DATA_FOUND THEN
-
 
2893
               raise_application_error (-20000, 'Could not get VCS Tag for the package version!');
-
 
2894
      END;
-
 
2895
 
-
 
2896
      -- Return value depending upon which VCS Tag is being used.
-
 
2897
      -- As additional VCS types are introduced, we have to add additional WHEN clauses
-
 
2898
      CASE vcstag
-
 
2899
         WHEN 'CC' THEN
-
 
2900
            RETURN vcstag || '::' || srcpath || '::' || label;
-
 
2901
         WHEN 'SVN' THEN
-
 
2902
            RETURN vcstag || '::' || srcpath || '::' || label;
-
 
2903
         ELSE
-
 
2904
            RETURN vcstag || '::';
-
 
2905
      END CASE;
-
 
2906
 
1596
 
2907
   END;
-
 
2908
/*-------------------------------------------------------------------------------------------------------*/
1597
/*-------------------------------------------------------------------------------------------------------*/
2909
 
-
 
2910
/*-------------------------------------------------------------------------------------------------------
-
 
2911
Name:        update_vcs_details
1598
   PROCEDURE write_action_log (
2912
Description: Updates the Version Control System (vcs) details specified in the vcstag
-
 
2913
             parameter for the specified package version.
-
 
2914
             The specified package vcstag is parsed and split into 3 fields:
-
 
2915
                vcs type, src path, label
1599
      nuserid   IN   NUMBER,
2916
             These fields are then stored for the specified pv_id in the package_versions, table.
-
 
2917
             An action is recorded in the action log and provides information for tracking and
-
 
2918
             for restoring the previous vcs settings if a recovery is required.
-
 
2919
Paramters:
-
 
2920
             ipv_id:     Package version identifier
1600
      nrtagid   IN   release_tags.rtag_id%TYPE
2921
             vcstag:     Full version control tag.
-
 
2922
                         Examples:
-
 
2923
                             "SVN::AUPERASVN01/DPG_SWBase/tools/trunk::daf_tools_25.1.7027.cr@1234"
-
 
2924
                            "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
-
 
2925
             user_id:    Identifier of the user that is performing this function.
-
 
2926
*/
1601
   )
2927
PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER)
-
 
2928
   IS
1602
   IS
2929
      ivcs_type_id   NUMBER;
-
 
2930
      svcs_type      VARCHAR2(128);
-
 
2931
      ssrc_path      VARCHAR2(512);
-
 
2932
      spkg_label     VARCHAR2(512);
-
 
2933
      spattern       VARCHAR2(64);
-
 
2934
      saction_desc   VARCHAR2(2048);
-
 
2935
      old_vcs_type   VARCHAR2(128);
-
 
2936
      old_src_path   VARCHAR2(512);
-
 
2937
      old_pkg_label  VARCHAR2(512);
-
 
2938
      old_pkg_vcstag VARCHAR2(1024);
-
 
2939
      i              NUMBER;
-
 
2940
      vcount         NUMBER;
-
 
2941
   BEGIN
-
 
2942
     -- Split vcs tag into fields: vcs type, src path, label
-
 
2943
     -- Fields are separated by '::'
-
 
2944
     -- e.g "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
-
 
2945
     -- The below regular expression pattern has groups to achieve this.
-
 
2946
 
-
 
2947
     spattern:= '^([^:]*)::([^:]*)(::(.*))?$';
-
 
2948
 
-
 
2949
     --As Oracle 10g does not allow REGEXP_SUBSTR to return a group,
-
 
2950
     --REGEXP_REPLACE is used instead (Note: Oracle 11g has this enhancement).
-
 
2951
     SELECT REGEXP_REPLACE(vcstag,spattern, '\1') INTO svcs_type  FROM DUAL;
-
 
2952
     SELECT REGEXP_REPLACE(vcstag,spattern, '\2') INTO ssrc_path  FROM DUAL;
-
 
2953
     SELECT REGEXP_REPLACE(vcstag,spattern, '\4') INTO spkg_label FROM DUAL;
-
 
2954
 
-
 
2955
     -- Validate vcs type
-
 
2956
     BEGIN
-
 
2957
       SELECT vc.vcs_type_id INTO ivcs_type_id FROM vcs_type vc WHERE UPPER(svcs_type) = UPPER(vc.tag);
-
 
2958
     EXCEPTION
-
 
2959
       WHEN NO_DATA_FOUND THEN
-
 
2960
         raise_application_error (-20000, 'Invalid vcs type: ' || '"' || svcs_type || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
-
 
2961
       --RAISE;
-
 
2962
     END;
-
 
2963
 
-
 
2964
     -- If Clearcase
-
 
2965
     IF (ivcs_type_id = 2) THEN
-
 
2966
       -- Validate source path
-
 
2967
       IF NOT REGEXP_LIKE(ssrc_path,'^(\\|\/)[a-z]+[0-9a-z_\.\-\\\/ -]*$','i') THEN
-
 
2968
         raise_application_error (-20000, 'Invalid CC src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
-
 
2969
       END IF;
-
 
2970
 
-
 
2971
       -- Validate label
-
 
2972
       -- For clearcase the label must be specified. For subversion it is not required.
-
 
2973
       IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+$','i') THEN
-
 
2974
         raise_application_error (-20000, 'Invalid CC label:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
-
 
2975
       END IF;
-
 
2976
 
-
 
2977
     -- if Subversion
-
 
2978
     ELSIF (ivcs_type_id = 23) THEN
-
 
2979
       -- general validity
-
 
2980
       -- Not as picky as the RM Data entry
-
 
2981
       IF NOT REGEXP_LIKE(ssrc_path,'^([0-9a-z_\.\-]+)(\/([0-9a-z_\.\-]+))+$','i') THEN
-
 
2982
         raise_application_error (-20000, 'Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
-
 
2983
       END IF;
-
 
2984
 
-
 
2985
       -- Validate Tag
-
 
2986
       -- May be a Peg or a Label
-
 
2987
       IF NOT REGEXP_LIKE(spkg_label,'^@?[0-9]+$','i') THEN
-
 
2988
           IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+($|@[0-9]+)','i') THEN
-
 
2989
             raise_application_error (-20000, 'Invalid SVN tag:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
-
 
2990
           END IF;
-
 
2991
       END IF;
-
 
2992
 
-
 
2993
        -- Check for suitable ending
-
 
2994
        IF NOT REGEXP_LIKE(ssrc_path,'(\/tags$)|(\/branches\/)|(\/trunk$)','i') THEN
-
 
2995
            raise_application_error (-20000, 'Must end in /trunk or /tags/ or /branches/.... Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
-
 
2996
        END IF;
-
 
2997
 
-
 
2998
       -- Check for combined use of tags, branches, trunk or repeats of each
-
 
2999
       -- Count occurrences of /tags or /branches/ or /trunk
-
 
3000
       vcount:=0;
-
 
3001
       i:=1;
-
 
3002
       WHILE i > 0 LOOP
-
 
3003
         i:=REGEXP_INSTR(ssrc_path,'(\/tags(\/|$))|(\/branches(\/|$))|(\/trunk(\/|$))',i,1,1,'i');
-
 
3004
         IF i > 0 THEN
-
 
3005
           -- if found then increment count
-
 
3006
           vcount:=vcount+1;
-
 
3007
           i:=i-1;  -- move index back to "/"
-
 
3008
         END IF;
-
 
3009
       END LOOP;
-
 
3010
 
-
 
3011
       IF vcount = 0  THEN
-
 
3012
         raise_application_error (-20000, 'Must contain exactly one of the keywords /trunk, /tags, /branches/. Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
-
 
3013
       END IF;
-
 
3014
 
-
 
3015
       IF vcount > 1  THEN
-
 
3016
         raise_application_error (-20000, 'Combined use of /trunk, /tags, or /branches/. Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
-
 
3017
       END IF;
-
 
3018
 
-
 
3019
 
-
 
3020
     END IF;
-
 
3021
 
-
 
3022
     BEGIN
-
 
3023
       -- Get current vcs tag for specified package version
-
 
3024
       SELECT pv.src_path, pv.pkg_label, vc.tag as vcs_type
-
 
3025
       INTO old_src_path, old_pkg_label, old_vcs_type
-
 
3026
       FROM package_versions pv, vcs_type vc
-
 
3027
       WHERE pv.pv_id = ipv_id
-
 
3028
       AND pv.vcs_type_id = vc.vcs_type_id (+);
-
 
3029
 
-
 
3030
     EXCEPTION
-
 
3031
       WHEN NO_DATA_FOUND THEN
-
 
3032
         raise_application_error (-20000, 'Package version not found: ' || ipv_id);
-
 
3033
     END;
-
 
3034
 
-
 
3035
     old_pkg_vcstag:= old_vcs_type || '::' || old_src_path;
-
 
3036
     IF (old_pkg_label IS NOT NULL) THEN
-
 
3037
       old_pkg_vcstag:=old_pkg_vcstag || '::' || old_pkg_label;
-
 
3038
     END IF;
-
 
3039
 
-
 
3040
     -- Create action description
-
 
3041
     -- This description will contain the old and new tags.
-
 
3042
     -- Its purpose is to provide information for tracking and for restoring previous vcs settings if a recovery is required.
-
 
3043
     -- An example of the action description is below:
-
 
3044
     --   OldTag:CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr NewTag:SVN::DPG_SWBase/tools/tags/daf_tools_25.1.7027.cr
-
 
3045
     saction_desc:='OldTag:' || old_pkg_vcstag || ' ' || 'NewTag:' || vcstag;
-
 
3046
 
-
 
3047
     -- Store new vcs details
-
 
3048
     UPDATE package_versions SET
-
 
3049
       src_path = ssrc_path,
-
 
3050
       pkg_label = spkg_label,
-
 
3051
       vcs_type_id = ivcs_type_id
-
 
3052
     WHERE
-
 
3053
       pv_id = ipv_id;
-
 
3054
 
-
 
3055
     -- Store action in action log so that we can back track and also restore vcs settings if required.
-
 
3056
     log_action (ipv_id,'VcsConversion',user_id,saction_desc);
-
 
3057
 
-
 
3058
   END update_vcs_details;
-
 
3059
 
-
 
3060
/*-------------------------------------------------------------------------------------------------------
-
 
3061
Name:        isSVN
-
 
3062
Description: Determine if any of the packages versions are controlled under SVN
-
 
3063
			 Intended to be used to prevent users from releasing a package
-
 
3064
			 that has been migrated to SVN
-
 
3065
 
-
 
3066
Paramters:	pkgid:     Package ID
-
 
3067
 
-
 
3068
Returns:	Number of versions under SVN version control
-
 
3069
*/
-
 
3070
   
-
 
3071
FUNCTION isSVN( pkgid IN NUMBER )
-
 
3072
    RETURN NUMBER
-
 
3073
    IS
-
 
3074
    svncount   NUMBER  := 0;
-
 
3075
   BEGIN
-
 
3076
        SELECT COUNT(*) INTO svncount FROM PACKAGE_VERSIONS pv WHERE pv.PKG_ID = pkgid AND pv.VCS_TYPE_ID = 23;
-
 
3077
        RETURN (svncount);
-
 
3078
   END;
-
 
3079
 
-
 
3080
/*-------------------------------------------------------------------------------------------------------
-
 
3081
Name:        isSVNbyName
-
 
3082
Description: Determine if any of the packages versions are controlled under SVN
-
 
3083
			 Intended to be used to prevent users from releasing a package
-
 
3084
			 that has been migrated to SVN
-
 
3085
 
-
 
3086
Paramters:	pkgname:	Package Name
-
 
3087
 
-
 
3088
Returns:	Number of versions under SVN version control
-
 
3089
*/
-
 
3090
 
-
 
3091
FUNCTION isSVNbyName( pkgname IN VARCHAR2 )
-
 
3092
    RETURN NUMBER
-
 
3093
IS
-
 
3094
   svncount   NUMBER  := 0;
-
 
3095
   BEGIN
1603
   BEGIN
-
 
1604
      /* Write Into Archive_Action_Log Table */
-
 
1605
      INSERT INTO archive_action_log
3096
        SELECT COUNT(*) INTO svncount FROM PACKAGE_VERSIONS pv, PACKAGES pkg WHERE pkg.pkg_name = pkgname AND pv.PKG_ID = pkg.pkg_id AND pv.VCS_TYPE_ID = 23;
1606
                  (user_id, date_time_stamp, rtag_id,
3097
        RETURN (svncount);
1607
                   description
3098
   END;
1608
                  )
-
 
1609
           VALUES (nuserid, ora_sysdatetime, nrtagid,
-
 
1610
                   'Release has been archived to the ARCHIVE_MANAGER schema'
3099
   
1611
                  );
3100
   END;
1612
   END;
-
 
1613
/*-------------------------------------------------------------------------------------------------------*/
-
 
1614
END pk_archive; 
3101
/
1615
/
3102
--------------------------------------------------------
1616
--------------------------------------------------------
3103
--  DDL for Package Body PK_BUILDAPI
1617
--  DDL for Package Body PK_BUILDAPI
3104
--------------------------------------------------------
1618
--------------------------------------------------------
3105
 
1619
 
Line 3975... Line 2489...
3975
                                 );
2489
                                 );
3976
   END;
2490
   END;
3977
END pk_buildapi;
2491
END pk_buildapi;
3978
/
2492
/
3979
--------------------------------------------------------
2493
--------------------------------------------------------
3980
--  DDL for Package Body PK_PACKAGE
2494
--  DDL for Package Body PK_ENVIRONMENT
3981
--------------------------------------------------------
2495
--------------------------------------------------------
3982
 
2496
 
3983
  CREATE OR REPLACE PACKAGE BODY "PK_PACKAGE" 
2497
  CREATE OR REPLACE PACKAGE BODY "PK_ENVIRONMENT" 
3984
IS
2498
IS
-
 
2499
 
3985
   /*-------------------------------------------------------------------------------------------------------*/
2500
   /*-------------------------------------------------------------------------------------------------------*/
3986
   PROCEDURE new_version (
-
 
3987
      nlastpvid                   IN       NUMBER,
-
 
3988
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
2501
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
3989
      cbuildtype                  IN       CHAR,
-
 
3990
      nsettopvid                  IN       NUMBER DEFAULT NULL,
-
 
3991
      nrtagid                     IN       NUMBER,
-
 
3992
      nuserid                     IN       NUMBER,
-
 
3993
      enumissues_state_imported   IN       NUMBER,
-
 
3994
      returnpvid                  OUT      NUMBER
2502
     RETURN NUMBER
3995
   )
-
 
3996
   IS
2503
   IS
3997
      origpkg_id                  package_versions.pkg_id%TYPE;
-
 
3998
      origdlocked                 package_versions.dlocked%TYPE;
-
 
3999
      ssv_mm                      package_versions.v_mm%TYPE;
-
 
4000
      ssv_nmm                     package_versions.v_nmm%TYPE;
-
 
4001
      ssv_ext                     package_versions.v_ext%TYPE;
-
 
4002
      spackageversion             VARCHAR2 (4000);
-
 
4003
      nissuestypes                NUMBER;
-
 
4004
      nviewid                     NUMBER;
-
 
4005
      reccount                    NUMBER;
-
 
4006
      isreleased                  package_versions.dlocked%TYPE := 'N';
-
 
4007
      slabel                      VARCHAR2 (4000)               := NULL;
-
 
4008
 
-
 
4009
      CURSOR package_versions_cur
-
 
4010
      IS
-
 
4011
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
-
 
4012
           FROM package_versions pv
-
 
4013
          WHERE pv.pkg_version = snewpkgversion
-
 
4014
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
-
 
4015
                                         FROM package_versions origpv
-
 
4016
                                        WHERE origpv.pv_id = nlastpvid);
-
 
4017
 
-
 
4018
      package_versions_rec package_versions_cur%ROWTYPE;
-
 
4019
 
-
 
4020
      CURSOR clone_package_versions_cur
-
 
4021
      IS
-
 
4022
         SELECT DISTINCT pkg_id, dlocked
-
 
4023
                    FROM package_versions
-
 
4024
                   WHERE pv_id = nlastpvid;
-
 
4025
 
-
 
4026
      clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
-
 
4027
   BEGIN
2504
   BEGIN
-
 
2505
      /*
-
 
2506
     || N - unlocked
4028
      spackageversion := snewpkgversion;
2507
     || Y - release and locked
-
 
2508
     || P - penging approval
-
 
2509
     || A - approved package ready for auto-build
4029
 
2510
     */
-
 
2511
     IF cdlock = 'N' OR cdlock = 'R'
-
 
2512
     THEN
-
 
2513
       -- WORK IN PROGRESS --
-
 
2514
       RETURN 0;
-
 
2515
     ELSIF cdlock = 'P' OR cdlock = 'A'
-
 
2516
     THEN
-
 
2517
       -- PENDING --
-
 
2518
       RETURN 1;
4030
      IF nsettopvid IS NULL
2519
     ELSIF cdlock = 'Y'
4031
      THEN
2520
     THEN
-
 
2521
       -- RELEASED --
-
 
2522
       RETURN 2;
-
 
2523
     ELSE
-
 
2524
       -- NOT FOUND --
-
 
2525
       raise_application_error
-
 
2526
                   (-20000,
4032
         -- SetToPv_id is not supplied, hence proceed.
2527
                      'Cannot decide where to place package. [cDlock='
-
 
2528
                    || cdlock
-
 
2529
                    || ']'
-
 
2530
                   );
-
 
2531
     END IF;
-
 
2532
   END;
4033
 
2533
 
4034
         /* ---------------------------------------------------- */
2534
/*-------------------------------------------------------------------------------------------------------*/
4035
         /* Find id package_version exists                       */
2535
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
4036
         /* ---------------------------------------------------- */
2536
     RETURN NUMBER
-
 
2537
   IS
4037
         OPEN package_versions_cur;
2538
     envtab   NUMBER         := -1;
4038
 
2539
 
-
 
2540
     CURSOR curarea
-
 
2541
     IS
-
 
2542
       SELECT 2 AS envtab
4039
         FETCH package_versions_cur
2543
         FROM release_content rc
-
 
2544
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
-
 
2545
       UNION
-
 
2546
       SELECT 0 AS envtab
4040
          INTO package_versions_rec;
2547
         FROM work_in_progress wip
-
 
2548
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
-
 
2549
       UNION
-
 
2550
       SELECT 1 AS envtab
-
 
2551
         FROM planned pl
-
 
2552
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
4041
 
2553
 
4042
         IF package_versions_cur%NOTFOUND
2554
     recarea   curarea%ROWTYPE;
4043
         THEN
2555
   BEGIN
4044
            ---  Create brand new package ---
-
 
4045
            SELECT seq_pv_id.NEXTVAL
-
 
4046
              INTO returnpvid
-
 
4047
              FROM DUAL;
2556
     OPEN curarea;
4048
 
2557
 
4049
            -- Split Version to get extention + other
2558
     FETCH curarea
4050
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
2559
      INTO recarea;
4051
 
2560
 
4052
            -- Get previous package to clone from
2561
     IF curarea%FOUND
-
 
2562
     THEN
4053
            OPEN clone_package_versions_cur;
2563
       envtab := recarea.envtab;
-
 
2564
     END IF;
4054
 
2565
 
4055
            FETCH clone_package_versions_cur
-
 
4056
             INTO clone_package_versions_rec;
2566
     CLOSE curarea;
4057
 
2567
 
4058
            origpkg_id := clone_package_versions_rec.pkg_id;
2568
     RETURN envtab;
4059
            origdlocked := clone_package_versions_rec.dlocked;
2569
   END;
4060
 
2570
 
-
 
2571
/*-------------------------------------------------------------------------------------------------------*/
-
 
2572
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
-
 
2573
     RETURN NUMBER
-
 
2574
   IS
4061
            CLOSE clone_package_versions_cur;
2575
     ispatch   package_versions.dlocked%TYPE;
-
 
2576
     viewid   NUMBER                    := -1;
4062
 
2577
 
-
 
2578
     CURSOR curview
-
 
2579
     IS
4063
            -- Automated built config
2580
       SELECT rc.base_view_id AS view_id
4064
            IF (cbuildtype = 'A')
2581
         FROM release_content rc
-
 
2582
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
4065
            THEN
2583
       UNION
-
 
2584
       SELECT wip.view_id AS view_id
-
 
2585
         FROM work_in_progress wip
4066
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
2586
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
-
 
2587
       UNION
4067
               -- Make sure that version is still unique
2588
       SELECT pl.view_id AS view_id
4068
            END IF;
2589
         FROM planned pl
-
 
2590
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
4069
 
2591
 
4070
            -- Clone Package Version Details --
2592
     recview   curview%ROWTYPE;
4071
            INSERT INTO package_versions(pv_id, pkg_id, pkg_version, dlocked, created_stamp,
-
 
4072
                                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
-
 
4073
                                         v_ext, src_path, pv_description, pv_overview,
-
 
4074
                                         last_pv_id, owner_id, is_deployable,
-
 
4075
                                         is_build_env_required, build_type, bs_id, is_autobuildable, ripple_field)
-
 
4076
                 SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
2593
   BEGIN
4077
                        spackageversion AS pkg_version, 'N' AS dlocked,
-
 
4078
                        ora_sysdate AS created_stamp, nuserid AS creator_id,
-
 
4079
                        ora_sysdatetime AS modified_stamp,
2594
     -- Get dlock state
4080
                        nuserid AS modifier_id, ssv_mm AS v_mm,
-
 
4081
                        ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
2595
     SELECT pv.is_patch
4082
                        pv.pv_description, pv.pv_overview,
2596
      INTO ispatch
4083
                        nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
-
 
4084
                        pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable, pv.ripple_field
-
 
4085
                   FROM package_versions pv
2597
      FROM package_versions pv
4086
                  WHERE pv.pv_id = nlastpvid;
2598
      WHERE pv.pv_id = pvid;
4087
 
2599
 
4088
            -- Set Issues Type for cloning ---
2600
     -- Decide which view id should package go under.
4089
            IF origdlocked = 'Y'
2601
     IF (ispatch != 'Y') OR (ispatch IS NULL)
4090
            THEN
2602
     THEN
4091
               nissuestypes := enumissues_state_imported;
-
 
4092
            ELSE
-
 
4093
               nissuestypes := NULL;
2603
       -- Get VIEW ID of Package
4094
            END IF;
2604
       OPEN curview;
4095
 
2605
 
4096
            -- Update Label for automated built
-
 
4097
            IF (cbuildtype = 'A')
2606
       FETCH curview
4098
            THEN
2607
        INTO recview;
4099
               slabel := get_automated_label (returnpvid);
-
 
4100
 
2608
 
-
 
2609
       IF curview%FOUND
-
 
2610
       THEN
4101
               UPDATE package_versions pv
2611
         viewid := recview.view_id;
-
 
2612
       ELSE
4102
                  SET pv.pkg_label = slabel
2613
         raise_application_error
-
 
2614
            (-20000,
4103
                WHERE pv.pv_id = returnpvid;
2615
               'Cannot find view_id to proceed. [PvId='
-
 
2616
            || pvid
-
 
2617
            || ']. The current version may not exist in the release anymore.'
-
 
2618
            );
4104
            END IF;
2619
       END IF;
4105
 
2620
 
4106
            basic_clone (nlastpvid,
2621
       CLOSE curview;
4107
                         returnpvid,
2622
     ELSE
4108
                         nrtagid,
2623
       -- Get VIEW ID of Patch (view id of parent package)
4109
                         nuserid,
2624
       SELECT rc.base_view_id
4110
                         origpkg_id,
2625
         INTO viewid
4111
                         nissuestypes
2626
         FROM release_content rc, package_patches ppv
4112
                        );
2627
        WHERE rc.rtag_id = rtagid
4113
         ELSE
-
 
4114
            --- Package already exists, hence reuse ---
-
 
4115
            returnpvid := package_versions_rec.pv_id;
2628
         AND rc.pv_id = ppv.pv_id
4116
            isreleased := package_versions_rec.dlocked;
2629
         AND ppv.patch_id = pvid;
4117
         END IF;
2630
     END IF;
4118
 
2631
 
4119
         CLOSE package_versions_cur;
-
 
4120
      ELSE
2632
     RETURN viewid;
4121
         returnpvid := nsettopvid;
-
 
4122
      END IF;
2633
   END;
4123
   END new_version;
-
 
4124
 
2634
 
4125
/*-------------------------------------------------------------------------------------------------------*/
2635
/*-------------------------------------------------------------------------------------------------------*/
4126
   PROCEDURE change_state (
2636
   PROCEDURE add_package (
4127
      pvid       IN   NUMBER,
2637
     pvid    IN   NUMBER,
4128
      newstate   IN   package_versions.dlocked%TYPE,
2638
     viewid   IN   NUMBER,
-
 
2639
     rtagid   IN   NUMBER,
4129
      userid     IN   NUMBER
2640
     userid   IN   NUMBER
4130
   )
2641
   )
4131
   IS
2642
   IS
-
 
2643
     dlocked   package_versions.dlocked%TYPE;
-
 
2644
     envtab   NUMBER;
4132
   BEGIN
2645
   BEGIN
4133
      -- Set package in Released mode
2646
     IF can_edit_pkg_in_project (pvid, rtagid) = 1
-
 
2647
     THEN
4134
      UPDATE package_versions pv
2648
       -- Get dlock state
4135
         SET pv.dlocked = newstate,
2649
       SELECT pv.dlocked
4136
             pv.modified_stamp = ora_sysdatetime,
2650
         INTO dlocked
4137
             pv.modifier_id = userid
2651
         FROM package_versions pv
4138
       WHERE pv.pv_id = pvid;
2652
        WHERE pv.pv_id = pvid;
4139
 
2653
 
-
 
2654
       -- Get which area should go under
-
 
2655
       envtab := select_environment_area (dlocked);
-
 
2656
       -- Log
-
 
2657
       log_action (pvid, 'action', userid, 'Start of Package Add...');
-
 
2658
 
4140
      -- Log action --
2659
       -- Remove Package
4141
      IF newstate = 'Y'
2660
       IF envtab = 0
-
 
2661
       THEN
-
 
2662
         -- WORK IN PROGRESS --
-
 
2663
         pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
-
 
2664
       ELSIF envtab = 1
-
 
2665
       THEN
-
 
2666
         -- PENDING --
-
 
2667
         pk_planned.add_package (pvid, viewid, rtagid, userid);
-
 
2668
       ELSIF envtab = 2
4142
      THEN
2669
       THEN
4143
         -- RELEASED --
2670
         -- RELEASED --
4144
         log_action (pvid,
-
 
4145
                     'makeofficial',
-
 
4146
                     userid,
-
 
4147
                     'Package state change to: Released'
2671
         -- NOTE: this package will be replaced with matching package
4148
                    );
-
 
4149
      ELSIF newstate = 'N'
-
 
4150
      THEN
-
 
4151
         -- UNLOCKED --
-
 
4152
         log_action (pvid,
-
 
4153
                     'makeunofficial',
-
 
4154
                     userid,
-
 
4155
                     'Package state change to: Ulocked'
2672
         pk_release.add_package (pvid, viewid, rtagid, userid);
4156
                    );
-
 
4157
      ELSIF newstate = 'P'
-
 
4158
      THEN
-
 
4159
         -- PENDING APPROVAL --
2673
         -- Now do post Release Actions
4160
         log_action (pvid,
2674
         pk_release.run_post_actions (pvid, rtagid);
4161
                     'add_to_planned',
-
 
4162
                     userid,
-
 
4163
                     'Package state change to: Pending Approval'
-
 
4164
                    );
-
 
4165
      ELSIF newstate = 'R'
-
 
4166
      THEN
2675
       END IF;
4167
         -- REJECTED --
-
 
4168
         log_action (pvid,
-
 
4169
                     'reject_package',
-
 
4170
                     userid,
-
 
4171
                     'Package state change to: Rejected'
-
 
4172
                    );
-
 
4173
      ELSIF newstate = 'A'
-
 
4174
      THEN
2676
 
4175
         -- APPROVED --
2677
       -- Log
4176
         log_action (pvid,
-
 
4177
                     'approve_package',
-
 
4178
                     userid,
-
 
4179
                     'Package state change to: Approved'
2678
       log_action (pvid, 'action', userid, 'End of Package Add...');
4180
                    );
-
 
4181
      END IF;
2679
     END IF;
4182
   END;
2680
   END;
4183
 
2681
 
4184
/*-------------------------------------------------------------------------------------------------------*/
2682
/*-------------------------------------------------------------------------------------------------------*/
4185
   PROCEDURE destroy_package (
2683
   PROCEDURE add_package_bulk (
-
 
2684
     pvidlist   IN   VARCHAR2,
4186
      pvid               IN       NUMBER,
2685
     viewid    IN   NUMBER,
4187
      overridewarnings   IN       CHAR DEFAULT 'N',
2686
     rtagid    IN   NUMBER,
4188
      problemstring      OUT      VARCHAR2
2687
     userid    IN   NUMBER
4189
   )
2688
   )
4190
   IS
2689
   IS
-
 
2690
     nidcollector   relmgr_number_tab_t         := relmgr_number_tab_t
-
 
2691
                                                        ();
4191
      LOCKED     CHAR;
2692
     dlocked      package_versions.dlocked%TYPE;
4192
      pkgid      NUMBER;
2693
     pvid         NUMBER;
4193
      ROWCOUNT   NUMBER;
2694
     envtab       NUMBER;
4194
   BEGIN
2695
   BEGIN
4195
      /*
-
 
4196
      || This will destroy all package details from database.
-
 
4197
      || It will only be used to remove unwanted work in progress packages,
-
 
4198
      || or mestaken versions
-
 
4199
      */
-
 
4200
 
-
 
4201
      /*--------------- Business Rules Here -------------------*/
2696
     /*--------------- Business Rules Here -------------------*/
4202
      problemstring := NULL;
2697
     IF (pvidlist IS NULL)
4203
 
-
 
4204
      IF overridewarnings = 'N'
-
 
4205
      THEN
2698
     THEN
4206
         -- Package must not be official
-
 
4207
         SELECT pv.dlocked
-
 
4208
           INTO LOCKED
-
 
4209
           FROM package_versions pv
-
 
4210
          WHERE pv.pv_id = pvid;
-
 
4211
 
-
 
4212
         IF LOCKED = 'Y'
-
 
4213
         THEN
-
 
4214
            problemstring :=
-
 
4215
                  problemstring
-
 
4216
               || '- Package is locked and released.'
-
 
4217
               || UTL_TCP.crlf;
-
 
4218
         END IF;
-
 
4219
 
-
 
4220
         -- Cannot remove if used in BOMs
-
 
4221
         SELECT COUNT (osc.prod_id)
-
 
4222
           INTO ROWCOUNT
-
 
4223
           FROM deployment_manager.os_contents osc
-
 
4224
          WHERE osc.prod_id = pvid;
-
 
4225
 
-
 
4226
         IF ROWCOUNT > 0
-
 
4227
         THEN
-
 
4228
            problemstring :=
-
 
4229
                  problemstring
-
 
4230
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
-
 
4231
               || UTL_TCP.crlf;
-
 
4232
         END IF;
-
 
4233
 
-
 
4234
         -- Cannot remove if Referenced as build dependency
-
 
4235
         SELECT COUNT (dep.pv_id)
-
 
4236
           INTO ROWCOUNT
-
 
4237
           FROM package_dependencies dep
-
 
4238
          WHERE dep.dpv_id = pvid;
-
 
4239
 
-
 
4240
         IF ROWCOUNT > 0
-
 
4241
         THEN
-
 
4242
            problemstring :=
-
 
4243
                  problemstring
-
 
4244
               || '- Package is referenced by other package as build dependency.'
-
 
4245
               || UTL_TCP.crlf;
-
 
4246
         END IF;
-
 
4247
 
-
 
4248
         -- Cannot remove if Referenced as runtime dependency
-
 
4249
         SELECT COUNT (rd.pv_id)
-
 
4250
           INTO ROWCOUNT
-
 
4251
           FROM runtime_dependencies rd
2699
       raise_application_error (-20000,
4252
          WHERE rd.rtd_id = pvid;
-
 
4253
 
-
 
4254
         IF ROWCOUNT > 0
-
 
4255
         THEN
-
 
4256
            problemstring :=
-
 
4257
                  problemstring
-
 
4258
               || '- Package is referenced by other package as runtime dependency.'
-
 
4259
               || UTL_TCP.crlf;
-
 
4260
         END IF;
-
 
4261
 
-
 
4262
         -- Cannot remove if Referenced as patch
-
 
4263
         SELECT COUNT (pp.pv_id)
-
 
4264
           INTO ROWCOUNT
-
 
4265
           FROM package_patches pp
-
 
4266
          WHERE pp.patch_id = pvid;
-
 
4267
 
-
 
4268
         IF ROWCOUNT > 0
-
 
4269
         THEN
-
 
4270
            problemstring :=
-
 
4271
                  problemstring
-
 
4272
               || '- Package is used as patch by other package.'
2700
                          'Please select at least one package.'
4273
               || UTL_TCP.crlf;
2701
                         );
4274
         END IF;
-
 
4275
      END IF;
2702
     END IF;
4276
 
2703
 
4277
/*-------------------------------------------------------*/
2704
/*-------------------------------------------------------*/
4278
      IF (problemstring IS NULL)
-
 
4279
      THEN
-
 
4280
         --- Remove From Work in Progress
-
 
4281
         DELETE FROM work_in_progress wip
-
 
4282
               WHERE wip.pv_id = pvid;
-
 
4283
 
-
 
4284
         --- Remove From Pending
-
 
4285
         DELETE FROM planned pl
-
 
4286
               WHERE pl.pv_id = pvid;
-
 
4287
 
-
 
4288
         --- Remove From Released area
-
 
4289
         DELETE FROM release_content rc
-
 
4290
               WHERE rc.pv_id = pvid;
-
 
4291
 
-
 
4292
         ---Remove From Package Processes
-
 
4293
         DELETE FROM package_processes pp
-
 
4294
               WHERE pp.pv_id = pvid;
-
 
4295
 
-
 
4296
         --- Remove Dependencies
-
 
4297
         DELETE FROM package_dependencies dep
-
 
4298
               WHERE dep.pv_id = pvid;
-
 
4299
 
-
 
4300
         DELETE FROM package_dependencies dep
-
 
4301
               WHERE dep.dpv_id = pvid;
-
 
4302
 
-
 
4303
         --- Remove Runtime dependencies
-
 
4304
         DELETE FROM runtime_dependencies rtd
-
 
4305
               WHERE rtd.pv_id = pvid;
-
 
4306
 
-
 
4307
         DELETE FROM runtime_dependencies rtd
-
 
4308
               WHERE rtd.rtd_id = pvid;
-
 
4309
 
-
 
4310
         --- Remove components
-
 
4311
         DELETE FROM product_components pc
-
 
4312
               WHERE pc.pv_id = pvid;
-
 
4313
 
-
 
4314
         DELETE FROM release_components rc
-
 
4315
               WHERE rc.pv_id = pvid;
-
 
4316
 
-
 
4317
         --- Remove From Notification History
-
 
4318
         DELETE FROM notification_history nh
-
 
4319
               WHERE nh.pv_id = pvid;
-
 
4320
 
-
 
4321
         --- Remove From Ignore Warnings
-
 
4322
         DELETE FROM ignore_warnings iw
-
 
4323
               WHERE iw.pv_id = pvid;
-
 
4324
 
-
 
4325
         --- Remove From Additional Notes
-
 
4326
         DELETE FROM additional_notes an
-
 
4327
               WHERE an.pv_id = pvid;
-
 
4328
 
-
 
4329
         --- Remove From CQ Issues
-
 
4330
         DELETE FROM cq_issues cq
-
 
4331
               WHERE cq.pv_id = pvid;
-
 
4332
 
-
 
4333
         --- Remove from Package Patches
-
 
4334
         DELETE FROM package_patches pp
-
 
4335
               WHERE pp.pv_id = pvid;
-
 
4336
 
-
 
4337
         DELETE FROM package_patches pp
-
 
4338
               WHERE pp.patch_id = pvid;
-
 
4339
 
-
 
4340
         --- Remove From Package Documents
-
 
4341
         DELETE FROM package_documents pd
-
 
4342
               WHERE pd.pv_id = pvid;
-
 
4343
 
-
 
4344
         --- Remove from Code Review
-
 
4345
         DELETE FROM code_reviews cr
-
 
4346
               WHERE cr.pv_id = pvid;
-
 
4347
 
-
 
4348
         --- Remove from Code Review URL
-
 
4349
         DELETE FROM code_review_url cru
-
 
4350
               WHERE cru.pv_id = pvid;
-
 
4351
 
-
 
4352
         --- Remove from Unit Tests
-
 
4353
         DELETE FROM unit_tests ut
-
 
4354
               WHERE ut.pv_id = pvid;
-
 
4355
 
-
 
4356
         --- Remove from Package BuildEnv
-
 
4357
         DELETE FROM package_build_env pbe
-
 
4358
               WHERE pbe.pv_id = pvid;
-
 
4359
 
-
 
4360
         --- Remove from Package Build Info
-
 
4361
         DELETE FROM package_build_info pbi
-
 
4362
               WHERE pbi.pv_id = pvid;
-
 
4363
 
-
 
4364
         --- Remove from Build Order
-
 
4365
         DELETE FROM build_order bo
-
 
4366
               WHERE bo.pv_id = pvid;
-
 
4367
 
-
 
4368
         --- Remove from Licencing
-
 
4369
         PK_LICENCING.REMOVE_ALL_LICENCING( pvid, 0 );
-
 
4370
 
-
 
4371
         --- Remove from Note Manager
-
 
4372
         DELETE FROM note_manager nm
-
 
4373
               WHERE nm.nid = pvid;
-
 
4374
 
-
 
4375
         --- Remove from Action log
-
 
4376
         DELETE FROM action_log al
-
 
4377
               WHERE al.pv_id = pvid;
-
 
4378
 
-
 
4379
         --- Remove from Do Not Ripple
-
 
4380
         DELETE FROM DO_NOT_RIPPLE dnr
-
 
4381
               WHERE dnr.PV_ID = pvid;
2705
     nidcollector := in_list_number (pvidlist);
4382
 
-
 
4383
         --- Remove from Advisory Ripple
-
 
4384
         DELETE FROM ADVISORY_RIPPLE ar
-
 
4385
               WHERE ar.PV_ID = pvid;
-
 
4386
 
-
 
4387
         --- Remove from Jira Issues
-
 
4388
         DELETE FROM JIRA_ISSUES jira
-
 
4389
               WHERE jira.PV_ID = pvid;
-
 
4390
 
-
 
4391
         --- Remove from Package Metrics
-
 
4392
         DELETE FROM package_metrics pm
-
 
4393
              WHERE pm.pv_id = pvid;
-
 
4394
 
-
 
4395
         -- Delete from Pegged Versions
-
 
4396
         DELETE FROM pegged_versions pegv
-
 
4397
              WHERE pegv.pv_id = pvid;
-
 
4398
 
-
 
4399
         --- Finally Remove From Package Versions
-
 
4400
         --- Get Package name
-
 
4401
         SELECT pv.pkg_id
-
 
4402
           INTO pkgid
-
 
4403
           FROM package_versions pv
-
 
4404
          WHERE pv.pv_id = pvid;
-
 
4405
 
-
 
4406
         DELETE FROM package_versions pv
-
 
4407
               WHERE pv.pv_id = pvid;
-
 
4408
 
-
 
4409
         --- Remove package name if not used any more
-
 
4410
         SELECT COUNT (pv.pv_id)
-
 
4411
           INTO ROWCOUNT
-
 
4412
           FROM package_versions pv
-
 
4413
          WHERE pv.pkg_id = pkgid;
-
 
4414
 
2706
 
4415
         IF ROWCOUNT < 1
2707
     FOR i IN 1 .. nidcollector.COUNT
4416
         THEN
2708
     LOOP
4417
            DELETE FROM PACKAGES pkg
2709
       pvid := nidcollector (i);
4418
                  WHERE pkg.pkg_id = pkgid;
2710
       add_package (pvid, viewid, rtagid, userid);
4419
         END IF;
-
 
4420
      END IF;
2711
     END LOOP;
4421
   END;
2712
   END;
4422
 
2713
 
4423
/*-------------------------------------------------------------------------------------------------------*/
2714
/*-------------------------------------------------------------------------------------------------------*/
4424
   PROCEDURE new_patch (
2715
   PROCEDURE replace_package (
4425
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
-
 
4426
      nparentpvid        IN       NUMBER,
2716
     newpvid  IN   NUMBER,
4427
      spatchidlist       IN       VARCHAR2,
2717
     oldpvid  IN   NUMBER,
4428
      nuserid            IN       NUMBER,
2718
     rtagid   IN   NUMBER,
4429
      returnpatchid      OUT      NUMBER
2719
     userid   IN   NUMBER
4430
   )
2720
   )
4431
   IS
2721
   IS
4432
      patchpv_id           NUMBER;
-
 
4433
      parpkg_id            NUMBER;
-
 
4434
      lastinstallorder     NUMBER;
-
 
4435
      ispatchdlocked       package_versions.dlocked%TYPE;
2722
     dlocked      package_versions.dlocked%TYPE;
4436
      ssv_mm               package_versions.v_mm%TYPE;
-
 
4437
      ssv_nmm              package_versions.v_nmm%TYPE;
-
 
4438
      ssv_ext              package_versions.v_ext%TYPE;
-
 
4439
      opatchdepcollector   relmgr_number_tab_t  := relmgr_number_tab_t ();
-
 
4440
 
-
 
4441
      CURSOR parent_cur
2723
     viewid       NUMBER;
4442
      IS
-
 
4443
         SELECT pv.*, pkg.pkg_name
-
 
4444
           FROM package_versions pv, PACKAGES pkg
-
 
4445
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
-
 
4446
 
-
 
4447
      parent_rec parent_cur%ROWTYPE;
2724
     envtab       NUMBER;
4448
 
-
 
4449
      CURSOR patch_cur
2725
     ROWCOUNT     NUMBER;
4450
      IS
-
 
4451
         SELECT pv.*, pg.pkg_name
-
 
4452
           FROM package_versions pv, PACKAGES pg
-
 
4453
          WHERE pv.pkg_id = parpkg_id
-
 
4454
            AND pv.pkg_version = snewpatchversion
-
 
4455
            AND pv.pkg_id = pg.pkg_id;
-
 
4456
 
-
 
4457
      patch_rec  patch_cur%ROWTYPE;
2726
     creleasemode CHAR (1);
4458
 
-
 
4459
      CURSOR releases_cur
2727
     npkgid       NUMBER;
4460
      IS
-
 
4461
         SELECT rc.pv_id
-
 
4462
           FROM release_content rc
-
 
4463
          WHERE rc.pv_id = patch_rec.pv_id;
-
 
4464
 
-
 
4465
      releases_rec releases_cur%ROWTYPE;
-
 
4466
   BEGIN
2728
   BEGIN
4467
      -- Get Last Install Order
-
 
4468
      SELECT COUNT (*)
-
 
4469
        INTO lastinstallorder
-
 
4470
        FROM package_patches pp
-
 
4471
       WHERE pp.pv_id = nparentpvid;
-
 
4472
 
-
 
4473
      -- Get parent details
-
 
4474
      OPEN parent_cur;
-
 
4475
 
-
 
4476
      FETCH parent_cur
-
 
4477
       INTO parent_rec;
-
 
4478
 
-
 
4479
      parpkg_id := parent_rec.pkg_id;
2729
     /*--------------- Business Rules Here -------------------*/
4480
 
-
 
4481
      -- Find if patch exists in database
2730
     -- Check if oldPvId exists. It could have been removed
4482
      OPEN patch_cur;
-
 
4483
 
-
 
4484
      FETCH patch_cur
-
 
4485
       INTO patch_rec;
-
 
4486
 
-
 
4487
      -- Parent must be official
-
 
4488
      IF parent_rec.dlocked = 'Y'
-
 
4489
      THEN
-
 
4490
         IF patch_cur%NOTFOUND
-
 
4491
         THEN
-
 
4492
            ispatchdlocked := 'N';
-
 
4493
 
-
 
4494
            -- Create new patch version --
-
 
4495
            SELECT seq_pv_id.NEXTVAL
-
 
4496
              INTO patchpv_id
2731
     SELECT COUNT (pv.pv_id)
4497
              FROM DUAL;
2732
       INTO ROWCOUNT
4498
 
-
 
4499
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
-
 
4500
 
-
 
4501
            INSERT INTO package_versions
-
 
4502
                        (pv_id, pkg_id, pkg_version,
-
 
4503
                         dlocked, created_stamp, creator_id,
-
 
4504
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
-
 
4505
                         src_path,
-
 
4506
                         pv_description,
-
 
4507
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
-
 
4508
                         is_autobuildable, ripple_field
-
 
4509
                        )
-
 
4510
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
-
 
4511
                         ispatchdlocked, ora_sysdate, nuserid,
-
 
4512
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
-
 
4513
                         parent_rec.src_path,
-
 
4514
                            'This is a patch to '
-
 
4515
                         || parent_rec.pkg_name
-
 
4516
                         || ' '
-
 
4517
                         || parent_rec.pkg_version,
-
 
4518
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
-
 
4519
                        );
-
 
4520
 
-
 
4521
            INSERT INTO package_patches
-
 
4522
                        (pv_id, patch_id, install_order)
-
 
4523
                (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
-
 
4524
                        lastinstallorder + 1 AS install_order
-
 
4525
                   FROM package_versions pv
2733
       FROM package_versions pv
4526
                  WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
-
 
4527
 
-
 
4528
            /* LOG ACTION */
-
 
4529
            log_action (patchpv_id,
-
 
4530
                        'new_version',
-
 
4531
                        nuserid,
-
 
4532
                        'Patch version created: ' || snewpatchversion
-
 
4533
                       );
-
 
4534
            log_action (nparentpvid,
-
 
4535
                        'patch_add',
-
 
4536
                        nuserid,
-
 
4537
                        'New patch created and attached: ' || snewpatchversion
-
 
4538
                       );
-
 
4539
         ELSE
-
 
4540
            patchpv_id := patch_rec.pv_id;
-
 
4541
            ispatchdlocked := patch_rec.dlocked;
-
 
4542
 
-
 
4543
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
-
 
4544
            OPEN releases_cur;
-
 
4545
 
-
 
4546
            FETCH releases_cur
-
 
4547
             INTO releases_rec;
-
 
4548
 
-
 
4549
            IF releases_cur%NOTFOUND
-
 
4550
            THEN
-
 
4551
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
-
 
4552
               UPDATE package_versions
-
 
4553
                  SET is_patch = 'Y'
-
 
4554
                WHERE pv_id = patchpv_id;
2734
      WHERE pv.pv_id = oldpvid;
4555
 
2735
 
4556
               INSERT INTO package_patches
-
 
4557
                           (pv_id, patch_id, install_order)
2736
/*-------------------------------------------------------*/
4558
                   (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
-
 
4559
                           lastinstallorder + 1 AS install_order
-
 
4560
                      FROM package_versions pv
-
 
4561
                     WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
-
 
4562
            END IF;
-
 
4563
 
2737
 
4564
            CLOSE releases_cur;
2738
     /* This procedure is usually used by "History" option in Release Manager */
4565
 
2739
 
4566
            /* LOG ACTION */
2740
     -- Get dlock state
4567
            log_action (nparentpvid,
2741
     SELECT pv.dlocked
4568
                        'patch_add',
-
 
4569
                        nuserid,
2742
       INTO dlocked
4570
                           'Patch version was found and attached: '
-
 
4571
                        || snewpatchversion
2743
       FROM package_versions pv
4572
                       );
2744
      WHERE pv.pv_id = newpvid;
4573
         END IF;
-
 
4574
      END IF;
-
 
4575
 
2745
 
4576
      /* Create Patch Dependencies */
2746
     -- Get VIEW_ID ---
-
 
2747
     IF ROWCOUNT = 1
-
 
2748
     THEN
4577
      opatchdepcollector := in_list_number (spatchidlist);
2749
       viewid := get_view_location (oldpvid, rtagid);
-
 
2750
     ELSE
-
 
2751
       -- Set ViewID to default
-
 
2752
       viewid := 7;
-
 
2753
     END IF;
4578
 
2754
 
4579
      -- Make sure patch is unofficial before altering its dependencies
2755
     -- Get which area should go under
4580
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
2756
     envtab := select_environment_area (dlocked);
4581
      THEN
2757
     -- Log
4582
         -- Delete Existing Dependencies
-
 
4583
         DELETE FROM package_dependencies dep
2758
     log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
4584
               WHERE dep.pv_id = patchpv_id;
-
 
4585
 
2759
 
4586
         -- Insert new dependencies
2760
     -- Replace package
4587
         INSERT INTO package_dependencies
-
 
4588
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
-
 
4589
              SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
-
 
4590
                     parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
-
 
4591
                     'L' AS build_type
-
 
4592
                FROM package_versions pv
2761
     IF envtab = 0
4593
               WHERE pv.pv_id IN (
2762
     THEN
4594
                      SELECT *
2763
       -- WORK IN PROGRESS --
4595
                        FROM TABLE
-
 
4596
                                (CAST
-
 
4597
                                    (opatchdepcollector AS relmgr_number_tab_t)
-
 
4598
                                ));
-
 
4599
      END IF;
-
 
4600
 
2764
 
4601
      -- Return patch_id
2765
       -- Delete old package
4602
      returnpatchid := patchpv_id;
2766
       pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
4603
 
2767
 
-
 
2768
       -- Add new package
-
 
2769
       pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
4604
      CLOSE parent_cur;
2770
     ELSIF envtab = 1
-
 
2771
     THEN
-
 
2772
       -- PENDING --
4605
 
2773
 
4606
      CLOSE patch_cur;
-
 
4607
   EXCEPTION
-
 
4608
      WHEN DUP_VAL_ON_INDEX
2774
       -- Delete old package
4609
      THEN
-
 
4610
         raise_application_error (-20000,
-
 
4611
                                     'Patch version '
-
 
4612
                                  || snewpatchversion
-
 
4613
                                  || ' already exist.'
2775
       pk_planned.remove_package (oldpvid, rtagid, userid);
4614
                                 );
-
 
4615
   END;
-
 
4616
 
2776
 
4617
/*-------------------------------------------------------------------------------------------------------*/
-
 
4618
   PROCEDURE obsolete_patch (
2777
       -- Add new package
4619
      patchid            IN   NUMBER,
2778
       pk_planned.add_package (newpvid, viewid, rtagid, userid);
4620
      isobsolete         IN   CHAR,
2779
     ELSIF envtab = 2
4621
      obsoletecomments   IN   VARCHAR2,
-
 
4622
      userid             IN   NUMBER
-
 
4623
   )
-
 
4624
   IS
-
 
4625
   BEGIN
2780
     THEN
4626
      -- Update patch
2781
       -- RELEASED --
4627
      UPDATE package_versions pv
-
 
4628
         SET pv.is_obsolete = isobsolete,
-
 
4629
             pv.obsolete_comments = obsoletecomments
-
 
4630
       WHERE pv.pv_id = patchid;
-
 
4631
 
2782
 
4632
      /*
-
 
4633
      -- Update patch children
2783
       -- Delete old package
4634
      UPDATE PACKAGE_VERSIONS pv SET
-
 
4635
      pv.IS_OBSOLETE = IsObsolete,
-
 
4636
      pv.OBSOLETE_COMMENTS = ObsoleteComments
2784
       pk_release.remove_package (oldpvid, rtagid, userid);
4637
      WHERE pv.PV_ID IN (
2785
       -- Add new package
4638
                     SELECT DISTINCT dep.DPV_ID
-
 
4639
                       FROM PACKAGE_DEPENDENCIES dep
-
 
4640
                      WHERE dep.PV_ID = PatchId
2786
       pk_release.add_package (newpvid, viewid, rtagid, userid);
4641
                     );
-
 
4642
 
2787
 
-
 
2788
       -- update the pegging table
-
 
2789
       UPDATE PEGGED_VERSIONS SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
4643
 
2790
 
4644
      -- Update patch parent
2791
       -- update the advisory ripple table
4645
      UPDATE PACKAGE_VERSIONS pv SET
-
 
4646
      pv.IS_OBSOLETE = IsObsolete,
-
 
4647
      pv.OBSOLETE_COMMENTS = ObsoleteComments
-
 
4648
      WHERE pv.PV_ID IN (
-
 
4649
                     SELECT DISTINCT dep.PV_ID
-
 
4650
                       FROM PACKAGE_DEPENDENCIES dep
-
 
4651
                      WHERE dep.DPV_ID = PatchId
2792
       UPDATE ADVISORY_RIPPLE SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
4652
                     );
-
 
4653
 
2793
 
-
 
2794
       -- Now do post Release Actions
-
 
2795
       pk_release.run_post_actions (newpvid, rtagid);
4654
      */
2796
     END IF;
4655
 
2797
 
4656
      /* LOG ACTION */
-
 
4657
      IF isobsolete IS NOT NULL
-
 
4658
      THEN
-
 
4659
         log_action (patchid,
-
 
4660
                     'patch_obsolete',
-
 
4661
                     userid,
-
 
4662
                     'Obsolete patch. ' || obsoletecomments
-
 
4663
                    );
-
 
4664
      ELSE
2798
     -- Log
4665
         log_action (patchid,
-
 
4666
                     'patch_obsolete',
-
 
4667
                     userid,
-
 
4668
                     'Undo patch obsolete.'
2799
     log_action (oldpvid, 'action', userid, 'End of Package Replace...');
4669
                    );
-
 
4670
      END IF;
-
 
4671
   END;
2800
   END;
4672
 
2801
 
4673
/*-------------------------------------------------------------------------------------------------------*/
2802
/*-------------------------------------------------------------------------------------------------------*/
4674
   PROCEDURE obsolete_patches (
2803
   FUNCTION remove_package (
4675
      spatchidlist       IN   VARCHAR2,
2804
     pvid        IN   NUMBER,
4676
      isobsolete         IN   CHAR,
2805
     rtagid      IN   NUMBER,
4677
      obsoletecomments   IN   VARCHAR2,
2806
     userid      IN   NUMBER,
4678
      userid             IN   NUMBER
2807
     forceremove IN   CHAR
4679
   )
2808
   )
-
 
2809
     RETURN NUMBER
4680
   IS
2810
   IS
-
 
2811
     envtab      NUMBER;
-
 
2812
     isused      BOOLEAN;
-
 
2813
     recordcount   NUMBER;
4681
   BEGIN
2814
   BEGIN
4682
      /*--------------- Business Rules Here -------------------*/
2815
/*--------------- Business Rules Here -------------------*/
4683
      IF spatchidlist IS NULL
-
 
4684
      THEN
-
 
4685
         raise_application_error (-20000,
-
 
4686
                                  'Please select one or more Patches.'
-
 
4687
                                 );
-
 
4688
      END IF;
-
 
4689
 
-
 
4690
/*-------------------------------------------------------*/
2816
/*-------------------------------------------------------*/
4691
 
2817
 
4692
      -- Update patch
-
 
4693
      UPDATE package_versions pv
-
 
4694
         SET pv.is_obsolete = isobsolete,
-
 
4695
             pv.obsolete_comments = obsoletecomments
-
 
4696
       WHERE pv.pv_id IN (
-
 
4697
                SELECT *
-
 
4698
                  FROM THE
-
 
4699
                          (SELECT CAST
-
 
4700
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
-
 
4701
                                     )
-
 
4702
                             FROM DUAL
-
 
4703
                          ));
-
 
4704
      /*
-
 
4705
      -- Update patch children
-
 
4706
      UPDATE PACKAGE_VERSIONS pv SET
-
 
4707
      pv.IS_OBSOLETE = IsObsolete,
-
 
4708
      pv.OBSOLETE_COMMENTS = ObsoleteComments
-
 
4709
      WHERE pv.PV_ID IN (
-
 
4710
                     SELECT DISTINCT dep.DPV_ID
-
 
4711
                       FROM PACKAGE_DEPENDENCIES dep
-
 
4712
                      WHERE dep.PV_ID = PatchId
-
 
4713
                     );
-
 
4714
 
-
 
4715
 
-
 
4716
      -- Update patch parent
2818
     -- Find location of package
4717
      UPDATE PACKAGE_VERSIONS pv SET
-
 
4718
      pv.IS_OBSOLETE = IsObsolete,
-
 
4719
      pv.OBSOLETE_COMMENTS = ObsoleteComments
-
 
4720
      WHERE pv.PV_ID IN (
-
 
4721
                     SELECT DISTINCT dep.PV_ID
-
 
4722
                       FROM PACKAGE_DEPENDENCIES dep
-
 
4723
                      WHERE dep.DPV_ID = PatchId
-
 
4724
                     );
-
 
4725
 
-
 
4726
      */
-
 
4727
 
-
 
4728
      /* LOG ACTION
-
 
4729
      IF IsObsolete IS NOT NULL THEN
-
 
4730
         Log_Action ( PatchId, 'patch_obsolete', UserId,
-
 
4731
                     'Obsolete patch. '|| ObsoleteComments );
-
 
4732
      ELSE
-
 
4733
         Log_Action ( PatchId, 'patch_obsolete', UserId,
-
 
4734
                     'Undo patch obsolete.' );
-
 
4735
      END IF;  */
-
 
4736
   END;
-
 
4737
 
-
 
4738
/*-------------------------------------------------------------------------------------------------------*/
-
 
4739
   PROCEDURE add_process (
-
 
4740
      nprocid         IN   processes.proc_id%TYPE,
-
 
4741
      shealthtag      IN   processes.proc_name%TYPE,
-
 
4742
      sprocdesc       IN   processes.proc_description%TYPE,
-
 
4743
      scmdinterface   IN   processes.run_as%TYPE,
-
 
4744
      spkgowner       IN   processes.pkg_owner%TYPE,
-
 
4745
      sisinterface    IN   processes.is_interface%TYPE,
-
 
4746
      npvid           IN   package_processes.pv_id%TYPE,
2819
     envtab := get_package_area (pvid, rtagid);
4747
      nuserid         IN   NUMBER
-
 
4748
   )
-
 
4749
   IS
-
 
4750
      pkgname   VARCHAR2 (100);
-
 
4751
 
-
 
4752
   BEGIN
-
 
4753
      INSERT INTO processes
-
 
4754
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
-
 
4755
                   is_interface
-
 
4756
                  )
-
 
4757
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
-
 
4758
                   sisinterface
-
 
4759
                  );
-
 
4760
 
2820
 
4761
      pk_package.add_package_process (nprocid, npvid, nuserid);
2821
     -- Remove Package
-
 
2822
     IF envtab = 0
4762
   END;
2823
     THEN
-
 
2824
       -- WORK IN PROGRESS --
-
 
2825
       -- Delete package
-
 
2826
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
4763
 
2827
 
4764
/*-------------------------------------------------------------------------------------------------------*/
-
 
4765
   PROCEDURE add_package_process (
-
 
4766
      nprocidlist   IN   VARCHAR2,
2828
       RETURN 0;
4767
      npvid         IN   package_processes.pv_id%TYPE,
-
 
4768
      nuserid       IN   NUMBER
2829
     ELSIF envtab = 1
4769
   )
2830
     THEN
4770
   IS
2831
       -- PENDING --
-
 
2832
       -- Delete package
4771
      processname   VARCHAR2 (4000);
2833
       pk_planned.remove_package (pvid, rtagid, userid);
4772
 
2834
 
4773
      CURSOR proc_cur
2835
       RETURN 0;
4774
      IS
-
 
4775
         SELECT prc.proc_id
2836
     ELSIF envtab = 2
4776
           FROM processes prc
-
 
4777
          WHERE prc.proc_id IN (
2837
     THEN
4778
                   SELECT *
2838
       -- RELEASED --
4779
                     FROM THE
-
 
4780
                             (SELECT CAST
-
 
4781
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
-
 
4782
                                        )
-
 
4783
                                FROM DUAL
-
 
4784
                             ));
-
 
4785
 
2839
 
4786
      proc_rec  proc_cur%ROWTYPE;
2840
       -- Check if is used by other packages
4787
   BEGIN
-
 
4788
      OPEN proc_cur;
2841
       isused := TRUE;
4789
 
2842
 
-
 
2843
       IF forceremove = 'N'
4790
      FETCH proc_cur
2844
       THEN
-
 
2845
         SELECT COUNT (pv.pv_id)
4791
       INTO proc_rec;
2846
           INTO recordcount
-
 
2847
           FROM (SELECT dpv.pkg_id, dpv.v_ext
-
 
2848
                 FROM release_content rc,
-
 
2849
                     package_dependencies dep,
-
 
2850
                     package_versions dpv
-
 
2851
                WHERE rc.rtag_id = rtagid
-
 
2852
                  AND rc.pv_id = dep.pv_id
-
 
2853
                  AND dep.dpv_id = dpv.pv_id) rdep,
-
 
2854
               package_versions pv
-
 
2855
          WHERE pv.pkg_id = rdep.pkg_id
-
 
2856
            AND NVL (pv.v_ext, '|LINK_A_NULL|') =
-
 
2857
                                  NVL (rdep.v_ext, '|LINK_A_NULL|')
-
 
2858
            AND pv.pv_id = pvid;
4792
 
2859
 
4793
      WHILE proc_cur%FOUND
2860
         IF recordcount > 0
4794
      LOOP
2861
         THEN
4795
         INSERT INTO package_processes (proc_id, pv_id)
2862
            RETURN 1;               -- Return 1 as package being used
-
 
2863
         ELSE
4796
              VALUES (proc_rec.proc_id, npvid);
2864
            isused := FALSE;
-
 
2865
         END IF;
-
 
2866
       END IF;
4797
 
2867
 
4798
         SELECT prc.proc_name
2868
       IF forceremove = 'Y' OR NOT isused
4799
           INTO processname
2869
       THEN
4800
           FROM processes prc
2870
         -- Delete old package
4801
          WHERE prc.proc_id = proc_rec.proc_id;
2871
         pk_release.remove_package (pvid, rtagid, userid);
4802
 
2872
 
4803
         -- Log Action --
-
 
4804
         log_action (npvid,
-
 
4805
                     'process_add',
2873
         -- Delete old package's pegging info
4806
                     nuserid,
-
 
4807
                     'Added process with health tag ' || processname
2874
         DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = rtagid AND pegv.PV_ID = pvid;
4808
                    );
-
 
4809
 
2875
 
4810
         FETCH proc_cur
2876
         -- Delete old package's advisory ripple info
4811
          INTO proc_rec;
2877
         DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = rtagid AND avr.PV_ID = pvid;
4812
      END LOOP;
-
 
4813
 
2878
 
-
 
2879
         -- Now do post Release Actions
-
 
2880
         pk_release.run_post_actions (pvid, rtagid);
4814
      CLOSE proc_cur;
2881
         RETURN 0;
-
 
2882
       END IF;
-
 
2883
     END IF;
4815
   END;
2884
   END;
4816
 
2885
 
4817
/*-------------------------------------------------------------------------------------------------------*/
2886
/*-------------------------------------------------------------------------------------------------------*/
4818
   PROCEDURE remove_process (
-
 
4819
      nprocid   IN   package_processes.proc_id%TYPE,
-
 
4820
      npvid     IN   package_processes.pv_id%TYPE,
-
 
4821
      nuserid   IN   NUMBER
-
 
4822
   )
-
 
4823
   IS
-
 
4824
      processname   VARCHAR2 (4000);
-
 
4825
   BEGIN
-
 
4826
      SELECT prc.proc_name
-
 
4827
        INTO processname
-
 
4828
        FROM processes prc
-
 
4829
       WHERE prc.proc_id = nprocid;
-
 
4830
 
-
 
4831
      DELETE FROM package_processes
-
 
4832
            WHERE proc_id = nprocid AND pv_id = npvid;
2887
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
4833
 
2888
 
4834
      -- Log Action --
2889
   PROCEDURE get_environment_items (
4835
      log_action (npvid,
2890
     viewtype         IN      NUMBER,
4836
                  'process_remove',
2891
     userid           IN      NUMBER,
4837
                  nuserid,
2892
     rtagid           IN      NUMBER,
4838
                  'Removed process with health tag ' || processname
2893
     sviewidshowlist  IN      VARCHAR2,
4839
                 );
2894
     ntruerecordcount OUT     NUMBER,
4840
   END;
2895
     recordset        OUT     typecur
4841
/*-------------------------------------------------------------------------------------------------------*/
-
 
4842
   /*
-
 
4843
   ** Author: Rupesh Solanki
-
 
4844
   ** Purpose: To move package versions from one release to another
-
 
4845
   ** Release: 4th September 2006
-
 
4846
   */
-
 
4847
   PROCEDURE move_package (
-
 
4848
      npvid        IN package_versions.pv_id%TYPE,
-
 
4849
      nrtagid      IN release_tags.rtag_id%TYPE,
-
 
4850
      nnewrtagid   IN release_tags.rtag_id%TYPE,
-
 
4851
      nuserid      IN NUMBER
-
 
4852
   )
-
 
4853
   IS
-
 
4854
 
-
 
4855
      oldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);
-
 
4856
 
-
 
4857
   BEGIN
-
 
4858
      SELECT rtag_name into oldrtag_name
-
 
4859
      FROM RELEASE_TAGS
-
 
4860
      WHERE rtag_id = nrtagid;
-
 
4861
 
-
 
4862
      SELECT rtag_name into newrtag_name
-
 
4863
      FROM RELEASE_TAGS
-
 
4864
      WHERE rtag_id = nnewrtagid;
-
 
4865
 
-
 
4866
      /* Table Work In Progress*/
-
 
4867
      UPDATE WORK_IN_PROGRESS
-
 
4868
      SET RTAG_ID = nnewrtagid
-
 
4869
      WHERE RTAG_ID = nrtagid
-
 
4870
      AND PV_ID = npvid;
-
 
4871
 
-
 
4872
      /* Table PLANNED*/
-
 
4873
      UPDATE PLANNED
-
 
4874
      SET RTAG_ID = nnewrtagid
-
 
4875
      WHERE RTAG_ID = nrtagid
-
 
4876
      AND PV_ID = npvid;
-
 
4877
 
-
 
4878
      /* Table PEGGED_VERSIONS */
-
 
4879
      DELETE FROM PEGGED_VERSIONS pegv
-
 
4880
      WHERE pegv.RTAG_ID = nrtagid
-
 
4881
      AND pegv.PV_ID = npvid;
-
 
4882
 
-
 
4883
      /* Table ADVISORY_RIPPLE*/
-
 
4884
      DELETE FROM ADVISORY_RIPPLE
-
 
4885
      WHERE RTAG_ID = nrtagid
-
 
4886
      AND PV_ID = npvid;
-
 
4887
 
-
 
4888
 
-
 
4889
      -- Log Action --
-
 
4890
      log_action (npvid,
-
 
4891
                  'move_package_version',
-
 
4892
                  nuserid,
-
 
4893
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
-
 
4894
                 );
-
 
4895
   END;
-
 
4896
 
-
 
4897
/*-------------------------------------------------------------------------------------------------------*/
-
 
4898
   /*
-
 
4899
   ** Author: Rupesh Solanki
-
 
4900
   ** Purpose: To modify the product state from integration to test to deployment
-
 
4901
   ** Release: 25th January 2006
-
 
4902
   */
-
 
4903
   PROCEDURE modify_product_state (
-
 
4904
      npvid    IN package_versions.pv_id%TYPE,
-
 
4905
      nrtagid  IN release_tags.rtag_id%TYPE,
-
 
4906
      nstateid IN product_states.state_id%TYPE,
-
 
4907
      nuserid  IN NUMBER
-
 
4908
   ) IS
-
 
4909
 
-
 
4910
      sStateName VARCHAR2(4000);
-
 
4911
      sRtagName VARCHAR2(4000);
-
 
4912
 
-
 
4913
   BEGIN
-
 
4914
 
-
 
4915
      UPDATE RELEASE_CONTENT
-
 
4916
      SET PRODUCT_STATE = nstateid
-
 
4917
      WHERE PV_ID = npvid
-
 
4918
      AND RTAG_ID = nrtagid;
-
 
4919
 
-
 
4920
 
-
 
4921
      SELECT STATE INTO sStateName
-
 
4922
      FROM PRODUCT_STATES
-
 
4923
      WHERE STATE_ID = nstateid;
-
 
4924
 
-
 
4925
      SELECT RTAG_NAME into sRtagName
-
 
4926
      FROM RELEASE_TAGS
-
 
4927
      WHERE RTAG_ID = nrtagid;
-
 
4928
 
-
 
4929
 
-
 
4930
      -- Log Action --
-
 
4931
      log_action (npvid,
-
 
4932
                  'modify_product_state',
-
 
4933
                     nuserid,
-
 
4934
                     sStateName || ' in '|| sRtagName
-
 
4935
                  );
-
 
4936
   END;
-
 
4937
/*-------------------------------------------------------------------------------------------------------*/
-
 
4938
   /*
-
 
4939
   ** Author: Jeremy Tweddle
-
 
4940
   ** Date: 24/Aug/2007
-
 
4941
   */
-
 
4942
   PROCEDURE add_code_review_url (
-
 
4943
      npvid           IN    NUMBER,
-
 
4944
      nprojid         IN    NUMBER,
-
 
4945
      surl            IN    VARCHAR2,
-
 
4946
      sreason         IN    VARCHAR2,
-
 
4947
      ddateofreview   IN    DATE
-
 
4948
   ) IS
-
 
4949
 
-
 
4950
      ncrid NUMBER;
-
 
4951
 
-
 
4952
   BEGIN
-
 
4953
 
-
 
4954
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
-
 
4955
 
-
 
4956
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
-
 
4957
                                    last_modified )
-
 
4958
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
-
 
4959
 
-
 
4960
   END;
-
 
4961
/*-------------------------------------------------------------------------------------------------------*/
-
 
4962
   /*
-
 
4963
   ** Author: Jeremy Tweddle
-
 
4964
   ** Date: 22/Aug/2007
-
 
4965
   */
-
 
4966
   PROCEDURE update_code_review_url (
-
 
4967
      ncrid           IN    NUMBER,
-
 
4968
      nprojid         IN    NUMBER,
-
 
4969
      surl            IN    VARCHAR2,
-
 
4970
      sreason         IN    VARCHAR2
-
 
4971
   ) IS
-
 
4972
 
-
 
4973
   BEGIN
-
 
4974
 
-
 
4975
      UPDATE code_review_url
-
 
4976
      SET url = surl,
-
 
4977
          proj_id = nprojid,
-
 
4978
          reason = sreason,
-
 
4979
          last_modified = ora_sysdate
-
 
4980
      WHERE cr_id = ncrid;
-
 
4981
 
-
 
4982
   END;
-
 
4983
/*-------------------------------------------------------------------------------------------------------*/
-
 
4984
   /*
-
 
4985
   ** Author: Jeremy Tweddle
-
 
4986
   ** Date: 22/Aug/2007
-
 
4987
   */
-
 
4988
   PROCEDURE remove_code_review_url (
-
 
4989
      ncrid  IN    NUMBER
-
 
4990
   ) IS
-
 
4991
 
-
 
4992
   BEGIN
-
 
4993
      DELETE FROM code_review_url
-
 
4994
      WHERE cr_id = ncrid;
-
 
4995
   END;
-
 
4996
/*-------------------------------------------------------------------------------------------------------*/
-
 
4997
END pk_package;
-
 
4998
/
-
 
4999
--------------------------------------------------------
-
 
5000
--  DDL for Package Body PK_RMAPI_TEST
-
 
5001
--------------------------------------------------------
-
 
5002
 
-
 
5003
  CREATE OR REPLACE PACKAGE BODY "PK_RMAPI_TEST" 
-
 
5004
IS
-
 
5005
 
-
 
5006
   /*-------------------------------------------------------------------------------------------------------*/
-
 
5007
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
-
 
5008
      RETURN typecur
-
 
5009
   IS
-
 
5010
      npvid     NUMBER  := 0;
-
 
5011
      RECORDS   typecur;
-
 
5012
   BEGIN
-
 
5013
      BEGIN
-
 
5014
         -- Get PV_ID --
-
 
5015
         SELECT pv.pv_id
-
 
5016
           INTO npvid
-
 
5017
           FROM PACKAGES pkg, package_versions pv
-
 
5018
          WHERE pv.pkg_id = pkg.pkg_id
-
 
5019
            AND pkg.pkg_name = pkgname
-
 
5020
            AND pv.pkg_version = pkgversion;
-
 
5021
      EXCEPTION
-
 
5022
         WHEN NO_DATA_FOUND
-
 
5023
         THEN
-
 
5024
            raise_application_error (-20000, 'Package Not Found!');
-
 
5025
            --WHEN OTHERS THEN
-
 
5026
                  -- Consider logging the error and then re-raise
-
 
5027
            RAISE;
-
 
5028
      END;
-
 
5029
 
-
 
5030
      -- Finally get package dependencies --
-
 
5031
      OPEN RECORDS FOR
-
 
5032
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
-
 
5033
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
-
 
5034
          WHERE dep.pv_id = npvid
-
 
5035
            AND dpv.pkg_id = dpkg.pkg_id
-
 
5036
            AND dpv.pv_id = dep.dpv_id;
-
 
5037
 
-
 
5038
      RETURN RECORDS;
-
 
5039
   END;
-
 
5040
 
-
 
5041
/*-------------------------------------------------------------------------------------------------------*/
-
 
5042
   FUNCTION wip_iteration_package (
-
 
5043
      projname        VARCHAR2,
-
 
5044
      iterationname   VARCHAR2,
-
 
5045
      pkgname         VARCHAR2
-
 
5046
   )
-
 
5047
      RETURN typecur
-
 
5048
   IS
-
 
5049
      nrtagid   NUMBER  := 0;
-
 
5050
      RECORDS   typecur;
-
 
5051
   BEGIN
-
 
5052
      BEGIN
-
 
5053
         -- Get latest rtag_id --
-
 
5054
         SELECT rt.rtag_id
-
 
5055
           INTO nrtagid
-
 
5056
           FROM projects proj, release_tags rt
-
 
5057
          WHERE rt.proj_id = proj.proj_id
-
 
5058
            AND UPPER (proj.proj_name) = UPPER (projname)
-
 
5059
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
-
 
5060
 
-
 
5061
         IF (nrtagid IS NULL)
-
 
5062
         THEN
-
 
5063
            raise_application_error (-20000,
-
 
5064
                                     'Work In Progress is Not Found!');
-
 
5065
         END IF;
-
 
5066
      EXCEPTION
-
 
5067
         WHEN NO_DATA_FOUND
-
 
5068
         THEN
-
 
5069
            raise_application_error (-20000,
-
 
5070
                                     'Work In Progress is Not Found!');
-
 
5071
            RAISE;
-
 
5072
      END;
-
 
5073
 
-
 
5074
      -- Finally get package dependencies --
-
 
5075
      OPEN RECORDS FOR
-
 
5076
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
-
 
5077
                pv.src_path
-
 
5078
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
-
 
5079
          WHERE pv.pkg_id = pkg.pkg_id
-
 
5080
            AND wip.pv_id = pv.pv_id
-
 
5081
            AND wip.rtag_id = nrtagid
-
 
5082
            AND pkg.pkg_name = pkgname;
-
 
5083
 
-
 
5084
      RETURN RECORDS;
-
 
5085
   END;
-
 
5086
 
-
 
5087
/*-------------------------------------------------------------------------------------------------------*/
-
 
5088
   FUNCTION auto_make_release (
-
 
5089
      rtagid                   IN   NUMBER,
-
 
5090
      pkgname                  IN   VARCHAR2,
-
 
5091
      vext                     IN   VARCHAR2,
-
 
5092
      newpkgversion            IN   VARCHAR2,
-
 
5093
      label                    IN   VARCHAR2,
-
 
5094
      dependenciesimportlist   IN   VARCHAR2,
-
 
5095
      isrippled                IN   NUMBER,
-
 
5096
      username                 IN   VARCHAR2
-
 
5097
   )
-
 
5098
      RETURN NUMBER
-
 
5099
   IS
-
 
5100
      pkgid                           NUMBER;
-
 
5101
      pvid                            NUMBER                        := 0;
-
 
5102
      userid                          NUMBER;
-
 
5103
      dlocked                         VARCHAR2 (20)                 := NULL;
-
 
5104
      clonefrompvid                   NUMBER;
-
 
5105
      ssv_mm                          package_versions.v_mm%TYPE;
-
 
5106
      ssv_nmm                         package_versions.v_nmm%TYPE;
-
 
5107
      ssv_ext                         package_versions.v_ext%TYPE;
-
 
5108
      return_package_not_found        NUMBER                        := -1;
-
 
5109
      return_package_already_exists   NUMBER                        := -2;
-
 
5110
      return_not_approved             NUMBER                        := -3;
-
 
5111
   BEGIN
-
 
5112
      /*--------------- Business Rules Here -------------------*/
-
 
5113
      IF (rtagid IS NULL)
-
 
5114
      THEN
-
 
5115
         raise_application_error (-20000, 'RtagId must be supplied.');
-
 
5116
      END IF;
-
 
5117
 
-
 
5118
      IF (pkgname IS NULL)
-
 
5119
      THEN
-
 
5120
         raise_application_error (-20000, 'PkgName must be supplied.');
-
 
5121
      END IF;
-
 
5122
 
-
 
5123
      IF (newpkgversion IS NULL)
-
 
5124
      THEN
-
 
5125
         raise_application_error (-20000, 'PkgVersion must be supplied.');
-
 
5126
      END IF;
-
 
5127
 
-
 
5128
      IF (label IS NULL)
-
 
5129
      THEN
-
 
5130
         raise_application_error (-20000, 'Label must be supplied.');
-
 
5131
      END IF;
-
 
5132
 
-
 
5133
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
-
 
5134
      THEN
-
 
5135
         raise_application_error
-
 
5136
            (-20000,
-
 
5137
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
-
 
5138
            );
-
 
5139
      END IF;
-
 
5140
 
-
 
5141
      IF (username IS NULL)
-
 
5142
      THEN
-
 
5143
         raise_application_error (-20000, 'UserName must be supplied.');
-
 
5144
      END IF;
-
 
5145
 
-
 
5146
      -- Get user_id
-
 
5147
      BEGIN
-
 
5148
         SELECT usr.user_id
-
 
5149
           INTO userid
-
 
5150
           FROM users usr
-
 
5151
          WHERE UPPER (usr.user_name) = UPPER (username)
-
 
5152
            AND usr.is_disabled IS NULL;
-
 
5153
      EXCEPTION
-
 
5154
         WHEN NO_DATA_FOUND
-
 
5155
         THEN
-
 
5156
            raise_application_error (-20000,
-
 
5157
                                        'UserName '
-
 
5158
                                     || username
-
 
5159
                                     || ' is not valid or disabled.'
-
 
5160
                                    );
-
 
5161
      END;
-
 
5162
 
-
 
5163
/*-------------------------------------------------------*/
-
 
5164
 
-
 
5165
      -- Create package if necessary
-
 
5166
      IF isrippled = 1
-
 
5167
      THEN
-
 
5168
         /* Ripple Build */
-
 
5169
         BEGIN
-
 
5170
            -- Make sure that package does not exist
-
 
5171
            SELECT pv.pv_id
-
 
5172
              INTO pvid
-
 
5173
              FROM package_versions pv, PACKAGES pkg
-
 
5174
             WHERE pv.pkg_id = pkg.pkg_id
-
 
5175
               AND pkg.pkg_name = pkgname
-
 
5176
               AND pv.pkg_version = newpkgversion;
-
 
5177
         EXCEPTION
-
 
5178
            WHEN NO_DATA_FOUND
-
 
5179
            THEN
-
 
5180
               pvid := 0;
-
 
5181
         END;
-
 
5182
 
-
 
5183
         IF (pvid = 0)
-
 
5184
         THEN
-
 
5185
            -- Split current version in parts
-
 
5186
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
-
 
5187
 
-
 
5188
            BEGIN
-
 
5189
               -- Find package to be replaced with thie ripple package
-
 
5190
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
-
 
5191
               THEN
-
 
5192
                  SELECT pv.pv_id
-
 
5193
                    INTO clonefrompvid
-
 
5194
                    FROM PACKAGES pkg, package_versions pv,
-
 
5195
                         release_content rc
-
 
5196
                   WHERE rc.pv_id = pv.pv_id
-
 
5197
                     AND pv.pkg_id = pkg.pkg_id
-
 
5198
                     AND rc.rtag_id = rtagid
-
 
5199
                     AND pkg.pkg_name = pkgname
-
 
5200
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
-
 
5201
               ELSE
-
 
5202
                  SELECT pv.pv_id
-
 
5203
                    INTO clonefrompvid
-
 
5204
                    FROM PACKAGES pkg, package_versions pv,
-
 
5205
                         release_content rc
-
 
5206
                   WHERE rc.pv_id = pv.pv_id
-
 
5207
                     AND pv.pkg_id = pkg.pkg_id
-
 
5208
                     AND rc.rtag_id = rtagid
-
 
5209
                     AND pkg.pkg_name = pkgname
-
 
5210
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
-
 
5211
               END IF;
-
 
5212
            EXCEPTION
-
 
5213
               WHEN NO_DATA_FOUND
-
 
5214
               THEN
-
 
5215
                  raise_application_error
-
 
5216
                                        (-20000,
-
 
5217
                                            'Cannot get CloneFromPvId. VExt='
-
 
5218
                                         || vext
-
 
5219
                                         || ', RtagId='
-
 
5220
                                         || rtagid
-
 
5221
                                         || ', PkgName='
-
 
5222
                                         || pkgname
-
 
5223
                                         || ', SSV_EXT='
-
 
5224
                                         || ssv_ext
-
 
5225
                                        );
-
 
5226
            END;
-
 
5227
 
-
 
5228
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
-
 
5229
            THEN
-
 
5230
               -- Create package
-
 
5231
               seed_package_names_versions (pkgname,
-
 
5232
                                            newpkgversion,
-
 
5233
                                            userid,
-
 
5234
                                            pvid,
-
 
5235
                                            clonefrompvid
-
 
5236
                                           );
-
 
5237
            ELSE
-
 
5238
               -- Create package
-
 
5239
               seed_package_names_versions2 (pkgname,
-
 
5240
                                             newpkgversion,
-
 
5241
                                             userid,
-
 
5242
                                             pvid,
-
 
5243
                                             clonefrompvid
-
 
5244
                                            );
-
 
5245
            END IF;
-
 
5246
 
-
 
5247
            -- Update Package reason for release
-
 
5248
            UPDATE package_versions pv
-
 
5249
               SET pv.comments = 'Rippled Build.',
-
 
5250
                   pv.build_type = 'Y'
-
 
5251
             WHERE pv.pv_id = pvid;
-
 
5252
         ELSE
-
 
5253
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
-
 
5254
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
-
 
5255
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
-
 
5256
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
-
 
5257
            UPDATE package_versions pv
-
 
5258
               SET pv.release_notes_info = null,
-
 
5259
                   pv.modified_stamp = ora_sysdatetime
-
 
5260
             WHERE pv.pv_id = pvid;
-
 
5261
 
-
 
5262
            RETURN return_package_already_exists;
-
 
5263
         END IF;
-
 
5264
      ELSE
-
 
5265
         /* Auto build from Pending area */
-
 
5266
 
-
 
5267
         -- Find package in pending area
-
 
5268
         BEGIN
-
 
5269
            SELECT pv.pv_id, pv.dlocked
-
 
5270
              INTO pvid, dlocked
-
 
5271
              FROM planned pl, package_versions pv, PACKAGES pkg
-
 
5272
             WHERE pl.pv_id = pv.pv_id
-
 
5273
               AND pv.pkg_id = pkg.pkg_id
-
 
5274
               AND pl.rtag_id = rtagid
-
 
5275
               AND pkg.pkg_name = pkgname
-
 
5276
               AND pv.dlocked = 'A'
-
 
5277
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
-
 
5278
               AND rownum = 1
-
 
5279
             ORDER BY pv.modified_stamp;
-
 
5280
         EXCEPTION
-
 
5281
            WHEN NO_DATA_FOUND
-
 
5282
            THEN
-
 
5283
               pvid := 0;
-
 
5284
         END;
-
 
5285
 
-
 
5286
         IF (pvid = 0)
-
 
5287
         THEN
-
 
5288
            -- Package does not exist in pending area, hence report it
-
 
5289
            RETURN return_package_not_found;
-
 
5290
         ELSIF (dlocked != 'A')
-
 
5291
         THEN
-
 
5292
            -- Package is not approved for autobuild
-
 
5293
            RETURN return_not_approved;
-
 
5294
         END IF;
-
 
5295
      END IF;
-
 
5296
 
-
 
5297
      BEGIN
-
 
5298
         -- Import Dependencies
-
 
5299
         import_dependencies (pvid, dependenciesimportlist, userid);
-
 
5300
      END;
-
 
5301
 
-
 
5302
      BEGIN
-
 
5303
         -- Split current version in parts
-
 
5304
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
-
 
5305
 
-
 
5306
         -- Update Package Details
-
 
5307
         UPDATE package_versions pv
-
 
5308
            SET pv.pkg_version = newpkgversion,
-
 
5309
                pv.v_ext = ssv_ext,
-
 
5310
                pv.v_mm = ssv_mm,
-
 
5311
                pv.v_nmm = ssv_nmm,
-
 
5312
                pv.pkg_label = label
-
 
5313
          WHERE pv.pv_id = pvid;
-
 
5314
      EXCEPTION
-
 
5315
         WHEN DUP_VAL_ON_INDEX
-
 
5316
         THEN
-
 
5317
            -- Package already exists, hence cannot be used for ripple build
-
 
5318
            RETURN return_package_already_exists;
-
 
5319
      END;
-
 
5320
 
-
 
5321
      -- Update the is_autobuildable
-
 
5322
      UPDATE package_versions
-
 
5323
         SET is_autobuildable = 'Y'
-
 
5324
       WHERE pv_id = pvid;
-
 
5325
 
-
 
5326
      -- Now release package
-
 
5327
      pk_environment.auto_make_release (pvid,
-
 
5328
                                        rtagid,
-
 
5329
                                        userid,
-
 
5330
                                        vext,
-
 
5331
                                        ssv_ext,
-
 
5332
                                        clonefrompvid
-
 
5333
                                       );
-
 
5334
 
-
 
5335
      --Now clean the PLANNED_VERSIONS table
-
 
5336
      SELECT pkg_id
-
 
5337
        INTO pkgid
-
 
5338
        FROM PACKAGES
-
 
5339
       WHERE pkg_name = pkgname;
-
 
5340
 
-
 
5341
      DELETE FROM planned_versions
-
 
5342
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
-
 
5343
 
-
 
5344
      RETURN pvid;
-
 
5345
   END;
-
 
5346
 
-
 
5347
/*-------------------------------------------------------------------------------------------------------*/
-
 
5348
   FUNCTION auto_make_vcsrelease (
-
 
5349
      rtagid                   IN   NUMBER,
-
 
5350
      pkgname                  IN   VARCHAR2,
-
 
5351
      vext                     IN   VARCHAR2,
-
 
5352
      newpkgversion            IN   VARCHAR2,
-
 
5353
      vcstag             IN   VARCHAR2,
-
 
5354
      dependenciesimportlist   IN   VARCHAR2,
-
 
5355
      isrippled                IN   NUMBER,
-
 
5356
      username                 IN   VARCHAR2
-
 
5357
   )
-
 
5358
      RETURN NUMBER
-
 
5359
   IS
-
 
5360
      pkgid                           NUMBER;
-
 
5361
      pvid                            NUMBER                        := 0;
-
 
5362
      userid                          NUMBER;
-
 
5363
      dlocked                         VARCHAR2 (20)                 := NULL;
-
 
5364
      clonefrompvid                   NUMBER;
-
 
5365
      ssv_mm                          package_versions.v_mm%TYPE;
-
 
5366
      ssv_nmm                         package_versions.v_nmm%TYPE;
-
 
5367
      ssv_ext                         package_versions.v_ext%TYPE;
-
 
5368
      return_package_not_found        NUMBER                        := -1;
-
 
5369
      return_package_already_exists   NUMBER                        := -2;
-
 
5370
      return_not_approved             NUMBER                        := -3;
-
 
5371
 
-
 
5372
      x_vcstypeid                     NUMBER;
-
 
5373
      x_tag                           VARCHAR2(32);
-
 
5374
      x_label                         VARCHAR2(60);
-
 
5375
      x_srcpath                       VARCHAR2(2000);
-
 
5376
 
-
 
5377
      -- Regular expression constituents
-
 
5378
      Token         VARCHAR2(16) := '([^:]+)';  -- a token is anything except a ':' character
-
 
5379
      Seperator     VARCHAR2(4)  := '::';       -- tokens will be seperated by '::'
-
 
5380
      BOL           VARCHAR2(4)  := '^';
-
 
5381
      Anything      VARCHAR2(4)  := '.*';
-
 
5382
      ReplaceToken1 VARCHAR2(4)  := '\1';
-
 
5383
      ReplaceToken2 VARCHAR2(4)  := '\2';
-
 
5384
      ReplaceToken3 VARCHAR2(4)  := '\3';
-
 
5385
      
-
 
5386
 
-
 
5387
   BEGIN
-
 
5388
      /*--------------- Business Rules Here -------------------*/
-
 
5389
      IF (rtagid IS NULL)
-
 
5390
      THEN
-
 
5391
         raise_application_error (-20000, 'RtagId must be supplied.');
-
 
5392
      END IF;
-
 
5393
 
-
 
5394
      IF (pkgname IS NULL)
-
 
5395
      THEN
-
 
5396
         raise_application_error (-20000, 'PkgName must be supplied.');
-
 
5397
      END IF;
-
 
5398
 
-
 
5399
      IF (newpkgversion IS NULL)
-
 
5400
      THEN
-
 
5401
         raise_application_error (-20000, 'PkgVersion must be supplied.');
-
 
5402
      END IF;
-
 
5403
 
-
 
5404
      IF (vcstag IS NULL)
-
 
5405
      THEN
-
 
5406
         raise_application_error (-20000, 'PkgVcsTag must be supplied.');
-
 
5407
      END IF;
-
 
5408
 
-
 
5409
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
-
 
5410
      THEN
-
 
5411
         raise_application_error
-
 
5412
            (-20000,
-
 
5413
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
-
 
5414
            );
-
 
5415
      END IF;
-
 
5416
 
-
 
5417
      IF (username IS NULL)
-
 
5418
      THEN
-
 
5419
         raise_application_error (-20000, 'UserName must be supplied.');
-
 
5420
      END IF;
-
 
5421
 
-
 
5422
      -- Parse the PkgVcsTag
-
 
5423
      -- Sets up
-
 
5424
      --   x_tag, x_label, x_srcpath
-
 
5425
 
-
 
5426
       BEGIN
-
 
5427
          -- Extract the first token - this will be the short tag name for the VCS (eg. 'CC', 'SVN', etc)
-
 
5428
          x_tag := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Anything, ReplaceToken1);
-
 
5429
 
-
 
5430
          -- Decode the short tag
-
 
5431
          CASE x_tag
-
 
5432
             WHEN 'CC' THEN
-
 
5433
                -- extract the 2nd and 3rd tokens, those being the source path and label respectively
-
 
5434
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
-
 
5435
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
-
 
5436
 
-
 
5437
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
-
 
5438
                -- check for that error as well as the obvious zero-length string conditions.
-
 
5439
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
-
 
5440
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
-
 
5441
                END IF;
-
 
5442
 
-
 
5443
             WHEN 'SVN' THEN
-
 
5444
                -- extract the 2nd token, that being the subversion tag
-
 
5445
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token, ReplaceToken2);
-
 
5446
                x_label   := 'N/A';
-
 
5447
 
-
 
5448
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
-
 
5449
                -- check for that error as well as the obvious zero-length string conditions.
-
 
5450
                IF LENGTH(x_srcpath) = 0 OR x_srcpath = vcstag THEN
-
 
5451
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
-
 
5452
                END IF;
-
 
5453
 
-
 
5454
             WHEN 'UC' THEN
-
 
5455
                -- nothing to extract, just assign defaults
-
 
5456
                x_srcpath := '';
-
 
5457
                x_label   := 'N/A';
-
 
5458
             ELSE
-
 
5459
                raise_application_error (-20000, 'Unrecognised VCS Tag!');
-
 
5460
          END CASE;
-
 
5461
       END;
-
 
5462
 
-
 
5463
      -- Get the VCS_TYPE_ID for the version control system.
-
 
5464
      BEGIN
-
 
5465
         SELECT vt.vcs_type_id
-
 
5466
         INTO x_vcstypeid
-
 
5467
         FROM VCS_TYPE vt
-
 
5468
         WHERE vt.tag = x_tag;
-
 
5469
         EXCEPTION
-
 
5470
            WHEN NO_DATA_FOUND THEN
-
 
5471
               raise_application_error (-20000, 'Database is missing a version control system tag (' || x_tag || ')!' );
-
 
5472
      END;
-
 
5473
      
-
 
5474
 
-
 
5475
      -- Get user_id
-
 
5476
      BEGIN
-
 
5477
         SELECT usr.user_id
-
 
5478
           INTO userid
-
 
5479
           FROM users usr
-
 
5480
          WHERE UPPER (usr.user_name) = UPPER (username)
-
 
5481
            AND usr.is_disabled IS NULL;
-
 
5482
      EXCEPTION
-
 
5483
         WHEN NO_DATA_FOUND
-
 
5484
         THEN
-
 
5485
            raise_application_error (-20000,
-
 
5486
                                        'UserName '
-
 
5487
                                     || username
-
 
5488
                                     || ' is not valid or disabled.'
-
 
5489
                                    );
-
 
5490
      END;
-
 
5491
 
-
 
5492
/*-------------------------------------------------------*/
-
 
5493
 
-
 
5494
      -- Create package if necessary
-
 
5495
      IF isrippled = 1
-
 
5496
      THEN
-
 
5497
         /* Ripple Build */
-
 
5498
         BEGIN
-
 
5499
            -- Make sure that package does not exist
-
 
5500
            SELECT pv.pv_id
-
 
5501
              INTO pvid
-
 
5502
              FROM package_versions pv, PACKAGES pkg
-
 
5503
             WHERE pv.pkg_id = pkg.pkg_id
-
 
5504
               AND pkg.pkg_name = pkgname
-
 
5505
               AND pv.pkg_version = newpkgversion;
-
 
5506
         EXCEPTION
-
 
5507
            WHEN NO_DATA_FOUND
-
 
5508
            THEN
-
 
5509
               pvid := 0;
-
 
5510
         END;
-
 
5511
 
-
 
5512
         IF (pvid = 0)
-
 
5513
         THEN
-
 
5514
            -- Split current version in parts
-
 
5515
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
-
 
5516
 
-
 
5517
            BEGIN
-
 
5518
               -- Find package to be replaced with thie ripple package
-
 
5519
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
-
 
5520
               THEN
-
 
5521
                  SELECT pv.pv_id
-
 
5522
                    INTO clonefrompvid
-
 
5523
                    FROM PACKAGES pkg, package_versions pv,
-
 
5524
                         release_content rc
-
 
5525
                   WHERE rc.pv_id = pv.pv_id
-
 
5526
                     AND pv.pkg_id = pkg.pkg_id
-
 
5527
                     AND rc.rtag_id = rtagid
-
 
5528
                     AND pkg.pkg_name = pkgname
-
 
5529
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
-
 
5530
               ELSE
-
 
5531
                  SELECT pv.pv_id
-
 
5532
                    INTO clonefrompvid
-
 
5533
                    FROM PACKAGES pkg, package_versions pv,
-
 
5534
                         release_content rc
-
 
5535
                   WHERE rc.pv_id = pv.pv_id
-
 
5536
                     AND pv.pkg_id = pkg.pkg_id
-
 
5537
                     AND rc.rtag_id = rtagid
-
 
5538
                     AND pkg.pkg_name = pkgname
-
 
5539
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
-
 
5540
               END IF;
-
 
5541
            EXCEPTION
-
 
5542
               WHEN NO_DATA_FOUND
-
 
5543
               THEN
-
 
5544
                  raise_application_error
-
 
5545
                                        (-20000,
-
 
5546
                                            'Cannot get CloneFromPvId. VExt='
-
 
5547
                                         || vext
-
 
5548
                                         || ', RtagId='
-
 
5549
                                         || rtagid
-
 
5550
                                         || ', PkgName='
-
 
5551
                                         || pkgname
-
 
5552
                                         || ', SSV_EXT='
-
 
5553
                                         || ssv_ext
-
 
5554
                                        );
-
 
5555
            END;
-
 
5556
 
-
 
5557
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
-
 
5558
            THEN
-
 
5559
               -- Create package
-
 
5560
               seed_package_names_versions (pkgname,
-
 
5561
                                            newpkgversion,
-
 
5562
                                            userid,
-
 
5563
                                            pvid,
-
 
5564
                                            clonefrompvid
-
 
5565
                                           );
-
 
5566
            ELSE
-
 
5567
               -- Create package
-
 
5568
               seed_package_names_versions2 (pkgname,
-
 
5569
                                             newpkgversion,
-
 
5570
                                             userid,
-
 
5571
                                             pvid,
-
 
5572
                                             clonefrompvid
-
 
5573
                                            );
-
 
5574
            END IF;
-
 
5575
 
-
 
5576
            -- Update Package reason for release
-
 
5577
            UPDATE package_versions pv
-
 
5578
               SET pv.comments = 'Rippled Build.',
-
 
5579
                   pv.build_type = 'Y'
-
 
5580
             WHERE pv.pv_id = pvid;
-
 
5581
         ELSE
-
 
5582
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
-
 
5583
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
-
 
5584
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
-
 
5585
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
-
 
5586
            UPDATE package_versions pv
-
 
5587
               SET pv.release_notes_info = null,
-
 
5588
                   pv.modified_stamp = ora_sysdatetime
-
 
5589
             WHERE pv.pv_id = pvid;
-
 
5590
 
-
 
5591
            RETURN return_package_already_exists;
-
 
5592
         END IF;
-
 
5593
      ELSE
-
 
5594
         /* Auto build from Pending area */
-
 
5595
 
-
 
5596
         -- Find package in pending area
-
 
5597
         BEGIN
-
 
5598
            SELECT pv.pv_id, pv.dlocked
-
 
5599
              INTO pvid, dlocked
-
 
5600
              FROM planned pl, package_versions pv, PACKAGES pkg
-
 
5601
             WHERE pl.pv_id = pv.pv_id
-
 
5602
               AND pv.pkg_id = pkg.pkg_id
-
 
5603
               AND pl.rtag_id = rtagid
-
 
5604
               AND pkg.pkg_name = pkgname
-
 
5605
               AND pv.dlocked = 'A'
-
 
5606
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
-
 
5607
               AND rownum = 1
-
 
5608
             ORDER BY pv.modified_stamp;
-
 
5609
         EXCEPTION
-
 
5610
            WHEN NO_DATA_FOUND
-
 
5611
            THEN
-
 
5612
               pvid := 0;
-
 
5613
         END;
-
 
5614
 
-
 
5615
         IF (pvid = 0)
-
 
5616
         THEN
-
 
5617
            -- Package does not exist in pending area, hence report it
-
 
5618
            RETURN return_package_not_found;
-
 
5619
         ELSIF (dlocked != 'A')
-
 
5620
         THEN
-
 
5621
            -- Package is not approved for autobuild
-
 
5622
            RETURN return_not_approved;
-
 
5623
         END IF;
-
 
5624
      END IF;
-
 
5625
 
-
 
5626
      BEGIN
-
 
5627
         -- Import Dependencies
-
 
5628
         import_dependencies (pvid, dependenciesimportlist, userid);
-
 
5629
      END;
-
 
5630
 
-
 
5631
      BEGIN
-
 
5632
         -- Split current version in parts
-
 
5633
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
-
 
5634
 
-
 
5635
         -- Update Package Details
-
 
5636
         UPDATE package_versions pv
-
 
5637
            SET pv.pkg_version = newpkgversion,
-
 
5638
                pv.v_ext = ssv_ext,
-
 
5639
                pv.v_mm = ssv_mm,
-
 
5640
                pv.v_nmm = ssv_nmm,
-
 
5641
                pv.src_path = x_srcpath,
-
 
5642
                pv.pkg_label = x_label,
-
 
5643
                pv.vcs_type_id = x_vcstypeid
-
 
5644
          WHERE pv.pv_id = pvid;
-
 
5645
      EXCEPTION
-
 
5646
         WHEN DUP_VAL_ON_INDEX
-
 
5647
         THEN
-
 
5648
            -- Package already exists, hence cannot be used for ripple build
-
 
5649
            RETURN return_package_already_exists;
-
 
5650
      END;
-
 
5651
 
-
 
5652
      -- Update the is_autobuildable
-
 
5653
      UPDATE package_versions
-
 
5654
         SET is_autobuildable = 'Y'
-
 
5655
       WHERE pv_id = pvid;
-
 
5656
 
-
 
5657
      -- Now release package
-
 
5658
      pk_environment.auto_make_release (pvid,
-
 
5659
                                        rtagid,
-
 
5660
                                        userid,
-
 
5661
                                        vext,
-
 
5662
                                        ssv_ext,
-
 
5663
                                        clonefrompvid
-
 
5664
                                       );
-
 
5665
 
-
 
5666
      --Now clean the PLANNED_VERSIONS table
-
 
5667
      SELECT pkg_id
-
 
5668
        INTO pkgid
-
 
5669
        FROM PACKAGES
-
 
5670
       WHERE pkg_name = pkgname;
-
 
5671
 
-
 
5672
      DELETE FROM planned_versions
-
 
5673
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
-
 
5674
 
-
 
5675
      RETURN pvid;
-
 
5676
   END;
-
 
5677
 
-
 
5678
/*-------------------------------------------------------------------------------------------------------*/
-
 
5679
   PROCEDURE import_dependencies (
-
 
5680
      pvid                     IN   NUMBER,
-
 
5681
      dependenciesimportlist   IN   VARCHAR2,
-
 
5682
      userid                   IN   NUMBER
-
 
5683
   )
-
 
5684
   IS
-
 
5685
/*
-
 
5686
|| DependenciesImportList Format:
-
 
5687
|| "pkgA","1.0.0";"pkgB","2.0.0";
-
 
5688
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
-
 
5689
*/
-
 
5690
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
-
 
5691
         INDEX BY VARCHAR2 (4000);
-
 
5692
 
-
 
5693
      seperator         VARCHAR2 (2)           := '||';
-
 
5694
      pkgname           VARCHAR2 (4000);
-
 
5695
      pkgversion        VARCHAR2 (4000);
-
 
5696
      buildtype         VARCHAR2 (50);
-
 
5697
      pkgid             NUMBER;
-
 
5698
      vext              VARCHAR2 (4000);
-
 
5699
      dpvid             NUMBER;
-
 
5700
      slist             VARCHAR2 (4000);
-
 
5701
      cbuildtypes       tdictionary;
-
 
5702
      dependencyrow     NUMBER;
-
 
5703
      sdependency       VARCHAR2 (4000);
-
 
5704
      first_pos         VARCHAR2 (4000);
-
 
5705
      second_pos        VARCHAR2 (4000);
-
 
5706
      third_pos         VARCHAR2 (4000);
-
 
5707
      forth_pos         VARCHAR2 (4000);
-
 
5708
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
-
 
5709
 
-
 
5710
      CURSOR curbuildtype
-
 
5711
      IS
-
 
5712
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
-
 
5713
                dep.build_type
-
 
5714
           FROM package_dependencies dep, package_versions dpv
-
 
5715
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
-
 
5716
 
-
 
5717
      recbuildtype      curbuildtype%ROWTYPE;
-
 
5718
   BEGIN
-
 
5719
      slist := dependenciesimportlist;
-
 
5720
 
-
 
5721
      -- Preformat String
-
 
5722
      IF NOT slist IS NULL
-
 
5723
      THEN
-
 
5724
         slist := REPLACE (slist, ' ');                      -- Remove spaces
-
 
5725
         slist := REPLACE (slist, UTL_TCP.crlf);
-
 
5726
         -- Remove new line and carriage-return characters
-
 
5727
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
-
 
5728
      END IF;
-
 
5729
 
-
 
5730
      -- Get Current Dependencies
-
 
5731
      OPEN curbuildtype;
-
 
5732
 
-
 
5733
      FETCH curbuildtype
-
 
5734
       INTO recbuildtype;
-
 
5735
 
-
 
5736
      WHILE curbuildtype%FOUND
-
 
5737
      LOOP
-
 
5738
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
-
 
5739
 
-
 
5740
         FETCH curbuildtype
-
 
5741
          INTO recbuildtype;
-
 
5742
      END LOOP;
-
 
5743
 
-
 
5744
      CLOSE curbuildtype;
-
 
5745
 
-
 
5746
      -- Separate dependencies with ; separator
-
 
5747
      citemcollection := in_list_varchar2 (slist, ';');
-
 
5748
 
-
 
5749
      BEGIN
-
 
5750
         -- Remove old dependencies
-
 
5751
         DELETE FROM package_dependencies dep
-
 
5752
               WHERE dep.pv_id = pvid;
-
 
5753
 
-
 
5754
         -- Loop through dependencies
-
 
5755
         FOR dependencyrow IN 1 .. citemcollection.COUNT
-
 
5756
         LOOP
-
 
5757
            -- Extract pkg_name and pkg_version
-
 
5758
            sdependency := citemcollection (dependencyrow);
-
 
5759
            first_pos := INSTR (sdependency, '"', 1, 1);
-
 
5760
            second_pos := INSTR (sdependency, '"', 1, 2);
-
 
5761
            third_pos := INSTR (sdependency, '"', 1, 3);
-
 
5762
            forth_pos := INSTR (sdependency, '"', 1, 4);
-
 
5763
            pkgname :=
-
 
5764
               SUBSTR (sdependency,
-
 
5765
                       (first_pos + 1),
-
 
5766
                       (second_pos - first_pos - 1)
-
 
5767
                      );
-
 
5768
            pkgversion :=
-
 
5769
               SUBSTR (sdependency,
-
 
5770
                       (third_pos + 1),
-
 
5771
                       (forth_pos - third_pos - 1)
-
 
5772
                      );
-
 
5773
 
-
 
5774
            -- Dependency must exits to be linked against
-
 
5775
            BEGIN
-
 
5776
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
-
 
5777
                 INTO dpvid, pkgid, vext
-
 
5778
                 FROM package_versions pv, PACKAGES pkg
-
 
5779
                WHERE pv.pkg_id = pkg.pkg_id
-
 
5780
                  AND pkg.pkg_name = pkgname
-
 
5781
                  AND pv.pkg_version = pkgversion;
-
 
5782
            EXCEPTION
-
 
5783
               WHEN NO_DATA_FOUND
-
 
5784
               THEN
-
 
5785
                  raise_application_error
-
 
5786
                                  (-20000,
-
 
5787
                                      'Dependency ['
-
 
5788
                                   || pkgname
-
 
5789
                                   || ' '
-
 
5790
                                   || pkgversion
-
 
5791
                                   || '] does not exist yet and cannot be used!'
-
 
5792
                                  );
-
 
5793
            END;
-
 
5794
 
-
 
5795
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
-
 
5796
            BEGIN
-
 
5797
               buildtype := cbuildtypes (pkgid || seperator || vext);
-
 
5798
 
-
 
5799
               IF buildtype IS NULL
-
 
5800
               THEN
-
 
5801
                  -- Set build type to LinkPackageArchive by default
-
 
5802
                  buildtype := 'L';
-
 
5803
               END IF;
-
 
5804
            EXCEPTION
-
 
5805
               WHEN NO_DATA_FOUND
-
 
5806
               THEN
-
 
5807
                  buildtype := 'L';
-
 
5808
            END;
-
 
5809
 
-
 
5810
            -- Insert Dependencies
-
 
5811
            update_package_dependency (pvid,
-
 
5812
                                       pkgname,
-
 
5813
                                       pkgversion,
-
 
5814
                                       buildtype,
-
 
5815
                                       userid,
-
 
5816
                                       0
-
 
5817
                                      );
-
 
5818
         END LOOP;
-
 
5819
      END;
-
 
5820
   END;
-
 
5821
 
-
 
5822
/*-------------------------------------------------------------------------------------------------------*/
-
 
5823
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
-
 
5824
      RETURN VARCHAR2
-
 
5825
   IS
-
 
5826
      pkgversion   VARCHAR2 (4000);
-
 
5827
   BEGIN
-
 
5828
      BEGIN
-
 
5829
         SELECT pv.pkg_version
-
 
5830
           INTO pkgversion
-
 
5831
           FROM PACKAGES pkg, release_content rc, package_versions pv
-
 
5832
          WHERE pv.pv_id = rc.pv_id
-
 
5833
            AND pkg.pkg_id = pv.pkg_id
-
 
5834
            AND pkg.pkg_name = pkgname
-
 
5835
            AND rc.rtag_id = rtagid;
-
 
5836
 
-
 
5837
         RETURN pkgversion;
-
 
5838
      END;
-
 
5839
   END;
-
 
5840
 
-
 
5841
/*-------------------------------------------------------------------------------------------------------*/
-
 
5842
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
-
 
5843
      RETURN VARCHAR2
-
 
5844
   IS
-
 
5845
      pkgversion   VARCHAR2 (4000);
-
 
5846
   BEGIN
-
 
5847
      BEGIN
-
 
5848
         SELECT pv.pkg_version
-
 
5849
           INTO pkgversion
-
 
5850
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
-
 
5851
          WHERE pv.pv_id = wip.pv_id
-
 
5852
            AND pkg.pkg_id = pv.pkg_id
-
 
5853
            AND pkg.pkg_name = pkgname
-
 
5854
            AND wip.rtag_id = rtagid;
-
 
5855
 
-
 
5856
         IF pkgversion IS NULL
-
 
5857
         THEN
-
 
5858
            SELECT pv.pkg_version
-
 
5859
              INTO pkgversion
-
 
5860
              FROM PACKAGES pkg, planned pl, package_versions pv
-
 
5861
             WHERE pv.pv_id = pl.pv_id
-
 
5862
               AND pkg.pkg_id = pv.pkg_id
-
 
5863
               AND pkg.pkg_name = pkgname
-
 
5864
               AND pl.rtag_id = rtagid;
-
 
5865
         END IF;
-
 
5866
 
-
 
5867
         RETURN pkgversion;
-
 
5868
      END;
-
 
5869
   END;
-
 
5870
 
-
 
5871
/*-------------------------------------------------------------------------------------------------------*/
-
 
5872
   PROCEDURE update_dash_board (rtagid IN NUMBER)
-
 
5873
   IS
-
 
5874
      projid       NUMBER;
-
 
5875
      projiddb     NUMBER;
-
 
5876
      total        NUMBER;
-
 
5877
      auto_total   NUMBER;
-
 
5878
      rtagiddb     NUMBER;
-
 
5879
   BEGIN
-
 
5880
      SELECT COUNT (*)
-
 
5881
        INTO total
-
 
5882
        FROM release_content rc, package_versions pv
-
 
5883
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
-
 
5884
 
-
 
5885
      SELECT COUNT (*)
-
 
5886
        INTO auto_total
-
 
5887
        FROM release_content rc, package_versions pv
-
 
5888
       WHERE pv.pv_id = rc.pv_id
-
 
5889
         AND pv.is_autobuildable = 'Y'
-
 
5890
         AND rc.rtag_id = rtagid;
-
 
5891
 
-
 
5892
      BEGIN
-
 
5893
         SELECT rtag_id
-
 
5894
           INTO rtagiddb
-
 
5895
           FROM dash_board
-
 
5896
          WHERE rtag_id = rtagid;
-
 
5897
 
-
 
5898
         SELECT proj_id
-
 
5899
           INTO projiddb
-
 
5900
           FROM dash_board
-
 
5901
          WHERE rtag_id = rtagid;
-
 
5902
      EXCEPTION
-
 
5903
         WHEN NO_DATA_FOUND
-
 
5904
         THEN
-
 
5905
            rtagiddb := '';
-
 
5906
      END;
-
 
5907
 
-
 
5908
      IF rtagiddb IS NULL
-
 
5909
      THEN
-
 
5910
         SELECT proj_id
-
 
5911
           INTO projid
-
 
5912
           FROM release_tags
-
 
5913
          WHERE rtag_id = rtagid;
-
 
5914
 
-
 
5915
         INSERT INTO dash_board
-
 
5916
                     (proj_id, rtag_id, last_build_time, automated_packages,
-
 
5917
                      total_packages
-
 
5918
                     )
-
 
5919
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
-
 
5920
                      total
-
 
5921
                     );
-
 
5922
      ELSE
-
 
5923
         UPDATE dash_board
-
 
5924
            SET last_build_time = ora_sysdatetime,
-
 
5925
                automated_packages = auto_total,
-
 
5926
                total_packages = total
-
 
5927
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
-
 
5928
      END IF;
-
 
5929
   END;
-
 
5930
 
-
 
5931
/*-------------------------------------------------------------------------------------------------------*/
-
 
5932
   FUNCTION exclude_from_build (
-
 
5933
      pvid          IN   NUMBER,
-
 
5934
      spkgversion   IN   VARCHAR2,
-
 
5935
      rtagid        IN   NUMBER,
-
 
5936
      username      IN   VARCHAR2
-
 
5937
   )
-
 
5938
      RETURN NUMBER
-
 
5939
   IS
-
 
5940
      userid              NUMBER;
-
 
5941
      outerrcode          NUMBER;
-
 
5942
      pkgid               NUMBER;
-
 
5943
 
-
 
5944
      CURSOR dnr_duplicate_cur
-
 
5945
      IS
-
 
5946
         SELECT *
-
 
5947
           FROM do_not_ripple
-
 
5948
          WHERE pv_id = pvid AND rtag_id = rtagid;
-
 
5949
 
-
 
5950
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
-
 
5951
   BEGIN
-
 
5952
      outerrcode := -1;       -- Set default return error code to ERROR state
-
 
5953
 
-
 
5954
      /*--------------- Business Rules Here -------------------*/
-
 
5955
      IF (rtagid IS NULL)
-
 
5956
      THEN
-
 
5957
         RETURN outerrcode;
-
 
5958
--         raise_application_error (-20000, 'RtagId must be supplied.');
-
 
5959
      END IF;
-
 
5960
 
-
 
5961
      IF (pvid IS NULL)
-
 
5962
      THEN
-
 
5963
         RETURN outerrcode;
-
 
5964
--         raise_application_error (-20000, 'PvId must be supplied.');
-
 
5965
      END IF;
-
 
5966
 
-
 
5967
      IF (username IS NULL)
-
 
5968
      THEN
-
 
5969
         RETURN outerrcode;
-
 
5970
--         raise_application_error (-20000, 'UserName must be supplied.');
-
 
5971
      END IF;
-
 
5972
 
-
 
5973
      -- Get user_id
-
 
5974
      BEGIN
-
 
5975
         SELECT usr.user_id
-
 
5976
           INTO userid
-
 
5977
           FROM users usr
-
 
5978
          WHERE UPPER (usr.user_name) = UPPER (username)
-
 
5979
            AND usr.is_disabled IS NULL;
-
 
5980
      EXCEPTION
-
 
5981
         WHEN NO_DATA_FOUND
-
 
5982
         THEN
-
 
5983
            RETURN outerrcode;
-
 
5984
--            raise_application_error (-20000,
-
 
5985
--                                        'UserName '
-
 
5986
--                                     || username
-
 
5987
--                                     || ' is not valid or disabled.'
-
 
5988
--                                    );
-
 
5989
      END;
-
 
5990
 
-
 
5991
      OPEN dnr_duplicate_cur;
-
 
5992
 
-
 
5993
      FETCH dnr_duplicate_cur
-
 
5994
       INTO dnr_duplicate_rec;
-
 
5995
 
-
 
5996
      IF dnr_duplicate_cur%FOUND
-
 
5997
      THEN
-
 
5998
         outerrcode := 0;
-
 
5999
      END IF;
-
 
6000
 
-
 
6001
      IF dnr_duplicate_cur%NOTFOUND
-
 
6002
      THEN
-
 
6003
         /* No duplicate recordset */
-
 
6004
         unripple_package (pvid, rtagid, userid);
-
 
6005
         outerrcode := 0;                            -- Set return to SUCCESS
-
 
6006
      END IF;
-
 
6007
 
-
 
6008
      CLOSE dnr_duplicate_cur;
-
 
6009
 
-
 
6010
      SELECT pkg_id
-
 
6011
        INTO pkgid
-
 
6012
        FROM package_versions
-
 
6013
       WHERE pv_id = pvid;
-
 
6014
 
-
 
6015
      DELETE FROM planned_versions
-
 
6016
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
-
 
6017
 
-
 
6018
      RETURN outerrcode;
-
 
6019
   END;
-
 
6020
 
-
 
6021
/*-------------------------------------------------------------------------------------------------------*/
-
 
6022
   FUNCTION exclude_indirect_from_build (
-
 
6023
      pvid          IN   NUMBER,
-
 
6024
      spkgversion   IN   VARCHAR2,
-
 
6025
      rtagid        IN   NUMBER,
-
 
6026
      username      IN   VARCHAR2,
-
 
6027
      rootpvid      IN   NUMBER,
-
 
6028
      rootcause     IN   VARCHAR2,
-
 
6029
      rootfile      IN   VARCHAR2
-
 
6030
   )
-
 
6031
      RETURN NUMBER
-
 
6032
   IS
-
 
6033
      userid              NUMBER;
-
 
6034
      outerrcode          NUMBER;
-
 
6035
      pkgid               NUMBER;
-
 
6036
 
-
 
6037
      CURSOR dnr_duplicate_cur
-
 
6038
      IS
-
 
6039
         SELECT *
-
 
6040
           FROM do_not_ripple
-
 
6041
          WHERE pv_id = pvid AND rtag_id = rtagid;
-
 
6042
 
-
 
6043
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
-
 
6044
   BEGIN
-
 
6045
      outerrcode := -1;       -- Set default return error code to ERROR state
-
 
6046
 
-
 
6047
      /*--------------- Business Rules Here -------------------*/
-
 
6048
      IF (rtagid IS NULL)
-
 
6049
      THEN
-
 
6050
         RETURN outerrcode;
-
 
6051
--         raise_application_error (-20000, 'RtagId must be supplied.');
-
 
6052
      END IF;
-
 
6053
 
-
 
6054
      IF (pvid IS NULL)
-
 
6055
      THEN
-
 
6056
         RETURN outerrcode;
-
 
6057
--         raise_application_error (-20000, 'PvId must be supplied.');
-
 
6058
      END IF;
-
 
6059
 
-
 
6060
      IF (username IS NULL)
-
 
6061
      THEN
-
 
6062
         RETURN outerrcode;
-
 
6063
--         raise_application_error (-20000, 'UserName must be supplied.');
-
 
6064
      END IF;
-
 
6065
 
-
 
6066
      -- Get user_id
-
 
6067
      BEGIN
-
 
6068
         SELECT usr.user_id
-
 
6069
           INTO userid
-
 
6070
           FROM users usr
-
 
6071
          WHERE UPPER (usr.user_name) = UPPER (username)
-
 
6072
            AND usr.is_disabled IS NULL;
-
 
6073
      EXCEPTION
-
 
6074
         WHEN NO_DATA_FOUND
-
 
6075
         THEN
-
 
6076
            RETURN outerrcode;
-
 
6077
--            raise_application_error (-20000,
-
 
6078
--                                        'UserName '
-
 
6079
--                                     || username
-
 
6080
--                                     || ' is not valid or disabled.'
-
 
6081
--                                    );
-
 
6082
      END;
-
 
6083
 
-
 
6084
     /* No duplicate recordset */
-
 
6085
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
-
 
6086
     outerrcode := 0;                            -- Set return to SUCCESS
-
 
6087
 
-
 
6088
      SELECT pkg_id
-
 
6089
        INTO pkgid
-
 
6090
        FROM package_versions
-
 
6091
       WHERE pv_id = pvid;
-
 
6092
 
-
 
6093
      DELETE FROM planned_versions
-
 
6094
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
-
 
6095
 
-
 
6096
      RETURN outerrcode;
-
 
6097
   END;
-
 
6098
/*-------------------------------------------------------------------------------------------------------*/
-
 
6099
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
-
 
6100
   IS
-
 
6101
   BEGIN
-
 
6102
      INSERT INTO abt_action_log
-
 
6103
                  (rcon_id, action_datetime, action
-
 
6104
                  )
-
 
6105
           VALUES (rconid, ora_sysdatetime, action
-
 
6106
                  );
-
 
6107
   END;
-
 
6108
 
-
 
6109
/*-------------------------------------------------------------------------------------------------------*/
-
 
6110
   FUNCTION insert_package_metrics (
-
 
6111
      rtagid                   IN   NUMBER,
-
 
6112
      pkgname                  IN   VARCHAR2,
-
 
6113
      vext                     IN   VARCHAR2,
-
 
6114
      metricstring             IN   VARCHAR2
-
 
6115
   )
-
 
6116
      RETURN NUMBER
-
 
6117
   IS
-
 
6118
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
-
 
6119
      lv_pvid                  NUMBER                 := 0;
-
 
6120
      rownumber                NUMBER;
-
 
6121
      rowcontent               VARCHAR2(4000);
-
 
6122
      metricname               VARCHAR2(1000);
-
 
6123
      metricvalue              VARCHAR2(4000);
-
 
6124
      return_insert_error      NUMBER                 := -1;
-
 
6125
      return_insert_success    NUMBER                 := 0;
-
 
6126
 
-
 
6127
      /* Metrics */
-
 
6128
      lv_branches                 NUMBER;
-
 
6129
      lv_branchlist               VARCHAR2(4000);
-
 
6130
      lv_codefiles                NUMBER;
-
 
6131
      lv_ignoredfiles             NUMBER;
-
 
6132
      lv_directories              NUMBER;
-
 
6133
      lv_directorydepth           NUMBER;
-
 
6134
      lv_totalfiles               NUMBER;
-
 
6135
      lv_makefiles                NUMBER;
-
 
6136
      lv_blanklines               NUMBER;
-
 
6137
      lv_codelines                NUMBER;
-
 
6138
      lv_commentlines             NUMBER;
-
 
6139
 
-
 
6140
   BEGIN
-
 
6141
      /*--------------- Business Rules Here -------------------*/
-
 
6142
      IF (rtagid IS NULL)
-
 
6143
      THEN
-
 
6144
         RETURN return_insert_error;
-
 
6145
      END IF;
-
 
6146
 
-
 
6147
      IF (pkgname IS NULL)
-
 
6148
      THEN
-
 
6149
         RETURN return_insert_error;
-
 
6150
      END IF;
-
 
6151
 
-
 
6152
      IF (metricstring IS NULL)
-
 
6153
      THEN
-
 
6154
         RETURN return_insert_error;
-
 
6155
      END IF;
-
 
6156
 
-
 
6157
      BEGIN
-
 
6158
         SELECT pv.pv_id
-
 
6159
           INTO lv_pvid
-
 
6160
           FROM package_versions pv, packages pkg, release_content rc
-
 
6161
          WHERE pv.pkg_id = pkg.pkg_id
-
 
6162
            AND rc.rtag_id = rtagid
-
 
6163
            AND pv.pv_id = rc.pv_id
-
 
6164
            AND pkg.pkg_name = pkgname
-
 
6165
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
-
 
6166
      EXCEPTION
-
 
6167
           WHEN NO_DATA_FOUND
-
 
6168
           THEN
-
 
6169
                lv_pvid := 0;
-
 
6170
      END;
-
 
6171
 
-
 
6172
      citemcollection := in_list_varchar2 (metricstring, ';');
-
 
6173
 
-
 
6174
      FOR rownumber IN 1 .. citemcollection.COUNT
-
 
6175
      LOOP
-
 
6176
         rowcontent := citemcollection(rownumber);
-
 
6177
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
-
 
6178
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
-
 
6179
 
-
 
6180
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
-
 
6181
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
-
 
6182
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
-
 
6183
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
-
 
6184
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
-
 
6185
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
-
 
6186
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
-
 
6187
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
-
 
6188
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
-
 
6189
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
-
 
6190
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
-
 
6191
         END IF;
-
 
6192
      END LOOP;
-
 
6193
 
-
 
6194
      IF (lv_pvid > 0)
-
 
6195
      THEN
-
 
6196
         -- Delete any existing entries for this package version to makes sure our data is untainted
-
 
6197
         DELETE FROM package_metrics pm
-
 
6198
         WHERE pm.pv_id = lv_pvid;
-
 
6199
 
-
 
6200
         -- Insert the new data into the metrics table
-
 
6201
         INSERT INTO package_metrics
-
 
6202
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
-
 
6203
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
-
 
6204
                     )
-
 
6205
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
-
 
6206
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
-
 
6207
                     );
-
 
6208
 
-
 
6209
         -- Now update the Release_Metrics Table
-
 
6210
         update_release_metrics(rtagid);
-
 
6211
 
-
 
6212
         RETURN return_insert_success;
-
 
6213
      ELSE
-
 
6214
         RETURN return_insert_error;
-
 
6215
      END IF;
-
 
6216
   END;
-
 
6217
 
-
 
6218
/*-------------------------------------------------------------------------------------------------------*/
-
 
6219
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
-
 
6220
   IS
-
 
6221
      lv_totalpackages       NUMBER;
-
 
6222
      lv_autobuilt           NUMBER;
-
 
6223
      lv_linesofcode         NUMBER;
-
 
6224
      lv_unittested          NUMBER;
-
 
6225
      lv_autotested          NUMBER;
-
 
6226
      lv_numOfbranches       NUMBER;
-
 
6227
      lv_lastbuildtime       DATE;
-
 
6228
   BEGIN
-
 
6229
      IF (rtagid > 0)
-
 
6230
      THEN
-
 
6231
         -- Get the total number of packages in this release and the number of
-
 
6232
         -- those that are autobuilt
-
 
6233
         SELECT COUNT (DISTINCT rc.pv_id),
-
 
6234
                COUNT (DISTINCT autobuilt_qry.pv_id)
-
 
6235
           INTO lv_totalpackages, lv_autobuilt
-
 
6236
           FROM release_content rc,
-
 
6237
                package_versions pv,
-
 
6238
                (
-
 
6239
                 SELECT rc.pv_id
-
 
6240
                   FROM release_content rc,
-
 
6241
                        package_versions pv
-
 
6242
                  WHERE pv.is_autobuildable = 'Y'
-
 
6243
                    AND pv.pv_id = rc.pv_id
-
 
6244
                    AND rc.rtag_id = rtagid
-
 
6245
                ) autobuilt_qry
-
 
6246
          WHERE pv.pv_id = rc.pv_id
-
 
6247
            AND rc.rtag_id = rtagid
-
 
6248
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
-
 
6249
 
-
 
6250
         -- Get the build time of the last package built in this release and the
-
 
6251
         -- total number of lines of code
-
 
6252
         SELECT MAX(pm.created_stamp),
-
 
6253
                SUM(pm.code_lines)
-
 
6254
           INTO lv_lastbuildtime, lv_linesofcode
-
 
6255
           FROM package_metrics pm, release_content rc
-
 
6256
          WHERE pm.pv_id = rc.pv_id
-
 
6257
            AND rc.rtag_id = rtagid;
-
 
6258
 
-
 
6259
         -- Get the number of packages with unit tests in this release and the
-
 
6260
         -- number of those that are autotested
-
 
6261
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
-
 
6262
           FROM unit_tests ut,
-
 
6263
                release_content rc
-
 
6264
          WHERE ut.pv_id = rc.pv_id
-
 
6265
            AND rc.rtag_id = rtagid
-
 
6266
        AND ut.test_types_fk != 1;
-
 
6267
 
-
 
6268
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
-
 
6269
          FROM unit_tests ut,
-
 
6270
               release_content rc
-
 
6271
         WHERE ut.pv_id = rc.pv_id
-
 
6272
           AND rc.rtag_id = rtagid
-
 
6273
           AND ut.test_types_fk = 7;
-
 
6274
 
-
 
6275
 
-
 
6276
         -- Count the number of unique branches in the packages in this release.
-
 
6277
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
-
 
6278
--           FROM (
-
 
6279
--                SELECT pv_id,
-
 
6280
--                       regexp_substr(str, '[^,]+', 1, level) branch,
-
 
6281
--                       level lv,
-
 
6282
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
-
 
6283
--                  FROM (
-
 
6284
--                       SELECT pm.pv_id,
-
 
6285
--                              ','||pm.branch_list str
-
 
6286
--                         FROM package_metrics pm,
-
 
6287
--                              release_content rc
-
 
6288
--                        WHERE pm.pv_id = rc.pv_id
-
 
6289
--                          AND rc.rtag_id = rtagid
-
 
6290
--                       )
-
 
6291
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
-
 
6292
--                )
-
 
6293
--          WHERE lv != lg;
-
 
6294
 
-
 
6295
         UPDATE release_metrics rm
-
 
6296
            SET rm.total_packages = lv_totalpackages,
-
 
6297
                rm.autobuilt = lv_autobuilt,
-
 
6298
                rm.lines_of_code = lv_linesofcode,
-
 
6299
                rm.unit_tested = lv_unittested,
-
 
6300
                rm.autotested = lv_autotested,
-
 
6301
--                rm.branches = lv_numOfbranches,
-
 
6302
                rm.last_build_time = lv_lastbuildtime
-
 
6303
          WHERE rtag_id = rtagid;
-
 
6304
 
-
 
6305
         IF (SQL%ROWCOUNT = 0)
-
 
6306
         THEN
-
 
6307
            INSERT INTO release_metrics
-
 
6308
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
-
 
6309
                         autotested, last_build_time
-
 
6310
                        )
-
 
6311
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
-
 
6312
                         lv_autotested, lv_lastbuildtime
-
 
6313
                        );
-
 
6314
         END IF;
-
 
6315
--         IF (SQL%ROWCOUNT = 0)
-
 
6316
--         THEN
-
 
6317
--            INSERT INTO release_metrics
-
 
6318
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
-
 
6319
--                         autotested, branches, last_build_time
-
 
6320
--                        )
-
 
6321
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
-
 
6322
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
-
 
6323
--                        );
-
 
6324
--         END IF;
-
 
6325
--      ELSE
-
 
6326
--         raise_application_error (-20000, 'RtagId must be supplied.');
-
 
6327
      END IF;
-
 
6328
   END;
-
 
6329
/*-------------------------------------------------------------------------------------------------------*/
-
 
6330
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2
-
 
6331
   IS
-
 
6332
      vcstypeid    NUMBER;
-
 
6333
      vcstag       VARCHAR2(32);
-
 
6334
      label        VARCHAR2(60);
-
 
6335
      srcpath      VARCHAR2(2000);
-
 
6336
      vcstypeid_cc NUMBER;
-
 
6337
      vcstypeid_uc NUMBER;
-
 
6338
   BEGIN
-
 
6339
      -- Get the VCS_TYPE_ID for the ClearCase version control system. We do this so that we make no assumptions about
-
 
6340
      -- what the primary key value is for the ClearCase VCS entry.
-
 
6341
      BEGIN
-
 
6342
         SELECT vt.vcs_type_id
-
 
6343
         INTO vcstypeid_cc
-
 
6344
         FROM VCS_TYPE vt
-
 
6345
         WHERE vt.tag = 'CC';
-
 
6346
         EXCEPTION
-
 
6347
            WHEN NO_DATA_FOUND THEN
-
 
6348
               raise_application_error (-20000, 'Database is missing compulsory CC version control system tag!');
-
 
6349
      END;
-
 
6350
 
-
 
6351
      -- Get the VCS_TYPE_ID for the Uncontrolled version control system. We do this so that we make no assumptions about
-
 
6352
      -- what the primary key value is for the Uncontrolled VCS entry.
-
 
6353
      BEGIN
-
 
6354
         SELECT vt.vcs_type_id
-
 
6355
         INTO vcstypeid_uc
-
 
6356
         FROM VCS_TYPE vt
-
 
6357
         WHERE vt.tag = 'UC';
-
 
6358
         EXCEPTION
-
 
6359
            WHEN NO_DATA_FOUND THEN
-
 
6360
               raise_application_error (-20000, 'Database is missing compulsory UC version control system tag!');
-
 
6361
      END;
-
 
6362
 
-
 
6363
      -- Get the PKG_LABEL, SRC_PATH, VCS_TYPE_ID for the package version
-
 
6364
      -- As additional VCS types are introduced, we may have to extend what this SELECT statement returns
-
 
6365
      BEGIN
-
 
6366
         SELECT pv.pkg_label, pv.src_path,
-
 
6367
           (CASE WHEN pv.pkg_label = 'N/A' AND pv.vcs_type_id IS NULL THEN vcstypeid_uc
-
 
6368
                 WHEN pv.vcs_type_id IS NULL THEN vcstypeid_cc
-
 
6369
                 ELSE pv.vcs_type_id END) AS vcs_type_id
-
 
6370
         INTO label, srcpath, vcstypeid
-
 
6371
         FROM PACKAGE_VERSIONS pv
-
 
6372
         WHERE pv.pv_id = pvid;
-
 
6373
         EXCEPTION
-
 
6374
            WHEN NO_DATA_FOUND THEN
-
 
6375
               raise_application_error (-20000, 'Package Version Not Found!');
-
 
6376
      END;
-
 
6377
 
-
 
6378
      -- Get the VCS TAG for the VCS_TYPE_ID.
-
 
6379
      BEGIN
-
 
6380
         SELECT vt.tag
-
 
6381
         INTO vcstag
-
 
6382
         FROM VCS_TYPE vt
-
 
6383
         WHERE vt.vcs_type_id = vcstypeid;
-
 
6384
         EXCEPTION
-
 
6385
            WHEN NO_DATA_FOUND THEN
-
 
6386
               raise_application_error (-20000, 'Could not get VCS Tag for the package version!');
-
 
6387
      END;
-
 
6388
 
-
 
6389
      -- Return value depending upon which VCS Tag is being used.
-
 
6390
      -- As additional VCS types are introduced, we have to add additional WHEN clauses
-
 
6391
      CASE vcstag
-
 
6392
         WHEN 'CC' THEN
-
 
6393
            RETURN vcstag || '::' || srcpath || '::' || label;
-
 
6394
         WHEN 'SVN' THEN
-
 
6395
            RETURN vcstag || '::' || srcpath;
-
 
6396
         ELSE
-
 
6397
            RETURN vcstag || '::';
-
 
6398
      END CASE;
-
 
6399
 
-
 
6400
   END;
-
 
6401
/*-------------------------------------------------------------------------------------------------------*/
-
 
6402
 
-
 
6403
END pk_rmapi_test;
-
 
6404
/
-
 
6405
--------------------------------------------------------
-
 
6406
--  DDL for Package Body PK_LICENCING
-
 
6407
--------------------------------------------------------
-
 
6408
 
-
 
6409
  CREATE OR REPLACE PACKAGE BODY "PK_LICENCING" IS
-
 
6410
 
-
 
6411
/*
-
 
6412
------------------------------
-
 
6413
||  Last Modified:  G.Huddy
-
 
6414
||  Modified Date:  19/Aug/2008
-
 
6415
||  Body Version:   1.0
-
 
6416
------------------------------
-
 
6417
*/
-
 
6418
 
-
 
6419
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
-
 
6420
   BEGIN
-
 
6421
      IF IS_LICENCED(PvId, licenceId) = 0 THEN
-
 
6422
         -- Add entry to licencing table
-
 
6423
         INSERT INTO licencing (pv_id, licence)
-
 
6424
         VALUES (PvId, licenceId);
-
 
6425
 
-
 
6426
         -- log action
-
 
6427
         -- TODO
-
 
6428
      END IF;
-
 
6429
 
-
 
6430
   END;
-
 
6431
 
-
 
6432
/*-------------------------------------------------------------------------------------------------------*/
-
 
6433
 
-
 
6434
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
-
 
6435
   BEGIN
-
 
6436
      IF NOT IS_LICENCED(PvId, licenceId) = 0 THEN
-
 
6437
         -- Delete entry from licencing table
-
 
6438
         DELETE FROM licencing
-
 
6439
         WHERE pv_id = PvId
-
 
6440
         AND licence = licenceId;
-
 
6441
 
-
 
6442
         -- log action
-
 
6443
         -- TODO
-
 
6444
      END IF;
-
 
6445
   END;
-
 
6446
 
-
 
6447
/*-------------------------------------------------------------------------------------------------------*/
-
 
6448
 
-
 
6449
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER ) IS
-
 
6450
 
-
 
6451
      CURSOR licencing_cur
-
 
6452
      IS
-
 
6453
         SELECT *
-
 
6454
         FROM licencing
-
 
6455
         WHERE pv_id = fromPvId;
-
 
6456
 
-
 
6457
      licencing_rec licencing_cur%ROWTYPE;
-
 
6458
 
-
 
6459
   BEGIN
-
 
6460
      -- For each licence association that the Last PV_ID had, create a similar
-
 
6461
      -- arrangement for the new PV_ID
-
 
6462
      -- NOTE that any additional licencing associations the new PV_ID has that the old one
-
 
6463
      -- does not have, are retained. The assumption is that the user has made those and so we do not
-
 
6464
      -- have any right to destroy them without asking them.
-
 
6465
      OPEN licencing_cur;
-
 
6466
 
-
 
6467
      FETCH licencing_cur
-
 
6468
      INTO licencing_rec;
-
 
6469
 
-
 
6470
      WHILE licencing_cur%FOUND
-
 
6471
      LOOP
-
 
6472
         ADD_LICENCE ( toPvId, licencing_rec.licence, UserId );
-
 
6473
 
-
 
6474
         FETCH licencing_cur
-
 
6475
         INTO licencing_rec;
-
 
6476
      END LOOP;
-
 
6477
   END;
-
 
6478
 
-
 
6479
/*-------------------------------------------------------------------------------------------------------*/
-
 
6480
 
-
 
6481
   FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER IS
-
 
6482
      found NUMBER;
-
 
6483
   BEGIN
-
 
6484
 
-
 
6485
      SELECT COUNT(*) INTO found
-
 
6486
      FROM licencing
-
 
6487
      WHERE pv_id = PvId
-
 
6488
      AND licence = LicenceId;
-
 
6489
 
-
 
6490
      RETURN found;
-
 
6491
   END;
-
 
6492
 
-
 
6493
/*-------------------------------------------------------------------------------------------------------*/
-
 
6494
 
-
 
6495
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER ) IS
-
 
6496
 
-
 
6497
      CURSOR licencing_cur
-
 
6498
      IS
-
 
6499
         SELECT *
-
 
6500
         FROM licencing
-
 
6501
         WHERE pv_id = PvId;
-
 
6502
 
-
 
6503
      licencing_rec licencing_cur%ROWTYPE;
-
 
6504
   BEGIN
-
 
6505
      -- For each licence association that the PV_ID had, remove it
-
 
6506
      OPEN licencing_cur;
-
 
6507
 
-
 
6508
      FETCH licencing_cur
-
 
6509
      INTO licencing_rec;
-
 
6510
 
-
 
6511
      WHILE licencing_cur%FOUND
-
 
6512
      LOOP
-
 
6513
         REMOVE_LICENCE ( PvId, licencing_rec.licence, UserId );
-
 
6514
 
-
 
6515
         FETCH licencing_cur
-
 
6516
         INTO licencing_rec;
-
 
6517
      END LOOP;
-
 
6518
   END;
-
 
6519
 
-
 
6520
/*-------------------------------------------------------------------------------------------------------*/
-
 
6521
END PK_LICENCING;
-
 
6522
/
-
 
6523
--------------------------------------------------------
-
 
6524
--  DDL for Package Body RM_ISSUES
-
 
6525
--------------------------------------------------------
-
 
6526
 
-
 
6527
  CREATE OR REPLACE PACKAGE BODY "RM_ISSUES" AS
-
 
6528
 
-
 
6529
-- Private Implementation -----------------------------------------------------
-
 
6530
 
-
 
6531
 
-
 
6532
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
-
 
6533
	AS
-
 
6534
 
-
 
6535
	BEGIN
-
 
6536
		-- start boundary case
-
 
6537
		IF ( XXstart < XX ) THEN
-
 
6538
			RETURN 1;
-
 
6539
 
-
 
6540
		ELSIF ( XXstart = XX ) THEN
-
 
6541
 
-
 
6542
			-- need to consider YY
-
 
6543
			IF ( YYstart < YY ) THEN
-
 
6544
				RETURN 1;
-
 
6545
 
-
 
6546
			ELSIF ( YYstart = YY ) THEN
-
 
6547
 
-
 
6548
					-- need to consider ZZ
-
 
6549
					IF ( ZZstart <= ZZ ) THEN
-
 
6550
						RETURN 1;
-
 
6551
 
-
 
6552
					ELSE
-
 
6553
						RETURN 0;
-
 
6554
					END IF;
-
 
6555
 
-
 
6556
			ELSE
-
 
6557
				RETURN 0;
-
 
6558
			END IF;
-
 
6559
		ELSE
-
 
6560
			RETURN 0;
-
 
6561
		END IF;
-
 
6562
	EXCEPTION
-
 
6563
		WHEN OTHERS THEN
-
 
6564
			RETURN -1;
-
 
6565
	END;
-
 
6566
 
-
 
6567
 
-
 
6568
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
-
 
6569
	AS
-
 
6570
 
-
 
6571
	BEGIN
-
 
6572
		-- end boundary case
-
 
6573
		IF ( XX < XXend ) THEN
-
 
6574
			RETURN 1;
-
 
6575
 
-
 
6576
		ELSIF ( XX = XXend ) THEN
-
 
6577
 
-
 
6578
			-- need to consider YY
-
 
6579
			IF ( YY < YYend ) THEN
-
 
6580
				RETURN 1;
-
 
6581
 
-
 
6582
			ELSIF ( YY = YYend ) THEN
-
 
6583
 
-
 
6584
					-- need to consider ZZ
-
 
6585
					IF ( ZZ <= ZZend ) THEN
-
 
6586
						RETURN 1;
-
 
6587
 
-
 
6588
					ELSE
-
 
6589
						RETURN 0;
-
 
6590
					END IF;
-
 
6591
			ELSE
-
 
6592
 
-
 
6593
				RETURN 0;
-
 
6594
			END IF;
-
 
6595
		ELSE
-
 
6596
			RETURN 0;
-
 
6597
		END IF;
-
 
6598
	EXCEPTION
-
 
6599
		WHEN OTHERS THEN
-
 
6600
			RETURN -1;
-
 
6601
	END;
-
 
6602
 
-
 
6603
	/*
-
 
6604
	-	version format:		XX.YY.ZZ.abc
-
 
6605
	*/
-
 
6606
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
-
 
6607
	AS
-
 
6608
		XXstart		NUMBER	:=	0;
-
 
6609
		XXend		NUMBER	:=	0;
-
 
6610
		XX			NUMBER	:=	0;
-
 
6611
		YYstart		NUMBER	:=	0;
-
 
6612
		YYend		NUMBER	:=	0;
-
 
6613
		YY			NUMBER	:=	0;
-
 
6614
		ZZstart		NUMBER	:=	0;
-
 
6615
		ZZend		NUMBER	:=	0;
-
 
6616
		ZZ			NUMBER	:=	0;
-
 
6617
		first_dot	NUMBER	:=	0;
-
 
6618
		second_dot	NUMBER	:=	0;
-
 
6619
		third_dot	NUMBER	:=	0;
-
 
6620
 
-
 
6621
		ProjExtstart	VARCHAR2(10);
-
 
6622
		ProjExtend		VARCHAR2(10);
-
 
6623
		ProjExt			VARCHAR2(10);
-
 
6624
 
-
 
6625
	BEGIN
-
 
6626
		-- strip the version number
-
 
6627
		first_dot :=  INSTR(version_start, '.', 1, 1);
-
 
6628
		second_dot :=  INSTR(version_start, '.', 1, 2);
-
 
6629
		third_dot :=  INSTR(version_start, '.', 1, 3);
-
 
6630
 
-
 
6631
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
-
 
6632
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
-
 
6633
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
-
 
6634
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
-
 
6635
 
-
 
6636
		first_dot :=  INSTR(version_end, '.', 1, 1);
-
 
6637
		second_dot :=  INSTR(version_end, '.', 1, 2);
-
 
6638
		third_dot :=  INSTR(version_end, '.', 1, 3);
-
 
6639
 
-
 
6640
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
-
 
6641
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
-
 
6642
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
-
 
6643
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
-
 
6644
 
-
 
6645
		first_dot :=  INSTR(version, '.', 1, 1);
-
 
6646
		second_dot :=  INSTR(version, '.', 1, 2);
-
 
6647
		third_dot :=  INSTR(version, '.', 1, 3);
-
 
6648
 
-
 
6649
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
-
 
6650
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
-
 
6651
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
-
 
6652
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
-
 
6653
 
-
 
6654
		-- only include versions if all project extensions are the same
-
 
6655
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
-
 
6656
 
-
 
6657
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
-
 
6658
				RETURN 1;
-
 
6659
			ELSE
-
 
6660
				RETURN 0;
-
 
6661
			END IF;
-
 
6662
		ELSE
-
 
6663
			RETURN 0;
-
 
6664
		END IF;
-
 
6665
 
-
 
6666
	EXCEPTION
-
 
6667
		WHEN OTHERS THEN
-
 
6668
			RETURN -1;
-
 
6669
	END;
-
 
6670
 
-
 
6671
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
-
 
6672
	AS
-
 
6673
	    pkg_id NUMBER;
-
 
6674
	BEGIN
-
 
6675
		SELECT
-
 
6676
			p.PKG_ID
-
 
6677
		INTO
-
 
6678
			pkg_id
-
 
6679
		FROM
-
 
6680
			PACKAGES p
-
 
6681
		WHERE
-
 
6682
			p.PKG_NAME = pkgName;
-
 
6683
 
-
 
6684
		RETURN pkg_id;
-
 
6685
	EXCEPTION
-
 
6686
	    WHEN OTHERS THEN
-
 
6687
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
-
 
6688
			RETURN -1;
-
 
6689
	END;
-
 
6690
 
-
 
6691
 
-
 
6692
-- Public Implementation ------------------------------------------------------
-
 
6693
 
-
 
6694
	/*
-
 
6695
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
-
 
6696
	--
-
 
6697
	-- INPUT PARAMETERS:
-
 
6698
	--
-
 
6699
	--		pkg_name  	-  	The name of the top level package to get issues for
-
 
6700
	--		version_start	-	The start version for the comparison
-
 
6701
	--		version_end	-	The end version for the comparison
-
 
6702
	*/
-
 
6703
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
-
 
6704
	AS
-
 
6705
		pkgId	NUMBER;
-
 
6706
	BEGIN
-
 
6707
		-- get pkg_id of the input package:
-
 
6708
		pkgId := GetPkgId( pkg_name );
-
 
6709
 
-
 
6710
		OPEN vCursor FOR
-
 
6711
		SELECT
-
 
6712
			  pv.PKG_ID,
-
 
6713
			  pv.PKG_VERSION,
-
 
6714
			  pv.PV_ID,
-
 
6715
			  i_pkg.ISS_ID,
-
 
6716
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
-
 
6717
			  pd.DPKG_ID,
-
 
6718
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
-
 
6719
			  pd.DPV_ID,
-
 
6720
			  i_dpkg.ISS_ID AS ISSUE_ID
-
 
6721
		FROM
-
 
6722
			 PACKAGE_VERSIONS pv
-
 
6723
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
-
 
6724
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
-
 
6725
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
-
 
6726
		WHERE
-
 
6727
   			 pv.PKG_ID = pkgId
-
 
6728
		AND
-
 
6729
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
-
 
6730
		AND
-
 
6731
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
-
 
6732
		ORDER BY
-
 
6733
			 pv.PKG_ID,
-
 
6734
			 pv.PV_ID,
-
 
6735
			 pd.DPKG_ID,
-
 
6736
			 pd.DPV_ID;
-
 
6737
	EXCEPTION
-
 
6738
		WHEN OTHERS THEN
-
 
6739
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
-
 
6740
	END;
-
 
6741
 
-
 
6742
 
-
 
6743
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
-
 
6744
 
-
 
6745
	/*
-
 
6746
	-- Proc: LoadIssuesTable
-
 
6747
	--
-
 
6748
	-- Populates Package_Issues table with details of issues from all dependent packages.
-
 
6749
	-- This will be for all package versions of the input pkg_name between the
-
 
6750
	-- version_start and version_end.
-
 
6751
	--
-
 
6752
	-- INPUT PARAMETERS:
-
 
6753
	--
-
 
6754
	--		pkg_name  	-  	The name of the top level package to get issues for
-
 
6755
	--		version_start	-	The start version for the comparison
-
 
6756
	--		version_end	-	The end version for the comparison
-
 
6757
	*/
-
 
6758
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
-
 
6759
	AS
-
 
6760
		pkgId	NUMBER;
-
 
6761
 
-
 
6762
		CURSOR pack_vers_cur IS
-
 
6763
			SELECT
-
 
6764
				pv.PV_ID,
-
 
6765
				pv.PKG_VERSION,
-
 
6766
				pv.PKG_ID,
-
 
6767
				p.PKG_NAME
-
 
6768
			FROM
-
 
6769
				PACKAGE_VERSIONS pv
-
 
6770
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
-
 
6771
			WHERE
-
 
6772
   				 pv.PKG_ID = pkgId
-
 
6773
			AND
-
 
6774
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
-
 
6775
 
-
 
6776
	BEGIN
-
 
6777
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
-
 
6778
 
-
 
6779
		-- get the pkg_id we are finding issues for
-
 
6780
		pkgId := GetPkgId( pkg_name );
-
 
6781
 
-
 
6782
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
-
 
6783
		FOR pack_ver_rec IN  pack_vers_cur
-
 
6784
		LOOP
-
 
6785
			InsertIssuesForDepends( pack_ver_rec.PV_ID, pack_ver_rec.PKG_ID, pack_ver_rec.PKG_NAME, pack_ver_rec.PV_ID, pack_ver_rec.PKG_VERSION );
-
 
6786
			COMMIT;
-
 
6787
		END LOOP;
-
 
6788
 
-
 
6789
		-- The output cursor - shows the individual versions of the top level package then were reported on
-
 
6790
		OPEN vCursor FOR
-
 
6791
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
-
 
6792
/*removed
-
 
6793
		SELECT
-
 
6794
			PKG_VERSION
-
 
6795
		FROM
-
 
6796
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
-
 
6797
*/
-
 
6798
 
-
 
6799
 
-
 
6800
	EXCEPTION
-
 
6801
		WHEN OTHERS THEN
-
 
6802
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
-
 
6803
	END;
-
 
6804
 
-
 
6805
 
-
 
6806
	/*
-
 
6807
	-- Proc: InsertIssuesForDepends
-
 
6808
	--
-
 
6809
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
-
 
6810
	--
-
 
6811
	-- INPUT PARAMETERS:
-
 
6812
	--
-
 
6813
	--		pvID  		-  	The package version id of the package to get issues for
-
 
6814
	--		top_pkgID	-  	The package id of the top level package to get issues for - should be the same as pvID when called from LoadIssuesTable (different when called recursively)
-
 
6815
	--		top_pkgName -  	The package name of the top level package
-
 
6816
	--		top_pvID  	-  	The package version id of the top level package
-
 
6817
	--		top_pkgVer  -  	The package version description of the top level package
-
 
6818
	*/
-
 
6819
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
-
 
6820
	AS
-
 
6821
		pkgId		NUMBER;
-
 
6822
		issCnt		NUMBER := 0;
-
 
6823
		pkgCheck	NUMBER := 0;
-
 
6824
		depCheck	NUMBER := 0;
-
 
6825
 
-
 
6826
		dpkgName	VARCHAR(50);
-
 
6827
		dpkgVersion	VARCHAR(50);
-
 
6828
 
-
 
6829
		CURSOR dep_packs_cur IS
-
 
6830
			SELECT
-
 
6831
				DPV_ID
-
 
6832
			FROM
-
 
6833
				PACKAGE_DEPENDENCIES
-
 
6834
			WHERE
-
 
6835
				PV_ID = pvID;
-
 
6836
 
-
 
6837
	BEGIN
-
 
6838
 
-
 
6839
		-- check to see if the package has been processed previously
-
 
6840
		SELECT
-
 
6841
			COUNT(*)
-
 
6842
		INTO
-
 
6843
			pkgCheck
-
 
6844
		FROM
-
 
6845
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
-
 
6846
		WHERE
-
 
6847
			DPV_ID = pvID;
-
 
6848
 
-
 
6849
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
-
 
6850
 
-
 
6851
		-- Package not already processed (no cyclic dependency) - process it
-
 
6852
		IF ( pkgCheck = 0 ) THEN
-
 
6853
 
-
 
6854
			-- check to see if this package version has any issues assigned to it
-
 
6855
			SELECT
-
 
6856
				COUNT(*)
-
 
6857
			INTO
-
 
6858
				issCnt
-
 
6859
			FROM
-
 
6860
				CQ_ISSUES i
-
 
6861
			WHERE
-
 
6862
				i.PV_ID = pvID;
-
 
6863
 
-
 
6864
			dbms_output.put_line('issCnt: ' || issCnt );
-
 
6865
 
-
 
6866
			-- Always enter a marker row into the table even if there are no issues for the package.
-
 
6867
			-- This allows us to pick up any cyclic dependencies.
-
 
6868
			IF ( issCnt > 0 ) THEN
-
 
6869
				-- get issues and insert into RM_PACKAGE_ISSUES
-
 
6870
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
-
 
6871
 
-
 
6872
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
-
 
6873
					SELECT DISTINCT
-
 
6874
						top_pkgID		AS PKG_ID,
-
 
6875
						top_pkgName		AS PKG_NAME,
-
 
6876
						top_pvID		AS PV_ID,
-
 
6877
						top_pkgVer		AS PKG_VERSION,
-
 
6878
						pv.PV_ID		AS DPV_ID,
-
 
6879
						p.PKG_NAME		AS DPKG_NAME,
-
 
6880
						pv.PKG_VERSION	AS DPKG_VERSION,
-
 
6881
						ci.ISS_DB,
-
 
6882
						ci.ISS_ID
-
 
6883
					FROM
-
 
6884
						PACKAGE_VERSIONS pv
-
 
6885
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
-
 
6886
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
-
 
6887
					WHERE
-
 
6888
						pv.PV_ID = pvID;
-
 
6889
 
-
 
6890
			ELSE
-
 
6891
				-- get the dpkg details - there will always be a row returned here
-
 
6892
				SELECT
-
 
6893
					p.PKG_NAME
-
 
6894
				INTO
-
 
6895
					dpkgName
-
 
6896
				FROM
-
 
6897
					PACKAGE_VERSIONS pv
-
 
6898
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
-
 
6899
				WHERE
-
 
6900
	   				 pv.PV_ID = pvID;
-
 
6901
 
-
 
6902
				SELECT
-
 
6903
					pv.PKG_VERSION
-
 
6904
				INTO
-
 
6905
					dpkgVersion
-
 
6906
				FROM
-
 
6907
					PACKAGE_VERSIONS pv
-
 
6908
				WHERE
-
 
6909
	   				 pv.PV_ID = pvID;
-
 
6910
 
-
 
6911
				-- enter a marker row
-
 
6912
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
-
 
6913
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
-
 
6914
				VALUES (
-
 
6915
					top_pkgID,
-
 
6916
					top_pkgName,
-
 
6917
					top_pvID,
-
 
6918
					top_pkgVer,
-
 
6919
					pvID,
-
 
6920
					dpkgName,
-
 
6921
					dpkgVersion,
-
 
6922
					NULL,
-
 
6923
					NULL );
-
 
6924
 
-
 
6925
			END IF;
-
 
6926
 
-
 
6927
			-- If this package version has dependencies then recurse
-
 
6928
			SELECT
-
 
6929
				COUNT(*)
-
 
6930
			INTO
-
 
6931
				depCheck
-
 
6932
			FROM
-
 
6933
				PACKAGE_DEPENDENCIES
-
 
6934
			WHERE
-
 
6935
				PV_ID = pvID;
-
 
6936
 
-
 
6937
			IF ( depCheck > 0 ) THEN
-
 
6938
				-- get dependencies and call this function recursively for each one
-
 
6939
				FOR dep_rec IN  dep_packs_cur
-
 
6940
				LOOP
-
 
6941
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
-
 
6942
				END LOOP;
-
 
6943
 
-
 
6944
			END IF;
-
 
6945
 
-
 
6946
		END IF;
-
 
6947
 
-
 
6948
	/*EXCEPTION
-
 
6949
		WHEN OTHERS THEN
-
 
6950
			no exception handling required
-
 
6951
	*/
-
 
6952
	END;
-
 
6953
 
-
 
6954
END Rm_Issues;
-
 
6955
/
-
 
6956
--------------------------------------------------------
-
 
6957
--  DDL for Package Body PK_RELEASE_TEST
-
 
6958
--------------------------------------------------------
-
 
6959
 
-
 
6960
  CREATE OR REPLACE PACKAGE BODY "PK_RELEASE_TEST" IS
-
 
6961
 
-
 
6962
 
-
 
6963
/*
-
 
6964
------------------------------
-
 
6965
||  Last Modified:  S.Vukovic
-
 
6966
||  Modified Date:  12/Sep/2005
-
 
6967
||  Body Version:   3.0
-
 
6968
------------------------------
-
 
6969
*/
-
 
6970
 
-
 
6971
 
-
 
6972
/*-------------------------------------------------------------------------------------------------------*/
-
 
6973
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
-
 
6974
 
-
 
6975
RtagId NUMBER;
-
 
6976
ParentRtagId NUMBER;
-
 
6977
RecCount NUMBER := 0;
-
 
6978
 
-
 
6979
				  							 
-
 
6980
BEGIN
-
 
6981
	/*--------------- Business Rules Here -------------------*/
-
 
6982
	-- Check for missing parameters
-
 
6983
	IF (sReleaseName IS NULL) OR (nUserId IS NULL)
-
 
6984
	THEN
-
 
6985
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
-
 
6986
		
-
 
6987
	END IF;
-
 
6988
	
-
 
6989
	
-
 
6990
	-- Check for duplicate Release Names
-
 
6991
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
-
 
6992
	  FROM RELEASE_TAGS rt
-
 
6993
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
-
 
6994
	   AND rt.PROJ_ID = nProjId;
-
 
6995
	   
-
 
6996
	IF (RecCount > 0) THEN
-
 
6997
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
-
 
6998
	END IF;
-
 
6999
	/*-------------------------------------------------------*/
-
 
7000
	
-
 
7001
	
-
 
7002
	-- Get rtag_id
-
 
7003
	SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
-
 
7004
	
-
 
7005
	
-
 
7006
	
-
 
7007
	-- Get Parent RtagId
-
 
7008
	ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
-
 
7009
	
-
 
7010
	
-
 
7011
	-- Create new release
-
 
7012
	INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID, 
-
 
7013
							   OFFICIAL, REBUILD_ENV, REBUILD_STAMP, 
-
 
7014
							   PARENT_RTAG_ID, PROJ_ID )
-
 
7015
	VALUES ( RtagId, 
-
 
7016
			 sReleaseName, 
-
 
7017
			 sReleaseComments,
-
 
7018
			 ORA_SYSDATE,
-
 
7019
			 nUserId,
-
 
7020
			 'N',
-
 
7021
			 'N',
-
 
7022
			 0,
-
 
7023
			 ParentRtagId,
-
 
7024
			 nProjId );
-
 
7025
	
-
 
7026
	-- Update display Order
-
 
7027
	UPDATE_DISPLAY_ORDER ( nProjId );
-
 
7028
	
-
 
7029
	/* Log Project Action */
-
 
7030
	Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
-
 
7031
	
-
 
7032
	
-
 
7033
	-- Import Release Contents
-
 
7034
	IF (NOT nSourceRtagId IS NULL) THEN
-
 
7035
		Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
-
 
7036
		
-
 
7037
	END IF;
-
 
7038
	
-
 
7039
		
-
 
7040
			
-
 
7041
END;
-
 
7042
/*-------------------------------------------------------------------------------------------------------*/
-
 
7043
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
-
 
7044
 
-
 
7045
				  							 
-
 
7046
BEGIN
-
 
7047
	
-
 
7048
	
-
 
7049
	/*--------------- Business Rules Here -------------------*/
-
 
7050
	/*-------------------------------------------------------*/
-
 
7051
	
-
 
7052
	UPDATE RELEASE_TAGS urt SET
-
 
7053
	urt.DISPLAY_ORDER = (
-
 
7054
						SELECT qry.REC_NUM
-
 
7055
						  FROM (	
-
 
7056
								SELECT rel.*, ROWNUM AS REC_NUM
-
 
7057
								  FROM (
-
 
7058
								  
-
 
7059
								  		SELECT rt.RTAG_ID, 
-
 
7060
											   rt.DISPLAY_ORDER,
-
 
7061
										       DECODE( rt.PARENT_RTAG_ID, 
-
 
7062
											   		   rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
-
 
7063
										  FROM RELEASE_TAGS rt
-
 
7064
										 WHERE rt.PROJ_ID = nProjId 
-
 
7065
									 
-
 
7066
								  		) rel
-
 
7067
								START WITH rel.PARENT_RTAG_ID = 0
-
 
7068
								CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID   
-
 
7069
								ORDER SIBLINGS BY rel.DISPLAY_ORDER
-
 
7070
								) qry
-
 
7071
					      WHERE qry.RTAG_ID = urt.RTAG_ID 								
-
 
7072
						)
-
 
7073
	WHERE urt.PROJ_ID = nProjId;
-
 
7074
			
-
 
7075
END;
-
 
7076
/*-------------------------------------------------------------------------------------------------------*/
-
 
7077
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
-
 
7078
 
-
 
7079
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();						 
-
 
7080
	SeqNum NUMBER;
-
 
7081
					  							 
-
 
7082
BEGIN
-
 
7083
	
-
 
7084
	
-
 
7085
	/*--------------- Business Rules Here -------------------*/
-
 
7086
	/*-------------------------------------------------------*/
-
 
7087
	
-
 
7088
	nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
-
 
7089
	
-
 
7090
	-- Set start sequence number
-
 
7091
	SeqNum := 1;
-
 
7092
	
-
 
7093
	FOR i IN 1..nIdCollector.COUNT
-
 
7094
	LOOP
-
 
7095
	
-
 
7096
		-- Update new display order
-
 
7097
		UPDATE RELEASE_TAGS rt SET
-
 
7098
			rt.DISPLAY_ORDER = SeqNum
-
 
7099
		 WHERE rt.PROJ_ID = nProjId
-
 
7100
		   AND rt.RTAG_ID = nIdCollector(i);
-
 
7101
		   
-
 
7102
		SeqNum := SeqNum + 1;
-
 
7103
			   
-
 
7104
	END LOOP;
-
 
7105
			
-
 
7106
END;
-
 
7107
/*-------------------------------------------------------------------------------------------------------*/
-
 
7108
PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, nUserId IN NUMBER ) IS
-
 
7109
 
-
 
7110
RecCount NUMBER := 0;
-
 
7111
ProjId NUMBER;
-
 
7112
				  							 
-
 
7113
BEGIN
-
 
7114
	
-
 
7115
	
-
 
7116
	/*--------------- Business Rules Here -------------------*/
-
 
7117
	-- Check for missing parameters
-
 
7118
	IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
-
 
7119
	THEN
-
 
7120
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
-
 
7121
		
-
 
7122
	END IF;
-
 
7123
	
-
 
7124
	
-
 
7125
	-- Check for duplicate Release Names
-
 
7126
	SELECT rt.PROJ_ID INTO ProjId
-
 
7127
	  FROM RELEASE_TAGS rt
-
 
7128
	 WHERE rt.RTAG_ID = nRtagId;
-
 
7129
	 
-
 
7130
	SELECT COUNT(rt.RTAG_ID) INTO RecCount
-
 
7131
	  FROM RELEASE_TAGS rt
-
 
7132
	 WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
-
 
7133
	   AND rt.RTAG_ID != nRtagId
-
 
7134
	   AND rt.PROJ_ID = ProjId;
-
 
7135
	   
-
 
7136
	   
-
 
7137
	IF (RecCount > 0) THEN
-
 
7138
		RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');	
-
 
7139
	END IF;
-
 
7140
	/*-------------------------------------------------------*/
-
 
7141
	
-
 
7142
	
-
 
7143
	
-
 
7144
	-- Update release details
-
 
7145
	UPDATE RELEASE_TAGS rt SET
-
 
7146
	rt.RTAG_NAME = sReleaseName,
-
 
7147
	rt.DESCRIPTION = sReleaseComments,
-
 
7148
	rt.PARENT_RTAG_ID = nParentRtagId,
-
 
7149
	rt.ASSOC_MASS_REF = nMASSRtagId,
-
 
7150
	rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch
-
 
7151
	WHERE rt.RTAG_ID = nRtagId; 
-
 
7152
	
-
 
7153
	-- Update display Order
-
 
7154
	UPDATE_DISPLAY_ORDER ( ProjId );
-
 
7155
	
-
 
7156
	/* Log Project Action */
-
 
7157
	Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
-
 
7158
	
-
 
7159
	
-
 
7160
		
-
 
7161
			
-
 
7162
END;
-
 
7163
/*-------------------------------------------------------------------------------------------------------*/
-
 
7164
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
-
 
7165
 
-
 
7166
	RecCount NUMBER := 0;
-
 
7167
	sReleaseId VARCHAR2(4000);
-
 
7168
	ProjId NUMBER;
-
 
7169
	
-
 
7170
BEGIN
-
 
7171
	/*--------------- Business Rules Here -------------------*/
-
 
7172
	IF (nRtagId IS NULL) 
-
 
7173
	THEN
-
 
7174
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
-
 
7175
	END IF;
-
 
7176
	
-
 
7177
	
-
 
7178
	
-
 
7179
	-- Check for any kids
-
 
7180
	SELECT COUNT( rt.RTAG_ID ) INTO RecCount
-
 
7181
	  FROM RELEASE_TAGS rt
-
 
7182
	 WHERE rt.PARENT_RTAG_ID = nRtagId
-
 
7183
	   AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
-
 
7184
	
-
 
7185
	IF (RecCount > 0) THEN
-
 
7186
		RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
-
 
7187
	END IF; 
-
 
7188
	/*-------------------------------------------------------*/
-
 
7189
	
-
 
7190
	-- Clear the release contents
-
 
7191
	Clean_Release_Contents ( nRtagId, nUserId );
-
 
7192
	
-
 
7193
	/* Log Project Action */
-
 
7194
	SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
-
 
7195
	  FROM RELEASE_TAGS rt
-
 
7196
	 WHERE rt.RTAG_ID = nRtagId;
-
 
7197
	 
-
 
7198
	Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
-
 
7199
	
-
 
7200
	
-
 
7201
	-- Remove Release
-
 
7202
	DELETE 
-
 
7203
	  FROM RELEASE_TAGS rt
-
 
7204
	 WHERE rt.RTAG_ID = nRtagId;
-
 
7205
	 
-
 
7206
		
-
 
7207
			
-
 
7208
END;
-
 
7209
/*-------------------------------------------------------------------------------------------------------*/
-
 
7210
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
-
 
7211
 
-
 
7212
	sSourceLocation VARCHAR2(4000);
-
 
7213
	sTargetLocation VARCHAR2(4000);
-
 
7214
	ProjId NUMBER;
-
 
7215
	cReleaseMode CHAR(1);
-
 
7216
	
-
 
7217
	
-
 
7218
BEGIN
-
 
7219
	/*--------------- Business Rules Here -------------------*/
-
 
7220
	IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
-
 
7221
	THEN
-
 
7222
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
-
 
7223
	END IF;
-
 
7224
	
-
 
7225
	IF (nSourceRtagId = nTargetRtagId) THEN
-
 
7226
		RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
-
 
7227
	END IF;
-
 
7228
	
-
 
7229
	
-
 
7230
	-- Check if Target release is in OPEN mode
-
 
7231
	SELECT rt.OFFICIAL  INTO  cReleaseMode
-
 
7232
	  FROM RELEASE_TAGS rt
-
 
7233
	 WHERE rt.RTAG_ID = nTargetRtagId;
-
 
7234
 
-
 
7235
	IF (cReleaseMode != 'N') THEN
-
 
7236
		RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
-
 
7237
	END IF;	 
-
 
7238
	 
-
 
7239
	/*-------------------------------------------------------*/
-
 
7240
	
-
 
7241
	-- Clean target contents
-
 
7242
	Clean_Release_Contents ( nTargetRtagId, nUserId );
-
 
7243
	
-
 
7244
	
-
 
7245
	-- Import Released Area Contents
-
 
7246
	INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE ) 
-
 
7247
	SELECT nTargetRtagId AS RTAG_ID, 
-
 
7248
		   rc.PV_ID, 
-
 
7249
		   rc.BASE_VIEW_ID, 
-
 
7250
		   rc.INSERT_STAMP, 
-
 
7251
		   rc.INSERTOR_ID, 
-
 
7252
		   rc.PKG_STATE
-
 
7253
	  FROM RELEASE_CONTENT rc
-
 
7254
	 WHERE rc.RTAG_ID = nSourceRtagId;
-
 
7255
	 
-
 
7256
	 
-
 
7257
	-- Import Ignore Warning states
-
 
7258
	INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
-
 
7259
	SELECT nTargetRtagId AS RTAG_ID,
-
 
7260
	       igw.PV_ID,
-
 
7261
	       igw.DPV_ID
-
 
7262
	  FROM IGNORE_WARNINGS igw
-
 
7263
	 WHERE igw.rtag_id = nSourceRtagId;
-
 
7264
	 
-
 
7265
 
-
 
7266
	/* Log Project Action */
-
 
7267
	-- Get Source Location
-
 
7268
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
-
 
7269
	  FROM RELEASE_TAGS rt,
-
 
7270
	  	   PROJECTS pr
-
 
7271
	 WHERE rt.PROJ_ID = pr.PROJ_ID
-
 
7272
	   AND rt.RTAG_ID = nSourceRtagId;
-
 
7273
	   
-
 
7274
	-- Get Target Location
-
 
7275
	SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
-
 
7276
	  FROM RELEASE_TAGS rt,
-
 
7277
	  	   PROJECTS pr
-
 
7278
	 WHERE rt.PROJ_ID = pr.PROJ_ID
-
 
7279
	   AND rt.RTAG_ID = nTargetRtagId;	   
-
 
7280
	   
-
 
7281
	-- Get project id   
-
 
7282
	SELECT rt.PROJ_ID  INTO  ProjId
-
 
7283
	  FROM RELEASE_TAGS rt
-
 
7284
	 WHERE rt.RTAG_ID = nTargetRtagId;   
-
 
7285
	 
-
 
7286
	Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );	
-
 
7287
		
-
 
7288
			
-
 
7289
END;
-
 
7290
/*-------------------------------------------------------------------------------------------------------*/
-
 
7291
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
-
 
7292
 
-
 
7293
	RecCount NUMBER;
-
 
7294
	
-
 
7295
BEGIN
-
 
7296
	/*--------------- Business Rules Here -------------------*/
-
 
7297
	IF (nRtagId IS NULL) 
-
 
7298
	THEN
-
 
7299
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
-
 
7300
	END IF;
-
 
7301
	
-
 
7302
	
-
 
7303
	-- Check if other release references this release
-
 
7304
	SELECT COUNT( rl.RTAG_ID ) INTO RecCount
-
 
7305
	  FROM RELEASE_LINKS rl
-
 
7306
	 WHERE rl.REF_RTAG_ID = nRtagId;
-
 
7307
	
-
 
7308
	IF (RecCount > 0) THEN
-
 
7309
		RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
-
 
7310
	END IF; 	
-
 
7311
	/*-------------------------------------------------------*/
-
 
7312
	
-
 
7313
	-- Delete Release links
-
 
7314
	DELETE 
-
 
7315
	  FROM RELEASE_LINKS rl
-
 
7316
	 WHERE rl.RTAG_ID = nRtagId;
-
 
7317
	
-
 
7318
	-- Delete ignore warning
-
 
7319
	DELETE 
-
 
7320
	  FROM IGNORE_WARNINGS iw
-
 
7321
	 WHERE iw.RTAG_ID = nRtagId;
-
 
7322
	 
-
 
7323
	
-
 
7324
	-- Delete Build Order cached calculations	  
-
 
7325
	DELETE
-
 
7326
	  FROM BUILD_ORDER bo
-
 
7327
	 WHERE bo.RTAG_ID = nRtagId;
-
 
7328
	 
-
 
7329
	 
-
 
7330
	-- Delete Notification History
-
 
7331
	DELETE
-
 
7332
	  FROM NOTIFICATION_HISTORY nh
-
 
7333
	 WHERE nh.RTAG_ID = nRtagId;
-
 
7334
	 
-
 
7335
	 
-
 
7336
	-- Delete Released Area Contents
-
 
7337
	DELETE
-
 
7338
	  FROM RELEASE_CONTENT rc
-
 
7339
	 WHERE rc.RTAG_ID = nRtagId;
-
 
7340
	 
-
 
7341
 
-
 
7342
	-- Delete Work In Progress Area Contents
-
 
7343
	DELETE
-
 
7344
	  FROM WORK_IN_PROGRESS wip
-
 
7345
	 WHERE wip.RTAG_ID = nRtagId;
-
 
7346
	 
-
 
7347
 
-
 
7348
	-- Delete Pending Area Contents
-
 
7349
	DELETE 
-
 
7350
	  FROM PLANNED pl
-
 
7351
	 WHERE pl.RTAG_ID = nRtagId;
-
 
7352
		
-
 
7353
			
-
 
7354
END;
-
 
7355
/*-------------------------------------------------------------------------------------------------------*/
-
 
7356
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
-
 
7357
							
-
 
7358
	nSourceParentRtagId NUMBER;
-
 
7359
							
-
 
7360
BEGIN
-
 
7361
	/*--------------- Business Rules Here -------------------*/
-
 
7362
	IF (nRtagId IS NULL) OR (cIsBranch IS NULL)  
-
 
7363
	THEN
-
 
7364
		RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
-
 
7365
	END IF;
-
 
7366
	/*-------------------------------------------------------*/
-
 
7367
	
-
 
7368
	
-
 
7369
	IF ( nSourceRtagId IS NULL ) THEN
-
 
7370
		-- Create new on main branch
-
 
7371
		RETURN nRtagId;
-
 
7372
		
-
 
7373
	ELSE
-
 
7374
		-- Create from source rtag_id
-
 
7375
		
-
 
7376
		-- Find parent of Source RtagId
-
 
7377
		SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
-
 
7378
		  FROM RELEASE_TAGS rt
-
 
7379
		 WHERE rt.RTAG_ID = nSourceRtagId;
-
 
7380
		 
-
 
7381
		IF (UPPER(cIsBranch) = 'Y') THEN
-
 
7382
			RETURN nSourceRtagId;
-
 
7383
		ELSE
-
 
7384
			IF (nSourceRtagId = nSourceParentRtagId) THEN
-
 
7385
				RETURN nRtagId;
-
 
7386
			ELSE
-
 
7387
				RETURN nSourceParentRtagId;
-
 
7388
			END IF;
-
 
7389
		END IF;	
-
 
7390
		
-
 
7391
	
-
 
7392
	END IF;
-
 
7393
	
-
 
7394
		
-
 
7395
END;
-
 
7396
/*-------------------------------------------------------------------------------------------------------*/
-
 
7397
 
-
 
7398
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
-
 
7399
-- 							 sNextVersion OUT VARCHAR2,
-
 
7400
-- 							 nNextLifeCycle OUT NUMBER,
-
 
7401
-- 							 nParentRtagId OUT NUMBER,
-
 
7402
-- 							 nProjId IN NUMBER ) IS
-
 
7403
-- 							
-
 
7404
-- SourceBranchCount NUMBER;
-
 
7405
-- ProjRootVersion VARCHAR2(4000);
-
 
7406
-- LastLifeCycle NUMBER;
-
 
7407
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
-
 
7408
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
-
 
7409
-- 
-
 
7410
-- SourceProjId NUMBER; 
-
 
7411
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
-
 
7412
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
-
 
7413
-- 
-
 
7414
-- BEGIN
-
 
7415
-- 	/*--------------- Business Rules Here -------------------*/
-
 
7416
-- 	/*-------------------------------------------------------*/
-
 
7417
-- 	
-
 
7418
-- 	   
-
 
7419
-- 	BEGIN
-
 
7420
-- 		-- Get Project root version
-
 
7421
-- 		SELECT rt.RTAG_VERSION INTO ProjRootVersion
-
 
7422
-- 		  FROM RELEASE_TAGS rt
-
 
7423
-- 		 WHERE rt.PROJ_ID = nProjId
-
 
7424
-- 		   AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
-
 
7425
-- 	   
-
 
7426
-- 		EXCEPTION
-
 
7427
-- 		WHEN NO_DATA_FOUND THEN
-
 
7428
-- 		ProjRootVersion := ROOT_VERSION_NOT_FOUND;
-
 
7429
-- 	END;		   
-
 
7430
-- 	
-
 
7431
-- 	
-
 
7432
-- 	
-
 
7433
-- 	 
-
 
7434
-- 	BEGIN
-
 
7435
-- 		-- Get info for source rtagid
-
 
7436
-- 		SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
-
 
7437
-- 		  FROM RELEASE_TAGS rt
-
 
7438
-- 		 WHERE rt.RTAG_ID = nSourceRtagId;	
-
 
7439
-- 	   
-
 
7440
-- 		EXCEPTION
-
 
7441
-- 		WHEN NO_DATA_FOUND THEN
-
 
7442
-- 		SourceProjId := NULL;
-
 
7443
-- 		SourceVersion := NULL;
-
 
7444
-- 		SourceLifeCycle := NULL;
-
 
7445
-- 	END;	  
-
 
7446
-- 	
-
 
7447
-- 	
-
 
7448
-- 	IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
-
 
7449
-- 	
-
 
7450
-- 		/* Blank Release Required  OR  Release imported from other project */
-
 
7451
-- 		
-
 
7452
-- 		IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
-
 
7453
-- 			/* No Releases found in the project, hence calculate next version available.  */
-
 
7454
-- 			
-
 
7455
-- 			-- Set parent rtag
-
 
7456
-- 			nParentRtagId := SET_PARENT_AS_YOURSELF;
-
 
7457
-- 			
-
 
7458
-- 			
-
 
7459
-- 			BEGIN
-
 
7460
-- 				-- Get Next Available Global Root Version 
-
 
7461
-- 				SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
-
 
7462
-- 				  FROM RELEASE_TAGS rt
-
 
7463
-- 				 WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
-
 
7464
-- 				
-
 
7465
-- 				-- Set Next Rtag Version
-
 
7466
-- 				sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
-
 
7467
-- 				
-
 
7468
-- 				-- Restart Lifecycle
-
 
7469
-- 				nNextLifeCycle := 0;
-
 
7470
-- 				
-
 
7471
-- 				
-
 
7472
-- 				EXCEPTION
-
 
7473
-- 				WHEN NO_DATA_FOUND THEN
-
 
7474
-- 				-- Release Manager has no releases, hence start from 1
-
 
7475
-- 				sNextVersion := '1';
-
 
7476
-- 				nNextLifeCycle := 0;
-
 
7477
-- 				
-
 
7478
-- 			END;
-
 
7479
-- 			
-
 
7480
-- 			
-
 
7481
-- 					
-
 
7482
-- 		ELSE
-
 
7483
-- 			/* Releases found in this project. */
-
 
7484
-- 							   
-
 
7485
-- 			SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
-
 
7486
-- 			  FROM (
-
 
7487
-- 					SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
-
 
7488
-- 					  FROM RELEASE_TAGS rt
-
 
7489
-- 					 WHERE rt.PROJ_ID = nProjId
-
 
7490
-- 					   AND rt.RTAG_VERSION = ProjRootVersion 
-
 
7491
-- 					 ORDER BY rt.RTAG_LIFE_CYCLE DESC
-
 
7492
-- 			  		) qry
-
 
7493
-- 			 WHERE ROWNUM = 1;		
-
 
7494
-- 
-
 
7495
-- 			
-
 
7496
-- 			-- Set same Rtag Version
-
 
7497
-- 			sNextVersion := ProjRootVersion;
-
 
7498
-- 			
-
 
7499
-- 			-- Increase Lifecycle
-
 
7500
-- 			nNextLifeCycle := LastLifeCycle + 1;
-
 
7501
-- 		
-
 
7502
-- 		END IF;
-
 
7503
-- 				
-
 
7504
-- 	
-
 
7505
-- 		
-
 
7506
-- 	ELSE
-
 
7507
-- 		/* Create Release From other release within this project */
-
 
7508
-- 		
-
 
7509
-- 		-- Set parent id
-
 
7510
-- 		nParentRtagId := nSourceRtagId;
-
 
7511
-- 		
-
 
7512
-- 		
-
 
7513
-- 		-- Get number of source branches
-
 
7514
-- 		SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
-
 
7515
-- 		  FROM RELEASE_TAGS rt
-
 
7516
-- 		 WHERE rt.PROJ_ID = nProjId
-
 
7517
-- 		   AND rt.PARENT_RTAG_ID = nSourceRtagId;		   
-
 
7518
-- 		   
-
 
7519
-- 		   
-
 
7520
-- 		IF SourceBranchCount = 0 THEN
-
 
7521
-- 			/* Release is Head (i.e. Tip on its branch ) */
-
 
7522
-- 			
-
 
7523
-- 			-- Set Next Rtag Version
-
 
7524
-- 			sNextVersion := SourceVersion;
-
 
7525
-- 			
-
 
7526
-- 			-- Increase Lifecycle
-
 
7527
-- 			nNextLifeCycle := SourceLifeCycle + 1;
-
 
7528
-- 			
-
 
7529
-- 			
-
 
7530
-- 		ELSIF SourceBranchCount = 1 THEN
-
 
7531
-- 			/* Release IS NOT Head, but can be branched */
-
 
7532
-- 			
-
 
7533
-- 			-- Set Next Rtag Version
-
 
7534
-- 			sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
-
 
7535
-- 			
-
 
7536
-- 			-- Reset Lifecycle to 1
-
 
7537
-- 			nNextLifeCycle := 1;
-
 
7538
-- 			
-
 
7539
-- 			
-
 
7540
-- 		ELSE	
-
 
7541
-- 			-- Limit of two branches is reached
-
 
7542
-- 			RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');		
-
 
7543
-- 			
-
 
7544
-- 		END IF;	
-
 
7545
-- 			
-
 
7546
-- 			
-
 
7547
-- 		
-
 
7548
-- 		
-
 
7549
-- 		
-
 
7550
-- 	
-
 
7551
-- 	END IF;
-
 
7552
-- 	
-
 
7553
-- 		
-
 
7554
-- END;
-
 
7555
 
-
 
7556
/*-------------------------------------------------------------------------------------------------------*/
-
 
7557
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
-
 
7558
 
-
 
7559
	IsBaseView CHAR(1);
-
 
7560
		
-
 
7561
BEGIN
-
 
7562
 
-
 
7563
	-- Check if the view is BASE VIEW
-
 
7564
	SELECT vi.BASE_VIEW INTO IsBaseView
-
 
7565
	  FROM VIEWS vi
-
 
7566
	 WHERE vi.VIEW_ID = ViewId;
-
 
7567
	 
-
 
7568
	IF (IsBaseView = 'Y') THEN 
-
 
7569
		-- Get Base view content
-
 
7570
		OPEN RecordSet FOR
-
 
7571
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
-
 
7572
			   pv.pv_id, 
-
 
7573
			   pkg.pkg_name, 
-
 
7574
			   pv.pkg_version, 
-
 
7575
			   pv.dlocked, 
-
 
7576
			   pv.pv_description,
-
 
7577
			   pv.BUILD_TYPE
-
 
7578
		  FROM release_content rel,
-
 
7579
		       packages pkg,
-
 
7580
		       package_versions pv
-
 
7581
		 WHERE pv.pkg_id = pkg.pkg_id
-
 
7582
		   AND rel.pv_id = pv.pv_id
-
 
7583
		   AND rel.BASE_VIEW_ID = ViewId
-
 
7584
		   AND rel.RTAG_ID = RtagId
-
 
7585
		 ORDER BY UPPER(pkg.PKG_NAME);
-
 
7586
 
-
 
7587
	ELSE	 
-
 
7588
	 
-
 
7589
	 	-- Get non base view content
-
 
7590
		OPEN RecordSet FOR
-
 
7591
		SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
-
 
7592
			   pv.pv_id, 
-
 
7593
			   pkg.pkg_name, 
-
 
7594
			   pv.pkg_version, 
-
 
7595
			   pv.dlocked, 
-
 
7596
			   pv.pv_description,
-
 
7597
			   pv.BUILD_TYPE
-
 
7598
		  FROM release_content rel,
-
 
7599
		       packages pkg,
-
 
7600
		       package_versions pv,
-
 
7601
			   VIEW_DEF vd
-
 
7602
		 WHERE pv.pkg_id = pkg.pkg_id
-
 
7603
		   AND rel.pv_id = pv.pv_id
-
 
7604
		   AND vd.VIEW_ID = ViewId
-
 
7605
		   AND vd.PKG_ID = pv.PKG_ID
-
 
7606
		   AND rel.RTAG_ID = RtagId
-
 
7607
		 ORDER BY UPPER(pkg.PKG_NAME);		 
-
 
7608
	 
-
 
7609
	END IF;	 	 
-
 
7610
	
-
 
7611
	
-
 
7612
	 
-
 
7613
 
-
 
7614
END;
-
 
7615
/*-------------------------------------------------------------------------------------------------------*/
-
 
7616
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
7617
 
-
 
7618
	ReleaseLocation VARCHAR2(4000);
-
 
7619
	sPkgVersion VARCHAR2(4000);
-
 
7620
	nPkgId NUMBER;
-
 
7621
	sVExt VARCHAR2(4000);
-
 
7622
	IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
-
 
7623
 
-
 
7624
	-- Find package for replacement
-
 
7625
	CURSOR curReplacePkg IS
-
 
7626
    SELECT pv.PV_ID
-
 
7627
	  FROM RELEASE_CONTENT rc,
-
 
7628
	  	   PACKAGE_VERSIONS pv
-
 
7629
	 WHERE rc.PV_ID = pv.PV_ID
-
 
7630
	   AND rc.RTAG_ID = RtagId
-
 
7631
	   AND pv.PKG_ID = nPkgId
-
 
7632
	   AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
-
 
7633
    recReplacePkg curReplacePkg%ROWTYPE;
-
 
7634
 
-
 
7635
BEGIN
-
 
7636
 
-
 
7637
	-- Get is_patch, pkg_id and v_ext
-
 
7638
	SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
-
 
7639
	  FROM PACKAGE_VERSIONS pv
-
 
7640
	 WHERE pv.PV_ID = newPvId;
-
 
7641
 
-
 
7642
 
-
 
7643
	-- Never put patch in relesed area
-
 
7644
	IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
-
 
7645
 
-
 
7646
		-- Try to get a package to be replaced with this new one.
-
 
7647
		-- Use unique constraint of PKG_ID and V_EXT
-
 
7648
		OPEN curReplacePkg;
-
 
7649
	    FETCH curReplacePkg INTO recReplacePkg;
-
 
7650
 
-
 
7651
	    IF curReplacePkg%FOUND THEN
-
 
7652
			-- Replace package
-
 
7653
			REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
-
 
7654
 
-
 
7655
		ELSE
-
 
7656
			-- Add new package
-
 
7657
			INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
-
 
7658
			VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
-
 
7659
 
-
 
7660
 
-
 
7661
		    /* LOG ACTION */
-
 
7662
			SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
7663
			  FROM PROJECTS proj,
-
 
7664
			  	   RELEASE_TAGS rt
-
 
7665
			 WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
7666
			   AND rt.RTAG_ID = RtagId;
-
 
7667
 
-
 
7668
			SELECT pv.PKG_VERSION INTO sPkgVersion
-
 
7669
			  FROM PACKAGE_VERSIONS pv
-
 
7670
			 WHERE pv.PV_ID = newPvId;
-
 
7671
 
-
 
7672
			Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
-
 
7673
 
-
 
7674
 
-
 
7675
		END IF;
-
 
7676
 
-
 
7677
		CLOSE curReplacePkg;
-
 
7678
 
-
 
7679
	END IF;
-
 
7680
 
-
 
7681
END;
-
 
7682
/*-------------------------------------------------------------------------------------------------------*/
-
 
7683
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
7684
 
-
 
7685
	ReleaseLocation VARCHAR2(4000);
-
 
7686
	sPkgVersion VARCHAR2(4000);
-
 
7687
 
-
 
7688
BEGIN
-
 
7689
 
-
 
7690
	-- Replace Package
-
 
7691
    UPDATE RELEASE_CONTENT
-
 
7692
       SET pv_id = newPvId,
-
 
7693
           insert_stamp = Ora_Sysdate,
-
 
7694
           insertor_id = UserId
-
 
7695
     WHERE rtag_id = RtagId
-
 
7696
       AND pv_id = oldPvId;
-
 
7697
 
-
 
7698
 
-
 
7699
    /* LOG ACTION */
-
 
7700
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
7701
	  FROM PROJECTS proj,
-
 
7702
	  	   RELEASE_TAGS rt
-
 
7703
	 WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
7704
	   AND rt.RTAG_ID = RtagId;
-
 
7705
 
-
 
7706
	SELECT pv.PKG_VERSION INTO sPkgVersion
-
 
7707
	  FROM PACKAGE_VERSIONS pv
-
 
7708
	 WHERE pv.PV_ID = newPvId;
-
 
7709
 
-
 
7710
	Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
-
 
7711
	Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
-
 
7712
 
-
 
7713
END;
-
 
7714
/*-------------------------------------------------------------------------------------------------------*/
-
 
7715
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
7716
	ReleaseLocation VARCHAR2(4000);
-
 
7717
 
-
 
7718
BEGIN
-
 
7719
	
-
 
7720
		
-
 
7721
	-- Delete old package
-
 
7722
	DELETE
-
 
7723
	  FROM RELEASE_CONTENT rc
-
 
7724
	 WHERE rc.PV_ID = PvId
-
 
7725
	   AND rc.RTAG_ID = RtagId;
-
 
7726
 
-
 
7727
 
-
 
7728
	/* LOG ACTION */
-
 
7729
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
7730
	  FROM PROJECTS proj,
-
 
7731
	       RELEASE_TAGS rt
-
 
7732
	 WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
7733
	   AND rt.RTAG_ID = RtagId;
-
 
7734
 
-
 
7735
	Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
-
 
7736
 
-
 
7737
 
-
 
7738
END;
-
 
7739
/*-------------------------------------------------------------------------------------------------------*/
-
 
7740
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
7741
	ReleaseLocation VARCHAR2(4000);
-
 
7742
 
-
 
7743
	CURSOR curMatchingPackage IS
-
 
7744
    SELECT mpv.PV_ID
-
 
7745
	  FROM RELEASE_CONTENT rc,
-
 
7746
	  	   PACKAGE_VERSIONS mpv,
-
 
7747
		   PACKAGE_VERSIONS pv
-
 
7748
	 WHERE rc.PV_ID = mpv.PV_ID
-
 
7749
	   AND rc.RTAG_ID = RtagId
-
 
7750
	   AND pv.PV_ID = PvId
-
 
7751
	   AND pv.PKG_ID = mpv.PKG_ID
-
 
7752
	   AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
-
 
7753
    recMatchingPackage curMatchingPackage%ROWTYPE;
-
 
7754
 
-
 
7755
BEGIN
-
 
7756
 
-
 
7757
	OPEN curMatchingPackage;
-
 
7758
    FETCH curMatchingPackage INTO recMatchingPackage;
-
 
7759
 
-
 
7760
    IF curMatchingPackage%FOUND THEN
-
 
7761
		-- Delete old package
-
 
7762
		DELETE
-
 
7763
		  FROM RELEASE_CONTENT rc
-
 
7764
		 WHERE rc.PV_ID = recMatchingPackage.PV_ID
-
 
7765
		   AND rc.RTAG_ID = RtagId;
-
 
7766
 
-
 
7767
 
-
 
7768
		/* LOG ACTION */
-
 
7769
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
7770
		  FROM PROJECTS proj,
-
 
7771
		  	   RELEASE_TAGS rt
-
 
7772
		 WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
7773
		   AND rt.RTAG_ID = RtagId;
-
 
7774
 
-
 
7775
		Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
-
 
7776
 
-
 
7777
	END IF;
-
 
7778
 
-
 
7779
 
-
 
7780
	CLOSE curMatchingPackage;
-
 
7781
 
-
 
7782
 
-
 
7783
 
-
 
7784
 
-
 
7785
END;
-
 
7786
/*-------------------------------------------------------------------------------------------------------*/
-
 
7787
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
-
 
7788
 
-
 
7789
	ReturnValue NUMBER;
-
 
7790
 
-
 
7791
BEGIN
-
 
7792
	SELECT rc.BASE_VIEW_ID INTO ReturnValue
-
 
7793
	  FROM RELEASE_CONTENT rc
-
 
7794
	 WHERE rc.RTAG_ID = RtagId
-
 
7795
	   AND rc.PV_ID = PvId;
-
 
7796
 
-
 
7797
	RETURN ReturnValue;
-
 
7798
END;
-
 
7799
/*-------------------------------------------------------------------------------------------------------*/
-
 
7800
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
-
 
7801
	
-
 
7802
BEGIN
-
 
7803
	-- Reset Ignore warnings up-the-tree
-
 
7804
	RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
-
 
7805
 
-
 
7806
	-- Refresh Package states
-
 
7807
	TOUCH_RELEASE ( RtagId );
-
 
7808
 
-
 
7809
END;
-
 
7810
/*-------------------------------------------------------------------------------------------------------*/
-
 
7811
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
-
 
7812
	CURSOR curReleases IS
-
 
7813
    SELECT rc.RTAG_ID
-
 
7814
	  FROM RELEASE_CONTENT rc
-
 
7815
	 WHERE rc.PV_ID = PvId;
-
 
7816
    recReleases curReleases%ROWTYPE;
-
 
7817
	
-
 
7818
BEGIN
-
 
7819
	
-
 
7820
	OPEN curReleases;
-
 
7821
    FETCH curReleases INTO recReleases;
-
 
7822
	
-
 
7823
	WHILE curReleases%FOUND
-
 
7824
	LOOP
-
 
7825
 
-
 
7826
		RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
-
 
7827
 
-
 
7828
		FETCH curReleases INTO recReleases;
-
 
7829
	END LOOP;
-
 
7830
 
-
 
7831
	CLOSE curReleases;	
-
 
7832
 
-
 
7833
END;
-
 
7834
/*-------------------------------------------------------------------------------------------------------*/
-
 
7835
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
-
 
7836
	
-
 
7837
BEGIN
-
 
7838
	
-
 
7839
	UPDATE RELEASE_CONTENT rc SET
-
 
7840
	rc.BASE_VIEW_ID = NewViewId
-
 
7841
	WHERE rc.PV_ID = PvId
-
 
7842
	  AND rc.RTAG_ID = RtagId;
-
 
7843
	
-
 
7844
END;
-
 
7845
/*-------------------------------------------------------------------------------------------------------*/
-
 
7846
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
-
 
7847
	
-
 
7848
	RowCount NUMBER;
-
 
7849
	
-
 
7850
	
-
 
7851
	CURSOR curPackageClash IS
-
 
7852
	SELECT pkg.PKG_NAME,
-
 
7853
		   er.*
-
 
7854
	  FROM (
-
 
7855
	  
-
 
7856
	  		/* Get existing referenced packages */
-
 
7857
			SELECT pv.PKG_ID,
-
 
7858
			       pv.V_EXT
-
 
7859
			  FROM RELEASE_LINKS rl,
-
 
7860
			  	   RELEASE_CONTENT rc,
-
 
7861
			  	   PACKAGE_VERSIONS pv
-
 
7862
			 WHERE rl.RTAG_ID = nRtagId
-
 
7863
			   AND rl.REF_RTAG_ID = rc.RTAG_ID
-
 
7864
			   AND rc.PV_ID = pv.PV_ID
-
 
7865
			   
-
 
7866
	  	    ) er,
-
 
7867
			(
-
 
7868
			
-
 
7869
			/* Get current reference packages */
-
 
7870
			SELECT pv.PKG_ID,
-
 
7871
			       pv.V_EXT
-
 
7872
			  FROM RELEASE_CONTENT rc,
-
 
7873
			  	   PACKAGE_VERSIONS pv
-
 
7874
			 WHERE rc.RTAG_ID = nRefRtagId
-
 
7875
			   AND rc.PV_ID = pv.PV_ID    
-
 
7876
			
-
 
7877
			) cr,
-
 
7878
			PACKAGES PKG
-
 
7879
	 WHERE er.PKG_ID = cr.PKG_ID
-
 
7880
	   AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
7881
	   AND er.PKG_ID = pkg.PKG_ID;
-
 
7882
	   
-
 
7883
	recPackageClash curPackageClash%ROWTYPE;	   
-
 
7884
		
-
 
7885
BEGIN
-
 
7886
	/*--------------- Business Rules Here -------------------*/
-
 
7887
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
-
 
7888
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
-
 
7889
	END IF;
-
 
7890
	
-
 
7891
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
-
 
7892
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
-
 
7893
	END IF;
-
 
7894
	/*-------------------------------------------------------*/
-
 
7895
	ProblemString := NULL;
-
 
7896
	
-
 
7897
	
-
 
7898
	-- Check if release already has references
-
 
7899
	SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
-
 
7900
	  FROM RELEASE_LINKS rl
-
 
7901
	 WHERE rl.RTAG_ID = nRtagId;	
-
 
7902
	 
-
 
7903
	 
-
 
7904
	IF RowCount > 0 THEN
-
 
7905
		-- Found existing references
-
 
7906
		
-
 
7907
		-- Make sure there is no package clashes
-
 
7908
		OPEN curPackageClash;
-
 
7909
	    FETCH curPackageClash INTO recPackageClash;
-
 
7910
		
-
 
7911
		IF curPackageClash%FOUND THEN
-
 
7912
			
-
 
7913
			ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
-
 
7914
			
-
 
7915
			WHILE curPackageClash%FOUND
-
 
7916
			LOOP
-
 
7917
				EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;	-- Do not allow variable overflow 
-
 
7918
				
-
 
7919
				ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
-
 
7920
				
-
 
7921
				FETCH curPackageClash INTO recPackageClash;
-
 
7922
			END LOOP;
-
 
7923
			
-
 
7924
		END IF;
-
 
7925
		
-
 
7926
		CLOSE curPackageClash;
-
 
7927
		 
-
 
7928
		
-
 
7929
	ELSE
-
 
7930
		-- No references found, hence reference a release
-
 
7931
		
-
 
7932
		
-
 
7933
		-- Remove exising package from this release to be referenced
-
 
7934
		REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);	
-
 
7935
		
-
 
7936
		
-
 
7937
		-- Add new linked packages to release
-
 
7938
		INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
-
 
7939
		SELECT nRtagId,
-
 
7940
			   rc.PV_ID,
-
 
7941
			   rc.BASE_VIEW_ID, 
-
 
7942
			   rc.INSERT_STAMP, 
-
 
7943
			   rc.INSERTOR_ID, 
-
 
7944
			   rc.PKG_STATE
-
 
7945
		  FROM RELEASE_CONTENT rc
-
 
7946
		 WHERE rc.RTAG_ID = nRefRtagId;
-
 
7947
		 
-
 
7948
		 
-
 
7949
		 
-
 
7950
		-- Copy ignore warnings for referenced packages
-
 
7951
		INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
-
 
7952
		SELECT nRtagId, 
-
 
7953
			   iw.PV_ID, 
-
 
7954
			   iw.DPV_ID, 
-
 
7955
			   iw.IS_PATCH_IGNORE
-
 
7956
		  FROM IGNORE_WARNINGS iw,
-
 
7957
		  	   RELEASE_CONTENT rc
-
 
7958
		 WHERE iw.RTAG_ID = rc.RTAG_ID 
-
 
7959
		   AND iw.PV_ID = rc.PV_ID
-
 
7960
		   AND rc.RTAG_ID = nRefRtagId;	 
-
 
7961
		 
-
 
7962
		
-
 
7963
		
-
 
7964
		-- Reference release 
-
 
7965
		INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
-
 
7966
		VALUES ( nRtagId, nRefRtagId );		 
-
 
7967
		
-
 
7968
	
-
 
7969
		-- Refresh Package states
-
 
7970
		TOUCH_RELEASE ( nRtagId );
-
 
7971
		
-
 
7972
	END IF;	 
-
 
7973
		
-
 
7974
	
-
 
7975
END;
-
 
7976
/*-------------------------------------------------------------------------------------------------------*/
-
 
7977
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
-
 
7978
	
-
 
7979
		
-
 
7980
BEGIN
-
 
7981
	/*--------------- Business Rules Here -------------------*/
-
 
7982
	IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
-
 
7983
		RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
-
 
7984
	END IF;
-
 
7985
	
-
 
7986
	IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
-
 
7987
		RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
-
 
7988
	END IF;
-
 
7989
	
-
 
7990
	/*-------------------------------------------------------*/
-
 
7991
	
-
 
7992
	
-
 
7993
	-- Remove ignore warnings for those packages who use referenced packages
-
 
7994
	DELETE FROM IGNORE_WARNINGS iw
-
 
7995
	 WHERE iw.RTAG_ID = nRtagId
-
 
7996
	   AND iw.DPV_ID IN (
-
 
7997
	   						SELECT dep.DPV_ID
-
 
7998
							  FROM (
-
 
7999
									
-
 
8000
									/* Get referenced packages */
-
 
8001
									SELECT pv.PKG_ID,
-
 
8002
									       pv.V_EXT
-
 
8003
									  FROM RELEASE_CONTENT rc,
-
 
8004
									  	   PACKAGE_VERSIONS pv
-
 
8005
									 WHERE rc.RTAG_ID = nRefRtagId
-
 
8006
									   AND rc.PV_ID = pv.PV_ID    
-
 
8007
									
-
 
8008
									) cr,
-
 
8009
									(
-
 
8010
									
-
 
8011
									/* Get all dependencies for current release */
-
 
8012
									SELECT DISTINCT 
-
 
8013
										   pv.PKG_ID,
-
 
8014
										   pv.V_EXT,
-
 
8015
										   dep.DPV_ID
-
 
8016
									  FROM RELEASE_CONTENT rc,
-
 
8017
										   PACKAGE_DEPENDENCIES dep,
-
 
8018
										   PACKAGE_VERSIONS pv
-
 
8019
									 WHERE rc.RTAG_ID = nRtagId
-
 
8020
									   AND rc.PV_ID = dep.PV_ID		
-
 
8021
									   AND dep.PV_ID = pv.PV_ID	   
-
 
8022
									
-
 
8023
									) dep
-
 
8024
							 WHERE dep.PKG_ID = cr.PKG_ID
-
 
8025
							   AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
8026
	   					);  
-
 
8027
	
-
 
8028
	
-
 
8029
	
-
 
8030
	
-
 
8031
	-- Remove ignore warnings for those package which are going to be replaced with the reference
-
 
8032
	DELETE FROM IGNORE_WARNINGS iw
-
 
8033
	 WHERE iw.RTAG_ID = nRtagId
-
 
8034
	   AND iw.PV_ID IN (
-
 
8035
						SELECT pv.PV_ID
-
 
8036
						  FROM (
-
 
8037
								
-
 
8038
								/* Get referenced packages */
-
 
8039
								SELECT pv.PKG_ID,
-
 
8040
								       pv.V_EXT
-
 
8041
								  FROM RELEASE_CONTENT rc,
-
 
8042
								  	   PACKAGE_VERSIONS pv
-
 
8043
								 WHERE rc.RTAG_ID = nRefRtagId
-
 
8044
								   AND rc.PV_ID = pv.PV_ID    
-
 
8045
								
-
 
8046
								) cr,
-
 
8047
								RELEASE_CONTENT rc,
-
 
8048
								PACKAGE_VERSIONS pv
-
 
8049
						 WHERE pv.PKG_ID = cr.PKG_ID
-
 
8050
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
8051
						   AND rc.RTAG_ID = nRtagId
-
 
8052
						   AND rc.PV_ID = pv.PV_ID
-
 
8053
						);			
-
 
8054
	
-
 
8055
	
-
 
8056
	
-
 
8057
	
-
 
8058
	
-
 
8059
	-- Remove matching packages from release
-
 
8060
	DELETE FROM RELEASE_CONTENT rc
-
 
8061
	 WHERE rc.RTAG_ID = nRtagId
-
 
8062
	   AND rc.PV_ID IN (
-
 
8063
						SELECT pv.PV_ID
-
 
8064
						  FROM (
-
 
8065
								
-
 
8066
								/* Get referenced packages */
-
 
8067
								SELECT pv.PKG_ID,
-
 
8068
								       pv.V_EXT
-
 
8069
								  FROM RELEASE_CONTENT rc,
-
 
8070
								  	   PACKAGE_VERSIONS pv
-
 
8071
								 WHERE rc.RTAG_ID = nRefRtagId
-
 
8072
								   AND rc.PV_ID = pv.PV_ID    
-
 
8073
								
-
 
8074
								) cr,
-
 
8075
								RELEASE_CONTENT rc,
-
 
8076
								PACKAGE_VERSIONS pv
-
 
8077
						 WHERE pv.PKG_ID = cr.PKG_ID
-
 
8078
						   AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
8079
						   AND rc.RTAG_ID = nRtagId
-
 
8080
						   AND rc.PV_ID = pv.PV_ID
-
 
8081
						);	
-
 
8082
	
-
 
8083
	
-
 
8084
	
-
 
8085
	
-
 
8086
		
-
 
8087
	-- Remove Reference release 
-
 
8088
	DELETE 
-
 
8089
	  FROM RELEASE_LINKS rl
-
 
8090
	 WHERE rl.RTAG_ID = nRtagId
-
 
8091
	   AND rl.REF_RTAG_ID = nRefRtagId;
-
 
8092
	
-
 
8093
 
-
 
8094
	-- Refresh Package states
-
 
8095
	TOUCH_RELEASE ( nRtagId );
-
 
8096
	
-
 
8097
	
-
 
8098
END;
-
 
8099
/*-------------------------------------------------------------------------------------------------------*/
-
 
8100
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
-
 
8101
 
-
 
8102
	cReleaseMode CHAR(1);
-
 
8103
	cPvMode CHAR(1);
-
 
8104
		
-
 
8105
BEGIN
-
 
8106
 
-
 
8107
	-- Get Release Mode
-
 
8108
	SELECT rt.OFFICIAL INTO cReleaseMode
-
 
8109
	  FROM RELEASE_TAGS rt
-
 
8110
	 WHERE rt.RTAG_ID = RtagId;
-
 
8111
	 
-
 
8112
	 
-
 
8113
	-- Get Package Mode
-
 
8114
	SELECT pv.DLOCKED INTO cPvMode
-
 
8115
	  FROM PACKAGE_VERSIONS pv
-
 
8116
	 WHERE pv.PV_ID = PvId;	 
-
 
8117
	 
-
 
8118
	-- Only check if package is locked 
-
 
8119
	IF (cPvMode = 'Y') THEN
-
 
8120
	 
-
 
8121
		IF (cReleaseMode != 'N') AND (Permission != 'Y')
-
 
8122
		THEN
-
 
8123
			RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
-
 
8124
			
-
 
8125
		END IF;
-
 
8126
		
-
 
8127
	END IF;	
-
 
8128
	
-
 
8129
	
-
 
8130
END;
-
 
8131
/*-------------------------------------------------------------------------------------------------------*/
-
 
8132
END PK_RELEASE_TEST;
-
 
8133
/
-
 
8134
--------------------------------------------------------
-
 
8135
--  DDL for Package Body PK_APP_UTILS
-
 
8136
--------------------------------------------------------
-
 
8137
 
-
 
8138
  CREATE OR REPLACE PACKAGE BODY "PK_APP_UTILS" IS
-
 
8139
 
-
 
8140
/*
-
 
8141
------------------------------
-
 
8142
||  Last Modified:  S.Vukovic
-
 
8143
||  Modified Date:  26/Apr/2005
-
 
8144
||  Body Version:   1.0
-
 
8145
------------------------------
-
 
8146
*/
-
 
8147
 
-
 
8148
 
-
 
8149
/*-------------------------------------------------------------------------------------------------------*/
-
 
8150
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
-
 
8151
 
-
 
8152
 
-
 
8153
BEGIN
-
 
8154
 
-
 
8155
 
-
 
8156
	IF (NOT RtagId IS NULL) THEN
-
 
8157
		-- Case with RTAG_ID present
-
 
8158
		OPEN records FOR
-
 
8159
		SELECT rt.PROJ_ID,
-
 
8160
			   rt.RTAG_ID AS RTAG_ID
-
 
8161
		  FROM RELEASE_TAGS rt
-
 
8162
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
-
 
8163
 
-
 
8164
	ELSIF (NOT ProjId IS NULL) THEN
-
 
8165
		-- Case with PROJ_ID present
-
 
8166
		OPEN records FOR
-
 
8167
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
-
 
8168
			   -1 AS RTAG_ID
-
 
8169
		  FROM DUAL;
-
 
8170
 
-
 
8171
	ELSE
-
 
8172
		-- Case with none present
-
 
8173
		OPEN records FOR
-
 
8174
		SELECT -1 AS PROJ_ID,
-
 
8175
			   -1 AS RTAG_ID
-
 
8176
		  FROM DUAL;
-
 
8177
 
-
 
8178
	END IF;
-
 
8179
 
-
 
8180
 
-
 
8181
 
-
 
8182
 
-
 
8183
   	--RETURN records;
-
 
8184
 
-
 
8185
END;
-
 
8186
/*-------------------------------------------------------------------------------------------------------*/
-
 
8187
END PK_APP_UTILS;
-
 
8188
/
-
 
8189
--------------------------------------------------------
-
 
8190
--  DDL for Package Body PK_RELEASE
-
 
8191
--------------------------------------------------------
-
 
8192
 
-
 
8193
  CREATE OR REPLACE PACKAGE BODY "PK_RELEASE" IS
-
 
8194
 
-
 
8195
/*-------------------------------------------------------------------------------------------------------*/
-
 
8196
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
-
 
8197
 
-
 
8198
RtagId NUMBER;
-
 
8199
ParentRtagId NUMBER;
-
 
8200
RecCount NUMBER := 0;
-
 
8201
VtreeId NUMBER;
-
 
8202
 
-
 
8203
BEGIN
-
 
8204
   /*--------------- Business Rules Here -------------------*/
-
 
8205
   -- Check for missing parameters
-
 
8206
   IF (sReleaseName IS NULL) OR (nUserId IS NULL)
-
 
8207
   THEN
-
 
8208
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
-
 
8209
 
-
 
8210
   END IF;
-
 
8211
 
-
 
8212
 
-
 
8213
   -- Check for duplicate Release Names
-
 
8214
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
-
 
8215
     FROM RELEASE_TAGS rt
-
 
8216
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
-
 
8217
      AND rt.PROJ_ID = nProjId;
-
 
8218
 
-
 
8219
   IF (RecCount > 0) THEN
-
 
8220
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
-
 
8221
   END IF;
-
 
8222
   /*-------------------------------------------------------*/
-
 
8223
 
-
 
8224
 
-
 
8225
   -- Get rtag_id
-
 
8226
   SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
-
 
8227
 
-
 
8228
   SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
-
 
8229
 
-
 
8230
 
-
 
8231
 
-
 
8232
   -- Get Parent RtagId
-
 
8233
   ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
-
 
8234
 
-
 
8235
   -- If the parent RTAG is NOT in this project then we cannot use it.
-
 
8236
   -- We must re-assign the parent to be the new release's RTAG_ID instead
-
 
8237
   -- else it will not show up in the projects release tree (DEVI-55480)
-
 
8238
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
-
 
8239
     FROM RELEASE_TAGS rt
-
 
8240
    WHERE rt.RTAG_ID = ParentRtagId
-
 
8241
      AND rt.PROJ_ID = nProjId;
-
 
8242
 
-
 
8243
   IF (RecCount = 0) THEN
-
 
8244
     ParentRtagId := RtagId;
-
 
8245
   END IF;
-
 
8246
 
-
 
8247
   -- Create new release
-
 
8248
   INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID,
-
 
8249
                        OFFICIAL, REBUILD_ENV, REBUILD_STAMP,
-
 
8250
                        PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
-
 
8251
   VALUES ( RtagId,
-
 
8252
          sReleaseName,
-
 
8253
          sReleaseComments,
-
 
8254
          ORA_SYSDATE,
-
 
8255
          nUserId,
-
 
8256
          'N',
-
 
8257
          'N',
-
 
8258
          0,
-
 
8259
          ParentRtagId,
-
 
8260
          nProjId,
-
 
8261
          VtreeId );
-
 
8262
 
-
 
8263
   -- If a source release is provided, clone its config spec branch information into the new release (DEVI-56650)
-
 
8264
   IF (NOT nSourceRtagId IS NULL)
-
 
8265
   THEN
-
 
8266
      UPDATE RELEASE_TAGS rtd
-
 
8267
      SET rtd.config_spec_branch = (SELECT rts.CONFIG_SPEC_BRANCH FROM RELEASE_TAGS rts WHERE rts.RTAG_ID = nSourceRtagId)
-
 
8268
      WHERE rtd.RTAG_ID = RtagId;
-
 
8269
   END IF;
-
 
8270
 
-
 
8271
   -- Update display Order
-
 
8272
   UPDATE_DISPLAY_ORDER ( nProjId );
-
 
8273
 
-
 
8274
   /* Log Project Action */
-
 
8275
   Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
-
 
8276
 
-
 
8277
 
-
 
8278
   -- Import Release Contents
-
 
8279
   IF (NOT nSourceRtagId IS NULL) THEN
-
 
8280
      Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
-
 
8281
   END IF;
-
 
8282
 
-
 
8283
END;
-
 
8284
/*-------------------------------------------------------------------------------------------------------*/
-
 
8285
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
-
 
8286
 
-
 
8287
 
-
 
8288
BEGIN
-
 
8289
 
-
 
8290
 
-
 
8291
   /*--------------- Business Rules Here -------------------*/
-
 
8292
   /*-------------------------------------------------------*/
-
 
8293
 
-
 
8294
   UPDATE RELEASE_TAGS urt SET
-
 
8295
   urt.DISPLAY_ORDER = (
-
 
8296
                  SELECT qry.REC_NUM
-
 
8297
                    FROM (
-
 
8298
                        SELECT rel.*, ROWNUM AS REC_NUM
-
 
8299
                          FROM (
-
 
8300
 
-
 
8301
                                SELECT rt.RTAG_ID,
-
 
8302
                                    rt.DISPLAY_ORDER,
-
 
8303
                                     DECODE( rt.PARENT_RTAG_ID,
-
 
8304
                                             rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
-
 
8305
                                FROM RELEASE_TAGS rt
-
 
8306
                               WHERE rt.PROJ_ID = nProjId
-
 
8307
 
-
 
8308
                                ) rel
-
 
8309
                        START WITH rel.PARENT_RTAG_ID = 0
-
 
8310
                        CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID
-
 
8311
                        ORDER SIBLINGS BY rel.DISPLAY_ORDER
-
 
8312
                        ) qry
-
 
8313
                     WHERE qry.RTAG_ID = urt.RTAG_ID
-
 
8314
                  )
-
 
8315
   WHERE urt.PROJ_ID = nProjId;
-
 
8316
 
-
 
8317
END;
-
 
8318
/*-------------------------------------------------------------------------------------------------------*/
-
 
8319
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
-
 
8320
 
-
 
8321
   nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
-
 
8322
   SeqNum NUMBER;
-
 
8323
 
-
 
8324
BEGIN
-
 
8325
 
-
 
8326
 
-
 
8327
   /*--------------- Business Rules Here -------------------*/
-
 
8328
   /*-------------------------------------------------------*/
-
 
8329
 
-
 
8330
   nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
-
 
8331
 
-
 
8332
   -- Set start sequence number
-
 
8333
   SeqNum := 1;
-
 
8334
 
-
 
8335
   FOR i IN 1..nIdCollector.COUNT
-
 
8336
   LOOP
-
 
8337
 
-
 
8338
      -- Update new display order
-
 
8339
      UPDATE RELEASE_TAGS rt SET
-
 
8340
         rt.DISPLAY_ORDER = SeqNum
-
 
8341
       WHERE rt.PROJ_ID = nProjId
-
 
8342
         AND rt.RTAG_ID = nIdCollector(i);
-
 
8343
 
-
 
8344
      SeqNum := SeqNum + 1;
-
 
8345
 
-
 
8346
   END LOOP;
-
 
8347
 
-
 
8348
END;
-
 
8349
/*-------------------------------------------------------------------------------------------------------*/
-
 
8350
PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, sOwnerEmail IN VARCHAR2, nUserId IN NUMBER, cState IN VARCHAR ) IS
-
 
8351
 
-
 
8352
RecCount NUMBER := 0;
-
 
8353
ProjId NUMBER;
-
 
8354
 
-
 
8355
BEGIN
-
 
8356
 
-
 
8357
 
-
 
8358
   /*--------------- Business Rules Here -------------------*/
-
 
8359
   -- Check for missing parameters
-
 
8360
   IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
-
 
8361
   THEN
-
 
8362
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
-
 
8363
 
-
 
8364
   END IF;
-
 
8365
 
-
 
8366
 
-
 
8367
   -- Check for duplicate Release Names
-
 
8368
   SELECT rt.PROJ_ID INTO ProjId
-
 
8369
     FROM RELEASE_TAGS rt
-
 
8370
    WHERE rt.RTAG_ID = nRtagId;
-
 
8371
 
-
 
8372
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
-
 
8373
     FROM RELEASE_TAGS rt
-
 
8374
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
-
 
8375
      AND rt.RTAG_ID != nRtagId
-
 
8376
      AND rt.PROJ_ID = ProjId;
-
 
8377
 
-
 
8378
 
-
 
8379
   IF (RecCount > 0) THEN
-
 
8380
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
-
 
8381
   END IF;
-
 
8382
   /*-------------------------------------------------------*/
-
 
8383
 
-
 
8384
 
-
 
8385
 
-
 
8386
   -- Update release details
-
 
8387
   UPDATE RELEASE_TAGS rt SET
-
 
8388
   rt.RTAG_NAME = sReleaseName,
-
 
8389
   rt.DESCRIPTION = sReleaseComments,
-
 
8390
   rt.PARENT_RTAG_ID = nParentRtagId,
-
 
8391
   rt.ASSOC_MASS_REF = nMASSRtagId,
-
 
8392
   rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
-
 
8393
   rt.OWNER_EMAIL = sOwnerEmail,
-
 
8394
   rt.PRODUCT_STATE_USED = cState
-
 
8395
   WHERE rt.RTAG_ID = nRtagId;
-
 
8396
 
-
 
8397
   -- Update display Order
-
 
8398
   UPDATE_DISPLAY_ORDER ( ProjId );
-
 
8399
 
-
 
8400
   /* Log Project Action */
-
 
8401
   Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
-
 
8402
 
-
 
8403
 
-
 
8404
 
-
 
8405
 
-
 
8406
END;
-
 
8407
/*-------------------------------------------------------------------------------------------------------*/
-
 
8408
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
-
 
8409
 
-
 
8410
   RecCount NUMBER := 0;
-
 
8411
   sReleaseId VARCHAR2(4000);
-
 
8412
   ProjId NUMBER;
-
 
8413
 
-
 
8414
BEGIN
-
 
8415
   /*--------------- Business Rules Here -------------------*/
-
 
8416
   IF (nRtagId IS NULL)
-
 
8417
   THEN
-
 
8418
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
-
 
8419
   END IF;
-
 
8420
 
-
 
8421
 
-
 
8422
 
-
 
8423
   -- Check for any kids
-
 
8424
   SELECT COUNT( rt.RTAG_ID ) INTO RecCount
-
 
8425
     FROM RELEASE_TAGS rt
-
 
8426
    WHERE rt.PARENT_RTAG_ID = nRtagId
-
 
8427
      AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
-
 
8428
 
-
 
8429
   IF (RecCount > 0) THEN
-
 
8430
      RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
-
 
8431
   END IF;
-
 
8432
   /*-------------------------------------------------------*/
-
 
8433
 
-
 
8434
   -- Clear the release contents
-
 
8435
   Clean_Release_Contents ( nRtagId, nUserId );
-
 
8436
 
-
 
8437
   /* Log Project Action */
-
 
8438
   SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
-
 
8439
     FROM RELEASE_TAGS rt
-
 
8440
    WHERE rt.RTAG_ID = nRtagId;
-
 
8441
 
-
 
8442
   Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
-
 
8443
 
-
 
8444
 
-
 
8445
   -- Remove Release
-
 
8446
   DELETE
-
 
8447
     FROM RELEASE_TAGS rt
-
 
8448
    WHERE rt.RTAG_ID = nRtagId;
-
 
8449
 
-
 
8450
 
-
 
8451
 
-
 
8452
END;
-
 
8453
/*-------------------------------------------------------------------------------------------------------*/
-
 
8454
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
-
 
8455
 
-
 
8456
   sSourceLocation VARCHAR2(4000);
-
 
8457
   sTargetLocation VARCHAR2(4000);
-
 
8458
   ProjId NUMBER;
-
 
8459
   cReleaseMode CHAR(1);
-
 
8460
   RconId NUMBER;
-
 
8461
 
-
 
8462
   -- this cursor gets the source release daemon configurations, ensuring that the
-
 
8463
   -- first record will be the master daemon, and subsequent records will be the slaves.
-
 
8464
   CURSOR curSrcReleaseConfigs IS
-
 
8465
    SELECT daemon_hostname, gbe_id, gbe_buildfilter
-
 
8466
     FROM RELEASE_CONFIG rc
-
 
8467
    WHERE rc.RTAG_ID = nSourceRtagId
-
 
8468
    ORDER BY rc.daemon_mode;
-
 
8469
    recSrcReleaseConfigs curSrcReleaseConfigs%ROWTYPE;
-
 
8470
 
-
 
8471
    -- this cursor looks for target release daemons
-
 
8472
   CURSOR curTgtReleaseConfigs IS
-
 
8473
    SELECT rcon_id
-
 
8474
     FROM RELEASE_CONFIG rc
-
 
8475
    WHERE rc.RTAG_ID = nTargetRtagId;
-
 
8476
    recTgtReleaseConfigs curTgtReleaseConfigs%ROWTYPE;
-
 
8477
 
-
 
8478
    -- this cursor looks for target release daemon run level entries
-
 
8479
   CURSOR curTgtReleaseConfigRunLevel IS
-
 
8480
    SELECT current_run_level
-
 
8481
     FROM RUN_LEVEL rl
-
 
8482
    WHERE rl.RCON_ID = recTgtReleaseConfigs.rcon_id;
-
 
8483
    recTgtReleaseConfigRunLevel curTgtReleaseConfigRunLevel%ROWTYPE;
-
 
8484
 
-
 
8485
BEGIN
-
 
8486
   /*--------------- Business Rules Here -------------------*/
-
 
8487
   IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
-
 
8488
   THEN
-
 
8489
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
-
 
8490
   END IF;
-
 
8491
 
-
 
8492
   IF (nSourceRtagId = nTargetRtagId) THEN
-
 
8493
      RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
-
 
8494
   END IF;
-
 
8495
 
-
 
8496
 
-
 
8497
   -- Check if Target release is in OPEN mode
-
 
8498
   SELECT rt.OFFICIAL  INTO  cReleaseMode
-
 
8499
     FROM RELEASE_TAGS rt
-
 
8500
    WHERE rt.RTAG_ID = nTargetRtagId;
-
 
8501
 
-
 
8502
   IF (cReleaseMode != 'N') THEN
-
 
8503
      RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
-
 
8504
   END IF;
-
 
8505
 
-
 
8506
   -- check that the target release's daemons are all paused before we allow an import operation
-
 
8507
   OPEN curTgtReleaseConfigs;
-
 
8508
   FETCH curtgtReleaseConfigs INTO recTgtReleaseConfigs;
-
 
8509
 
-
 
8510
   WHILE curTgtReleaseConfigs%FOUND
-
 
8511
   LOOP
-
 
8512
      OPEN curTgtReleaseConfigRunLevel;
-
 
8513
      FETCH curTgtReleaseConfigRunLevel INTO recTgtReleaseConfigRunLevel;
-
 
8514
      IF curTgtReleaseConfigRunLevel%FOUND THEN
-
 
8515
         IF (recTgtReleaseConfigRunLevel.current_run_level IS NULL) OR
-
 
8516
            (recTgtReleaseConfigRunLevel.current_run_level <> 2) THEN
-
 
8517
            RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
-
 
8518
         END IF;
-
 
8519
      ELSE
-
 
8520
         -- we don't know what the daemon run level is so err on the side of caution
-
 
8521
         RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
-
 
8522
      END IF;
-
 
8523
      CLOSE curTgtReleaseConfigRunLevel;
-
 
8524
 
-
 
8525
      FETCH curTgtReleaseConfigs INTO recTgtReleaseConfigs;
-
 
8526
   END LOOP;
-
 
8527
 
-
 
8528
   CLOSE curTgtReleaseConfigs;
-
 
8529
 
-
 
8530
 
-
 
8531
   /*-------------------------------------------------------*/
-
 
8532
 
-
 
8533
   -- Clean target contents
-
 
8534
   Clean_Release_Contents ( nTargetRtagId, nUserId );
-
 
8535
 
-
 
8536
 
-
 
8537
   -- Import Released Area Contents
-
 
8538
   INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE )
-
 
8539
   SELECT nTargetRtagId AS RTAG_ID,
-
 
8540
         rc.PV_ID,
-
 
8541
         rc.BASE_VIEW_ID,
-
 
8542
         rc.INSERT_STAMP,
-
 
8543
         rc.INSERTOR_ID,
-
 
8544
         rc.PKG_STATE,
-
 
8545
         rc.PKG_ID,
-
 
8546
         rc.DEPRECATED_STATE
-
 
8547
     FROM RELEASE_CONTENT rc
-
 
8548
    WHERE rc.RTAG_ID = nSourceRtagId;
-
 
8549
 
-
 
8550
 
-
 
8551
   -- Import any Pegged Version settings from the source release
-
 
8552
   INSERT INTO PEGGED_VERSIONS ( RTAG_ID, PV_ID )
-
 
8553
   SELECT nTargetRtagId AS RTAG_ID,
-
 
8554
          pegv.PV_ID
-
 
8555
     FROM PEGGED_VERSIONS pegv
-
 
8556
    WHERE pegv.RTAG_ID = nSourceRtagId;
-
 
8557
 
-
 
8558
   -- Import any Advisory Ripple settings from the source release
-
 
8559
   INSERT INTO ADVISORY_RIPPLE ( RTAG_ID, PV_ID )
-
 
8560
   SELECT nTargetRtagId AS RTAG_ID,
-
 
8561
          avr.PV_ID
-
 
8562
     FROM ADVISORY_RIPPLE avr
-
 
8563
    WHERE avr.RTAG_ID = nSourceRtagId;
-
 
8564
 
-
 
8565
 
-
 
8566
   --Import Release Configuration Information
-
 
8567
   OPEN curSrcReleaseConfigs;
-
 
8568
   FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
-
 
8569
 
-
 
8570
   WHILE curSrcReleaseConfigs%FOUND
-
 
8571
   LOOP
-
 
8572
      -- add a daemon to the target release
-
 
8573
      PK_BUILDAPI.add_daemon( recSrcReleaseConfigs.daemon_hostname, nTargetRtagId, recSrcReleaseConfigs.gbe_id, recSrcReleaseConfigs.gbe_buildfilter );
-
 
8574
 
-
 
8575
      FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
-
 
8576
   END LOOP;
-
 
8577
 
-
 
8578
   CLOSE curSrcReleaseConfigs;
-
 
8579
 
-
 
8580
 
-
 
8581
 
-
 
8582
   -- Import Ignore Warning states
-
 
8583
   INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
-
 
8584
   SELECT nTargetRtagId AS RTAG_ID,
-
 
8585
          igw.PV_ID,
-
 
8586
          igw.DPV_ID
-
 
8587
     FROM IGNORE_WARNINGS igw
-
 
8588
    WHERE igw.rtag_id = nSourceRtagId;
-
 
8589
 
-
 
8590
 
-
 
8591
   /* Log Project Action */
-
 
8592
   -- Get Source Location
-
 
8593
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
-
 
8594
     FROM RELEASE_TAGS rt,
-
 
8595
           PROJECTS pr
-
 
8596
    WHERE rt.PROJ_ID = pr.PROJ_ID
-
 
8597
      AND rt.RTAG_ID = nSourceRtagId;
-
 
8598
 
-
 
8599
   -- Get Target Location
-
 
8600
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
-
 
8601
     FROM RELEASE_TAGS rt,
-
 
8602
           PROJECTS pr
-
 
8603
    WHERE rt.PROJ_ID = pr.PROJ_ID
-
 
8604
      AND rt.RTAG_ID = nTargetRtagId;
-
 
8605
 
-
 
8606
   -- Get project id
-
 
8607
   SELECT rt.PROJ_ID  INTO  ProjId
-
 
8608
     FROM RELEASE_TAGS rt
-
 
8609
    WHERE rt.RTAG_ID = nTargetRtagId;
-
 
8610
 
-
 
8611
   Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );
-
 
8612
END;
-
 
8613
 
-
 
8614
 
-
 
8615
 
-
 
8616
/*-------------------------------------------------------------------------------------------------------*/
-
 
8617
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
-
 
8618
 
-
 
8619
   RecCount NUMBER;
-
 
8620
        rconIdList VARCHAR2(4000);
-
 
8621
 
-
 
8622
BEGIN
-
 
8623
   /*--------------- Business Rules Here -------------------*/
-
 
8624
   IF (nRtagId IS NULL)
-
 
8625
   THEN
-
 
8626
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
-
 
8627
   END IF;
-
 
8628
 
-
 
8629
 
-
 
8630
   -- Check if other release references this release
-
 
8631
   SELECT COUNT( rl.RTAG_ID ) INTO RecCount
-
 
8632
     FROM RELEASE_LINKS rl
-
 
8633
    WHERE rl.REF_RTAG_ID = nRtagId;
-
 
8634
 
-
 
8635
   IF (RecCount > 0) THEN
-
 
8636
      RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
-
 
8637
   END IF;
-
 
8638
   /*-------------------------------------------------------*/
-
 
8639
 
-
 
8640
   -- Delete Release links
-
 
8641
   DELETE
-
 
8642
     FROM RELEASE_LINKS rl
-
 
8643
    WHERE rl.RTAG_ID = nRtagId;
-
 
8644
 
-
 
8645
   -- Delete ignore warning
-
 
8646
   DELETE
-
 
8647
     FROM IGNORE_WARNINGS iw
-
 
8648
    WHERE iw.RTAG_ID = nRtagId;
-
 
8649
 
-
 
8650
 
-
 
8651
   -- Delete Build Order cached calculations
-
 
8652
   DELETE
-
 
8653
     FROM BUILD_ORDER bo
-
 
8654
    WHERE bo.RTAG_ID = nRtagId;
-
 
8655
 
-
 
8656
 
-
 
8657
   -- Delete Notification History
-
 
8658
   DELETE
-
 
8659
     FROM NOTIFICATION_HISTORY nh
-
 
8660
    WHERE nh.RTAG_ID = nRtagId;
-
 
8661
 
-
 
8662
 
-
 
8663
   -- Delete Released Area Contents
-
 
8664
   DELETE
-
 
8665
     FROM RELEASE_CONTENT rc
-
 
8666
    WHERE rc.RTAG_ID = nRtagId;
-
 
8667
 
-
 
8668
 
-
 
8669
   -- Delete Work In Progress Area Contents
-
 
8670
   DELETE
-
 
8671
     FROM WORK_IN_PROGRESS wip
-
 
8672
    WHERE wip.RTAG_ID = nRtagId;
-
 
8673
 
-
 
8674
 
-
 
8675
   -- Delete Pending Area Contents
-
 
8676
   DELETE
-
 
8677
     FROM PLANNED pl
-
 
8678
    WHERE pl.RTAG_ID = nRtagId;
-
 
8679
 
-
 
8680
   -- Delete Deprecated Packages
-
 
8681
   DELETE
-
 
8682
     FROM DEPRECATED_PACKAGES dp
-
 
8683
    WHERE dp.RTAG_ID = nRtagId;
-
 
8684
 
-
 
8685
   -- Delete Project Action Log
-
 
8686
   DELETE
-
 
8687
     FROM PROJECT_ACTION_LOG pal
-
 
8688
    WHERE pal.RTAG_ID = nRtagId;
-
 
8689
 
-
 
8690
   -- Delete Do Not Ripple Contents
-
 
8691
   DELETE
-
 
8692
     FROM DO_NOT_RIPPLE dnr
-
 
8693
    WHERE dnr.RTAG_ID = nRtagId;
-
 
8694
 
-
 
8695
   -- Delete Dash Board Contents
-
 
8696
   DELETE
-
 
8697
     FROM DASH_BOARD db
-
 
8698
    WHERE db.RTAG_ID = nRtagId;
-
 
8699
 
-
 
8700
   -- Delete Advisory Ripple Contents
-
 
8701
   DELETE
-
 
8702
     FROM ADVISORY_RIPPLE adr
-
 
8703
    WHERE adr.RTAG_ID = nRtagId;
-
 
8704
 
-
 
8705
   -- Delete Archive Action Log
-
 
8706
   DELETE
-
 
8707
     FROM ARCHIVE_ACTION_LOG aal
-
 
8708
    WHERE aal.RTAG_ID = nRtagId;
-
 
8709
 
-
 
8710
   -- Delete Daemons For This Release
-
 
8711
   FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
-
 
8712
   LOOP
-
 
8713
      rconIdList := rconIdList || rcon.RCON_ID || ',';
-
 
8714
   END LOOP;
-
 
8715
 
-
 
8716
   pk_buildapi.DELETE_DAEMON(rconIdList);
-
 
8717
 
-
 
8718
   -- Delete Release Metrics Contents
-
 
8719
   DELETE
-
 
8720
     FROM RELEASE_METRICS rm
-
 
8721
    WHERE rm.RTAG_ID = nRtagId;
-
 
8722
 
-
 
8723
   -- Delete Release Configuration Contents
-
 
8724
   DELETE
-
 
8725
     FROM RELEASE_CONFIG rc
-
 
8726
    WHERE rc.RTAG_ID = nRtagId;
-
 
8727
 
-
 
8728
   -- Delete Pegged Version Contents
-
 
8729
   DELETE
-
 
8730
     FROM PEGGED_VERSIONS pegv
-
 
8731
    WHERE pegv.RTAG_ID = nRtagId;
-
 
8732
 
-
 
8733
END;
-
 
8734
/*-------------------------------------------------------------------------------------------------------*/
-
 
8735
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
-
 
8736
 
-
 
8737
   nSourceParentRtagId NUMBER;
-
 
8738
 
-
 
8739
BEGIN
-
 
8740
   /*--------------- Business Rules Here -------------------*/
-
 
8741
   IF (nRtagId IS NULL) OR (cIsBranch IS NULL)
-
 
8742
   THEN
-
 
8743
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
-
 
8744
   END IF;
-
 
8745
   /*-------------------------------------------------------*/
-
 
8746
 
-
 
8747
 
-
 
8748
   IF ( nSourceRtagId IS NULL ) THEN
-
 
8749
      -- Create new on main branch
-
 
8750
      RETURN nRtagId;
-
 
8751
 
-
 
8752
   ELSE
-
 
8753
      -- Create from source rtag_id
-
 
8754
 
-
 
8755
      -- Find parent of Source RtagId
-
 
8756
      SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
-
 
8757
        FROM RELEASE_TAGS rt
-
 
8758
       WHERE rt.RTAG_ID = nSourceRtagId;
-
 
8759
 
-
 
8760
      IF (UPPER(cIsBranch) = 'Y') THEN
-
 
8761
         RETURN nSourceRtagId;
-
 
8762
      ELSE
-
 
8763
         IF (nSourceRtagId = nSourceParentRtagId) THEN
-
 
8764
            RETURN nRtagId;
-
 
8765
         ELSE
-
 
8766
            RETURN nSourceParentRtagId;
-
 
8767
         END IF;
-
 
8768
      END IF;
-
 
8769
 
-
 
8770
 
-
 
8771
   END IF;
-
 
8772
 
-
 
8773
 
-
 
8774
END;
-
 
8775
/*-------------------------------------------------------------------------------------------------------*/
-
 
8776
 
-
 
8777
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
-
 
8778
--                       sNextVersion OUT VARCHAR2,
-
 
8779
--                       nNextLifeCycle OUT NUMBER,
-
 
8780
--                       nParentRtagId OUT NUMBER,
-
 
8781
--                       nProjId IN NUMBER ) IS
-
 
8782
--
-
 
8783
-- SourceBranchCount NUMBER;
-
 
8784
-- ProjRootVersion VARCHAR2(4000);
-
 
8785
-- LastLifeCycle NUMBER;
-
 
8786
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
-
 
8787
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
-
 
8788
--
-
 
8789
-- SourceProjId NUMBER;
-
 
8790
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
-
 
8791
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
-
 
8792
--
-
 
8793
-- BEGIN
-
 
8794
--    /*--------------- Business Rules Here -------------------*/
-
 
8795
--    /*-------------------------------------------------------*/
-
 
8796
--
-
 
8797
--
-
 
8798
--    BEGIN
-
 
8799
--       -- Get Project root version
-
 
8800
--       SELECT rt.RTAG_VERSION INTO ProjRootVersion
-
 
8801
--         FROM RELEASE_TAGS rt
-
 
8802
--        WHERE rt.PROJ_ID = nProjId
-
 
8803
--          AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
-
 
8804
--
-
 
8805
--       EXCEPTION
-
 
8806
--       WHEN NO_DATA_FOUND THEN
-
 
8807
--       ProjRootVersion := ROOT_VERSION_NOT_FOUND;
-
 
8808
--    END;
-
 
8809
--
-
 
8810
--
-
 
8811
--
-
 
8812
--
-
 
8813
--    BEGIN
-
 
8814
--       -- Get info for source rtagid
-
 
8815
--       SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
-
 
8816
--         FROM RELEASE_TAGS rt
-
 
8817
--        WHERE rt.RTAG_ID = nSourceRtagId;
-
 
8818
--
-
 
8819
--       EXCEPTION
-
 
8820
--       WHEN NO_DATA_FOUND THEN
-
 
8821
--       SourceProjId := NULL;
-
 
8822
--       SourceVersion := NULL;
-
 
8823
--       SourceLifeCycle := NULL;
-
 
8824
--    END;
-
 
8825
--
-
 
8826
--
-
 
8827
--    IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
-
 
8828
--
-
 
8829
--       /* Blank Release Required  OR  Release imported from other project */
-
 
8830
--
-
 
8831
--       IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
-
 
8832
--          /* No Releases found in the project, hence calculate next version available.  */
-
 
8833
--
-
 
8834
--          -- Set parent rtag
-
 
8835
--          nParentRtagId := SET_PARENT_AS_YOURSELF;
-
 
8836
--
-
 
8837
--
-
 
8838
--          BEGIN
-
 
8839
--             -- Get Next Available Global Root Version
-
 
8840
--             SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
-
 
8841
--               FROM RELEASE_TAGS rt
-
 
8842
--              WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
-
 
8843
--
-
 
8844
--             -- Set Next Rtag Version
-
 
8845
--             sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
-
 
8846
--
-
 
8847
--             -- Restart Lifecycle
-
 
8848
--             nNextLifeCycle := 0;
-
 
8849
--
-
 
8850
--
-
 
8851
--             EXCEPTION
-
 
8852
--             WHEN NO_DATA_FOUND THEN
-
 
8853
--             -- Release Manager has no releases, hence start from 1
-
 
8854
--             sNextVersion := '1';
-
 
8855
--             nNextLifeCycle := 0;
-
 
8856
--
-
 
8857
--          END;
-
 
8858
--
-
 
8859
--
-
 
8860
--
-
 
8861
--       ELSE
-
 
8862
--          /* Releases found in this project. */
-
 
8863
--
-
 
8864
--          SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
-
 
8865
--            FROM (
-
 
8866
--                SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
-
 
8867
--                  FROM RELEASE_TAGS rt
-
 
8868
--                 WHERE rt.PROJ_ID = nProjId
-
 
8869
--                   AND rt.RTAG_VERSION = ProjRootVersion
-
 
8870
--                 ORDER BY rt.RTAG_LIFE_CYCLE DESC
-
 
8871
--                  ) qry
-
 
8872
--           WHERE ROWNUM = 1;
-
 
8873
--
-
 
8874
--
-
 
8875
--          -- Set same Rtag Version
-
 
8876
--          sNextVersion := ProjRootVersion;
-
 
8877
--
-
 
8878
--          -- Increase Lifecycle
-
 
8879
--          nNextLifeCycle := LastLifeCycle + 1;
-
 
8880
--
-
 
8881
--       END IF;
-
 
8882
--
-
 
8883
--
-
 
8884
--
-
 
8885
--    ELSE
-
 
8886
--       /* Create Release From other release within this project */
-
 
8887
--
-
 
8888
--       -- Set parent id
-
 
8889
--       nParentRtagId := nSourceRtagId;
-
 
8890
--
-
 
8891
--
-
 
8892
--       -- Get number of source branches
-
 
8893
--       SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
-
 
8894
--         FROM RELEASE_TAGS rt
-
 
8895
--        WHERE rt.PROJ_ID = nProjId
-
 
8896
--          AND rt.PARENT_RTAG_ID = nSourceRtagId;
-
 
8897
--
-
 
8898
--
-
 
8899
--       IF SourceBranchCount = 0 THEN
-
 
8900
--          /* Release is Head (i.e. Tip on its branch ) */
-
 
8901
--
-
 
8902
--          -- Set Next Rtag Version
-
 
8903
--          sNextVersion := SourceVersion;
-
 
8904
--
-
 
8905
--          -- Increase Lifecycle
-
 
8906
--          nNextLifeCycle := SourceLifeCycle + 1;
-
 
8907
--
-
 
8908
--
-
 
8909
--       ELSIF SourceBranchCount = 1 THEN
-
 
8910
--          /* Release IS NOT Head, but can be branched */
-
 
8911
--
-
 
8912
--          -- Set Next Rtag Version
-
 
8913
--          sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
-
 
8914
--
-
 
8915
--          -- Reset Lifecycle to 1
-
 
8916
--          nNextLifeCycle := 1;
-
 
8917
--
-
 
8918
--
-
 
8919
--       ELSE
-
 
8920
--          -- Limit of two branches is reached
-
 
8921
--          RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');
-
 
8922
--
-
 
8923
--       END IF;
-
 
8924
--
-
 
8925
--
-
 
8926
--
-
 
8927
--
-
 
8928
--
-
 
8929
--
-
 
8930
--    END IF;
-
 
8931
--
-
 
8932
--
-
 
8933
-- END;
-
 
8934
 
-
 
8935
/*-------------------------------------------------------------------------------------------------------*/
-
 
8936
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
-
 
8937
 
-
 
8938
   IsBaseView CHAR(1);
-
 
8939
 
-
 
8940
BEGIN
-
 
8941
 
-
 
8942
   -- Check if the view is BASE VIEW
-
 
8943
   SELECT vi.BASE_VIEW INTO IsBaseView
-
 
8944
     FROM VIEWS vi
-
 
8945
    WHERE vi.VIEW_ID = ViewId;
-
 
8946
 
-
 
8947
   IF (IsBaseView = 'Y') THEN
-
 
8948
      -- Get Base view content
-
 
8949
      OPEN RecordSet FOR
-
 
8950
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
-
 
8951
            rel.deprecated_state,
-
 
8952
            pv.pv_id,
-
 
8953
            pkg.pkg_name,
-
 
8954
            pv.pkg_version,
-
 
8955
            pv.dlocked,
-
 
8956
            pv.pv_description,
-
 
8957
            pv.BUILD_TYPE
-
 
8958
        FROM release_content rel,
-
 
8959
             packages pkg,
-
 
8960
             package_versions pv
-
 
8961
       WHERE pv.pkg_id = pkg.pkg_id
-
 
8962
         AND rel.pv_id = pv.pv_id
-
 
8963
         AND rel.BASE_VIEW_ID = ViewId
-
 
8964
         AND rel.RTAG_ID = RtagId
-
 
8965
       ORDER BY UPPER(pkg.PKG_NAME);
-
 
8966
 
-
 
8967
   ELSE
-
 
8968
 
-
 
8969
       -- Get non base view content
-
 
8970
      OPEN RecordSet FOR
-
 
8971
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
-
 
8972
            rel.deprecated_state,
-
 
8973
            pv.pv_id,
-
 
8974
            pkg.pkg_name,
-
 
8975
            pv.pkg_version,
-
 
8976
            pv.dlocked,
-
 
8977
            pv.pv_description,
-
 
8978
            pv.BUILD_TYPE
-
 
8979
        FROM release_content rel,
-
 
8980
             packages pkg,
-
 
8981
             package_versions pv,
-
 
8982
            VIEW_DEF vd
-
 
8983
       WHERE pv.pkg_id = pkg.pkg_id
-
 
8984
         AND rel.pv_id = pv.pv_id
-
 
8985
         AND vd.VIEW_ID = ViewId
-
 
8986
         AND vd.PKG_ID = pv.PKG_ID
-
 
8987
         AND rel.RTAG_ID = RtagId
-
 
8988
       ORDER BY UPPER(pkg.PKG_NAME);
-
 
8989
 
-
 
8990
   END IF;
-
 
8991
 
-
 
8992
 
-
 
8993
 
-
 
8994
 
-
 
8995
END;
-
 
8996
/*-------------------------------------------------------------------------------------------------------*/
-
 
8997
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
8998
 
-
 
8999
   ReleaseLocation VARCHAR2(4000);
-
 
9000
   sPkgVersion VARCHAR2(4000);
-
 
9001
   nPkgId NUMBER;
-
 
9002
   sVExt VARCHAR2(4000);
-
 
9003
   IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
-
 
9004
 
-
 
9005
   -- Find package for replacement
-
 
9006
   CURSOR curReplacePkg IS
-
 
9007
    SELECT pv.PV_ID
-
 
9008
     FROM RELEASE_CONTENT rc,
-
 
9009
           PACKAGE_VERSIONS pv
-
 
9010
    WHERE rc.PV_ID = pv.PV_ID
-
 
9011
      AND rc.RTAG_ID = RtagId
-
 
9012
      AND pv.PKG_ID = nPkgId
-
 
9013
      AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
-
 
9014
    recReplacePkg curReplacePkg%ROWTYPE;
-
 
9015
 
-
 
9016
BEGIN
-
 
9017
 
-
 
9018
   -- Get is_patch, pkg_id and v_ext
-
 
9019
   SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
-
 
9020
     FROM PACKAGE_VERSIONS pv
-
 
9021
    WHERE pv.PV_ID = newPvId;
-
 
9022
 
-
 
9023
 
-
 
9024
   -- Never put patch in relesed area
-
 
9025
   IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
-
 
9026
 
-
 
9027
      -- Try to get a package to be replaced with this new one.
-
 
9028
      -- Use unique constraint of PKG_ID and V_EXT
-
 
9029
      OPEN curReplacePkg;
-
 
9030
       FETCH curReplacePkg INTO recReplacePkg;
-
 
9031
 
-
 
9032
       IF curReplacePkg%FOUND THEN
-
 
9033
         -- Replace package
-
 
9034
         REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
-
 
9035
 
-
 
9036
      ELSE
-
 
9037
         -- Add new package
-
 
9038
         INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
-
 
9039
         VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
-
 
9040
 
-
 
9041
 
-
 
9042
          /* LOG ACTION */
-
 
9043
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
9044
           FROM PROJECTS proj,
-
 
9045
                 RELEASE_TAGS rt
-
 
9046
          WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
9047
            AND rt.RTAG_ID = RtagId;
-
 
9048
 
-
 
9049
         SELECT pv.PKG_VERSION INTO sPkgVersion
-
 
9050
           FROM PACKAGE_VERSIONS pv
-
 
9051
          WHERE pv.PV_ID = newPvId;
-
 
9052
 
-
 
9053
         Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
-
 
9054
 
-
 
9055
 
-
 
9056
      END IF;
-
 
9057
 
-
 
9058
      CLOSE curReplacePkg;
-
 
9059
 
-
 
9060
   END IF;
-
 
9061
 
-
 
9062
END;
-
 
9063
/*-------------------------------------------------------------------------------------------------------*/
-
 
9064
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
9065
 
-
 
9066
   ReleaseLocation VARCHAR2(4000);
-
 
9067
   sPkgVersion VARCHAR2(4000);
-
 
9068
 
-
 
9069
BEGIN
-
 
9070
 
-
 
9071
   -- Replace Package
-
 
9072
    UPDATE RELEASE_CONTENT
-
 
9073
       SET pv_id = newPvId,
-
 
9074
           insert_stamp = Ora_Sysdate,
-
 
9075
           insertor_id = UserId,
-
 
9076
         product_state = NULL
-
 
9077
     WHERE rtag_id = RtagId
-
 
9078
       AND pv_id = oldPvId;
-
 
9079
 
-
 
9080
   -- update the pegging table
-
 
9081
   UPDATE PEGGED_VERSIONS
-
 
9082
      SET pv_id = newPvId
-
 
9083
     WHERE rtag_id = RtagId
-
 
9084
       AND pv_id = oldPvId;
-
 
9085
 
-
 
9086
   -- update the advisory_ripple table
-
 
9087
   UPDATE ADVISORY_RIPPLE
-
 
9088
      SET pv_id = newPvId
-
 
9089
     WHERE rtag_id = RtagId
-
 
9090
       AND pv_id = oldPvId;
-
 
9091
 
-
 
9092
    /* LOG ACTION */
-
 
9093
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
9094
     FROM PROJECTS proj,
-
 
9095
           RELEASE_TAGS rt
-
 
9096
    WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
9097
      AND rt.RTAG_ID = RtagId;
-
 
9098
 
-
 
9099
   SELECT pv.PKG_VERSION INTO sPkgVersion
-
 
9100
     FROM PACKAGE_VERSIONS pv
-
 
9101
    WHERE pv.PV_ID = newPvId;
-
 
9102
 
-
 
9103
   Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
-
 
9104
   Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
-
 
9105
 
-
 
9106
END;
-
 
9107
/*-------------------------------------------------------------------------------------------------------*/
-
 
9108
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
9109
   ReleaseLocation VARCHAR2(4000);
-
 
9110
 
-
 
9111
BEGIN
-
 
9112
 
-
 
9113
 
-
 
9114
   -- Delete old package
-
 
9115
   DELETE
-
 
9116
     FROM RELEASE_CONTENT rc
-
 
9117
    WHERE rc.PV_ID = PvId
-
 
9118
      AND rc.RTAG_ID = RtagId;
-
 
9119
 
-
 
9120
 
-
 
9121
   /* LOG ACTION */
-
 
9122
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
9123
     FROM PROJECTS proj,
-
 
9124
          RELEASE_TAGS rt
-
 
9125
    WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
9126
      AND rt.RTAG_ID = RtagId;
-
 
9127
 
-
 
9128
   Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
-
 
9129
 
-
 
9130
 
-
 
9131
END;
-
 
9132
/*-------------------------------------------------------------------------------------------------------*/
-
 
9133
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
9134
   ReleaseLocation VARCHAR2(4000);
-
 
9135
 
-
 
9136
   CURSOR curMatchingPackage IS
-
 
9137
    SELECT mpv.PV_ID
-
 
9138
     FROM RELEASE_CONTENT rc,
-
 
9139
           PACKAGE_VERSIONS mpv,
-
 
9140
         PACKAGE_VERSIONS pv
-
 
9141
    WHERE rc.PV_ID = mpv.PV_ID
-
 
9142
      AND rc.RTAG_ID = RtagId
-
 
9143
      AND pv.PV_ID = PvId
-
 
9144
      AND pv.PKG_ID = mpv.PKG_ID
-
 
9145
      AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
-
 
9146
    recMatchingPackage curMatchingPackage%ROWTYPE;
-
 
9147
 
-
 
9148
BEGIN
-
 
9149
 
-
 
9150
   OPEN curMatchingPackage;
-
 
9151
    FETCH curMatchingPackage INTO recMatchingPackage;
-
 
9152
 
-
 
9153
    IF curMatchingPackage%FOUND THEN
-
 
9154
      -- Delete old package
-
 
9155
      DELETE
-
 
9156
        FROM RELEASE_CONTENT rc
-
 
9157
       WHERE rc.PV_ID = recMatchingPackage.PV_ID
-
 
9158
         AND rc.RTAG_ID = RtagId;
-
 
9159
 
-
 
9160
 
-
 
9161
      /* LOG ACTION */
-
 
9162
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
9163
        FROM PROJECTS proj,
-
 
9164
              RELEASE_TAGS rt
-
 
9165
       WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
9166
         AND rt.RTAG_ID = RtagId;
-
 
9167
 
-
 
9168
      Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
-
 
9169
 
-
 
9170
   END IF;
-
 
9171
 
-
 
9172
 
-
 
9173
   CLOSE curMatchingPackage;
-
 
9174
 
-
 
9175
 
-
 
9176
 
-
 
9177
 
-
 
9178
END;
-
 
9179
/*-------------------------------------------------------------------------------------------------------*/
-
 
9180
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
-
 
9181
 
-
 
9182
   ReturnValue NUMBER;
-
 
9183
 
-
 
9184
BEGIN
-
 
9185
   SELECT rc.BASE_VIEW_ID INTO ReturnValue
-
 
9186
     FROM RELEASE_CONTENT rc
-
 
9187
    WHERE rc.RTAG_ID = RtagId
-
 
9188
      AND rc.PV_ID = PvId;
-
 
9189
 
-
 
9190
   RETURN ReturnValue;
-
 
9191
END;
-
 
9192
/*-------------------------------------------------------------------------------------------------------*/
-
 
9193
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
-
 
9194
 
-
 
9195
BEGIN
-
 
9196
   -- Reset Ignore warnings up-the-tree
-
 
9197
   RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
-
 
9198
 
-
 
9199
   -- Refresh Package states
-
 
9200
   TOUCH_RELEASE ( RtagId );
-
 
9201
 
-
 
9202
END;
-
 
9203
/*-------------------------------------------------------------------------------------------------------*/
-
 
9204
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
-
 
9205
   CURSOR curReleases IS
-
 
9206
    SELECT rc.RTAG_ID
-
 
9207
     FROM RELEASE_CONTENT rc
-
 
9208
    WHERE rc.PV_ID = PvId;
-
 
9209
    recReleases curReleases%ROWTYPE;
-
 
9210
 
-
 
9211
BEGIN
-
 
9212
 
-
 
9213
   OPEN curReleases;
-
 
9214
    FETCH curReleases INTO recReleases;
-
 
9215
 
-
 
9216
   WHILE curReleases%FOUND
-
 
9217
   LOOP
-
 
9218
 
-
 
9219
      RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
-
 
9220
 
-
 
9221
      FETCH curReleases INTO recReleases;
-
 
9222
   END LOOP;
-
 
9223
 
-
 
9224
   CLOSE curReleases;
-
 
9225
 
-
 
9226
END;
-
 
9227
/*-------------------------------------------------------------------------------------------------------*/
-
 
9228
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
-
 
9229
 
-
 
9230
BEGIN
-
 
9231
 
-
 
9232
   UPDATE RELEASE_CONTENT rc SET
-
 
9233
   rc.BASE_VIEW_ID = NewViewId
-
 
9234
   WHERE rc.PV_ID = PvId
-
 
9235
     AND rc.RTAG_ID = RtagId;
-
 
9236
 
-
 
9237
END;
-
 
9238
/*-------------------------------------------------------------------------------------------------------*/
-
 
9239
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
-
 
9240
 
-
 
9241
   RowCount NUMBER;
-
 
9242
 
-
 
9243
 
-
 
9244
   CURSOR curPackageClash IS
-
 
9245
   SELECT pkg.PKG_NAME,
-
 
9246
         er.*
-
 
9247
     FROM (
-
 
9248
 
-
 
9249
           /* Get existing referenced packages */
-
 
9250
         SELECT pv.PKG_ID,
-
 
9251
                pv.V_EXT
-
 
9252
           FROM RELEASE_LINKS rl,
-
 
9253
                 RELEASE_CONTENT rc,
-
 
9254
                 PACKAGE_VERSIONS pv
-
 
9255
          WHERE rl.RTAG_ID = nRtagId
-
 
9256
            AND rl.REF_RTAG_ID = rc.RTAG_ID
-
 
9257
            AND rc.PV_ID = pv.PV_ID
-
 
9258
 
-
 
9259
            ) er,
-
 
9260
         (
-
 
9261
 
-
 
9262
         /* Get current reference packages */
-
 
9263
         SELECT pv.PKG_ID,
-
 
9264
                pv.V_EXT
-
 
9265
           FROM RELEASE_CONTENT rc,
-
 
9266
                 PACKAGE_VERSIONS pv
-
 
9267
          WHERE rc.RTAG_ID = nRefRtagId
-
 
9268
            AND rc.PV_ID = pv.PV_ID
-
 
9269
 
-
 
9270
         ) cr,
-
 
9271
         PACKAGES PKG
-
 
9272
    WHERE er.PKG_ID = cr.PKG_ID
-
 
9273
      AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
9274
      AND er.PKG_ID = pkg.PKG_ID;
-
 
9275
 
-
 
9276
   recPackageClash curPackageClash%ROWTYPE;
-
 
9277
 
-
 
9278
BEGIN
-
 
9279
   /*--------------- Business Rules Here -------------------*/
-
 
9280
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
-
 
9281
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
-
 
9282
   END IF;
-
 
9283
 
-
 
9284
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
-
 
9285
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
-
 
9286
   END IF;
-
 
9287
   /*-------------------------------------------------------*/
-
 
9288
   ProblemString := NULL;
-
 
9289
 
-
 
9290
 
-
 
9291
   -- Check if release already has references
-
 
9292
   SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
-
 
9293
     FROM RELEASE_LINKS rl
-
 
9294
    WHERE rl.RTAG_ID = nRtagId;
-
 
9295
 
-
 
9296
 
-
 
9297
   IF RowCount > 0 THEN
-
 
9298
      -- Found existing references
-
 
9299
 
-
 
9300
      -- Make sure there is no package clashes
-
 
9301
      OPEN curPackageClash;
-
 
9302
       FETCH curPackageClash INTO recPackageClash;
-
 
9303
 
-
 
9304
      IF curPackageClash%FOUND THEN
-
 
9305
 
-
 
9306
         ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
-
 
9307
 
-
 
9308
         WHILE curPackageClash%FOUND
-
 
9309
         LOOP
-
 
9310
            EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;   -- Do not allow variable overflow
-
 
9311
 
-
 
9312
            ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
-
 
9313
 
-
 
9314
            FETCH curPackageClash INTO recPackageClash;
-
 
9315
         END LOOP;
-
 
9316
 
-
 
9317
      END IF;
-
 
9318
 
-
 
9319
      CLOSE curPackageClash;
-
 
9320
 
-
 
9321
 
-
 
9322
   ELSE
-
 
9323
      -- No references found, hence reference a release
-
 
9324
 
-
 
9325
 
-
 
9326
      -- Remove exising package from this release to be referenced
-
 
9327
      REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);
-
 
9328
 
-
 
9329
 
-
 
9330
      -- Add new linked packages to release
-
 
9331
      INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
-
 
9332
      SELECT nRtagId,
-
 
9333
            rc.PV_ID,
-
 
9334
            rc.BASE_VIEW_ID,
-
 
9335
            rc.INSERT_STAMP,
-
 
9336
            rc.INSERTOR_ID,
-
 
9337
            rc.PKG_STATE
-
 
9338
        FROM RELEASE_CONTENT rc
-
 
9339
       WHERE rc.RTAG_ID = nRefRtagId;
-
 
9340
 
-
 
9341
 
-
 
9342
 
-
 
9343
      -- Copy ignore warnings for referenced packages
-
 
9344
      INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
-
 
9345
      SELECT nRtagId,
-
 
9346
            iw.PV_ID,
-
 
9347
            iw.DPV_ID,
-
 
9348
            iw.IS_PATCH_IGNORE
-
 
9349
        FROM IGNORE_WARNINGS iw,
-
 
9350
              RELEASE_CONTENT rc
-
 
9351
       WHERE iw.RTAG_ID = rc.RTAG_ID
-
 
9352
         AND iw.PV_ID = rc.PV_ID
-
 
9353
         AND rc.RTAG_ID = nRefRtagId;
-
 
9354
 
-
 
9355
 
-
 
9356
 
-
 
9357
      -- Reference release
-
 
9358
      INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
-
 
9359
      VALUES ( nRtagId, nRefRtagId );
-
 
9360
 
-
 
9361
 
-
 
9362
      -- Refresh Package states
-
 
9363
      TOUCH_RELEASE ( nRtagId );
-
 
9364
 
-
 
9365
   END IF;
-
 
9366
 
-
 
9367
 
-
 
9368
END;
-
 
9369
/*-------------------------------------------------------------------------------------------------------*/
-
 
9370
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
-
 
9371
 
-
 
9372
 
-
 
9373
BEGIN
-
 
9374
   /*--------------- Business Rules Here -------------------*/
-
 
9375
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
-
 
9376
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
-
 
9377
   END IF;
-
 
9378
 
-
 
9379
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
-
 
9380
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
-
 
9381
   END IF;
-
 
9382
 
-
 
9383
   /*-------------------------------------------------------*/
-
 
9384
 
-
 
9385
 
-
 
9386
   -- Remove ignore warnings for those packages who use referenced packages
-
 
9387
   DELETE FROM IGNORE_WARNINGS iw
-
 
9388
    WHERE iw.RTAG_ID = nRtagId
-
 
9389
      AND iw.DPV_ID IN (
-
 
9390
                        SELECT dep.DPV_ID
-
 
9391
                       FROM (
-
 
9392
 
-
 
9393
                           /* Get referenced packages */
-
 
9394
                           SELECT pv.PKG_ID,
-
 
9395
                                  pv.V_EXT
-
 
9396
                             FROM RELEASE_CONTENT rc,
-
 
9397
                                   PACKAGE_VERSIONS pv
-
 
9398
                            WHERE rc.RTAG_ID = nRefRtagId
-
 
9399
                              AND rc.PV_ID = pv.PV_ID
-
 
9400
 
-
 
9401
                           ) cr,
-
 
9402
                           (
-
 
9403
 
-
 
9404
                           /* Get all dependencies for current release */
-
 
9405
                           SELECT DISTINCT
-
 
9406
                                 pv.PKG_ID,
-
 
9407
                                 pv.V_EXT,
-
 
9408
                                 dep.DPV_ID
-
 
9409
                             FROM RELEASE_CONTENT rc,
-
 
9410
                                 PACKAGE_DEPENDENCIES dep,
-
 
9411
                                 PACKAGE_VERSIONS pv
-
 
9412
                            WHERE rc.RTAG_ID = nRtagId
-
 
9413
                              AND rc.PV_ID = dep.PV_ID
-
 
9414
                              AND dep.PV_ID = pv.PV_ID
-
 
9415
 
-
 
9416
                           ) dep
-
 
9417
                      WHERE dep.PKG_ID = cr.PKG_ID
-
 
9418
                        AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
9419
                     );
-
 
9420
 
-
 
9421
 
-
 
9422
 
-
 
9423
 
-
 
9424
   -- Remove ignore warnings for those package which are going to be replaced with the reference
-
 
9425
   DELETE FROM IGNORE_WARNINGS iw
-
 
9426
    WHERE iw.RTAG_ID = nRtagId
-
 
9427
      AND iw.PV_ID IN (
-
 
9428
                  SELECT pv.PV_ID
-
 
9429
                    FROM (
-
 
9430
 
-
 
9431
                        /* Get referenced packages */
-
 
9432
                        SELECT pv.PKG_ID,
-
 
9433
                               pv.V_EXT
-
 
9434
                          FROM RELEASE_CONTENT rc,
-
 
9435
                                PACKAGE_VERSIONS pv
-
 
9436
                         WHERE rc.RTAG_ID = nRefRtagId
-
 
9437
                           AND rc.PV_ID = pv.PV_ID
-
 
9438
 
-
 
9439
                        ) cr,
-
 
9440
                        RELEASE_CONTENT rc,
-
 
9441
                        PACKAGE_VERSIONS pv
-
 
9442
                   WHERE pv.PKG_ID = cr.PKG_ID
-
 
9443
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
9444
                     AND rc.RTAG_ID = nRtagId
-
 
9445
                     AND rc.PV_ID = pv.PV_ID
-
 
9446
                  );
-
 
9447
 
-
 
9448
 
-
 
9449
 
-
 
9450
 
-
 
9451
 
-
 
9452
   -- Remove matching packages from release
-
 
9453
   DELETE FROM RELEASE_CONTENT rc
-
 
9454
    WHERE rc.RTAG_ID = nRtagId
-
 
9455
      AND rc.PV_ID IN (
-
 
9456
                  SELECT pv.PV_ID
-
 
9457
                    FROM (
-
 
9458
 
-
 
9459
                        /* Get referenced packages */
-
 
9460
                        SELECT pv.PKG_ID,
-
 
9461
                               pv.V_EXT
-
 
9462
                          FROM RELEASE_CONTENT rc,
-
 
9463
                                PACKAGE_VERSIONS pv
-
 
9464
                         WHERE rc.RTAG_ID = nRefRtagId
-
 
9465
                           AND rc.PV_ID = pv.PV_ID
-
 
9466
 
-
 
9467
                        ) cr,
-
 
9468
                        RELEASE_CONTENT rc,
-
 
9469
                        PACKAGE_VERSIONS pv
-
 
9470
                   WHERE pv.PKG_ID = cr.PKG_ID
-
 
9471
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
9472
                     AND rc.RTAG_ID = nRtagId
-
 
9473
                     AND rc.PV_ID = pv.PV_ID
-
 
9474
                  );
-
 
9475
 
-
 
9476
 
-
 
9477
 
-
 
9478
 
-
 
9479
 
-
 
9480
   -- Remove Reference release
-
 
9481
   DELETE
-
 
9482
     FROM RELEASE_LINKS rl
-
 
9483
    WHERE rl.RTAG_ID = nRtagId
-
 
9484
      AND rl.REF_RTAG_ID = nRefRtagId;
-
 
9485
 
-
 
9486
 
-
 
9487
   -- Refresh Package states
-
 
9488
   TOUCH_RELEASE ( nRtagId );
-
 
9489
 
-
 
9490
 
-
 
9491
END;
-
 
9492
/*-------------------------------------------------------------------------------------------------------*/
-
 
9493
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
-
 
9494
 
-
 
9495
   cReleaseMode CHAR(1);
-
 
9496
   cPvMode CHAR(1);
-
 
9497
 
-
 
9498
BEGIN
-
 
9499
 
-
 
9500
   -- Get Release Mode
-
 
9501
   SELECT rt.OFFICIAL INTO cReleaseMode
-
 
9502
     FROM RELEASE_TAGS rt
-
 
9503
    WHERE rt.RTAG_ID = RtagId;
-
 
9504
 
-
 
9505
 
-
 
9506
   -- Get Package Mode
-
 
9507
   SELECT pv.DLOCKED INTO cPvMode
-
 
9508
     FROM PACKAGE_VERSIONS pv
-
 
9509
    WHERE pv.PV_ID = PvId;
-
 
9510
 
-
 
9511
   -- Only check if package is locked
-
 
9512
   IF (cPvMode = 'Y') THEN
-
 
9513
 
-
 
9514
      IF (cReleaseMode != 'N') AND (Permission != 'Y')
-
 
9515
      THEN
-
 
9516
         RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
-
 
9517
 
-
 
9518
      END IF;
-
 
9519
 
-
 
9520
   END IF;
-
 
9521
 
-
 
9522
 
-
 
9523
END;
-
 
9524
 
-
 
9525
/*-------------------------------------------------------------------------------------------------------*/
-
 
9526
END PK_RELEASE;
-
 
9527
/
-
 
9528
--------------------------------------------------------
-
 
9529
--  DDL for Package Body PK_PROJECT
-
 
9530
--------------------------------------------------------
-
 
9531
 
-
 
9532
  CREATE OR REPLACE PACKAGE BODY "PK_PROJECT" IS
-
 
9533
 
-
 
9534
    /*------------------------------------------------------------------------*/
-
 
9535
    PROCEDURE update_base_url (
-
 
9536
    nprojid   IN  projects.proj_id%TYPE,
-
 
9537
    sbaseurl  IN  VARCHAR2
-
 
9538
    ) IS
-
 
9539
    BEGIN
-
 
9540
 
-
 
9541
    UPDATE projects
-
 
9542
    SET base_url = sbaseurl
-
 
9543
    WHERE proj_id = nprojid;
-
 
9544
 
-
 
9545
    END update_base_url;
-
 
9546
 
-
 
9547
/*------------------------------------------------------------------------*/
-
 
9548
    PROCEDURE update_project_config (
-
 
9549
    nprojid   IN  projects.proj_id%TYPE,
-
 
9550
    sbaseurl  IN  VARCHAR2,
-
 
9551
    sjirakey  IN  VARCHAR2
-
 
9552
    ) IS
-
 
9553
    BEGIN
-
 
9554
 
-
 
9555
    UPDATE projects
-
 
9556
    SET base_url = sbaseurl,
-
 
9557
        jira_key = sjirakey
-
 
9558
    WHERE proj_id = nprojid;
-
 
9559
 
-
 
9560
    END update_project_config;
-
 
9561
    /*------------------------------------------------------------------------*/
-
 
9562
 
-
 
9563
    END pk_project;
-
 
9564
/
-
 
9565
--------------------------------------------------------
-
 
9566
--  DDL for Package Body PK_ENVIRONMENT
-
 
9567
--------------------------------------------------------
-
 
9568
 
-
 
9569
  CREATE OR REPLACE PACKAGE BODY "PK_ENVIRONMENT" 
-
 
9570
IS
-
 
9571
 
-
 
9572
   /*-------------------------------------------------------------------------------------------------------*/
-
 
9573
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
-
 
9574
     RETURN NUMBER
-
 
9575
   IS
-
 
9576
   BEGIN
-
 
9577
      /*
-
 
9578
     || N - unlocked
-
 
9579
     || Y - release and locked
-
 
9580
     || P - penging approval
-
 
9581
     || A - approved package ready for auto-build
-
 
9582
     */
-
 
9583
     IF cdlock = 'N' OR cdlock = 'R'
-
 
9584
     THEN
-
 
9585
       -- WORK IN PROGRESS --
-
 
9586
       RETURN 0;
-
 
9587
     ELSIF cdlock = 'P' OR cdlock = 'A'
-
 
9588
     THEN
-
 
9589
       -- PENDING --
-
 
9590
       RETURN 1;
-
 
9591
     ELSIF cdlock = 'Y'
-
 
9592
     THEN
-
 
9593
       -- RELEASED --
-
 
9594
       RETURN 2;
-
 
9595
     ELSE
-
 
9596
       -- NOT FOUND --
-
 
9597
       raise_application_error
-
 
9598
                   (-20000,
-
 
9599
                      'Cannot decide where to place package. [cDlock='
-
 
9600
                    || cdlock
-
 
9601
                    || ']'
-
 
9602
                   );
-
 
9603
     END IF;
-
 
9604
   END;
-
 
9605
 
-
 
9606
/*-------------------------------------------------------------------------------------------------------*/
-
 
9607
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
-
 
9608
     RETURN NUMBER
-
 
9609
   IS
-
 
9610
     envtab   NUMBER         := -1;
-
 
9611
 
-
 
9612
     CURSOR curarea
-
 
9613
     IS
-
 
9614
       SELECT 2 AS envtab
-
 
9615
         FROM release_content rc
-
 
9616
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
-
 
9617
       UNION
-
 
9618
       SELECT 0 AS envtab
-
 
9619
         FROM work_in_progress wip
-
 
9620
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
-
 
9621
       UNION
-
 
9622
       SELECT 1 AS envtab
-
 
9623
         FROM planned pl
-
 
9624
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
-
 
9625
 
-
 
9626
     recarea   curarea%ROWTYPE;
-
 
9627
   BEGIN
-
 
9628
     OPEN curarea;
-
 
9629
 
-
 
9630
     FETCH curarea
-
 
9631
      INTO recarea;
-
 
9632
 
-
 
9633
     IF curarea%FOUND
-
 
9634
     THEN
-
 
9635
       envtab := recarea.envtab;
-
 
9636
     END IF;
-
 
9637
 
-
 
9638
     CLOSE curarea;
-
 
9639
 
-
 
9640
     RETURN envtab;
-
 
9641
   END;
-
 
9642
 
-
 
9643
/*-------------------------------------------------------------------------------------------------------*/
-
 
9644
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
-
 
9645
     RETURN NUMBER
-
 
9646
   IS
-
 
9647
     ispatch   package_versions.dlocked%TYPE;
-
 
9648
     viewid   NUMBER                    := -1;
-
 
9649
 
-
 
9650
     CURSOR curview
-
 
9651
     IS
-
 
9652
       SELECT rc.base_view_id AS view_id
-
 
9653
         FROM release_content rc
-
 
9654
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
-
 
9655
       UNION
-
 
9656
       SELECT wip.view_id AS view_id
-
 
9657
         FROM work_in_progress wip
-
 
9658
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
-
 
9659
       UNION
-
 
9660
       SELECT pl.view_id AS view_id
-
 
9661
         FROM planned pl
-
 
9662
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
-
 
9663
 
-
 
9664
     recview   curview%ROWTYPE;
-
 
9665
   BEGIN
-
 
9666
     -- Get dlock state
-
 
9667
     SELECT pv.is_patch
-
 
9668
      INTO ispatch
-
 
9669
      FROM package_versions pv
-
 
9670
      WHERE pv.pv_id = pvid;
-
 
9671
 
-
 
9672
     -- Decide which view id should package go under.
-
 
9673
     IF (ispatch != 'Y') OR (ispatch IS NULL)
-
 
9674
     THEN
-
 
9675
       -- Get VIEW ID of Package
-
 
9676
       OPEN curview;
-
 
9677
 
-
 
9678
       FETCH curview
-
 
9679
        INTO recview;
-
 
9680
 
-
 
9681
       IF curview%FOUND
-
 
9682
       THEN
-
 
9683
         viewid := recview.view_id;
-
 
9684
       ELSE
-
 
9685
         raise_application_error
-
 
9686
            (-20000,
-
 
9687
               'Cannot find view_id to proceed. [PvId='
-
 
9688
            || pvid
-
 
9689
            || ']. The current version may not exist in the release anymore.'
-
 
9690
            );
-
 
9691
       END IF;
-
 
9692
 
-
 
9693
       CLOSE curview;
-
 
9694
     ELSE
-
 
9695
       -- Get VIEW ID of Patch (view id of parent package)
-
 
9696
       SELECT rc.base_view_id
-
 
9697
         INTO viewid
-
 
9698
         FROM release_content rc, package_patches ppv
-
 
9699
        WHERE rc.rtag_id = rtagid
-
 
9700
         AND rc.pv_id = ppv.pv_id
-
 
9701
         AND ppv.patch_id = pvid;
-
 
9702
     END IF;
-
 
9703
 
-
 
9704
     RETURN viewid;
-
 
9705
   END;
-
 
9706
 
-
 
9707
/*-------------------------------------------------------------------------------------------------------*/
-
 
9708
   PROCEDURE add_package (
-
 
9709
     pvid    IN   NUMBER,
-
 
9710
     viewid   IN   NUMBER,
-
 
9711
     rtagid   IN   NUMBER,
-
 
9712
     userid   IN   NUMBER
-
 
9713
   )
-
 
9714
   IS
-
 
9715
     dlocked   package_versions.dlocked%TYPE;
-
 
9716
     envtab   NUMBER;
-
 
9717
   BEGIN
-
 
9718
     IF can_edit_pkg_in_project (pvid, rtagid) = 1
-
 
9719
     THEN
-
 
9720
       -- Get dlock state
-
 
9721
       SELECT pv.dlocked
-
 
9722
         INTO dlocked
-
 
9723
         FROM package_versions pv
-
 
9724
        WHERE pv.pv_id = pvid;
-
 
9725
 
-
 
9726
       -- Get which area should go under
-
 
9727
       envtab := select_environment_area (dlocked);
-
 
9728
       -- Log
-
 
9729
       log_action (pvid, 'action', userid, 'Start of Package Add...');
-
 
9730
 
-
 
9731
       -- Remove Package
-
 
9732
       IF envtab = 0
-
 
9733
       THEN
-
 
9734
         -- WORK IN PROGRESS --
-
 
9735
         pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
-
 
9736
       ELSIF envtab = 1
-
 
9737
       THEN
-
 
9738
         -- PENDING --
-
 
9739
         pk_planned.add_package (pvid, viewid, rtagid, userid);
-
 
9740
       ELSIF envtab = 2
-
 
9741
       THEN
-
 
9742
         -- RELEASED --
-
 
9743
         -- NOTE: this package will be replaced with matching package
-
 
9744
         pk_release.add_package (pvid, viewid, rtagid, userid);
-
 
9745
         -- Now do post Release Actions
-
 
9746
         pk_release.run_post_actions (pvid, rtagid);
-
 
9747
       END IF;
-
 
9748
 
-
 
9749
       -- Log
-
 
9750
       log_action (pvid, 'action', userid, 'End of Package Add...');
-
 
9751
     END IF;
-
 
9752
   END;
-
 
9753
 
-
 
9754
/*-------------------------------------------------------------------------------------------------------*/
-
 
9755
   PROCEDURE add_package_bulk (
-
 
9756
     pvidlist   IN   VARCHAR2,
-
 
9757
     viewid    IN   NUMBER,
-
 
9758
     rtagid    IN   NUMBER,
-
 
9759
     userid    IN   NUMBER
-
 
9760
   )
-
 
9761
   IS
-
 
9762
     nidcollector   relmgr_number_tab_t         := relmgr_number_tab_t
-
 
9763
                                                        ();
-
 
9764
     dlocked      package_versions.dlocked%TYPE;
-
 
9765
     pvid         NUMBER;
-
 
9766
     envtab       NUMBER;
-
 
9767
   BEGIN
-
 
9768
     /*--------------- Business Rules Here -------------------*/
-
 
9769
     IF (pvidlist IS NULL)
-
 
9770
     THEN
-
 
9771
       raise_application_error (-20000,
-
 
9772
                          'Please select at least one package.'
-
 
9773
                         );
-
 
9774
     END IF;
-
 
9775
 
-
 
9776
/*-------------------------------------------------------*/
-
 
9777
     nidcollector := in_list_number (pvidlist);
-
 
9778
 
-
 
9779
     FOR i IN 1 .. nidcollector.COUNT
-
 
9780
     LOOP
-
 
9781
       pvid := nidcollector (i);
-
 
9782
       add_package (pvid, viewid, rtagid, userid);
-
 
9783
     END LOOP;
-
 
9784
   END;
-
 
9785
 
-
 
9786
/*-------------------------------------------------------------------------------------------------------*/
-
 
9787
   PROCEDURE replace_package (
-
 
9788
     newpvid  IN   NUMBER,
-
 
9789
     oldpvid  IN   NUMBER,
-
 
9790
     rtagid   IN   NUMBER,
-
 
9791
     userid   IN   NUMBER
-
 
9792
   )
-
 
9793
   IS
-
 
9794
     dlocked      package_versions.dlocked%TYPE;
-
 
9795
     viewid       NUMBER;
-
 
9796
     envtab       NUMBER;
-
 
9797
     ROWCOUNT     NUMBER;
-
 
9798
     creleasemode CHAR (1);
-
 
9799
     npkgid       NUMBER;
-
 
9800
   BEGIN
-
 
9801
     /*--------------- Business Rules Here -------------------*/
-
 
9802
     -- Check if oldPvId exists. It could have been removed
-
 
9803
     SELECT COUNT (pv.pv_id)
-
 
9804
       INTO ROWCOUNT
-
 
9805
       FROM package_versions pv
-
 
9806
      WHERE pv.pv_id = oldpvid;
-
 
9807
 
-
 
9808
/*-------------------------------------------------------*/
-
 
9809
 
-
 
9810
     /* This procedure is usually used by "History" option in Release Manager */
-
 
9811
 
-
 
9812
     -- Get dlock state
-
 
9813
     SELECT pv.dlocked
-
 
9814
       INTO dlocked
-
 
9815
       FROM package_versions pv
-
 
9816
      WHERE pv.pv_id = newpvid;
-
 
9817
 
-
 
9818
     -- Get VIEW_ID ---
-
 
9819
     IF ROWCOUNT = 1
-
 
9820
     THEN
-
 
9821
       viewid := get_view_location (oldpvid, rtagid);
-
 
9822
     ELSE
-
 
9823
       -- Set ViewID to default
-
 
9824
       viewid := 7;
-
 
9825
     END IF;
-
 
9826
 
-
 
9827
     -- Get which area should go under
-
 
9828
     envtab := select_environment_area (dlocked);
-
 
9829
     -- Log
-
 
9830
     log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
-
 
9831
 
-
 
9832
     -- Replace package
-
 
9833
     IF envtab = 0
-
 
9834
     THEN
-
 
9835
       -- WORK IN PROGRESS --
-
 
9836
 
-
 
9837
       -- Delete old package
-
 
9838
       pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
-
 
9839
 
-
 
9840
       -- Add new package
-
 
9841
       pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
-
 
9842
     ELSIF envtab = 1
-
 
9843
     THEN
-
 
9844
       -- PENDING --
-
 
9845
 
-
 
9846
       -- Delete old package
-
 
9847
       pk_planned.remove_package (oldpvid, rtagid, userid);
-
 
9848
 
-
 
9849
       -- Add new package
-
 
9850
       pk_planned.add_package (newpvid, viewid, rtagid, userid);
-
 
9851
     ELSIF envtab = 2
-
 
9852
     THEN
-
 
9853
       -- RELEASED --
-
 
9854
 
-
 
9855
       -- Delete old package
-
 
9856
       pk_release.remove_package (oldpvid, rtagid, userid);
-
 
9857
       -- Add new package
-
 
9858
       pk_release.add_package (newpvid, viewid, rtagid, userid);
-
 
9859
 
-
 
9860
       -- update the pegging table
-
 
9861
       UPDATE PEGGED_VERSIONS SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
-
 
9862
 
-
 
9863
       -- update the advisory ripple table
-
 
9864
       UPDATE ADVISORY_RIPPLE SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
-
 
9865
 
-
 
9866
       -- Now do post Release Actions
-
 
9867
       pk_release.run_post_actions (newpvid, rtagid);
-
 
9868
     END IF;
-
 
9869
 
-
 
9870
     -- Log
-
 
9871
     log_action (oldpvid, 'action', userid, 'End of Package Replace...');
-
 
9872
   END;
-
 
9873
 
-
 
9874
/*-------------------------------------------------------------------------------------------------------*/
-
 
9875
   FUNCTION remove_package (
-
 
9876
     pvid        IN   NUMBER,
-
 
9877
     rtagid      IN   NUMBER,
-
 
9878
     userid      IN   NUMBER,
-
 
9879
     forceremove IN   CHAR
-
 
9880
   )
-
 
9881
     RETURN NUMBER
-
 
9882
   IS
-
 
9883
     envtab      NUMBER;
-
 
9884
     isused      BOOLEAN;
-
 
9885
     recordcount   NUMBER;
-
 
9886
   BEGIN
-
 
9887
/*--------------- Business Rules Here -------------------*/
-
 
9888
/*-------------------------------------------------------*/
-
 
9889
 
-
 
9890
     -- Find location of package
-
 
9891
     envtab := get_package_area (pvid, rtagid);
-
 
9892
 
-
 
9893
     -- Remove Package
-
 
9894
     IF envtab = 0
-
 
9895
     THEN
-
 
9896
       -- WORK IN PROGRESS --
-
 
9897
       -- Delete package
-
 
9898
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
-
 
9899
 
-
 
9900
       RETURN 0;
-
 
9901
     ELSIF envtab = 1
-
 
9902
     THEN
-
 
9903
       -- PENDING --
-
 
9904
       -- Delete package
-
 
9905
       pk_planned.remove_package (pvid, rtagid, userid);
-
 
9906
 
-
 
9907
       RETURN 0;
-
 
9908
     ELSIF envtab = 2
-
 
9909
     THEN
-
 
9910
       -- RELEASED --
-
 
9911
 
-
 
9912
       -- Check if is used by other packages
-
 
9913
       isused := TRUE;
-
 
9914
 
-
 
9915
       IF forceremove = 'N'
-
 
9916
       THEN
-
 
9917
         SELECT COUNT (pv.pv_id)
-
 
9918
           INTO recordcount
-
 
9919
           FROM (SELECT dpv.pkg_id, dpv.v_ext
-
 
9920
                 FROM release_content rc,
-
 
9921
                     package_dependencies dep,
-
 
9922
                     package_versions dpv
-
 
9923
                WHERE rc.rtag_id = rtagid
-
 
9924
                  AND rc.pv_id = dep.pv_id
-
 
9925
                  AND dep.dpv_id = dpv.pv_id) rdep,
-
 
9926
               package_versions pv
-
 
9927
          WHERE pv.pkg_id = rdep.pkg_id
-
 
9928
            AND NVL (pv.v_ext, '|LINK_A_NULL|') =
-
 
9929
                                  NVL (rdep.v_ext, '|LINK_A_NULL|')
-
 
9930
            AND pv.pv_id = pvid;
-
 
9931
 
-
 
9932
         IF recordcount > 0
-
 
9933
         THEN
-
 
9934
            RETURN 1;               -- Return 1 as package being used
-
 
9935
         ELSE
-
 
9936
            isused := FALSE;
-
 
9937
         END IF;
-
 
9938
       END IF;
-
 
9939
 
-
 
9940
       IF forceremove = 'Y' OR NOT isused
-
 
9941
       THEN
-
 
9942
         -- Delete old package
-
 
9943
         pk_release.remove_package (pvid, rtagid, userid);
-
 
9944
 
-
 
9945
         -- Delete old package's pegging info
-
 
9946
         DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = rtagid AND pegv.PV_ID = pvid;
-
 
9947
 
-
 
9948
         -- Delete old package's advisory ripple info
-
 
9949
         DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = rtagid AND avr.PV_ID = pvid;
-
 
9950
 
-
 
9951
         -- Now do post Release Actions
-
 
9952
         pk_release.run_post_actions (pvid, rtagid);
-
 
9953
         RETURN 0;
-
 
9954
       END IF;
-
 
9955
     END IF;
-
 
9956
   END;
-
 
9957
 
-
 
9958
/*-------------------------------------------------------------------------------------------------------*/
-
 
9959
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
-
 
9960
 
-
 
9961
   PROCEDURE get_environment_items (
-
 
9962
     viewtype         IN      NUMBER,
-
 
9963
     userid           IN      NUMBER,
-
 
9964
     rtagid           IN      NUMBER,
-
 
9965
     sviewidshowlist  IN      VARCHAR2,
-
 
9966
     ntruerecordcount OUT     NUMBER,
-
 
9967
     recordset        OUT     typecur
-
 
9968
   )
2896
   )
9969
   IS
2897
   IS
9970
   BEGIN
2898
   BEGIN
9971
     -- Get true record count because views can give false count
2899
     -- Get true record count because views can give false count
9972
     SELECT COUNT (pl.pv_id)
2900
     SELECT COUNT (pl.pv_id)
Line 11661... Line 4589...
11661
  END;
4589
  END;
11662
/*-------------------------------------------------------------------------------------------------------*/
4590
/*-------------------------------------------------------------------------------------------------------*/
11663
END pk_environment;
4591
END pk_environment;
11664
/
4592
/
11665
--------------------------------------------------------
4593
--------------------------------------------------------
11666
--  DDL for Package Body PK_WORK_IN_PROGRESS
4594
--  DDL for Package Body PK_LICENCING
11667
--------------------------------------------------------
4595
--------------------------------------------------------
11668
 
4596
 
11669
  CREATE OR REPLACE PACKAGE BODY "PK_WORK_IN_PROGRESS" IS
4597
  CREATE OR REPLACE PACKAGE BODY "PK_LICENCING" IS
11670
 
4598
 
11671
/*
4599
/*
11672
------------------------------
4600
------------------------------
11673
||  Last Modified:  S.Vukovic
4601
||  Last Modified:  G.Huddy
11674
||  Modified Date:  2/May/2005
4602
||  Modified Date:  19/Aug/2008
11675
||  Body Version:   1.0
4603
||  Body Version:   1.0
11676
------------------------------
4604
------------------------------
11677
*/
4605
*/
11678
 
4606
 
-
 
4607
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
-
 
4608
   BEGIN
-
 
4609
      IF IS_LICENCED(PvId, licenceId) = 0 THEN
-
 
4610
         -- Add entry to licencing table
-
 
4611
         INSERT INTO licencing (pv_id, licence)
-
 
4612
         VALUES (PvId, licenceId);
11679
 
4613
 
11680
/*-------------------------------------------------------------------------------------------------------*/
-
 
11681
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
11682
 
-
 
11683
	oldPvId NUMBER;
-
 
11684
	ReleaseLocation VARCHAR2(4000);
-
 
11685
	sLocation VARCHAR2(4000) := NULL;
-
 
11686
 
-
 
11687
 
-
 
11688
BEGIN
-
 
11689
	/*--------------- Business Rules Here -------------------*/
-
 
11690
	/*-------------------------------------------------------*/
-
 
11691
 
-
 
11692
	BEGIN
-
 
11693
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
-
 
11694
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
-
 
11695
		  FROM WORK_IN_PROGRESS wip,
-
 
11696
		  	   RELEASE_TAGS rt,
-
 
11697
			   PROJECTS proj
-
 
11698
		 WHERE wip.PV_ID = newPvId
-
 
11699
		   AND wip.RTAG_ID = rt.RTAG_ID
-
 
11700
		   AND rt.OFFICIAL != 'Y'
-
 
11701
		   AND rt.PROJ_ID = proj.PROJ_ID;
-
 
11702
 
-
 
11703
		EXCEPTION
-
 
11704
	    	WHEN NO_DATA_FOUND THEN
-
 
11705
	       		sLocation := NULL;
4614
         -- log action
11706
	   
-
 
11707
	END;	   	   
-
 
11708
 
-
 
11709
 
-
 
11710
 
-
 
11711
	IF (sLocation IS NULL)  THEN
-
 
11712
 
-
 
11713
		-- Add to "Work in progress"
-
 
11714
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
-
 
11715
		VALUES( RtagId, newPvId, ViewId );
-
 
11716
 
-
 
11717
 
-
 
11718
	    /* LOG ACTION */
4615
         -- TODO
11719
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
11720
		  FROM PROJECTS proj,
-
 
11721
		  	   RELEASE_TAGS rt
-
 
11722
		 WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
11723
		   AND rt.RTAG_ID = RtagId;
-
 
11724
 
-
 
11725
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
-
 
11726
 
-
 
11727
	ELSE
-
 
11728
		
-
 
11729
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
-
 
11730
		
-
 
11731
	END IF;
-
 
11732
 
-
 
11733
END;
-
 
11734
/*-------------------------------------------------------------------------------------------------------*/
-
 
11735
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
11736
 
-
 
11737
	ReleaseLocation VARCHAR2(4000);
-
 
11738
 
-
 
11739
BEGIN
-
 
11740
 
-
 
11741
	/*--------------- Business Rules Here -------------------*/
-
 
11742
	/*-------------------------------------------------------*/
-
 
11743
 
-
 
11744
 
-
 
11745
	-- Get release location for logging pusposes
-
 
11746
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
11747
	  FROM PROJECTS proj,
-
 
11748
	  	   RELEASE_TAGS rt
-
 
11749
	 WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
11750
	   AND rt.RTAG_ID = RtagId;
-
 
11751
 
-
 
11752
 
-
 
11753
	-- Delete from Work In Progress
-
 
11754
	DELETE
-
 
11755
	  FROM WORK_IN_PROGRESS wip
-
 
11756
	 WHERE wip.RTAG_ID = RtagId
-
 
11757
	   AND wip.PV_ID = PvId;
-
 
11758
 
-
 
11759
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
-
 
11760
 
-
 
11761
 
-
 
11762
 
-
 
11763
 
-
 
11764
END;
-
 
11765
/*-------------------------------------------------------------------------------------------------------*/
-
 
11766
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
11767
 
-
 
11768
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
-
 
11769
	ReleaseLocation VARCHAR2(4000);
-
 
11770
	PvId NUMBER;
-
 
11771
 
-
 
11772
BEGIN
-
 
11773
 
-
 
11774
	/*--------------- Business Rules Here -------------------*/
-
 
11775
	IF (PvIdList IS NULL)
-
 
11776
	THEN
-
 
11777
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
-
 
11778
	END IF;
4616
      END IF;
11779
	/*-------------------------------------------------------*/
-
 
11780
 
-
 
11781
 
-
 
11782
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
-
 
11783
 
-
 
11784
 
-
 
11785
	-- Get release location for logging pusposes
-
 
11786
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
11787
	  FROM PROJECTS proj,
-
 
11788
	  	   RELEASE_TAGS rt
-
 
11789
	 WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
11790
	   AND rt.RTAG_ID = RtagId;
-
 
11791
 
-
 
11792
 
-
 
11793
	FOR i IN 1..nIdCollector.COUNT
-
 
11794
	LOOP
-
 
11795
		PvId := nIdCollector(i);
-
 
11796
 
-
 
11797
		-- Delete from Work In Progress
-
 
11798
		DELETE
-
 
11799
		  FROM WORK_IN_PROGRESS wip
-
 
11800
		 WHERE wip.RTAG_ID = RtagId
-
 
11801
		   AND wip.PV_ID = PvId;
-
 
11802
 
-
 
11803
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
-
 
11804
 
-
 
11805
	END LOOP;
-
 
11806
 
-
 
11807
 
-
 
11808
END;
-
 
11809
/*-------------------------------------------------------------------------------------------------------*/
-
 
11810
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
-
 
11811
 
-
 
11812
	ReturnValue NUMBER;
-
 
11813
 
4617
 
11814
BEGIN
4618
   END;
11815
	SELECT wip.VIEW_ID INTO ReturnValue
-
 
11816
	  FROM WORK_IN_PROGRESS wip
-
 
11817
	 WHERE wip.RTAG_ID = RtagId
-
 
11818
	   AND wip.PV_ID = PvId;
-
 
11819
 
4619
 
11820
	RETURN ReturnValue;
-
 
11821
END;
-
 
11822
/*-------------------------------------------------------------------------------------------------------*/
4620
/*-------------------------------------------------------------------------------------------------------*/
11823
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
-
 
11824
 
4621
 
11825
	IsBaseView CHAR(1);
4622
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
11826
	
-
 
11827
BEGIN
4623
   BEGIN
11828
 
-
 
11829
	-- Check if the view is BASE VIEW
-
 
11830
	SELECT vi.BASE_VIEW INTO IsBaseView
-
 
11831
	  FROM VIEWS vi
-
 
11832
	 WHERE vi.VIEW_ID = ViewId;
-
 
11833
	 
-
 
11834
	IF (IsBaseView = 'Y') THEN 
4624
      IF NOT IS_LICENCED(PvId, licenceId) = 0 THEN
11835
		-- Get Base view content
4625
         -- Delete entry from licencing table
11836
		OPEN RecordSet FOR
-
 
11837
		SELECT 0 AS PKG_STATE,
-
 
11838
			   NULL AS DEPRECATED_STATE,
-
 
11839
			   pv.pv_id, 
-
 
11840
			   pkg.pkg_name, 
-
 
11841
			   pv.pkg_version, 
-
 
11842
			   pv.dlocked, 
-
 
11843
			   pv.pv_description,
-
 
11844
			   pv.BUILD_TYPE
-
 
11845
		  FROM WORK_IN_PROGRESS rel,
-
 
11846
		       packages pkg,
-
 
11847
		       package_versions pv
4626
         DELETE FROM licencing
11848
		 WHERE pv.pkg_id = pkg.pkg_id
-
 
11849
		   AND rel.pv_id = pv.pv_id
4627
         WHERE pv_id = PvId
11850
		   AND rel.VIEW_ID = ViewId
4628
         AND licence = licenceId;
11851
		   AND rel.RTAG_ID = RtagId
-
 
11852
		 ORDER BY UPPER(pkg.PKG_NAME);
-
 
11853
	 
-
 
11854
 
4629
 
11855
	ELSE	 
-
 
11856
	 
-
 
11857
	 	-- Get non base view content
-
 
11858
		OPEN RecordSet FOR
-
 
11859
		SELECT 0 AS PKG_STATE,
-
 
11860
			   NULL AS DEPRECATED_STATE,
-
 
11861
			   pv.pv_id, 
-
 
11862
			   pkg.pkg_name, 
-
 
11863
			   pv.pkg_version, 
-
 
11864
			   pv.dlocked, 
-
 
11865
			   pv.pv_description,
4630
         -- log action
11866
			   pv.BUILD_TYPE
-
 
11867
		  FROM WORK_IN_PROGRESS rel,
-
 
11868
		       packages pkg,
4631
         -- TODO
11869
		       package_versions pv,
-
 
11870
			   VIEW_DEF vd
4632
      END IF;
11871
		 WHERE pv.pkg_id = pkg.pkg_id
-
 
11872
		   AND rel.pv_id = pv.pv_id
-
 
11873
		   AND vd.VIEW_ID = ViewId
-
 
11874
		   AND vd.PKG_ID = pv.PKG_ID
-
 
11875
		   AND rel.RTAG_ID = RtagId
-
 
11876
		 ORDER BY UPPER(pkg.PKG_NAME);
-
 
11877
	 
-
 
11878
	 
-
 
11879
	END IF;	 	
4633
   END;
11880
	
-
 
11881
 
4634
 
11882
END;
-
 
11883
/*-------------------------------------------------------------------------------------------------------*/
4635
/*-------------------------------------------------------------------------------------------------------*/
11884
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
-
 
11885
	
-
 
11886
BEGIN
-
 
11887
	
-
 
11888
	UPDATE WORK_IN_PROGRESS wip SET
-
 
11889
	wip.VIEW_ID = NewViewId
-
 
11890
	WHERE wip.PV_ID = PvId
-
 
11891
	  AND wip.RTAG_ID = RtagId;
-
 
11892
	
-
 
11893
END;
-
 
11894
/*-------------------------------------------------------------------------------------------------------*/
-
 
11895
END PK_WORK_IN_PROGRESS;
-
 
11896
/
-
 
11897
--------------------------------------------------------
-
 
11898
--  DDL for Package Body PK_ARCHIVE
-
 
11899
--------------------------------------------------------
-
 
11900
 
-
 
11901
  CREATE OR REPLACE PACKAGE BODY "PK_ARCHIVE" 
-
 
11902
IS
-
 
11903
/*
-
 
11904
------------------------------
-
 
11905
||  Author:  Rupesh Solanki
-
 
11906
||  Date:    26 October 2006
-
 
11907
||  Version:   1.0
-
 
11908
------------------------------
-
 
11909
*/
-
 
11910
/*---------------------------*/
-
 
11911
PROCEDURE populate_packages_table IS
-
 
11912
 
-
 
11913
BEGIN
-
 
11914
		  INSERT INTO archive_manager.PACKAGES
-
 
11915
		  (
-
 
11916
		  select * from packages where pkg_id not in 
-
 
11917
		  		  (select pkg_id from archive_manager.packages)
-
 
11918
		  );
-
 
11919
 
-
 
11920
          INSERT INTO archive_manager.PROCESSES
-
 
11921
          (
-
 
11922
          select * from processes where proc_id not in 
-
 
11923
            (select proc_id from archive_manager.processes)
-
 
11924
          );
-
 
11925
            
-
 
11926
 
4636
 
-
 
4637
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER ) IS
11927
 
4638
 
11928
END;
-
 
11929
/*-------------------------------------------------------------------------------------------------------*/
-
 
11930
   PROCEDURE populate_archive_data_table (
-
 
11931
      nrtagid   IN   release_tags.rtag_id%TYPE
-
 
11932
   )
-
 
11933
   IS
-
 
11934
/*
-
 
11935
Reason: To populate the archive_data table with information regarding the
-
 
11936
         number of package versions that exist in other releases.
-
 
11937
*/
-
 
11938
      numcount      NUMBER;
-
 
11939
      numusedby     NUMBER;
-
 
11940
      numruntime    NUMBER;
-
 
11941
      
-
 
11942
      /* Get all the package versions in the release */
-
 
11943
      CURSOR archive_cur
4639
      CURSOR licencing_cur
11944
      IS
4640
      IS
11945
         SELECT pv_id
4641
         SELECT *
11946
           FROM release_content
4642
         FROM licencing
11947
          WHERE rtag_id = nrtagid;
4643
         WHERE pv_id = fromPvId;
-
 
4644
 
-
 
4645
      licencing_rec licencing_cur%ROWTYPE;
11948
 
4646
 
11949
      archive_rec   archive_cur%ROWTYPE;
-
 
11950
   BEGIN
4647
   BEGIN
11951
/*--------------- Business Rules Here -------------------*/
4648
      -- For each licence association that the Last PV_ID had, create a similar
-
 
4649
      -- arrangement for the new PV_ID
-
 
4650
      -- NOTE that any additional licencing associations the new PV_ID has that the old one
-
 
4651
      -- does not have, are retained. The assumption is that the user has made those and so we do not
11952
/*-------------------------------------------------------*/
4652
      -- have any right to destroy them without asking them.
11953
      OPEN archive_cur;
4653
      OPEN licencing_cur;
11954
 
4654
 
11955
      FETCH archive_cur
4655
      FETCH licencing_cur
11956
       INTO archive_rec;
4656
      INTO licencing_rec;
11957
 
4657
 
11958
      WHILE archive_cur%FOUND
4658
      WHILE licencing_cur%FOUND
11959
      LOOP
4659
      LOOP
11960
        /* How many packages depend on this package version? */
-
 
11961
         SELECT COUNT (*)
-
 
11962
           INTO numusedby
-
 
11963
           FROM package_dependencies
-
 
11964
          WHERE dpv_id = archive_rec.pv_id;
-
 
11965
        
-
 
11966
        /* How many project releases use this package version?  */
-
 
11967
         SELECT COUNT (*)
-
 
11968
           INTO numcount
-
 
11969
           FROM release_content
-
 
11970
          WHERE pv_id = archive_rec.pv_id;
-
 
11971
 
-
 
11972
        /* How many packages have this package version as runtime
-
 
11973
        dependency? */
-
 
11974
         SELECT COUNT (*)
-
 
11975
           INTO numruntime
-
 
11976
           FROM runtime_dependencies
-
 
11977
          WHERE rtd_id = archive_rec.pv_id;
4660
         ADD_LICENCE ( toPvId, licencing_rec.licence, UserId );
11978
 
-
 
11979
        /* Insert into the archive_data table if they are not runtime dependant
-
 
11980
        and package dependant and they exist in that particular release only*/
-
 
11981
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
-
 
11982
         THEN
-
 
11983
            INSERT INTO archive_data
-
 
11984
                        (rtag_id, pv_id
-
 
11985
                        )
-
 
11986
                 VALUES (nrtagid, archive_rec.pv_id
-
 
11987
                        );
-
 
11988
         END IF;
-
 
11989
 
4661
 
11990
         FETCH archive_cur
4662
         FETCH licencing_cur
11991
          INTO archive_rec;
4663
         INTO licencing_rec;
11992
      END LOOP;
4664
      END LOOP;
11993
   END;
4665
   END;
11994
 
4666
 
11995
/*-------------------------------------------------------------------------------------------------------*/
4667
/*-------------------------------------------------------------------------------------------------------*/
11996
   PROCEDURE migrate_pv_to_archive_schema (
-
 
11997
      nrtagid   IN   release_tags.rtag_id%TYPE
-
 
11998
   )
-
 
11999
   IS
-
 
12000
   BEGIN
-
 
12001
 
-
 
12002
      /* MIGRATION - PACKAGE_VERSIONS */
-
 
12003
      INSERT INTO archive_manager.package_versions
-
 
12004
         SELECT *
-
 
12005
           FROM package_versions
-
 
12006
          WHERE pv_id IN (SELECT pv_id
-
 
12007
                            FROM archive_data);
-
 
12008
 
-
 
12009
      /* MIGRATION - PACKAGE_BUILD_ENV */
-
 
12010
      INSERT INTO archive_manager.package_build_env
-
 
12011
         SELECT *
-
 
12012
           FROM package_build_env
-
 
12013
          WHERE pv_id IN (SELECT pv_id
-
 
12014
                            FROM archive_data);
-
 
12015
 
-
 
12016
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
-
 
12017
      DELETE FROM package_build_env
-
 
12018
            WHERE pv_id IN (SELECT pv_id
-
 
12019
                              FROM archive_data);
-
 
12020
 
-
 
12021
      /* MIGRATION - PACKAGE_BUILD_INFO */
-
 
12022
      INSERT INTO archive_manager.package_build_info
-
 
12023
         SELECT *
-
 
12024
           FROM package_build_info
-
 
12025
          WHERE pv_id IN (SELECT pv_id
-
 
12026
                            FROM archive_data);
-
 
12027
 
-
 
12028
      /* PURGE DATA FROM PACKAGE_BUILD_info */
-
 
12029
      DELETE FROM package_build_info
-
 
12030
            WHERE pv_id IN (SELECT pv_id
-
 
12031
                              FROM archive_data);							  
-
 
12032
 
-
 
12033
      /* MIGRATION - UNIT_TESTS  */
-
 
12034
      INSERT INTO archive_manager.unit_tests
-
 
12035
         SELECT *
-
 
12036
           FROM unit_tests
-
 
12037
          WHERE pv_id IN (SELECT pv_id
-
 
12038
                            FROM archive_data);
-
 
12039
 
-
 
12040
      /* PURGE DATA FROM UNIT_TESTS*/
-
 
12041
      DELETE FROM unit_tests
-
 
12042
            WHERE pv_id IN (SELECT pv_id
-
 
12043
                              FROM archive_data);
-
 
12044
 
-
 
12045
      /* MIGRATION - PACKAGE_PROCESSES */
-
 
12046
      INSERT INTO archive_manager.package_processes
-
 
12047
         SELECT *
-
 
12048
           FROM package_processes
-
 
12049
          WHERE pv_id IN (SELECT pv_id
-
 
12050
                            FROM archive_data);
-
 
12051
 
-
 
12052
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
-
 
12053
      DELETE FROM package_processes
-
 
12054
            WHERE pv_id IN (SELECT pv_id
-
 
12055
                              FROM archive_data);
-
 
12056
 
-
 
12057
      /* MIGRATION - PACKAGE_DEPENDENCIES */
-
 
12058
      INSERT INTO archive_manager.package_dependencies
-
 
12059
         SELECT *
-
 
12060
           FROM package_dependencies
-
 
12061
          WHERE pv_id IN (SELECT pv_id
-
 
12062
                            FROM archive_data);
-
 
12063
 
-
 
12064
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
-
 
12065
      DELETE FROM package_dependencies
-
 
12066
            WHERE pv_id IN (SELECT pv_id
-
 
12067
                              FROM archive_data);
-
 
12068
 
-
 
12069
      /* MIGRATION - CODE_REVIEWS */
-
 
12070
      INSERT INTO archive_manager.code_reviews
-
 
12071
         SELECT *
-
 
12072
           FROM code_reviews
-
 
12073
          WHERE pv_id IN (SELECT pv_id
-
 
12074
                            FROM archive_data);
-
 
12075
 
-
 
12076
      /* PURGE DATA FROM CODE_REVIEWS*/
-
 
12077
      DELETE FROM code_reviews
-
 
12078
            WHERE pv_id IN (SELECT pv_id
-
 
12079
                              FROM archive_data);
-
 
12080
 
-
 
12081
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
-
 
12082
      INSERT INTO archive_manager.runtime_dependencies
-
 
12083
         SELECT *
-
 
12084
           FROM runtime_dependencies
-
 
12085
          WHERE pv_id IN (SELECT pv_id
-
 
12086
                            FROM archive_data);
-
 
12087
 
-
 
12088
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
-
 
12089
      DELETE FROM runtime_dependencies
-
 
12090
            WHERE pv_id IN (SELECT pv_id
-
 
12091
                              FROM archive_data);
-
 
12092
 
-
 
12093
      /* MIGRATION - PACKAGE_DOCUMENTS */
-
 
12094
      INSERT INTO archive_manager.package_documents
-
 
12095
         SELECT *
-
 
12096
           FROM package_documents
-
 
12097
          WHERE pv_id IN (SELECT pv_id
-
 
12098
                            FROM archive_data);
-
 
12099
 
-
 
12100
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
-
 
12101
      DELETE FROM package_documents
-
 
12102
            WHERE pv_id IN (SELECT pv_id
-
 
12103
                              FROM archive_data);
-
 
12104
 
4668
 
12105
      /* MIGRATION - PACKAGE_PATCHES */
-
 
12106
      INSERT INTO archive_manager.package_patches
-
 
12107
         SELECT *
-
 
12108
           FROM package_patches
-
 
12109
          WHERE pv_id IN (SELECT pv_id
-
 
12110
                            FROM archive_data);
-
 
12111
 
-
 
12112
      /* PURGE DATA FROM PACKAGE_PATCHES*/
-
 
12113
      DELETE FROM package_patches
-
 
12114
            WHERE pv_id IN (SELECT pv_id
-
 
12115
                              FROM archive_data);
-
 
12116
 
-
 
12117
      /* MIGRATION - CQ_ISSUES */
-
 
12118
      INSERT INTO archive_manager.cq_issues
-
 
12119
         SELECT *
-
 
12120
           FROM cq_issues
-
 
12121
          WHERE pv_id IN (SELECT pv_id
-
 
12122
                            FROM archive_data);
-
 
12123
 
-
 
12124
      /* PURGE DATA FROM CQ_ISSUES*/
-
 
12125
      DELETE FROM cq_issues
-
 
12126
            WHERE pv_id IN (SELECT pv_id
-
 
12127
                              FROM archive_data);
-
 
12128
 
-
 
12129
      /* MIGRATION - ADDITIONAL_NOTES */
-
 
12130
      INSERT INTO archive_manager.additional_notes
-
 
12131
         SELECT *
-
 
12132
           FROM additional_notes
-
 
12133
          WHERE pv_id IN (SELECT pv_id
-
 
12134
                            FROM archive_data);
-
 
12135
 
-
 
12136
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
-
 
12137
      DELETE FROM additional_notes
-
 
12138
            WHERE pv_id IN (SELECT pv_id
-
 
12139
                              FROM archive_data);
-
 
12140
 
-
 
12141
      /* MIGRATION - RELEASE_COMPONENTS */
-
 
12142
      INSERT INTO archive_manager.release_components
-
 
12143
         SELECT *
-
 
12144
           FROM release_components
-
 
12145
          WHERE pv_id IN (SELECT pv_id
-
 
12146
                            FROM archive_data);
-
 
12147
 
-
 
12148
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
-
 
12149
      DELETE FROM release_components
-
 
12150
            WHERE pv_id IN (SELECT pv_id
-
 
12151
                              FROM archive_data);
-
 
12152
 
-
 
12153
      /* MIGRATION - IGNORE_WARNINGS */
-
 
12154
      INSERT INTO archive_manager.ignore_warnings
-
 
12155
         SELECT *
-
 
12156
           FROM ignore_warnings
-
 
12157
          WHERE pv_id IN (SELECT pv_id
-
 
12158
                            FROM archive_data);
-
 
12159
 
-
 
12160
      /* PURGE DATA FROM IGNORE_WARNINGS*/
-
 
12161
      DELETE FROM ignore_warnings
-
 
12162
            WHERE pv_id IN (SELECT pv_id
-
 
12163
                              FROM archive_data);
-
 
12164
 
-
 
12165
      /* PURGE DATA FROM WORK_IN_PROGRESS */
-
 
12166
      DELETE FROM work_in_progress
-
 
12167
            WHERE rtag_id = nrtagid;
-
 
12168
 
-
 
12169
      /* PURGE DATA FROM PLANNED */
-
 
12170
      DELETE FROM planned
-
 
12171
            WHERE rtag_id = nrtagid;
-
 
12172
 
-
 
12173
      /* MIGRATION - JIRA_ISSUES */
-
 
12174
      INSERT INTO archive_manager.jira_issues
-
 
12175
         SELECT *
-
 
12176
           FROM jira_issues
-
 
12177
          WHERE pv_id IN (SELECT pv_id
-
 
12178
                            FROM archive_data);
-
 
12179
 
-
 
12180
      /* PURGE DATA FROM JIRA_ISSUES*/
-
 
12181
      DELETE FROM jira_issues
-
 
12182
            WHERE pv_id IN (SELECT pv_id
-
 
12183
                              FROM archive_data);
-
 
12184
 
-
 
12185
      /* MIGRATION - PRODUCT_COMPONENTS */
-
 
12186
      INSERT INTO archive_manager.product_components
4669
   FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER IS
12187
         SELECT *
4670
      found NUMBER;
12188
           FROM product_components
-
 
12189
          WHERE pv_id IN (SELECT pv_id
-
 
12190
                            FROM archive_data);
-
 
12191
 
-
 
12192
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
-
 
12193
      DELETE FROM product_components
-
 
12194
            WHERE pv_id IN (SELECT pv_id
-
 
12195
                              FROM archive_data);
-
 
12196
 
-
 
12197
      /* MIGRATION - ACTION_LOG */
-
 
12198
      INSERT INTO archive_manager.action_log
-
 
12199
         SELECT *
4671
   BEGIN
12200
           FROM action_log
-
 
12201
          WHERE pv_id IN (SELECT pv_id
-
 
12202
                            FROM archive_data);
-
 
12203
 
-
 
12204
      /* PURGE DATA FROM ACTION_LOG*/
-
 
12205
      DELETE FROM action_log
-
 
12206
            WHERE pv_id IN (SELECT pv_id
-
 
12207
                              FROM archive_data);
-
 
12208
 
4672
 
-
 
4673
      SELECT COUNT(*) INTO found
-
 
4674
      FROM licencing
-
 
4675
      WHERE pv_id = PvId
-
 
4676
      AND licence = LicenceId;
12209
 
4677
 
-
 
4678
      RETURN found;
12210
   END;
4679
   END;
12211
 
4680
 
12212
/*-------------------------------------------------------------------------------------------------------*/
4681
/*-------------------------------------------------------------------------------------------------------*/
12213
   PROCEDURE migrate_rtag_to_archive_schema (
-
 
12214
      nrtagid   IN   release_tags.rtag_id%TYPE
-
 
12215
   )
-
 
12216
   IS
-
 
12217
   BEGIN
-
 
12218
      /* MIGRATION - DO_NOT_RIPPLE */
-
 
12219
      INSERT INTO archive_manager.do_not_ripple
-
 
12220
         SELECT *
-
 
12221
           FROM do_not_ripple dnp
-
 
12222
          WHERE rtag_id = nrtagid;
-
 
12223
 
4682
 
12224
      /* PURGE DATA FROM DO_NOT_RIPPLE */
-
 
12225
      DELETE FROM do_not_ripple
-
 
12226
            WHERE rtag_id = nrtagid;
-
 
12227
			
-
 
12228
      /* MIGRATION - ADVISORY_RIPPLES*/
-
 
12229
      INSERT INTO archive_manager.advisory_ripples
-
 
12230
         SELECT *
-
 
12231
           FROM advisory_ripple dnp
-
 
12232
          WHERE rtag_id = nrtagid;
-
 
12233
 
-
 
12234
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
-
 
12235
      DELETE FROM advisory_ripple
-
 
12236
            WHERE rtag_id = nrtagid;			
-
 
12237
 
-
 
12238
      /* MIGRATION - RELEASE_CONTENT */
-
 
12239
      INSERT INTO archive_manager.release_content
-
 
12240
         SELECT *
-
 
12241
           FROM release_content
-
 
12242
          WHERE rtag_id = nrtagid;
-
 
12243
 
-
 
12244
      /* PURGE DATA FROM RELEASE_CONTENT*/
-
 
12245
      DELETE FROM release_content
-
 
12246
            WHERE rtag_id = nrtagid;
-
 
12247
 
-
 
12248
      /* MIGRATION - NOTIFICATION_HISTORY */
4683
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER ) IS
12249
      INSERT INTO archive_manager.notification_history
-
 
12250
         SELECT *
-
 
12251
           FROM notification_history
-
 
12252
          WHERE rtag_id = nrtagid;
-
 
12253
 
-
 
12254
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
-
 
12255
      DELETE FROM notification_history
-
 
12256
            WHERE rtag_id = nrtagid;
-
 
12257
 
-
 
12258
      /* MIGRATION - BUILD_ORDER   */
-
 
12259
      INSERT INTO archive_manager.build_order
-
 
12260
         SELECT *
-
 
12261
           FROM build_order
-
 
12262
          WHERE rtag_id = nrtagid;
-
 
12263
 
-
 
12264
      /* PURGE DATA FROM BUILD_ORDER*/
-
 
12265
      DELETE FROM build_order
-
 
12266
            WHERE rtag_id = nrtagid;
-
 
12267
 
4684
 
12268
      /* MIGRATION - PROJECT_ACTION_LOG */
4685
      CURSOR licencing_cur
12269
      INSERT INTO archive_manager.project_action_log
4686
      IS
12270
         SELECT *
4687
         SELECT *
12271
           FROM project_action_log
4688
         FROM licencing
12272
          WHERE rtag_id = nrtagid;
4689
         WHERE pv_id = PvId;
12273
 
4690
 
12274
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
4691
      licencing_rec licencing_cur%ROWTYPE;
-
 
4692
   BEGIN
12275
      DELETE FROM project_action_log
4693
      -- For each licence association that the PV_ID had, remove it
12276
            WHERE rtag_id = nrtagid;
4694
      OPEN licencing_cur;
12277
 
4695
 
12278
      /* MIGRATION - DEPRECATED_PACKAGES */
-
 
12279
      INSERT INTO archive_manager.deprecated_packages
-
 
12280
         SELECT *
4696
      FETCH licencing_cur
12281
           FROM deprecated_packages
4697
      INTO licencing_rec;
12282
          WHERE rtag_id = nrtagid;
-
 
12283
 
4698
 
12284
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
-
 
12285
      DELETE FROM deprecated_packages
-
 
12286
            WHERE rtag_id = nrtagid;
4699
      WHILE licencing_cur%FOUND
12287
			
-
 
12288
      /* MIGRATION - RELEASE_TAGS */
-
 
12289
      INSERT INTO archive_manager.release_tags
-
 
12290
         SELECT *
4700
      LOOP
12291
           FROM release_tags
-
 
12292
          WHERE rtag_id = nrtagid;
-
 
12293
			
-
 
12294
			
-
 
12295
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
-
 
12296
      DELETE FROM package_versions
-
 
12297
            WHERE pv_id IN (SELECT pv_id
-
 
12298
                              FROM archive_data);
4701
         REMOVE_LICENCE ( PvId, licencing_rec.licence, UserId );
12299
							  
-
 
12300
							  			
-
 
12301
   END;
-
 
12302
 
4702
 
12303
/*-------------------------------------------------------------------------------------------------------*/
-
 
12304
   PROCEDURE clean_up_archive_data_table (
-
 
12305
      nrtagid   IN   release_tags.rtag_id%TYPE
4703
         FETCH licencing_cur
12306
   )
-
 
12307
   IS
-
 
12308
   BEGIN
-
 
12309
      /* Cleaning Up The Archive_Data Table */
-
 
12310
      DELETE FROM archive_data
4704
         INTO licencing_rec;
12311
            WHERE rtag_id = nrtagid;
4705
      END LOOP;
12312
   END;
4706
   END;
12313
 
4707
 
12314
/*-------------------------------------------------------------------------------------------------------*/
4708
/*-------------------------------------------------------------------------------------------------------*/
12315
   PROCEDURE write_action_log (
-
 
12316
      nuserid   IN   NUMBER,
-
 
12317
      nrtagid   IN   release_tags.rtag_id%TYPE
-
 
12318
   )
-
 
12319
   IS
-
 
12320
   BEGIN
-
 
12321
      /* Write Into Archive_Action_Log Table */
-
 
12322
      INSERT INTO archive_action_log
-
 
12323
                  (user_id, date_time_stamp, rtag_id,
-
 
12324
                   description
-
 
12325
                  )
-
 
12326
           VALUES (nuserid, ora_sysdatetime, nrtagid,
-
 
12327
                   'Release has been archived to the ARCHIVE_MANAGER schema'
-
 
12328
                  );
-
 
12329
   END;
-
 
12330
/*-------------------------------------------------------------------------------------------------------*/
-
 
12331
END pk_archive; 
4709
END PK_LICENCING;
12332
/
4710
/
12333
--------------------------------------------------------
4711
--------------------------------------------------------
12334
--  DDL for Package Body PK_PACKAGE_TEST
4712
--  DDL for Package Body PK_PACKAGE
12335
--------------------------------------------------------
4713
--------------------------------------------------------
12336
 
4714
 
12337
  CREATE OR REPLACE PACKAGE BODY "PK_PACKAGE_TEST" 
4715
  CREATE OR REPLACE PACKAGE BODY "PK_PACKAGE" 
12338
IS
4716
IS
12339
/*
-
 
12340
------------------------------
-
 
12341
||  Last Modified:  R. Solanki
-
 
12342
||  Modified Date:  09/03/2006
-
 
12343
||  Body Version:   1.7
-
 
12344
------------------------------
-
 
12345
*/
-
 
12346
 
-
 
12347
   /*-------------------------------------------------------------------------------------------------------*/
4717
   /*-------------------------------------------------------------------------------------------------------*/
12348
   PROCEDURE new_version (
4718
   PROCEDURE new_version (
12349
      nlastpvid                   IN       NUMBER,
4719
      nlastpvid                   IN       NUMBER,
12350
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
4720
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
12351
      cbuildtype                  IN       CHAR,
4721
      cbuildtype                  IN       CHAR,
Line 12354... Line 4724...
12354
      nuserid                     IN       NUMBER,
4724
      nuserid                     IN       NUMBER,
12355
      enumissues_state_imported   IN       NUMBER,
4725
      enumissues_state_imported   IN       NUMBER,
12356
      returnpvid                  OUT      NUMBER
4726
      returnpvid                  OUT      NUMBER
12357
   )
4727
   )
12358
   IS
4728
   IS
12359
      origpkg_id                   package_versions.pkg_id%TYPE;
4729
      origpkg_id                  package_versions.pkg_id%TYPE;
12360
      origdlocked                  package_versions.dlocked%TYPE;
4730
      origdlocked                 package_versions.dlocked%TYPE;
12361
      ssv_mm                       package_versions.v_mm%TYPE;
4731
      ssv_mm                      package_versions.v_mm%TYPE;
12362
      ssv_nmm                      package_versions.v_nmm%TYPE;
4732
      ssv_nmm                     package_versions.v_nmm%TYPE;
12363
      ssv_ext                      package_versions.v_ext%TYPE;
4733
      ssv_ext                     package_versions.v_ext%TYPE;
12364
      spackageversion              VARCHAR2 (4000);
4734
      spackageversion             VARCHAR2 (4000);
12365
      nissuestypes                 NUMBER;
4735
      nissuestypes                NUMBER;
12366
      nviewid                      NUMBER;
4736
      nviewid                     NUMBER;
12367
      reccount                     NUMBER;
4737
      reccount                    NUMBER;
12368
      isreleased                   package_versions.dlocked%TYPE       := 'N';
4738
      isreleased                  package_versions.dlocked%TYPE := 'N';
12369
      slabel                       VARCHAR2 (4000)                    := NULL;
4739
      slabel                      VARCHAR2 (4000)               := NULL;
12370
 
4740
 
12371
      CURSOR package_versions_cur
4741
      CURSOR package_versions_cur
12372
      IS
4742
      IS
12373
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
4743
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
12374
           FROM package_versions pv
4744
           FROM package_versions pv
12375
          WHERE pv.pkg_version = snewpkgversion
4745
          WHERE pv.pkg_version = snewpkgversion
12376
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
4746
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
12377
                                         FROM package_versions origpv
4747
                                         FROM package_versions origpv
12378
                                        WHERE origpv.pv_id = nlastpvid);
4748
                                        WHERE origpv.pv_id = nlastpvid);
12379
 
4749
 
12380
      package_versions_rec         package_versions_cur%ROWTYPE;
4750
      package_versions_rec package_versions_cur%ROWTYPE;
12381
 
4751
 
12382
      CURSOR clone_package_versions_cur
4752
      CURSOR clone_package_versions_cur
12383
      IS
4753
      IS
12384
         SELECT DISTINCT pkg_id, dlocked
4754
         SELECT DISTINCT pkg_id, dlocked
12385
                    FROM package_versions
4755
                    FROM package_versions
12386
                   WHERE pv_id = nlastpvid;
4756
                   WHERE pv_id = nlastpvid;
12387
 
4757
 
12388
      clone_package_versions_rec   clone_package_versions_cur%ROWTYPE;
4758
      clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
12389
   BEGIN
4759
   BEGIN
12390
      spackageversion := snewpkgversion;
4760
      spackageversion := snewpkgversion;
12391
 
4761
 
12392
      IF nsettopvid IS NULL
4762
      IF nsettopvid IS NULL
12393
      THEN
4763
      THEN
12394
         -- SetToPv_id is not supplied, hence proceed.
4764
         -- SetToPv_id is not supplied, hence proceed.
12395
 
4765
 
12396
         /* ---------------------------------------------------- */
4766
         /* ---------------------------------------------------- */
12397
/* Find id package_version exists                       */
4767
         /* Find id package_version exists                       */
12398
/* ---------------------------------------------------- */
4768
         /* ---------------------------------------------------- */
12399
         OPEN package_versions_cur;
4769
         OPEN package_versions_cur;
12400
 
4770
 
12401
         FETCH package_versions_cur
4771
         FETCH package_versions_cur
12402
          INTO package_versions_rec;
4772
          INTO package_versions_rec;
12403
 
4773
 
Line 12424... Line 4794...
12424
 
4794
 
12425
            -- Automated built config
4795
            -- Automated built config
12426
            IF (cbuildtype = 'A')
4796
            IF (cbuildtype = 'A')
12427
            THEN
4797
            THEN
12428
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
4798
               spackageversion := '(' || returnpvid || ')' || ssv_ext;
12429
                                    -- Make sure that version is still unique
4799
               -- Make sure that version is still unique
12430
            END IF;
4800
            END IF;
12431
 
4801
 
12432
            -- Clone Package Version Details --
4802
            -- Clone Package Version Details --
12433
            INSERT INTO package_versions
-
 
12434
                        (pv_id, pkg_id, pkg_version, dlocked, created_stamp,
4803
            INSERT INTO package_versions(pv_id, pkg_id, pkg_version, dlocked, created_stamp,
12435
                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
4804
                                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
12436
                         v_ext, src_path, pv_description, pv_overview,
4805
                                         v_ext, src_path, pv_description, pv_overview,
12437
                         last_pv_id, owner_id, is_deployable,
4806
                                         last_pv_id, owner_id, is_deployable,
12438
                         is_build_env_required, build_type, bs_id, is_autobuildable)
4807
                                         is_build_env_required, build_type, bs_id, is_autobuildable, ripple_field)
12439
               SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
4808
                 SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
12440
                      spackageversion AS pkg_version, 'N' AS dlocked,
4809
                        spackageversion AS pkg_version, 'N' AS dlocked,
12441
                      ora_sysdate AS created_stamp, nuserid AS creator_id,
4810
                        ora_sysdate AS created_stamp, nuserid AS creator_id,
12442
                      ora_sysdatetime AS modified_stamp,
4811
                        ora_sysdatetime AS modified_stamp,
12443
                      nuserid AS modifier_id, ssv_mm AS v_mm,
4812
                        nuserid AS modifier_id, ssv_mm AS v_mm,
12444
                      ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
4813
                        ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
12445
                      pv.pv_description, pv.pv_overview,
4814
                        pv.pv_description, pv.pv_overview,
12446
                      nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
4815
                        nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
12447
                      pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable
4816
                        pv.is_build_env_required, cbuildtype, pv.bs_id, pv.is_autobuildable, pv.ripple_field
12448
                 FROM package_versions pv
4817
                   FROM package_versions pv
12449
                WHERE pv.pv_id = nlastpvid;
4818
                  WHERE pv.pv_id = nlastpvid;
12450
 
4819
 
12451
            -- Set Issues Type for cloning ---
4820
            -- Set Issues Type for cloning ---
12452
            IF origdlocked = 'Y'
4821
            IF origdlocked = 'Y'
12453
            THEN
4822
            THEN
12454
               nissuestypes := enumissues_state_imported;
4823
               nissuestypes := enumissues_state_imported;
Line 12706... Line 5075...
12706
 
5075
 
12707
         --- Remove from Code Review
5076
         --- Remove from Code Review
12708
         DELETE FROM code_reviews cr
5077
         DELETE FROM code_reviews cr
12709
               WHERE cr.pv_id = pvid;
5078
               WHERE cr.pv_id = pvid;
12710
 
5079
 
-
 
5080
         --- Remove from Code Review URL
-
 
5081
         DELETE FROM code_review_url cru
-
 
5082
               WHERE cru.pv_id = pvid;
-
 
5083
 
12711
         --- Remove from Unit Tests
5084
         --- Remove from Unit Tests
12712
         DELETE FROM unit_tests ut
5085
         DELETE FROM unit_tests ut
12713
               WHERE ut.pv_id = pvid;
5086
               WHERE ut.pv_id = pvid;
12714
 
5087
 
12715
         --- Remove from Package BuildEnv
5088
         --- Remove from Package BuildEnv
12716
         DELETE FROM package_build_env pbe
5089
         DELETE FROM package_build_env pbe
12717
               WHERE pbe.pv_id = pvid;
5090
               WHERE pbe.pv_id = pvid;
12718
			   
5091
 
12719
		 --- Remove from Package Build Info
5092
         --- Remove from Package Build Info
12720
		 DELETE FROM package_build_info pbi
5093
         DELETE FROM package_build_info pbi
12721
		 	   WHERE pbi.pv_id = pvid;    
5094
               WHERE pbi.pv_id = pvid;
12722
			   
-
 
12723
 
5095
 
12724
         --- Remove from Build Order
5096
         --- Remove from Build Order
12725
         DELETE FROM build_order bo
5097
         DELETE FROM build_order bo
12726
               WHERE bo.pv_id = pvid;
5098
               WHERE bo.pv_id = pvid;
12727
 
5099
 
-
 
5100
         --- Remove from Licencing
-
 
5101
         PK_LICENCING.REMOVE_ALL_LICENCING( pvid, 0 );
-
 
5102
 
12728
         --- Remove from Note Manager
5103
         --- Remove from Note Manager
12729
         DELETE FROM note_manager nm
5104
         DELETE FROM note_manager nm
12730
               WHERE nm.nid = pvid;
5105
               WHERE nm.nid = pvid;
12731
 
5106
 
12732
         --- Remove from Action log
5107
         --- Remove from Action log
12733
         DELETE FROM action_log al
5108
         DELETE FROM action_log al
12734
               WHERE al.pv_id = pvid;
5109
               WHERE al.pv_id = pvid;
12735
			   
5110
 
12736
		 --- Remove from Do Not Ripple 
5111
         --- Remove from Do Not Ripple
12737
		 DELETE FROM DO_NOT_RIPPLE dnr
5112
         DELETE FROM DO_NOT_RIPPLE dnr
12738
		 	   WHERE dnr.PV_ID = pvid;
5113
               WHERE dnr.PV_ID = pvid;
-
 
5114
 
-
 
5115
         --- Remove from Advisory Ripple
-
 
5116
         DELETE FROM ADVISORY_RIPPLE ar
-
 
5117
               WHERE ar.PV_ID = pvid;
12739
			   
5118
 
12740
		 --- Remove from Jira Issues 
5119
         --- Remove from Jira Issues
12741
		 DELETE FROM JIRA_ISSUES jira
5120
         DELETE FROM JIRA_ISSUES jira
12742
		 	   WHERE jira.PV_ID = pvid;
5121
               WHERE jira.PV_ID = pvid;
-
 
5122
 
-
 
5123
         --- Remove from Package Metrics
-
 
5124
         DELETE FROM package_metrics pm
12743
			   			   
5125
              WHERE pm.pv_id = pvid;
-
 
5126
 
-
 
5127
         -- Delete from Pegged Versions
-
 
5128
         DELETE FROM pegged_versions pegv
-
 
5129
              WHERE pegv.pv_id = pvid;
-
 
5130
 
12744
         --- Finally Remove From Package Versions
5131
         --- Finally Remove From Package Versions
12745
         --- Get Package name
5132
         --- Get Package name
12746
         SELECT pv.pkg_id
5133
         SELECT pv.pkg_id
12747
           INTO pkgid
5134
           INTO pkgid
12748
           FROM package_versions pv
5135
           FROM package_versions pv
Line 12779... Line 5166...
12779
      lastinstallorder     NUMBER;
5166
      lastinstallorder     NUMBER;
12780
      ispatchdlocked       package_versions.dlocked%TYPE;
5167
      ispatchdlocked       package_versions.dlocked%TYPE;
12781
      ssv_mm               package_versions.v_mm%TYPE;
5168
      ssv_mm               package_versions.v_mm%TYPE;
12782
      ssv_nmm              package_versions.v_nmm%TYPE;
5169
      ssv_nmm              package_versions.v_nmm%TYPE;
12783
      ssv_ext              package_versions.v_ext%TYPE;
5170
      ssv_ext              package_versions.v_ext%TYPE;
12784
      opatchdepcollector   relmgr_number_tab_t      := relmgr_number_tab_t
5171
      opatchdepcollector   relmgr_number_tab_t  := relmgr_number_tab_t ();
12785
                                                                          ();
-
 
12786
 
5172
 
12787
      CURSOR parent_cur
5173
      CURSOR parent_cur
12788
      IS
5174
      IS
12789
         SELECT pv.*, pkg.pkg_name
5175
         SELECT pv.*, pkg.pkg_name
12790
           FROM package_versions pv, PACKAGES pkg
5176
           FROM package_versions pv, PACKAGES pkg
12791
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
5177
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
12792
 
5178
 
12793
      parent_rec           parent_cur%ROWTYPE;
5179
      parent_rec parent_cur%ROWTYPE;
12794
 
5180
 
12795
      CURSOR patch_cur
5181
      CURSOR patch_cur
12796
      IS
5182
      IS
12797
         SELECT pv.*, pg.pkg_name
5183
         SELECT pv.*, pg.pkg_name
12798
           FROM package_versions pv, PACKAGES pg
5184
           FROM package_versions pv, PACKAGES pg
12799
          WHERE pv.pkg_id = parpkg_id
5185
          WHERE pv.pkg_id = parpkg_id
12800
            AND pv.pkg_version = snewpatchversion
5186
            AND pv.pkg_version = snewpatchversion
12801
            AND pv.pkg_id = pg.pkg_id;
5187
            AND pv.pkg_id = pg.pkg_id;
12802
 
5188
 
12803
      patch_rec            patch_cur%ROWTYPE;
5189
      patch_rec  patch_cur%ROWTYPE;
12804
 
5190
 
12805
      CURSOR releases_cur
5191
      CURSOR releases_cur
12806
      IS
5192
      IS
12807
         SELECT rc.pv_id
5193
         SELECT rc.pv_id
12808
           FROM release_content rc
5194
           FROM release_content rc
12809
          WHERE rc.pv_id = patch_rec.pv_id;
5195
          WHERE rc.pv_id = patch_rec.pv_id;
12810
 
5196
 
12811
      releases_rec         releases_cur%ROWTYPE;
5197
      releases_rec releases_cur%ROWTYPE;
12812
   BEGIN
5198
   BEGIN
12813
      -- Get Last Install Order
5199
      -- Get Last Install Order
12814
      SELECT COUNT (*)
5200
      SELECT COUNT (*)
12815
        INTO lastinstallorder
5201
        INTO lastinstallorder
12816
        FROM package_patches pp
5202
        FROM package_patches pp
Line 12849... Line 5235...
12849
                         dlocked, created_stamp, creator_id,
5235
                         dlocked, created_stamp, creator_id,
12850
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
5236
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
12851
                         src_path,
5237
                         src_path,
12852
                         pv_description,
5238
                         pv_description,
12853
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
5239
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
12854
						 is_autobuildable
5240
                         is_autobuildable, ripple_field
12855
                        )
5241
                        )
12856
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
5242
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
12857
                         ispatchdlocked, ora_sysdate, nuserid,
5243
                         ispatchdlocked, ora_sysdate, nuserid,
12858
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
5244
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
12859
                         parent_rec.src_path,
5245
                         parent_rec.src_path,
12860
                            'This is a patch to '
5246
                            'This is a patch to '
12861
                         || parent_rec.pkg_name
5247
                         || parent_rec.pkg_name
12862
                         || ' '
5248
                         || ' '
12863
                         || parent_rec.pkg_version,
5249
                         || parent_rec.pkg_version,
12864
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N'
5250
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
12865
                        );
5251
                        );
12866
 
5252
 
12867
            INSERT INTO package_patches
5253
            INSERT INTO package_patches
12868
                        (pv_id, patch_id, install_order)
5254
                        (pv_id, patch_id, install_order)
12869
               (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
5255
                (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
12870
                       lastinstallorder + 1 AS install_order
5256
                        lastinstallorder + 1 AS install_order
12871
                  FROM package_versions pv
5257
                   FROM package_versions pv
12872
                 WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
5258
                  WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
12873
 
5259
 
12874
            /* LOG ACTION */
5260
            /* LOG ACTION */
12875
            log_action (patchpv_id,
5261
            log_action (patchpv_id,
12876
                        'new_version',
5262
                        'new_version',
12877
                        nuserid,
5263
                        nuserid,
Line 12899... Line 5285...
12899
                  SET is_patch = 'Y'
5285
                  SET is_patch = 'Y'
12900
                WHERE pv_id = patchpv_id;
5286
                WHERE pv_id = patchpv_id;
12901
 
5287
 
12902
               INSERT INTO package_patches
5288
               INSERT INTO package_patches
12903
                           (pv_id, patch_id, install_order)
5289
                           (pv_id, patch_id, install_order)
12904
                  (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
5290
                   (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
12905
                          lastinstallorder + 1 AS install_order
5291
                           lastinstallorder + 1 AS install_order
12906
                     FROM package_versions pv
5292
                      FROM package_versions pv
12907
                    WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
5293
                     WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
12908
            END IF;
5294
            END IF;
12909
 
5295
 
12910
            CLOSE releases_cur;
5296
            CLOSE releases_cur;
12911
 
5297
 
12912
            /* LOG ACTION */
5298
            /* LOG ACTION */
Line 12930... Line 5316...
12930
               WHERE dep.pv_id = patchpv_id;
5316
               WHERE dep.pv_id = patchpv_id;
12931
 
5317
 
12932
         -- Insert new dependencies
5318
         -- Insert new dependencies
12933
         INSERT INTO package_dependencies
5319
         INSERT INTO package_dependencies
12934
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
5320
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
12935
            SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
5321
              SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
12936
                   parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
5322
                     parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
12937
                   'L' AS build_type
5323
                     'L' AS build_type
12938
              FROM package_versions pv
5324
                FROM package_versions pv
12939
             WHERE pv.pv_id IN (
5325
               WHERE pv.pv_id IN (
12940
                      SELECT *
5326
                      SELECT *
12941
                        FROM TABLE
5327
                        FROM TABLE
12942
                                (CAST
5328
                                (CAST
12943
                                    (opatchdepcollector AS relmgr_number_tab_t)
5329
                                    (opatchdepcollector AS relmgr_number_tab_t)
12944
                                ));
5330
                                ));
Line 12995... Line 5381...
12995
                     SELECT DISTINCT dep.PV_ID
5381
                     SELECT DISTINCT dep.PV_ID
12996
                       FROM PACKAGE_DEPENDENCIES dep
5382
                       FROM PACKAGE_DEPENDENCIES dep
12997
                      WHERE dep.DPV_ID = PatchId
5383
                      WHERE dep.DPV_ID = PatchId
12998
                     );
5384
                     );
12999
 
5385
 
13000
         */
5386
      */
13001
 
5387
 
13002
      /* LOG ACTION */
5388
      /* LOG ACTION */
13003
      IF isobsolete IS NOT NULL
5389
      IF isobsolete IS NOT NULL
13004
      THEN
5390
      THEN
13005
         log_action (patchid,
5391
         log_action (patchid,
Line 13045... Line 5431...
13045
                          (SELECT CAST
5431
                          (SELECT CAST
13046
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
5432
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
13047
                                     )
5433
                                     )
13048
                             FROM DUAL
5434
                             FROM DUAL
13049
                          ));
5435
                          ));
13050
   /*
5436
      /*
13051
   -- Update patch children
5437
      -- Update patch children
13052
   UPDATE PACKAGE_VERSIONS pv SET
5438
      UPDATE PACKAGE_VERSIONS pv SET
13053
   pv.IS_OBSOLETE = IsObsolete,
5439
      pv.IS_OBSOLETE = IsObsolete,
13054
   pv.OBSOLETE_COMMENTS = ObsoleteComments
5440
      pv.OBSOLETE_COMMENTS = ObsoleteComments
13055
   WHERE pv.PV_ID IN (
5441
      WHERE pv.PV_ID IN (
13056
                  SELECT DISTINCT dep.DPV_ID
5442
                     SELECT DISTINCT dep.DPV_ID
13057
                    FROM PACKAGE_DEPENDENCIES dep
5443
                       FROM PACKAGE_DEPENDENCIES dep
13058
                   WHERE dep.PV_ID = PatchId
5444
                      WHERE dep.PV_ID = PatchId
13059
                  );
5445
                     );
13060
 
5446
 
13061
 
5447
 
13062
   -- Update patch parent
5448
      -- Update patch parent
13063
   UPDATE PACKAGE_VERSIONS pv SET
5449
      UPDATE PACKAGE_VERSIONS pv SET
13064
   pv.IS_OBSOLETE = IsObsolete,
5450
      pv.IS_OBSOLETE = IsObsolete,
13065
   pv.OBSOLETE_COMMENTS = ObsoleteComments
5451
      pv.OBSOLETE_COMMENTS = ObsoleteComments
13066
   WHERE pv.PV_ID IN (
5452
      WHERE pv.PV_ID IN (
13067
                  SELECT DISTINCT dep.PV_ID
5453
                     SELECT DISTINCT dep.PV_ID
13068
                    FROM PACKAGE_DEPENDENCIES dep
5454
                       FROM PACKAGE_DEPENDENCIES dep
13069
                   WHERE dep.DPV_ID = PatchId
5455
                      WHERE dep.DPV_ID = PatchId
13070
                  );
5456
                     );
13071
 
5457
 
13072
      */
5458
      */
13073
 
5459
 
13074
   /* LOG ACTION
5460
      /* LOG ACTION
13075
   IF IsObsolete IS NOT NULL THEN
5461
      IF IsObsolete IS NOT NULL THEN
13076
         Log_Action ( PatchId, 'patch_obsolete', UserId,
5462
         Log_Action ( PatchId, 'patch_obsolete', UserId,
13077
                  'Obsolete patch. '|| ObsoleteComments );
5463
                     'Obsolete patch. '|| ObsoleteComments );
13078
   ELSE
5464
      ELSE
13079
      Log_Action ( PatchId, 'patch_obsolete', UserId,
5465
         Log_Action ( PatchId, 'patch_obsolete', UserId,
13080
                  'Undo patch obsolete.' );
5466
                     'Undo patch obsolete.' );
13081
   END IF;  */
5467
      END IF;  */
13082
   END;
5468
   END;
13083
 
5469
 
13084
/*-------------------------------------------------------------------------------------------------------*/
5470
/*-------------------------------------------------------------------------------------------------------*/
13085
   PROCEDURE add_process (
5471
   PROCEDURE add_process (
13086
      nprocid         IN   processes.proc_id%TYPE,
5472
      nprocid         IN   processes.proc_id%TYPE,
Line 13092... Line 5478...
13092
      npvid           IN   package_processes.pv_id%TYPE,
5478
      npvid           IN   package_processes.pv_id%TYPE,
13093
      nuserid         IN   NUMBER
5479
      nuserid         IN   NUMBER
13094
   )
5480
   )
13095
   IS
5481
   IS
13096
      pkgname   VARCHAR2 (100);
5482
      pkgname   VARCHAR2 (100);
13097
/*Rupesh Release on 17/05/2006*/
-
 
-
 
5483
 
13098
   BEGIN
5484
   BEGIN
13099
      INSERT INTO processes
5485
      INSERT INTO processes
13100
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
5486
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
13101
                   is_interface
5487
                   is_interface
13102
                  )
5488
                  )
Line 13114... Line 5500...
13114
      nuserid       IN   NUMBER
5500
      nuserid       IN   NUMBER
13115
   )
5501
   )
13116
   IS
5502
   IS
13117
      processname   VARCHAR2 (4000);
5503
      processname   VARCHAR2 (4000);
13118
 
5504
 
13119
/*Rupesh Release on 17/05/2006*/
-
 
13120
      CURSOR proc_cur
5505
      CURSOR proc_cur
13121
      IS
5506
      IS
13122
         SELECT prc.proc_id
5507
         SELECT prc.proc_id
13123
           FROM processes prc
5508
           FROM processes prc
13124
          WHERE prc.proc_id IN (
5509
          WHERE prc.proc_id IN (
Line 13128... Line 5513...
13128
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
5513
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
13129
                                        )
5514
                                        )
13130
                                FROM DUAL
5515
                                FROM DUAL
13131
                             ));
5516
                             ));
13132
 
5517
 
13133
      proc_rec      proc_cur%ROWTYPE;
5518
      proc_rec  proc_cur%ROWTYPE;
13134
   BEGIN
5519
   BEGIN
13135
      OPEN proc_cur;
5520
      OPEN proc_cur;
13136
 
5521
 
13137
      FETCH proc_cur
5522
      FETCH proc_cur
13138
       INTO proc_rec;
5523
       INTO proc_rec;
13139
 
5524
 
13140
      WHILE proc_cur%FOUND
5525
      WHILE proc_cur%FOUND
13141
      LOOP
5526
      LOOP
13142
         INSERT INTO package_processes
5527
         INSERT INTO package_processes (proc_id, pv_id)
13143
                     (proc_id, pv_id
-
 
13144
                     )
-
 
13145
              VALUES (proc_rec.proc_id, npvid
5528
              VALUES (proc_rec.proc_id, npvid);
13146
                     );
-
 
13147
 
5529
 
13148
         SELECT prc.proc_name
5530
         SELECT prc.proc_name
13149
           INTO processname
5531
           INTO processname
13150
           FROM processes prc
5532
           FROM processes prc
13151
          WHERE prc.proc_id = proc_rec.proc_id;
5533
          WHERE prc.proc_id = proc_rec.proc_id;
Line 13158... Line 5540...
13158
                    );
5540
                    );
13159
 
5541
 
13160
         FETCH proc_cur
5542
         FETCH proc_cur
13161
          INTO proc_rec;
5543
          INTO proc_rec;
13162
      END LOOP;
5544
      END LOOP;
-
 
5545
 
-
 
5546
      CLOSE proc_cur;
13163
   END;
5547
   END;
13164
 
5548
 
13165
/*-------------------------------------------------------------------------------------------------------*/
5549
/*-------------------------------------------------------------------------------------------------------*/
13166
   PROCEDURE remove_process (
5550
   PROCEDURE remove_process (
13167
      nprocid   IN   package_processes.proc_id%TYPE,
5551
      nprocid   IN   package_processes.proc_id%TYPE,
13168
      npvid     IN   package_processes.pv_id%TYPE,
5552
      npvid     IN   package_processes.pv_id%TYPE,
13169
      nuserid   IN   NUMBER
5553
      nuserid   IN   NUMBER
13170
   )
5554
   )
13171
   IS
5555
   IS
13172
      processname   VARCHAR2 (4000);
5556
      processname   VARCHAR2 (4000);
13173
/* Rupesh Release on 17/05/2006*/
-
 
13174
   BEGIN
5557
   BEGIN
13175
      SELECT prc.proc_name
5558
      SELECT prc.proc_name
13176
        INTO processname
5559
        INTO processname
13177
        FROM processes prc
5560
        FROM processes prc
13178
       WHERE prc.proc_id = nprocid;
5561
       WHERE prc.proc_id = nprocid;
Line 13186... Line 5569...
13186
                  nuserid,
5569
                  nuserid,
13187
                  'Removed process with health tag ' || processname
5570
                  'Removed process with health tag ' || processname
13188
                 );
5571
                 );
13189
   END;
5572
   END;
13190
/*-------------------------------------------------------------------------------------------------------*/
5573
/*-------------------------------------------------------------------------------------------------------*/
13191
  /* 
5574
   /*
13192
  Author: Rupesh Solanki
5575
   ** Author: Rupesh Solanki
13193
  Purpose: To move package versions from one release to another
5576
   ** Purpose: To move package versions from one release to another
13194
  Release: 4th September 2006 
5577
   ** Release: 4th September 2006
13195
  
-
 
13196
  */
5578
   */
13197
  PROCEDURE move_package (
5579
   PROCEDURE move_package (
13198
   	  npvid  			  IN package_versions.pv_id%TYPE,
5580
      npvid        IN package_versions.pv_id%TYPE,
13199
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
5581
      nrtagid      IN release_tags.rtag_id%TYPE,
13200
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
5582
      nnewrtagid   IN release_tags.rtag_id%TYPE,
13201
	  nuserid			  IN NUMBER	
5583
      nuserid      IN NUMBER
13202
  )	
5584
   )
13203
  IS	
5585
   IS
13204
  
5586
 
13205
  oldrtag_name VARCHAR2(4000);
5587
      oldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);
-
 
5588
 
-
 
5589
   BEGIN
-
 
5590
      SELECT rtag_name into oldrtag_name
-
 
5591
      FROM RELEASE_TAGS
-
 
5592
      WHERE rtag_id = nrtagid;
-
 
5593
 
13206
  newrtag_name VARCHAR2(4000);
5594
      SELECT rtag_name into newrtag_name
-
 
5595
      FROM RELEASE_TAGS
-
 
5596
      WHERE rtag_id = nnewrtagid;
-
 
5597
 
-
 
5598
      /* Table Work In Progress*/
-
 
5599
      UPDATE WORK_IN_PROGRESS
-
 
5600
      SET RTAG_ID = nnewrtagid
-
 
5601
      WHERE RTAG_ID = nrtagid
-
 
5602
      AND PV_ID = npvid;
-
 
5603
 
-
 
5604
      /* Table PLANNED*/
-
 
5605
      UPDATE PLANNED
-
 
5606
      SET RTAG_ID = nnewrtagid
-
 
5607
      WHERE RTAG_ID = nrtagid
-
 
5608
      AND PV_ID = npvid;
-
 
5609
 
-
 
5610
      /* Table PEGGED_VERSIONS */
-
 
5611
      DELETE FROM PEGGED_VERSIONS pegv
-
 
5612
      WHERE pegv.RTAG_ID = nrtagid
-
 
5613
      AND pegv.PV_ID = npvid;
-
 
5614
 
-
 
5615
      /* Table ADVISORY_RIPPLE*/
-
 
5616
      DELETE FROM ADVISORY_RIPPLE
-
 
5617
      WHERE RTAG_ID = nrtagid
-
 
5618
      AND PV_ID = npvid;
-
 
5619
 
13207
 
5620
 
13208
   
-
 
13209
    
-
 
13210
  BEGIN
-
 
13211
  
-
 
13212
  
-
 
13213
  SELECT rtag_name into oldrtag_name
-
 
13214
  FROM RELEASE_TAGS
-
 
13215
  WHERE rtag_id = nrtagid;
-
 
13216
  
-
 
13217
  SELECT rtag_name into newrtag_name
-
 
13218
  FROM RELEASE_TAGS
-
 
13219
  WHERE rtag_id = nnewrtagid;
-
 
13220
  
-
 
13221
  /* Table Work In Progress*/
-
 
13222
  	   UPDATE WORK_IN_PROGRESS
-
 
13223
	   SET RTAG_ID = nnewrtagid
-
 
13224
	   WHERE RTAG_ID = nrtagid
-
 
13225
	   AND PV_ID = npvid;
-
 
13226
	   
-
 
13227
  /* Table PLANNED*/	
-
 
13228
  	   UPDATE PLANNED
-
 
13229
	   SET RTAG_ID = nnewrtagid
-
 
13230
	   WHERE RTAG_ID = nrtagid
-
 
13231
	   AND PV_ID = npvid;   
-
 
13232
	   
-
 
13233
      -- Log Action --
5621
      -- Log Action --
13234
      log_action (npvid,
5622
      log_action (npvid,
13235
                  'move_package_version',
5623
                  'move_package_version',
13236
                  nuserid,
5624
                  nuserid,
13237
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
5625
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
13238
                 );  	   	     
5626
                 );
13239
  
5627
   END;
13240
  
5628
 
13241
  END;
-
 
13242
  																							   																										   
-
 
13243
/*-------------------------------------------------------------------------------------------------------*/
5629
/*-------------------------------------------------------------------------------------------------------*/
-
 
5630
   /*
-
 
5631
   ** Author: Rupesh Solanki
-
 
5632
   ** Purpose: To modify the product state from integration to test to deployment
-
 
5633
   ** Release: 25th January 2006
-
 
5634
   */
13244
PROCEDURE modify_product_state (
5635
   PROCEDURE modify_product_state (
13245
   	  npvid IN package_versions.pv_id%TYPE,
5636
      npvid    IN package_versions.pv_id%TYPE,
-
 
5637
      nrtagid  IN release_tags.rtag_id%TYPE,
13246
	  nstateid IN product_states.state_id%TYPE,
5638
      nstateid IN product_states.state_id%TYPE,
13247
	  nuserid IN NUMBER
5639
      nuserid  IN NUMBER
13248
   ) IS
5640
   ) IS
13249
   
5641
 
13250
   sStateName VARCHAR(4000);
5642
      sStateName VARCHAR2(4000);
13251
   
-
 
13252
  /* 
-
 
13253
  Author: Rupesh Solanki
-
 
13254
  Purpose: To modify the product state from integration to test to deployment
-
 
13255
  Release: 25th January 2006 
5643
      sRtagName VARCHAR2(4000);
13256
  */   
-
 
13257
   
5644
 
13258
  BEGIN
5645
   BEGIN
13259
  
5646
 
13260
  UPDATE PACKAGE_VERSIONS
5647
      UPDATE RELEASE_CONTENT
13261
  SET PRODUCT_STATE = nstateid
5648
      SET PRODUCT_STATE = nstateid
13262
  WHERE PV_ID = npvid;
5649
      WHERE PV_ID = npvid
-
 
5650
      AND RTAG_ID = nrtagid;
13263
  
5651
 
13264
  
5652
 
13265
  SELECT STATE INTO sStateName
5653
      SELECT STATE INTO sStateName
13266
  FROM PRODUCT_STATES 
5654
      FROM PRODUCT_STATES
13267
  WHERE STATE_ID = nstateid;
5655
      WHERE STATE_ID = nstateid;
-
 
5656
 
-
 
5657
      SELECT RTAG_NAME into sRtagName
-
 
5658
      FROM RELEASE_TAGS
-
 
5659
      WHERE RTAG_ID = nrtagid;
-
 
5660
 
13268
  
5661
 
13269
  -- Log Action --
5662
      -- Log Action --
13270
  log_action (npvid,
5663
      log_action (npvid,
13271
              'modify_product_state',
5664
                  'modify_product_state',
13272
               nuserid,
5665
                     nuserid,
13273
               sStateName
5666
                     sStateName || ' in '|| sRtagName
13274
              );  
5667
                  );
-
 
5668
   END;
-
 
5669
/*-------------------------------------------------------------------------------------------------------*/
-
 
5670
   /*
-
 
5671
   ** Author: Jeremy Tweddle
-
 
5672
   ** Date: 24/Aug/2007
-
 
5673
   */
-
 
5674
   PROCEDURE add_code_review_url (
-
 
5675
      npvid           IN    NUMBER,
-
 
5676
      nprojid         IN    NUMBER,
-
 
5677
      surl            IN    VARCHAR2,
-
 
5678
      sreason         IN    VARCHAR2,
-
 
5679
      ddateofreview   IN    DATE
-
 
5680
   ) IS
-
 
5681
 
-
 
5682
      ncrid NUMBER;
-
 
5683
 
-
 
5684
   BEGIN
-
 
5685
 
-
 
5686
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
-
 
5687
 
-
 
5688
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
-
 
5689
                                    last_modified )
-
 
5690
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
-
 
5691
 
-
 
5692
   END;
-
 
5693
/*-------------------------------------------------------------------------------------------------------*/
-
 
5694
   /*
-
 
5695
   ** Author: Jeremy Tweddle
-
 
5696
   ** Date: 22/Aug/2007
-
 
5697
   */
-
 
5698
   PROCEDURE update_code_review_url (
-
 
5699
      ncrid           IN    NUMBER,
-
 
5700
      nprojid         IN    NUMBER,
-
 
5701
      surl            IN    VARCHAR2,
-
 
5702
      sreason         IN    VARCHAR2
-
 
5703
   ) IS
-
 
5704
 
-
 
5705
   BEGIN
-
 
5706
 
-
 
5707
      UPDATE code_review_url
-
 
5708
      SET url = surl,
-
 
5709
          proj_id = nprojid,
-
 
5710
          reason = sreason,
-
 
5711
          last_modified = ora_sysdate
-
 
5712
      WHERE cr_id = ncrid;
-
 
5713
 
-
 
5714
   END;
-
 
5715
/*-------------------------------------------------------------------------------------------------------*/
13275
			  
5716
   /*
-
 
5717
   ** Author: Jeremy Tweddle
-
 
5718
   ** Date: 22/Aug/2007
13276
			  
5719
   */
-
 
5720
   PROCEDURE remove_code_review_url (
13277
  END;			  	   	     
5721
      ncrid  IN    NUMBER
-
 
5722
   ) IS
-
 
5723
 
-
 
5724
   BEGIN
-
 
5725
      DELETE FROM code_review_url
-
 
5726
      WHERE cr_id = ncrid;
-
 
5727
   END;
13278
/*-------------------------------------------------------------------------------------------------------*/   
5728
/*-------------------------------------------------------------------------------------------------------*/
13279
END pk_package_Test;
5729
END pk_package;
13280
/
5730
/
13281
--------------------------------------------------------
5731
--------------------------------------------------------
13282
--  DDL for Package Body PK_ENVIRONMENT_TEST
5732
--  DDL for Package Body PK_PLANNED
13283
--------------------------------------------------------
5733
--------------------------------------------------------
13284
 
5734
 
13285
  CREATE OR REPLACE PACKAGE BODY "PK_ENVIRONMENT_TEST" 
5735
  CREATE OR REPLACE PACKAGE BODY "PK_PLANNED" IS
13286
IS
5736
 
13287
/*
5737
/*
13288
------------------------------
5738
------------------------------
13289
||  Last Modified:  Rupesh Solanki
5739
||  Last Modified:  G.Huddy
13290
||  Modified Date:  29/Jan/2007
5740
||  Modified Date:  05/Aug/2008
13291
||  Body Version:   1.1
5741
||  Body Version:   1.2
13292
------------------------------
5742
------------------------------
13293
*/
5743
*/
13294
 
5744
 
-
 
5745
 
-
 
5746
/*-------------------------------------------------------------------------------------------------------*/
-
 
5747
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
5748
 
-
 
5749
    oldPvId NUMBER;
-
 
5750
    ReleaseLocation VARCHAR2(4000);
-
 
5751
    IsPatch CHAR(1) := NULL;
-
 
5752
    sLocation VARCHAR2(4000) := NULL;
-
 
5753
    nRtagIdLocation NUMBER;
-
 
5754
 
-
 
5755
 
-
 
5756
 
-
 
5757
BEGIN
-
 
5758
    /*--------------- Business Rules Here -------------------*/
-
 
5759
    /*-------------------------------------------------------*/
-
 
5760
 
-
 
5761
    BEGIN
-
 
5762
        -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
-
 
5763
        SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
-
 
5764
          FROM PLANNED pl,
-
 
5765
               RELEASE_TAGS rt,
-
 
5766
               PROJECTS proj
-
 
5767
         WHERE pl.PV_ID = newPvId
-
 
5768
           AND pl.RTAG_ID = rt.RTAG_ID
-
 
5769
           AND rt.OFFICIAL != 'Y'
-
 
5770
           AND rt.PROJ_ID = proj.PROJ_ID;
-
 
5771
 
-
 
5772
        EXCEPTION
-
 
5773
            WHEN NO_DATA_FOUND THEN
-
 
5774
                sLocation := NULL;
-
 
5775
    END;
-
 
5776
 
-
 
5777
 
-
 
5778
 
-
 
5779
    IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
-
 
5780
 
-
 
5781
        -- Add to "Pending" area
-
 
5782
        INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
-
 
5783
        VALUES( RtagId, newPvId, ViewId, 'R' );
-
 
5784
 
-
 
5785
 
-
 
5786
        /* LOG ACTION */
-
 
5787
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
5788
          FROM PROJECTS proj,
-
 
5789
               RELEASE_TAGS rt
-
 
5790
         WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
5791
           AND rt.RTAG_ID = RtagId;
-
 
5792
 
-
 
5793
        Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
-
 
5794
 
-
 
5795
    ELSE
-
 
5796
 
-
 
5797
        RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
-
 
5798
 
-
 
5799
    END IF;
-
 
5800
 
-
 
5801
END;
-
 
5802
/*-------------------------------------------------------------------------------------------------------*/
-
 
5803
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
5804
 
-
 
5805
    ReleaseLocation VARCHAR2(4000);
-
 
5806
 
-
 
5807
BEGIN
-
 
5808
 
-
 
5809
    /*--------------- Business Rules Here -------------------*/
-
 
5810
    /*-------------------------------------------------------*/
-
 
5811
 
-
 
5812
 
-
 
5813
    -- Get release location for logging pusposes
-
 
5814
    SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
5815
      FROM PROJECTS proj,
-
 
5816
           RELEASE_TAGS rt
-
 
5817
     WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
5818
       AND rt.RTAG_ID = RtagId;
-
 
5819
 
-
 
5820
 
-
 
5821
    -- Delete from Work In Progress
-
 
5822
    DELETE
-
 
5823
      FROM PLANNED pl
-
 
5824
     WHERE pl.RTAG_ID = RtagId
-
 
5825
       AND pl.PV_ID = PvId;
-
 
5826
 
-
 
5827
    Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
-
 
5828
 
-
 
5829
 
-
 
5830
 
-
 
5831
 
-
 
5832
END;
-
 
5833
/*-------------------------------------------------------------------------------------------------------*/
-
 
5834
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
-
 
5835
 
-
 
5836
    ReturnValue NUMBER;
-
 
5837
 
-
 
5838
BEGIN
-
 
5839
    SELECT pl.VIEW_ID INTO ReturnValue
-
 
5840
      FROM PLANNED pl
-
 
5841
     WHERE pl.RTAG_ID = RtagId
-
 
5842
       AND pl.PV_ID = PvId;
-
 
5843
 
-
 
5844
    RETURN ReturnValue;
-
 
5845
END;
-
 
5846
/*-------------------------------------------------------------------------------------------------------*/
-
 
5847
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
-
 
5848
 
-
 
5849
    IsBaseView CHAR(1);
-
 
5850
 
-
 
5851
BEGIN
-
 
5852
 
-
 
5853
    -- Check if the view is BASE VIEW
-
 
5854
    SELECT vi.BASE_VIEW INTO IsBaseView
-
 
5855
      FROM VIEWS vi
-
 
5856
     WHERE vi.VIEW_ID = ViewId;
-
 
5857
 
-
 
5858
 
-
 
5859
    IF (IsBaseView = 'Y') THEN
-
 
5860
        -- Get Base view content
-
 
5861
        OPEN RecordSet FOR
-
 
5862
        SELECT 0 AS PKG_STATE,
-
 
5863
               NULL AS DEPRECATED_STATE,
-
 
5864
               pv.pv_id,
-
 
5865
               pkg.pkg_name,
-
 
5866
               pv.pkg_version,
-
 
5867
               pv.dlocked,
-
 
5868
               pv.pv_description,
-
 
5869
               pv.BUILD_TYPE,
-
 
5870
               rel.operation
-
 
5871
          FROM PLANNED rel,
-
 
5872
               packages pkg,
-
 
5873
               package_versions pv
-
 
5874
         WHERE pv.pkg_id = pkg.pkg_id
-
 
5875
           AND rel.pv_id = pv.pv_id
-
 
5876
           AND rel.VIEW_ID = ViewId
-
 
5877
           AND rel.RTAG_ID = RtagId
-
 
5878
         ORDER BY UPPER(pkg.PKG_NAME);
-
 
5879
 
-
 
5880
    ELSE
-
 
5881
 
-
 
5882
        -- Get non base view content
-
 
5883
        OPEN RecordSet FOR
-
 
5884
        SELECT 0 AS PKG_STATE,
-
 
5885
               NULL AS DEPRECATED_STATE,
-
 
5886
               pv.pv_id,
-
 
5887
               pkg.pkg_name,
-
 
5888
               pv.pkg_version,
-
 
5889
               pv.dlocked,
-
 
5890
               pv.pv_description,
-
 
5891
               pv.BUILD_TYPE,
-
 
5892
               rel.operation
-
 
5893
          FROM PLANNED rel,
-
 
5894
               packages pkg,
-
 
5895
               package_versions pv,
-
 
5896
               VIEW_DEF vd
-
 
5897
         WHERE pv.pkg_id = pkg.pkg_id
-
 
5898
           AND rel.pv_id = pv.pv_id
-
 
5899
           AND rel.RTAG_ID = RtagId
-
 
5900
           AND vd.VIEW_ID = ViewId
-
 
5901
           AND vd.PKG_ID = pv.PKG_ID
-
 
5902
         ORDER BY UPPER(pkg.PKG_NAME);
-
 
5903
 
-
 
5904
    END IF;
-
 
5905
 
-
 
5906
 
-
 
5907
END;
-
 
5908
/*-------------------------------------------------------------------------------------------------------*/
-
 
5909
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
-
 
5910
 
-
 
5911
BEGIN
-
 
5912
 
-
 
5913
    UPDATE PLANNED pl SET
-
 
5914
    pl.VIEW_ID = NewViewId
-
 
5915
    WHERE pl.PV_ID = PvId
-
 
5916
      AND pl.RTAG_ID = RtagId;
-
 
5917
 
-
 
5918
END;
-
 
5919
/*-------------------------------------------------------------------------------------------------------*/
-
 
5920
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
-
 
5921
-- version of a package as part of a release-to-release merge operation carried out within release manager.
-
 
5922
-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its
-
 
5923
-- opposite operation, if the opposite already exists in the planned table. This supports user activity
-
 
5924
-- via the Release Manager merge manager display
-
 
5925
 
-
 
5926
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
-
 
5927
 
-
 
5928
    ReleaseLocation VARCHAR2(4000);
-
 
5929
 
-
 
5930
        entryExists NUMBER;
-
 
5931
        existingOperation CHAR;
-
 
5932
BEGIN
-
 
5933
    /*--------------- Business Rules Here -------------------*/
-
 
5934
    /*-------------------------------------------------------*/
-
 
5935
 
-
 
5936
      -- Determine if the specified PV_ID already exists in the planned table....
-
 
5937
      SELECT COUNT (pl.pv_id) INTO entryExists
-
 
5938
      FROM PLANNED pl
-
 
5939
      WHERE pl.pv_id = newPvId
-
 
5940
      AND pl.rtag_id = RtagId
-
 
5941
      AND pl.view_id = ViewId;
-
 
5942
 
-
 
5943
      -- If the specified PV_ID already exists in the planned table....
-
 
5944
      IF entryExists = 1 THEN
-
 
5945
 
-
 
5946
         -- Get the operation for the existing entry
-
 
5947
         SELECT pl.operation INTO existingOperation
-
 
5948
         FROM PLANNED pl
-
 
5949
         WHERE pl.pv_id = newPvId
-
 
5950
         AND pl.rtag_id = RtagId
-
 
5951
         AND pl.view_id = ViewId;
-
 
5952
 
-
 
5953
         -- Is the specified merge operation the opposite of the existing entry?
-
 
5954
         -- If it is not, then there is nothing to do, otherwise...
-
 
5955
         -- NOTE: A = Add, S = Subtract
-
 
5956
         IF (mergeOperation = 'S' AND existingOperation = 'A')
-
 
5957
            OR (mergeOperation = 'A' AND existingOperation = 'S') THEN
-
 
5958
 
-
 
5959
           -- It is the opposite, so effectively it cancels the existing entry
-
 
5960
           -- Remove the entry from the planned table
-
 
5961
           DELETE
-
 
5962
            FROM PLANNED pl
-
 
5963
           WHERE pl.pv_id = newPvId
-
 
5964
             AND pl.rtag_id = RtagId
-
 
5965
             AND pl.view_id = ViewId;
-
 
5966
 
-
 
5967
           -- Log action
-
 
5968
           SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
5969
             FROM PROJECTS proj,
-
 
5970
                  RELEASE_TAGS rt
-
 
5971
            WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
5972
              AND rt.RTAG_ID = RtagId;
-
 
5973
 
-
 
5974
           Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
-
 
5975
         END IF;
-
 
5976
      ELSE
-
 
5977
         -- Add to Planned tabled
-
 
5978
         INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
-
 
5979
         VALUES( RtagId, newPvId, ViewId, mergeOperation );
-
 
5980
 
-
 
5981
         -- Log Action
-
 
5982
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
5983
          FROM PROJECTS proj,
-
 
5984
               RELEASE_TAGS rt
-
 
5985
         WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
5986
         AND   rt.RTAG_ID = RtagId;
-
 
5987
 
-
 
5988
         Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
-
 
5989
      END IF;
-
 
5990
 
-
 
5991
END;
-
 
5992
/*-------------------------------------------------------------------------------------------------------*/
-
 
5993
END PK_PLANNED;
-
 
5994
/
-
 
5995
--------------------------------------------------------
-
 
5996
--  DDL for Package Body PK_PROJECT
-
 
5997
--------------------------------------------------------
-
 
5998
 
-
 
5999
  CREATE OR REPLACE PACKAGE BODY "PK_PROJECT" IS
-
 
6000
 
-
 
6001
    /*------------------------------------------------------------------------*/
-
 
6002
    PROCEDURE update_base_url (
-
 
6003
    nprojid   IN  projects.proj_id%TYPE,
-
 
6004
    sbaseurl  IN  VARCHAR2
-
 
6005
    ) IS
-
 
6006
    BEGIN
-
 
6007
 
-
 
6008
    UPDATE projects
-
 
6009
    SET base_url = sbaseurl
-
 
6010
    WHERE proj_id = nprojid;
-
 
6011
 
-
 
6012
    END update_base_url;
-
 
6013
 
-
 
6014
/*------------------------------------------------------------------------*/
-
 
6015
    PROCEDURE update_project_config (
-
 
6016
    nprojid   IN  projects.proj_id%TYPE,
-
 
6017
    sbaseurl  IN  VARCHAR2,
-
 
6018
    sjirakey  IN  VARCHAR2
-
 
6019
    ) IS
-
 
6020
    BEGIN
-
 
6021
 
-
 
6022
    UPDATE projects
-
 
6023
    SET base_url = sbaseurl,
-
 
6024
        jira_key = sjirakey
-
 
6025
    WHERE proj_id = nprojid;
-
 
6026
 
-
 
6027
    END update_project_config;
-
 
6028
    /*------------------------------------------------------------------------*/
-
 
6029
 
-
 
6030
    END pk_project;
-
 
6031
/
-
 
6032
--------------------------------------------------------
-
 
6033
--  DDL for Package Body PK_RELEASE
-
 
6034
--------------------------------------------------------
-
 
6035
 
-
 
6036
  CREATE OR REPLACE PACKAGE BODY "PK_RELEASE" IS
-
 
6037
 
-
 
6038
/*-------------------------------------------------------------------------------------------------------*/
-
 
6039
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
-
 
6040
 
-
 
6041
RtagId NUMBER;
-
 
6042
ParentRtagId NUMBER;
-
 
6043
RecCount NUMBER := 0;
-
 
6044
VtreeId NUMBER;
-
 
6045
 
-
 
6046
BEGIN
-
 
6047
   /*--------------- Business Rules Here -------------------*/
-
 
6048
   -- Check for missing parameters
-
 
6049
   IF (sReleaseName IS NULL) OR (nUserId IS NULL)
-
 
6050
   THEN
-
 
6051
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
-
 
6052
 
-
 
6053
   END IF;
-
 
6054
 
-
 
6055
 
-
 
6056
   -- Check for duplicate Release Names
-
 
6057
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
-
 
6058
     FROM RELEASE_TAGS rt
-
 
6059
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
-
 
6060
      AND rt.PROJ_ID = nProjId;
-
 
6061
 
-
 
6062
   IF (RecCount > 0) THEN
-
 
6063
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
-
 
6064
   END IF;
-
 
6065
   /*-------------------------------------------------------*/
-
 
6066
 
-
 
6067
 
-
 
6068
   -- Get rtag_id
-
 
6069
   SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
-
 
6070
 
-
 
6071
   SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
-
 
6072
 
-
 
6073
 
-
 
6074
 
-
 
6075
   -- Get Parent RtagId
-
 
6076
   ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
-
 
6077
 
-
 
6078
   -- If the parent RTAG is NOT in this project then we cannot use it.
-
 
6079
   -- We must re-assign the parent to be the new release's RTAG_ID instead
-
 
6080
   -- else it will not show up in the projects release tree (DEVI-55480)
-
 
6081
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
-
 
6082
     FROM RELEASE_TAGS rt
-
 
6083
    WHERE rt.RTAG_ID = ParentRtagId
-
 
6084
      AND rt.PROJ_ID = nProjId;
-
 
6085
 
-
 
6086
   IF (RecCount = 0) THEN
-
 
6087
     ParentRtagId := RtagId;
-
 
6088
   END IF;
-
 
6089
 
-
 
6090
   -- Create new release
-
 
6091
   INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID,
-
 
6092
                        OFFICIAL, REBUILD_ENV, REBUILD_STAMP,
-
 
6093
                        PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
-
 
6094
   VALUES ( RtagId,
-
 
6095
          sReleaseName,
-
 
6096
          sReleaseComments,
-
 
6097
          ORA_SYSDATE,
-
 
6098
          nUserId,
-
 
6099
          'N',
-
 
6100
          'N',
-
 
6101
          0,
-
 
6102
          ParentRtagId,
-
 
6103
          nProjId,
-
 
6104
          VtreeId );
-
 
6105
 
-
 
6106
   -- If a source release is provided, clone its config spec branch information into the new release (DEVI-56650)
-
 
6107
   IF (NOT nSourceRtagId IS NULL)
-
 
6108
   THEN
-
 
6109
      UPDATE RELEASE_TAGS rtd
-
 
6110
      SET rtd.config_spec_branch = (SELECT rts.CONFIG_SPEC_BRANCH FROM RELEASE_TAGS rts WHERE rts.RTAG_ID = nSourceRtagId)
-
 
6111
      WHERE rtd.RTAG_ID = RtagId;
-
 
6112
   END IF;
-
 
6113
 
-
 
6114
   -- Update display Order
-
 
6115
   UPDATE_DISPLAY_ORDER ( nProjId );
-
 
6116
 
-
 
6117
   /* Log Project Action */
-
 
6118
   Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
-
 
6119
 
-
 
6120
 
-
 
6121
   -- Import Release Contents
-
 
6122
   IF (NOT nSourceRtagId IS NULL) THEN
-
 
6123
      Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
-
 
6124
   END IF;
-
 
6125
 
-
 
6126
END;
-
 
6127
/*-------------------------------------------------------------------------------------------------------*/
-
 
6128
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
-
 
6129
 
-
 
6130
 
-
 
6131
BEGIN
-
 
6132
 
-
 
6133
 
-
 
6134
   /*--------------- Business Rules Here -------------------*/
-
 
6135
   /*-------------------------------------------------------*/
-
 
6136
 
-
 
6137
   UPDATE RELEASE_TAGS urt SET
-
 
6138
   urt.DISPLAY_ORDER = (
-
 
6139
                  SELECT qry.REC_NUM
-
 
6140
                    FROM (
-
 
6141
                        SELECT rel.*, ROWNUM AS REC_NUM
-
 
6142
                          FROM (
-
 
6143
 
-
 
6144
                                SELECT rt.RTAG_ID,
-
 
6145
                                    rt.DISPLAY_ORDER,
-
 
6146
                                     DECODE( rt.PARENT_RTAG_ID,
-
 
6147
                                             rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
-
 
6148
                                FROM RELEASE_TAGS rt
-
 
6149
                               WHERE rt.PROJ_ID = nProjId
-
 
6150
 
-
 
6151
                                ) rel
-
 
6152
                        START WITH rel.PARENT_RTAG_ID = 0
-
 
6153
                        CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID
-
 
6154
                        ORDER SIBLINGS BY rel.DISPLAY_ORDER
-
 
6155
                        ) qry
-
 
6156
                     WHERE qry.RTAG_ID = urt.RTAG_ID
-
 
6157
                  )
-
 
6158
   WHERE urt.PROJ_ID = nProjId;
-
 
6159
 
-
 
6160
END;
-
 
6161
/*-------------------------------------------------------------------------------------------------------*/
-
 
6162
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
-
 
6163
 
-
 
6164
   nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
-
 
6165
   SeqNum NUMBER;
-
 
6166
 
-
 
6167
BEGIN
-
 
6168
 
-
 
6169
 
-
 
6170
   /*--------------- Business Rules Here -------------------*/
-
 
6171
   /*-------------------------------------------------------*/
-
 
6172
 
-
 
6173
   nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
-
 
6174
 
-
 
6175
   -- Set start sequence number
-
 
6176
   SeqNum := 1;
-
 
6177
 
-
 
6178
   FOR i IN 1..nIdCollector.COUNT
-
 
6179
   LOOP
-
 
6180
 
-
 
6181
      -- Update new display order
-
 
6182
      UPDATE RELEASE_TAGS rt SET
-
 
6183
         rt.DISPLAY_ORDER = SeqNum
-
 
6184
       WHERE rt.PROJ_ID = nProjId
-
 
6185
         AND rt.RTAG_ID = nIdCollector(i);
-
 
6186
 
-
 
6187
      SeqNum := SeqNum + 1;
-
 
6188
 
-
 
6189
   END LOOP;
-
 
6190
 
-
 
6191
END;
-
 
6192
/*-------------------------------------------------------------------------------------------------------*/
-
 
6193
PROCEDURE Update_Release ( nRtagId IN NUMBER, sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nParentRtagId IN NUMBER, nMASSRtagId IN NUMBER, nConfigSpecBranch IN VARCHAR2, sOwnerEmail IN VARCHAR2, nUserId IN NUMBER, cState IN VARCHAR ) IS
-
 
6194
 
-
 
6195
RecCount NUMBER := 0;
-
 
6196
ProjId NUMBER;
-
 
6197
 
-
 
6198
BEGIN
-
 
6199
 
-
 
6200
 
-
 
6201
   /*--------------- Business Rules Here -------------------*/
-
 
6202
   -- Check for missing parameters
-
 
6203
   IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
-
 
6204
   THEN
-
 
6205
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
-
 
6206
 
-
 
6207
   END IF;
-
 
6208
 
-
 
6209
 
-
 
6210
   -- Check for duplicate Release Names
-
 
6211
   SELECT rt.PROJ_ID INTO ProjId
-
 
6212
     FROM RELEASE_TAGS rt
-
 
6213
    WHERE rt.RTAG_ID = nRtagId;
-
 
6214
 
-
 
6215
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
-
 
6216
     FROM RELEASE_TAGS rt
-
 
6217
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
-
 
6218
      AND rt.RTAG_ID != nRtagId
-
 
6219
      AND rt.PROJ_ID = ProjId;
-
 
6220
 
-
 
6221
 
-
 
6222
   IF (RecCount > 0) THEN
-
 
6223
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
-
 
6224
   END IF;
-
 
6225
   /*-------------------------------------------------------*/
-
 
6226
 
-
 
6227
 
-
 
6228
 
-
 
6229
   -- Update release details
-
 
6230
   UPDATE RELEASE_TAGS rt SET
-
 
6231
   rt.RTAG_NAME = sReleaseName,
-
 
6232
   rt.DESCRIPTION = sReleaseComments,
-
 
6233
   rt.PARENT_RTAG_ID = nParentRtagId,
-
 
6234
   rt.ASSOC_MASS_REF = nMASSRtagId,
-
 
6235
   rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
-
 
6236
   rt.OWNER_EMAIL = sOwnerEmail,
-
 
6237
   rt.PRODUCT_STATE_USED = cState
-
 
6238
   WHERE rt.RTAG_ID = nRtagId;
-
 
6239
 
-
 
6240
   -- Update display Order
-
 
6241
   UPDATE_DISPLAY_ORDER ( ProjId );
-
 
6242
 
-
 
6243
   /* Log Project Action */
-
 
6244
   Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
-
 
6245
 
-
 
6246
 
-
 
6247
 
-
 
6248
 
-
 
6249
END;
-
 
6250
/*-------------------------------------------------------------------------------------------------------*/
-
 
6251
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
-
 
6252
 
-
 
6253
   RecCount NUMBER := 0;
-
 
6254
   sReleaseId VARCHAR2(4000);
-
 
6255
   ProjId NUMBER;
-
 
6256
 
-
 
6257
BEGIN
-
 
6258
   /*--------------- Business Rules Here -------------------*/
-
 
6259
   IF (nRtagId IS NULL)
-
 
6260
   THEN
-
 
6261
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
-
 
6262
   END IF;
-
 
6263
 
-
 
6264
 
-
 
6265
 
-
 
6266
   -- Check for any kids
-
 
6267
   SELECT COUNT( rt.RTAG_ID ) INTO RecCount
-
 
6268
     FROM RELEASE_TAGS rt
-
 
6269
    WHERE rt.PARENT_RTAG_ID = nRtagId
-
 
6270
      AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
-
 
6271
 
-
 
6272
   IF (RecCount > 0) THEN
-
 
6273
      RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
-
 
6274
   END IF;
-
 
6275
   /*-------------------------------------------------------*/
-
 
6276
 
-
 
6277
   -- Clear the release contents
-
 
6278
   Clean_Release_Contents ( nRtagId, nUserId );
-
 
6279
 
-
 
6280
   /* Log Project Action */
-
 
6281
   SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
-
 
6282
     FROM RELEASE_TAGS rt
-
 
6283
    WHERE rt.RTAG_ID = nRtagId;
-
 
6284
 
-
 
6285
   Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
-
 
6286
 
-
 
6287
 
-
 
6288
   -- Remove Release
-
 
6289
   DELETE
-
 
6290
     FROM RELEASE_TAGS rt
-
 
6291
    WHERE rt.RTAG_ID = nRtagId;
-
 
6292
 
-
 
6293
 
-
 
6294
 
-
 
6295
END;
-
 
6296
/*-------------------------------------------------------------------------------------------------------*/
-
 
6297
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
-
 
6298
 
-
 
6299
   sSourceLocation VARCHAR2(4000);
-
 
6300
   sTargetLocation VARCHAR2(4000);
-
 
6301
   ProjId NUMBER;
-
 
6302
   cReleaseMode CHAR(1);
-
 
6303
   RconId NUMBER;
-
 
6304
 
-
 
6305
   -- this cursor gets the source release daemon configurations, ensuring that the
-
 
6306
   -- first record will be the master daemon, and subsequent records will be the slaves.
-
 
6307
   CURSOR curSrcReleaseConfigs IS
-
 
6308
    SELECT daemon_hostname, gbe_id, gbe_buildfilter
-
 
6309
     FROM RELEASE_CONFIG rc
-
 
6310
    WHERE rc.RTAG_ID = nSourceRtagId
-
 
6311
    ORDER BY rc.daemon_mode;
-
 
6312
    recSrcReleaseConfigs curSrcReleaseConfigs%ROWTYPE;
-
 
6313
 
-
 
6314
    -- this cursor looks for target release daemons
-
 
6315
   CURSOR curTgtReleaseConfigs IS
-
 
6316
    SELECT rcon_id
-
 
6317
     FROM RELEASE_CONFIG rc
-
 
6318
    WHERE rc.RTAG_ID = nTargetRtagId;
-
 
6319
    recTgtReleaseConfigs curTgtReleaseConfigs%ROWTYPE;
-
 
6320
 
-
 
6321
    -- this cursor looks for target release daemon run level entries
-
 
6322
   CURSOR curTgtReleaseConfigRunLevel IS
-
 
6323
    SELECT current_run_level
-
 
6324
     FROM RUN_LEVEL rl
-
 
6325
    WHERE rl.RCON_ID = recTgtReleaseConfigs.rcon_id;
-
 
6326
    recTgtReleaseConfigRunLevel curTgtReleaseConfigRunLevel%ROWTYPE;
-
 
6327
 
-
 
6328
BEGIN
-
 
6329
   /*--------------- Business Rules Here -------------------*/
-
 
6330
   IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
-
 
6331
   THEN
-
 
6332
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
-
 
6333
   END IF;
-
 
6334
 
-
 
6335
   IF (nSourceRtagId = nTargetRtagId) THEN
-
 
6336
      RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
-
 
6337
   END IF;
-
 
6338
 
-
 
6339
 
-
 
6340
   -- Check if Target release is in OPEN mode
-
 
6341
   SELECT rt.OFFICIAL  INTO  cReleaseMode
-
 
6342
     FROM RELEASE_TAGS rt
-
 
6343
    WHERE rt.RTAG_ID = nTargetRtagId;
-
 
6344
 
-
 
6345
   IF (cReleaseMode != 'N') THEN
-
 
6346
      RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
-
 
6347
   END IF;
-
 
6348
 
-
 
6349
   -- check that the target release's daemons are all paused before we allow an import operation
-
 
6350
   OPEN curTgtReleaseConfigs;
-
 
6351
   FETCH curtgtReleaseConfigs INTO recTgtReleaseConfigs;
-
 
6352
 
-
 
6353
   WHILE curTgtReleaseConfigs%FOUND
-
 
6354
   LOOP
-
 
6355
      OPEN curTgtReleaseConfigRunLevel;
-
 
6356
      FETCH curTgtReleaseConfigRunLevel INTO recTgtReleaseConfigRunLevel;
-
 
6357
      IF curTgtReleaseConfigRunLevel%FOUND THEN
-
 
6358
         IF (recTgtReleaseConfigRunLevel.current_run_level IS NULL) OR
-
 
6359
            (recTgtReleaseConfigRunLevel.current_run_level <> 2) THEN
-
 
6360
            RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
-
 
6361
         END IF;
-
 
6362
      ELSE
-
 
6363
         -- we don't know what the daemon run level is so err on the side of caution
-
 
6364
         RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
-
 
6365
      END IF;
-
 
6366
      CLOSE curTgtReleaseConfigRunLevel;
-
 
6367
 
-
 
6368
      FETCH curTgtReleaseConfigs INTO recTgtReleaseConfigs;
-
 
6369
   END LOOP;
-
 
6370
 
-
 
6371
   CLOSE curTgtReleaseConfigs;
-
 
6372
 
-
 
6373
 
-
 
6374
   /*-------------------------------------------------------*/
-
 
6375
 
-
 
6376
   -- Clean target contents
-
 
6377
   Clean_Release_Contents ( nTargetRtagId, nUserId );
-
 
6378
 
-
 
6379
 
-
 
6380
   -- Import Released Area Contents
-
 
6381
   INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE )
-
 
6382
   SELECT nTargetRtagId AS RTAG_ID,
-
 
6383
         rc.PV_ID,
-
 
6384
         rc.BASE_VIEW_ID,
-
 
6385
         rc.INSERT_STAMP,
-
 
6386
         rc.INSERTOR_ID,
-
 
6387
         rc.PKG_STATE,
-
 
6388
         rc.PKG_ID,
-
 
6389
         rc.DEPRECATED_STATE
-
 
6390
     FROM RELEASE_CONTENT rc
-
 
6391
    WHERE rc.RTAG_ID = nSourceRtagId;
-
 
6392
 
-
 
6393
 
-
 
6394
   -- Import any Pegged Version settings from the source release
-
 
6395
   INSERT INTO PEGGED_VERSIONS ( RTAG_ID, PV_ID )
-
 
6396
   SELECT nTargetRtagId AS RTAG_ID,
-
 
6397
          pegv.PV_ID
-
 
6398
     FROM PEGGED_VERSIONS pegv
-
 
6399
    WHERE pegv.RTAG_ID = nSourceRtagId;
-
 
6400
 
-
 
6401
   -- Import any Advisory Ripple settings from the source release
-
 
6402
   INSERT INTO ADVISORY_RIPPLE ( RTAG_ID, PV_ID )
-
 
6403
   SELECT nTargetRtagId AS RTAG_ID,
-
 
6404
          avr.PV_ID
-
 
6405
     FROM ADVISORY_RIPPLE avr
-
 
6406
    WHERE avr.RTAG_ID = nSourceRtagId;
-
 
6407
 
-
 
6408
 
-
 
6409
   --Import Release Configuration Information
-
 
6410
   OPEN curSrcReleaseConfigs;
-
 
6411
   FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
-
 
6412
 
-
 
6413
   WHILE curSrcReleaseConfigs%FOUND
-
 
6414
   LOOP
-
 
6415
      -- add a daemon to the target release
-
 
6416
      PK_BUILDAPI.add_daemon( recSrcReleaseConfigs.daemon_hostname, nTargetRtagId, recSrcReleaseConfigs.gbe_id, recSrcReleaseConfigs.gbe_buildfilter );
-
 
6417
 
-
 
6418
      FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
-
 
6419
   END LOOP;
-
 
6420
 
-
 
6421
   CLOSE curSrcReleaseConfigs;
-
 
6422
 
-
 
6423
 
-
 
6424
 
-
 
6425
   -- Import Ignore Warning states
-
 
6426
   INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
-
 
6427
   SELECT nTargetRtagId AS RTAG_ID,
-
 
6428
          igw.PV_ID,
-
 
6429
          igw.DPV_ID
-
 
6430
     FROM IGNORE_WARNINGS igw
-
 
6431
    WHERE igw.rtag_id = nSourceRtagId;
-
 
6432
 
-
 
6433
 
-
 
6434
   /* Log Project Action */
-
 
6435
   -- Get Source Location
-
 
6436
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
-
 
6437
     FROM RELEASE_TAGS rt,
-
 
6438
           PROJECTS pr
-
 
6439
    WHERE rt.PROJ_ID = pr.PROJ_ID
-
 
6440
      AND rt.RTAG_ID = nSourceRtagId;
-
 
6441
 
-
 
6442
   -- Get Target Location
-
 
6443
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
-
 
6444
     FROM RELEASE_TAGS rt,
-
 
6445
           PROJECTS pr
-
 
6446
    WHERE rt.PROJ_ID = pr.PROJ_ID
-
 
6447
      AND rt.RTAG_ID = nTargetRtagId;
-
 
6448
 
-
 
6449
   -- Get project id
-
 
6450
   SELECT rt.PROJ_ID  INTO  ProjId
-
 
6451
     FROM RELEASE_TAGS rt
-
 
6452
    WHERE rt.RTAG_ID = nTargetRtagId;
-
 
6453
 
-
 
6454
   Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );
-
 
6455
END;
-
 
6456
 
-
 
6457
 
-
 
6458
 
-
 
6459
/*-------------------------------------------------------------------------------------------------------*/
-
 
6460
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
-
 
6461
 
-
 
6462
   RecCount NUMBER;
-
 
6463
        rconIdList VARCHAR2(4000);
-
 
6464
 
-
 
6465
BEGIN
-
 
6466
   /*--------------- Business Rules Here -------------------*/
-
 
6467
   IF (nRtagId IS NULL)
-
 
6468
   THEN
-
 
6469
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
-
 
6470
   END IF;
-
 
6471
 
-
 
6472
 
-
 
6473
   -- Check if other release references this release
-
 
6474
   SELECT COUNT( rl.RTAG_ID ) INTO RecCount
-
 
6475
     FROM RELEASE_LINKS rl
-
 
6476
    WHERE rl.REF_RTAG_ID = nRtagId;
-
 
6477
 
-
 
6478
   IF (RecCount > 0) THEN
-
 
6479
      RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
-
 
6480
   END IF;
-
 
6481
   /*-------------------------------------------------------*/
-
 
6482
 
-
 
6483
   -- Delete Release links
-
 
6484
   DELETE
-
 
6485
     FROM RELEASE_LINKS rl
-
 
6486
    WHERE rl.RTAG_ID = nRtagId;
-
 
6487
 
-
 
6488
   -- Delete ignore warning
-
 
6489
   DELETE
-
 
6490
     FROM IGNORE_WARNINGS iw
-
 
6491
    WHERE iw.RTAG_ID = nRtagId;
-
 
6492
 
-
 
6493
 
-
 
6494
   -- Delete Build Order cached calculations
-
 
6495
   DELETE
-
 
6496
     FROM BUILD_ORDER bo
-
 
6497
    WHERE bo.RTAG_ID = nRtagId;
-
 
6498
 
-
 
6499
 
-
 
6500
   -- Delete Notification History
-
 
6501
   DELETE
-
 
6502
     FROM NOTIFICATION_HISTORY nh
-
 
6503
    WHERE nh.RTAG_ID = nRtagId;
-
 
6504
 
-
 
6505
 
-
 
6506
   -- Delete Released Area Contents
-
 
6507
   DELETE
-
 
6508
     FROM RELEASE_CONTENT rc
-
 
6509
    WHERE rc.RTAG_ID = nRtagId;
-
 
6510
 
-
 
6511
 
-
 
6512
   -- Delete Work In Progress Area Contents
-
 
6513
   DELETE
-
 
6514
     FROM WORK_IN_PROGRESS wip
-
 
6515
    WHERE wip.RTAG_ID = nRtagId;
-
 
6516
 
-
 
6517
 
-
 
6518
   -- Delete Pending Area Contents
-
 
6519
   DELETE
-
 
6520
     FROM PLANNED pl
-
 
6521
    WHERE pl.RTAG_ID = nRtagId;
-
 
6522
 
-
 
6523
   -- Delete Deprecated Packages
-
 
6524
   DELETE
-
 
6525
     FROM DEPRECATED_PACKAGES dp
-
 
6526
    WHERE dp.RTAG_ID = nRtagId;
-
 
6527
 
-
 
6528
   -- Delete Project Action Log
-
 
6529
   DELETE
-
 
6530
     FROM PROJECT_ACTION_LOG pal
-
 
6531
    WHERE pal.RTAG_ID = nRtagId;
-
 
6532
 
-
 
6533
   -- Delete Do Not Ripple Contents
-
 
6534
   DELETE
-
 
6535
     FROM DO_NOT_RIPPLE dnr
-
 
6536
    WHERE dnr.RTAG_ID = nRtagId;
-
 
6537
 
-
 
6538
   -- Delete Dash Board Contents
-
 
6539
   DELETE
-
 
6540
     FROM DASH_BOARD db
-
 
6541
    WHERE db.RTAG_ID = nRtagId;
-
 
6542
 
-
 
6543
   -- Delete Advisory Ripple Contents
-
 
6544
   DELETE
-
 
6545
     FROM ADVISORY_RIPPLE adr
-
 
6546
    WHERE adr.RTAG_ID = nRtagId;
-
 
6547
 
-
 
6548
   -- Delete Archive Action Log
-
 
6549
   DELETE
-
 
6550
     FROM ARCHIVE_ACTION_LOG aal
-
 
6551
    WHERE aal.RTAG_ID = nRtagId;
-
 
6552
 
-
 
6553
   -- Delete Daemons For This Release
-
 
6554
   FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
-
 
6555
   LOOP
-
 
6556
      rconIdList := rconIdList || rcon.RCON_ID || ',';
-
 
6557
   END LOOP;
-
 
6558
 
-
 
6559
   pk_buildapi.DELETE_DAEMON(rconIdList);
-
 
6560
 
-
 
6561
   -- Delete Release Metrics Contents
-
 
6562
   DELETE
-
 
6563
     FROM RELEASE_METRICS rm
-
 
6564
    WHERE rm.RTAG_ID = nRtagId;
-
 
6565
 
-
 
6566
   -- Delete Release Configuration Contents
-
 
6567
   DELETE
-
 
6568
     FROM RELEASE_CONFIG rc
-
 
6569
    WHERE rc.RTAG_ID = nRtagId;
-
 
6570
 
-
 
6571
   -- Delete Pegged Version Contents
-
 
6572
   DELETE
-
 
6573
     FROM PEGGED_VERSIONS pegv
-
 
6574
    WHERE pegv.RTAG_ID = nRtagId;
-
 
6575
 
-
 
6576
END;
-
 
6577
/*-------------------------------------------------------------------------------------------------------*/
-
 
6578
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
-
 
6579
 
-
 
6580
   nSourceParentRtagId NUMBER;
-
 
6581
 
-
 
6582
BEGIN
-
 
6583
   /*--------------- Business Rules Here -------------------*/
-
 
6584
   IF (nRtagId IS NULL) OR (cIsBranch IS NULL)
-
 
6585
   THEN
-
 
6586
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
-
 
6587
   END IF;
-
 
6588
   /*-------------------------------------------------------*/
-
 
6589
 
-
 
6590
 
-
 
6591
   IF ( nSourceRtagId IS NULL ) THEN
-
 
6592
      -- Create new on main branch
-
 
6593
      RETURN nRtagId;
-
 
6594
 
-
 
6595
   ELSE
-
 
6596
      -- Create from source rtag_id
-
 
6597
 
-
 
6598
      -- Find parent of Source RtagId
-
 
6599
      SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
-
 
6600
        FROM RELEASE_TAGS rt
-
 
6601
       WHERE rt.RTAG_ID = nSourceRtagId;
-
 
6602
 
-
 
6603
      IF (UPPER(cIsBranch) = 'Y') THEN
-
 
6604
         RETURN nSourceRtagId;
-
 
6605
      ELSE
-
 
6606
         IF (nSourceRtagId = nSourceParentRtagId) THEN
-
 
6607
            RETURN nRtagId;
-
 
6608
         ELSE
-
 
6609
            RETURN nSourceParentRtagId;
-
 
6610
         END IF;
-
 
6611
      END IF;
-
 
6612
 
-
 
6613
 
-
 
6614
   END IF;
-
 
6615
 
-
 
6616
 
-
 
6617
END;
-
 
6618
/*-------------------------------------------------------------------------------------------------------*/
-
 
6619
 
-
 
6620
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
-
 
6621
--                       sNextVersion OUT VARCHAR2,
-
 
6622
--                       nNextLifeCycle OUT NUMBER,
-
 
6623
--                       nParentRtagId OUT NUMBER,
-
 
6624
--                       nProjId IN NUMBER ) IS
-
 
6625
--
-
 
6626
-- SourceBranchCount NUMBER;
-
 
6627
-- ProjRootVersion VARCHAR2(4000);
-
 
6628
-- LastLifeCycle NUMBER;
-
 
6629
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
-
 
6630
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
-
 
6631
--
-
 
6632
-- SourceProjId NUMBER;
-
 
6633
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
-
 
6634
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
-
 
6635
--
-
 
6636
-- BEGIN
-
 
6637
--    /*--------------- Business Rules Here -------------------*/
-
 
6638
--    /*-------------------------------------------------------*/
-
 
6639
--
-
 
6640
--
-
 
6641
--    BEGIN
-
 
6642
--       -- Get Project root version
-
 
6643
--       SELECT rt.RTAG_VERSION INTO ProjRootVersion
-
 
6644
--         FROM RELEASE_TAGS rt
-
 
6645
--        WHERE rt.PROJ_ID = nProjId
-
 
6646
--          AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
-
 
6647
--
-
 
6648
--       EXCEPTION
-
 
6649
--       WHEN NO_DATA_FOUND THEN
-
 
6650
--       ProjRootVersion := ROOT_VERSION_NOT_FOUND;
-
 
6651
--    END;
-
 
6652
--
-
 
6653
--
-
 
6654
--
-
 
6655
--
-
 
6656
--    BEGIN
-
 
6657
--       -- Get info for source rtagid
-
 
6658
--       SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
-
 
6659
--         FROM RELEASE_TAGS rt
-
 
6660
--        WHERE rt.RTAG_ID = nSourceRtagId;
-
 
6661
--
-
 
6662
--       EXCEPTION
-
 
6663
--       WHEN NO_DATA_FOUND THEN
-
 
6664
--       SourceProjId := NULL;
-
 
6665
--       SourceVersion := NULL;
-
 
6666
--       SourceLifeCycle := NULL;
-
 
6667
--    END;
-
 
6668
--
-
 
6669
--
-
 
6670
--    IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
-
 
6671
--
-
 
6672
--       /* Blank Release Required  OR  Release imported from other project */
-
 
6673
--
-
 
6674
--       IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
-
 
6675
--          /* No Releases found in the project, hence calculate next version available.  */
-
 
6676
--
-
 
6677
--          -- Set parent rtag
-
 
6678
--          nParentRtagId := SET_PARENT_AS_YOURSELF;
-
 
6679
--
-
 
6680
--
-
 
6681
--          BEGIN
-
 
6682
--             -- Get Next Available Global Root Version
-
 
6683
--             SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
-
 
6684
--               FROM RELEASE_TAGS rt
-
 
6685
--              WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
-
 
6686
--
-
 
6687
--             -- Set Next Rtag Version
-
 
6688
--             sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
-
 
6689
--
-
 
6690
--             -- Restart Lifecycle
-
 
6691
--             nNextLifeCycle := 0;
-
 
6692
--
-
 
6693
--
-
 
6694
--             EXCEPTION
-
 
6695
--             WHEN NO_DATA_FOUND THEN
-
 
6696
--             -- Release Manager has no releases, hence start from 1
-
 
6697
--             sNextVersion := '1';
-
 
6698
--             nNextLifeCycle := 0;
-
 
6699
--
-
 
6700
--          END;
-
 
6701
--
-
 
6702
--
-
 
6703
--
-
 
6704
--       ELSE
-
 
6705
--          /* Releases found in this project. */
-
 
6706
--
-
 
6707
--          SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
-
 
6708
--            FROM (
-
 
6709
--                SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
-
 
6710
--                  FROM RELEASE_TAGS rt
-
 
6711
--                 WHERE rt.PROJ_ID = nProjId
-
 
6712
--                   AND rt.RTAG_VERSION = ProjRootVersion
-
 
6713
--                 ORDER BY rt.RTAG_LIFE_CYCLE DESC
-
 
6714
--                  ) qry
-
 
6715
--           WHERE ROWNUM = 1;
-
 
6716
--
-
 
6717
--
-
 
6718
--          -- Set same Rtag Version
-
 
6719
--          sNextVersion := ProjRootVersion;
-
 
6720
--
-
 
6721
--          -- Increase Lifecycle
-
 
6722
--          nNextLifeCycle := LastLifeCycle + 1;
-
 
6723
--
-
 
6724
--       END IF;
-
 
6725
--
-
 
6726
--
-
 
6727
--
-
 
6728
--    ELSE
-
 
6729
--       /* Create Release From other release within this project */
-
 
6730
--
-
 
6731
--       -- Set parent id
-
 
6732
--       nParentRtagId := nSourceRtagId;
-
 
6733
--
-
 
6734
--
-
 
6735
--       -- Get number of source branches
-
 
6736
--       SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
-
 
6737
--         FROM RELEASE_TAGS rt
-
 
6738
--        WHERE rt.PROJ_ID = nProjId
-
 
6739
--          AND rt.PARENT_RTAG_ID = nSourceRtagId;
-
 
6740
--
-
 
6741
--
-
 
6742
--       IF SourceBranchCount = 0 THEN
-
 
6743
--          /* Release is Head (i.e. Tip on its branch ) */
-
 
6744
--
-
 
6745
--          -- Set Next Rtag Version
-
 
6746
--          sNextVersion := SourceVersion;
-
 
6747
--
-
 
6748
--          -- Increase Lifecycle
-
 
6749
--          nNextLifeCycle := SourceLifeCycle + 1;
-
 
6750
--
-
 
6751
--
-
 
6752
--       ELSIF SourceBranchCount = 1 THEN
-
 
6753
--          /* Release IS NOT Head, but can be branched */
-
 
6754
--
-
 
6755
--          -- Set Next Rtag Version
-
 
6756
--          sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
-
 
6757
--
-
 
6758
--          -- Reset Lifecycle to 1
-
 
6759
--          nNextLifeCycle := 1;
-
 
6760
--
-
 
6761
--
-
 
6762
--       ELSE
-
 
6763
--          -- Limit of two branches is reached
-
 
6764
--          RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');
-
 
6765
--
-
 
6766
--       END IF;
-
 
6767
--
-
 
6768
--
-
 
6769
--
-
 
6770
--
-
 
6771
--
-
 
6772
--
-
 
6773
--    END IF;
-
 
6774
--
-
 
6775
--
-
 
6776
-- END;
-
 
6777
 
-
 
6778
/*-------------------------------------------------------------------------------------------------------*/
-
 
6779
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
-
 
6780
 
-
 
6781
   IsBaseView CHAR(1);
-
 
6782
 
-
 
6783
BEGIN
-
 
6784
 
-
 
6785
   -- Check if the view is BASE VIEW
-
 
6786
   SELECT vi.BASE_VIEW INTO IsBaseView
-
 
6787
     FROM VIEWS vi
-
 
6788
    WHERE vi.VIEW_ID = ViewId;
-
 
6789
 
-
 
6790
   IF (IsBaseView = 'Y') THEN
-
 
6791
      -- Get Base view content
-
 
6792
      OPEN RecordSet FOR
-
 
6793
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
-
 
6794
            rel.deprecated_state,
-
 
6795
            pv.pv_id,
-
 
6796
            pkg.pkg_name,
-
 
6797
            pv.pkg_version,
-
 
6798
            pv.dlocked,
-
 
6799
            pv.pv_description,
-
 
6800
            pv.BUILD_TYPE
-
 
6801
        FROM release_content rel,
-
 
6802
             packages pkg,
-
 
6803
             package_versions pv
-
 
6804
       WHERE pv.pkg_id = pkg.pkg_id
-
 
6805
         AND rel.pv_id = pv.pv_id
-
 
6806
         AND rel.BASE_VIEW_ID = ViewId
-
 
6807
         AND rel.RTAG_ID = RtagId
-
 
6808
       ORDER BY UPPER(pkg.PKG_NAME);
-
 
6809
 
-
 
6810
   ELSE
-
 
6811
 
-
 
6812
       -- Get non base view content
-
 
6813
      OPEN RecordSet FOR
-
 
6814
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
-
 
6815
            rel.deprecated_state,
-
 
6816
            pv.pv_id,
-
 
6817
            pkg.pkg_name,
-
 
6818
            pv.pkg_version,
-
 
6819
            pv.dlocked,
-
 
6820
            pv.pv_description,
-
 
6821
            pv.BUILD_TYPE
-
 
6822
        FROM release_content rel,
-
 
6823
             packages pkg,
-
 
6824
             package_versions pv,
-
 
6825
            VIEW_DEF vd
-
 
6826
       WHERE pv.pkg_id = pkg.pkg_id
-
 
6827
         AND rel.pv_id = pv.pv_id
-
 
6828
         AND vd.VIEW_ID = ViewId
-
 
6829
         AND vd.PKG_ID = pv.PKG_ID
-
 
6830
         AND rel.RTAG_ID = RtagId
-
 
6831
       ORDER BY UPPER(pkg.PKG_NAME);
-
 
6832
 
-
 
6833
   END IF;
-
 
6834
 
-
 
6835
 
-
 
6836
 
-
 
6837
 
-
 
6838
END;
-
 
6839
/*-------------------------------------------------------------------------------------------------------*/
-
 
6840
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
6841
 
-
 
6842
   ReleaseLocation VARCHAR2(4000);
-
 
6843
   sPkgVersion VARCHAR2(4000);
-
 
6844
   nPkgId NUMBER;
-
 
6845
   sVExt VARCHAR2(4000);
-
 
6846
   IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
-
 
6847
 
-
 
6848
   -- Find package for replacement
-
 
6849
   CURSOR curReplacePkg IS
-
 
6850
    SELECT pv.PV_ID
-
 
6851
     FROM RELEASE_CONTENT rc,
-
 
6852
           PACKAGE_VERSIONS pv
-
 
6853
    WHERE rc.PV_ID = pv.PV_ID
-
 
6854
      AND rc.RTAG_ID = RtagId
-
 
6855
      AND pv.PKG_ID = nPkgId
-
 
6856
      AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
-
 
6857
    recReplacePkg curReplacePkg%ROWTYPE;
-
 
6858
 
-
 
6859
BEGIN
-
 
6860
 
-
 
6861
   -- Get is_patch, pkg_id and v_ext
-
 
6862
   SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
-
 
6863
     FROM PACKAGE_VERSIONS pv
-
 
6864
    WHERE pv.PV_ID = newPvId;
-
 
6865
 
-
 
6866
 
-
 
6867
   -- Never put patch in relesed area
-
 
6868
   IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
-
 
6869
 
-
 
6870
      -- Try to get a package to be replaced with this new one.
-
 
6871
      -- Use unique constraint of PKG_ID and V_EXT
-
 
6872
      OPEN curReplacePkg;
-
 
6873
       FETCH curReplacePkg INTO recReplacePkg;
-
 
6874
 
-
 
6875
       IF curReplacePkg%FOUND THEN
-
 
6876
         -- Replace package
-
 
6877
         REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
-
 
6878
 
-
 
6879
      ELSE
-
 
6880
         -- Add new package
-
 
6881
         INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
-
 
6882
         VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
-
 
6883
 
-
 
6884
 
-
 
6885
          /* LOG ACTION */
-
 
6886
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
6887
           FROM PROJECTS proj,
-
 
6888
                 RELEASE_TAGS rt
-
 
6889
          WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
6890
            AND rt.RTAG_ID = RtagId;
-
 
6891
 
-
 
6892
         SELECT pv.PKG_VERSION INTO sPkgVersion
-
 
6893
           FROM PACKAGE_VERSIONS pv
-
 
6894
          WHERE pv.PV_ID = newPvId;
-
 
6895
 
-
 
6896
         Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
-
 
6897
 
-
 
6898
 
-
 
6899
      END IF;
-
 
6900
 
-
 
6901
      CLOSE curReplacePkg;
-
 
6902
 
-
 
6903
   END IF;
-
 
6904
 
-
 
6905
END;
-
 
6906
/*-------------------------------------------------------------------------------------------------------*/
-
 
6907
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
6908
 
-
 
6909
   ReleaseLocation VARCHAR2(4000);
-
 
6910
   sPkgVersion VARCHAR2(4000);
-
 
6911
 
-
 
6912
BEGIN
-
 
6913
 
-
 
6914
   -- Replace Package
-
 
6915
    UPDATE RELEASE_CONTENT
-
 
6916
       SET pv_id = newPvId,
-
 
6917
           insert_stamp = Ora_Sysdate,
-
 
6918
           insertor_id = UserId,
-
 
6919
         product_state = NULL
-
 
6920
     WHERE rtag_id = RtagId
-
 
6921
       AND pv_id = oldPvId;
-
 
6922
 
-
 
6923
   -- update the pegging table
-
 
6924
   UPDATE PEGGED_VERSIONS
-
 
6925
      SET pv_id = newPvId
-
 
6926
     WHERE rtag_id = RtagId
-
 
6927
       AND pv_id = oldPvId;
-
 
6928
 
-
 
6929
   -- update the advisory_ripple table
-
 
6930
   UPDATE ADVISORY_RIPPLE
-
 
6931
      SET pv_id = newPvId
-
 
6932
     WHERE rtag_id = RtagId
-
 
6933
       AND pv_id = oldPvId;
-
 
6934
 
-
 
6935
    /* LOG ACTION */
-
 
6936
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
6937
     FROM PROJECTS proj,
-
 
6938
           RELEASE_TAGS rt
-
 
6939
    WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
6940
      AND rt.RTAG_ID = RtagId;
-
 
6941
 
-
 
6942
   SELECT pv.PKG_VERSION INTO sPkgVersion
-
 
6943
     FROM PACKAGE_VERSIONS pv
-
 
6944
    WHERE pv.PV_ID = newPvId;
-
 
6945
 
-
 
6946
   Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
-
 
6947
   Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
-
 
6948
 
-
 
6949
END;
-
 
6950
/*-------------------------------------------------------------------------------------------------------*/
-
 
6951
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
6952
   ReleaseLocation VARCHAR2(4000);
-
 
6953
 
-
 
6954
BEGIN
-
 
6955
 
-
 
6956
 
-
 
6957
   -- Delete old package
-
 
6958
   DELETE
-
 
6959
     FROM RELEASE_CONTENT rc
-
 
6960
    WHERE rc.PV_ID = PvId
-
 
6961
      AND rc.RTAG_ID = RtagId;
-
 
6962
 
-
 
6963
 
-
 
6964
   /* LOG ACTION */
-
 
6965
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
6966
     FROM PROJECTS proj,
-
 
6967
          RELEASE_TAGS rt
-
 
6968
    WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
6969
      AND rt.RTAG_ID = RtagId;
-
 
6970
 
-
 
6971
   Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
-
 
6972
 
-
 
6973
 
-
 
6974
END;
-
 
6975
/*-------------------------------------------------------------------------------------------------------*/
-
 
6976
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
6977
   ReleaseLocation VARCHAR2(4000);
-
 
6978
 
-
 
6979
   CURSOR curMatchingPackage IS
-
 
6980
    SELECT mpv.PV_ID
-
 
6981
     FROM RELEASE_CONTENT rc,
-
 
6982
           PACKAGE_VERSIONS mpv,
-
 
6983
         PACKAGE_VERSIONS pv
-
 
6984
    WHERE rc.PV_ID = mpv.PV_ID
-
 
6985
      AND rc.RTAG_ID = RtagId
-
 
6986
      AND pv.PV_ID = PvId
-
 
6987
      AND pv.PKG_ID = mpv.PKG_ID
-
 
6988
      AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
-
 
6989
    recMatchingPackage curMatchingPackage%ROWTYPE;
-
 
6990
 
-
 
6991
BEGIN
-
 
6992
 
-
 
6993
   OPEN curMatchingPackage;
-
 
6994
    FETCH curMatchingPackage INTO recMatchingPackage;
-
 
6995
 
-
 
6996
    IF curMatchingPackage%FOUND THEN
-
 
6997
      -- Delete old package
-
 
6998
      DELETE
-
 
6999
        FROM RELEASE_CONTENT rc
-
 
7000
       WHERE rc.PV_ID = recMatchingPackage.PV_ID
-
 
7001
         AND rc.RTAG_ID = RtagId;
-
 
7002
 
-
 
7003
 
-
 
7004
      /* LOG ACTION */
-
 
7005
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
7006
        FROM PROJECTS proj,
-
 
7007
              RELEASE_TAGS rt
-
 
7008
       WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
7009
         AND rt.RTAG_ID = RtagId;
-
 
7010
 
-
 
7011
      Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
-
 
7012
 
-
 
7013
   END IF;
-
 
7014
 
-
 
7015
 
-
 
7016
   CLOSE curMatchingPackage;
-
 
7017
 
-
 
7018
 
-
 
7019
 
-
 
7020
 
-
 
7021
END;
-
 
7022
/*-------------------------------------------------------------------------------------------------------*/
-
 
7023
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
-
 
7024
 
-
 
7025
   ReturnValue NUMBER;
-
 
7026
 
-
 
7027
BEGIN
-
 
7028
   SELECT rc.BASE_VIEW_ID INTO ReturnValue
-
 
7029
     FROM RELEASE_CONTENT rc
-
 
7030
    WHERE rc.RTAG_ID = RtagId
-
 
7031
      AND rc.PV_ID = PvId;
-
 
7032
 
-
 
7033
   RETURN ReturnValue;
-
 
7034
END;
-
 
7035
/*-------------------------------------------------------------------------------------------------------*/
-
 
7036
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
-
 
7037
 
-
 
7038
BEGIN
-
 
7039
   -- Reset Ignore warnings up-the-tree
-
 
7040
   RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
-
 
7041
 
-
 
7042
   -- Refresh Package states
-
 
7043
   TOUCH_RELEASE ( RtagId );
-
 
7044
 
-
 
7045
END;
-
 
7046
/*-------------------------------------------------------------------------------------------------------*/
-
 
7047
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
-
 
7048
   CURSOR curReleases IS
-
 
7049
    SELECT rc.RTAG_ID
-
 
7050
     FROM RELEASE_CONTENT rc
-
 
7051
    WHERE rc.PV_ID = PvId;
-
 
7052
    recReleases curReleases%ROWTYPE;
-
 
7053
 
-
 
7054
BEGIN
-
 
7055
 
-
 
7056
   OPEN curReleases;
-
 
7057
    FETCH curReleases INTO recReleases;
-
 
7058
 
-
 
7059
   WHILE curReleases%FOUND
-
 
7060
   LOOP
-
 
7061
 
-
 
7062
      RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
-
 
7063
 
-
 
7064
      FETCH curReleases INTO recReleases;
-
 
7065
   END LOOP;
-
 
7066
 
-
 
7067
   CLOSE curReleases;
-
 
7068
 
-
 
7069
END;
-
 
7070
/*-------------------------------------------------------------------------------------------------------*/
-
 
7071
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
-
 
7072
 
-
 
7073
BEGIN
-
 
7074
 
-
 
7075
   UPDATE RELEASE_CONTENT rc SET
-
 
7076
   rc.BASE_VIEW_ID = NewViewId
-
 
7077
   WHERE rc.PV_ID = PvId
-
 
7078
     AND rc.RTAG_ID = RtagId;
-
 
7079
 
-
 
7080
END;
-
 
7081
/*-------------------------------------------------------------------------------------------------------*/
-
 
7082
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
-
 
7083
 
-
 
7084
   RowCount NUMBER;
-
 
7085
 
-
 
7086
 
-
 
7087
   CURSOR curPackageClash IS
-
 
7088
   SELECT pkg.PKG_NAME,
-
 
7089
         er.*
-
 
7090
     FROM (
-
 
7091
 
-
 
7092
           /* Get existing referenced packages */
-
 
7093
         SELECT pv.PKG_ID,
-
 
7094
                pv.V_EXT
-
 
7095
           FROM RELEASE_LINKS rl,
-
 
7096
                 RELEASE_CONTENT rc,
-
 
7097
                 PACKAGE_VERSIONS pv
-
 
7098
          WHERE rl.RTAG_ID = nRtagId
-
 
7099
            AND rl.REF_RTAG_ID = rc.RTAG_ID
-
 
7100
            AND rc.PV_ID = pv.PV_ID
-
 
7101
 
-
 
7102
            ) er,
-
 
7103
         (
-
 
7104
 
-
 
7105
         /* Get current reference packages */
-
 
7106
         SELECT pv.PKG_ID,
-
 
7107
                pv.V_EXT
-
 
7108
           FROM RELEASE_CONTENT rc,
-
 
7109
                 PACKAGE_VERSIONS pv
-
 
7110
          WHERE rc.RTAG_ID = nRefRtagId
-
 
7111
            AND rc.PV_ID = pv.PV_ID
-
 
7112
 
-
 
7113
         ) cr,
-
 
7114
         PACKAGES PKG
-
 
7115
    WHERE er.PKG_ID = cr.PKG_ID
-
 
7116
      AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
7117
      AND er.PKG_ID = pkg.PKG_ID;
-
 
7118
 
-
 
7119
   recPackageClash curPackageClash%ROWTYPE;
-
 
7120
 
-
 
7121
BEGIN
-
 
7122
   /*--------------- Business Rules Here -------------------*/
-
 
7123
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
-
 
7124
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
-
 
7125
   END IF;
-
 
7126
 
-
 
7127
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
-
 
7128
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
-
 
7129
   END IF;
-
 
7130
   /*-------------------------------------------------------*/
-
 
7131
   ProblemString := NULL;
-
 
7132
 
-
 
7133
 
-
 
7134
   -- Check if release already has references
-
 
7135
   SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
-
 
7136
     FROM RELEASE_LINKS rl
-
 
7137
    WHERE rl.RTAG_ID = nRtagId;
-
 
7138
 
-
 
7139
 
-
 
7140
   IF RowCount > 0 THEN
-
 
7141
      -- Found existing references
-
 
7142
 
-
 
7143
      -- Make sure there is no package clashes
-
 
7144
      OPEN curPackageClash;
-
 
7145
       FETCH curPackageClash INTO recPackageClash;
-
 
7146
 
-
 
7147
      IF curPackageClash%FOUND THEN
-
 
7148
 
-
 
7149
         ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
-
 
7150
 
-
 
7151
         WHILE curPackageClash%FOUND
-
 
7152
         LOOP
-
 
7153
            EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;   -- Do not allow variable overflow
-
 
7154
 
-
 
7155
            ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
-
 
7156
 
-
 
7157
            FETCH curPackageClash INTO recPackageClash;
-
 
7158
         END LOOP;
-
 
7159
 
-
 
7160
      END IF;
-
 
7161
 
-
 
7162
      CLOSE curPackageClash;
-
 
7163
 
-
 
7164
 
-
 
7165
   ELSE
-
 
7166
      -- No references found, hence reference a release
-
 
7167
 
-
 
7168
 
-
 
7169
      -- Remove exising package from this release to be referenced
-
 
7170
      REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);
-
 
7171
 
-
 
7172
 
-
 
7173
      -- Add new linked packages to release
-
 
7174
      INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
-
 
7175
      SELECT nRtagId,
-
 
7176
            rc.PV_ID,
-
 
7177
            rc.BASE_VIEW_ID,
-
 
7178
            rc.INSERT_STAMP,
-
 
7179
            rc.INSERTOR_ID,
-
 
7180
            rc.PKG_STATE
-
 
7181
        FROM RELEASE_CONTENT rc
-
 
7182
       WHERE rc.RTAG_ID = nRefRtagId;
-
 
7183
 
-
 
7184
 
-
 
7185
 
-
 
7186
      -- Copy ignore warnings for referenced packages
-
 
7187
      INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
-
 
7188
      SELECT nRtagId,
-
 
7189
            iw.PV_ID,
-
 
7190
            iw.DPV_ID,
-
 
7191
            iw.IS_PATCH_IGNORE
-
 
7192
        FROM IGNORE_WARNINGS iw,
-
 
7193
              RELEASE_CONTENT rc
-
 
7194
       WHERE iw.RTAG_ID = rc.RTAG_ID
-
 
7195
         AND iw.PV_ID = rc.PV_ID
-
 
7196
         AND rc.RTAG_ID = nRefRtagId;
-
 
7197
 
-
 
7198
 
-
 
7199
 
-
 
7200
      -- Reference release
-
 
7201
      INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
-
 
7202
      VALUES ( nRtagId, nRefRtagId );
-
 
7203
 
-
 
7204
 
-
 
7205
      -- Refresh Package states
-
 
7206
      TOUCH_RELEASE ( nRtagId );
-
 
7207
 
-
 
7208
   END IF;
-
 
7209
 
-
 
7210
 
-
 
7211
END;
-
 
7212
/*-------------------------------------------------------------------------------------------------------*/
-
 
7213
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
-
 
7214
 
-
 
7215
 
-
 
7216
BEGIN
-
 
7217
   /*--------------- Business Rules Here -------------------*/
-
 
7218
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
-
 
7219
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
-
 
7220
   END IF;
-
 
7221
 
-
 
7222
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
-
 
7223
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
-
 
7224
   END IF;
-
 
7225
 
-
 
7226
   /*-------------------------------------------------------*/
-
 
7227
 
-
 
7228
 
-
 
7229
   -- Remove ignore warnings for those packages who use referenced packages
-
 
7230
   DELETE FROM IGNORE_WARNINGS iw
-
 
7231
    WHERE iw.RTAG_ID = nRtagId
-
 
7232
      AND iw.DPV_ID IN (
-
 
7233
                        SELECT dep.DPV_ID
-
 
7234
                       FROM (
-
 
7235
 
-
 
7236
                           /* Get referenced packages */
-
 
7237
                           SELECT pv.PKG_ID,
-
 
7238
                                  pv.V_EXT
-
 
7239
                             FROM RELEASE_CONTENT rc,
-
 
7240
                                   PACKAGE_VERSIONS pv
-
 
7241
                            WHERE rc.RTAG_ID = nRefRtagId
-
 
7242
                              AND rc.PV_ID = pv.PV_ID
-
 
7243
 
-
 
7244
                           ) cr,
-
 
7245
                           (
-
 
7246
 
-
 
7247
                           /* Get all dependencies for current release */
-
 
7248
                           SELECT DISTINCT
-
 
7249
                                 pv.PKG_ID,
-
 
7250
                                 pv.V_EXT,
-
 
7251
                                 dep.DPV_ID
-
 
7252
                             FROM RELEASE_CONTENT rc,
-
 
7253
                                 PACKAGE_DEPENDENCIES dep,
-
 
7254
                                 PACKAGE_VERSIONS pv
-
 
7255
                            WHERE rc.RTAG_ID = nRtagId
-
 
7256
                              AND rc.PV_ID = dep.PV_ID
-
 
7257
                              AND dep.PV_ID = pv.PV_ID
-
 
7258
 
-
 
7259
                           ) dep
-
 
7260
                      WHERE dep.PKG_ID = cr.PKG_ID
-
 
7261
                        AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
7262
                     );
-
 
7263
 
-
 
7264
 
-
 
7265
 
-
 
7266
 
-
 
7267
   -- Remove ignore warnings for those package which are going to be replaced with the reference
-
 
7268
   DELETE FROM IGNORE_WARNINGS iw
-
 
7269
    WHERE iw.RTAG_ID = nRtagId
-
 
7270
      AND iw.PV_ID IN (
-
 
7271
                  SELECT pv.PV_ID
-
 
7272
                    FROM (
-
 
7273
 
-
 
7274
                        /* Get referenced packages */
-
 
7275
                        SELECT pv.PKG_ID,
-
 
7276
                               pv.V_EXT
-
 
7277
                          FROM RELEASE_CONTENT rc,
-
 
7278
                                PACKAGE_VERSIONS pv
-
 
7279
                         WHERE rc.RTAG_ID = nRefRtagId
-
 
7280
                           AND rc.PV_ID = pv.PV_ID
-
 
7281
 
-
 
7282
                        ) cr,
-
 
7283
                        RELEASE_CONTENT rc,
-
 
7284
                        PACKAGE_VERSIONS pv
-
 
7285
                   WHERE pv.PKG_ID = cr.PKG_ID
-
 
7286
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
7287
                     AND rc.RTAG_ID = nRtagId
-
 
7288
                     AND rc.PV_ID = pv.PV_ID
-
 
7289
                  );
-
 
7290
 
-
 
7291
 
-
 
7292
 
-
 
7293
 
-
 
7294
 
-
 
7295
   -- Remove matching packages from release
-
 
7296
   DELETE FROM RELEASE_CONTENT rc
-
 
7297
    WHERE rc.RTAG_ID = nRtagId
-
 
7298
      AND rc.PV_ID IN (
-
 
7299
                  SELECT pv.PV_ID
-
 
7300
                    FROM (
-
 
7301
 
-
 
7302
                        /* Get referenced packages */
-
 
7303
                        SELECT pv.PKG_ID,
-
 
7304
                               pv.V_EXT
-
 
7305
                          FROM RELEASE_CONTENT rc,
-
 
7306
                                PACKAGE_VERSIONS pv
-
 
7307
                         WHERE rc.RTAG_ID = nRefRtagId
-
 
7308
                           AND rc.PV_ID = pv.PV_ID
-
 
7309
 
-
 
7310
                        ) cr,
-
 
7311
                        RELEASE_CONTENT rc,
-
 
7312
                        PACKAGE_VERSIONS pv
-
 
7313
                   WHERE pv.PKG_ID = cr.PKG_ID
-
 
7314
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
-
 
7315
                     AND rc.RTAG_ID = nRtagId
-
 
7316
                     AND rc.PV_ID = pv.PV_ID
-
 
7317
                  );
-
 
7318
 
-
 
7319
 
-
 
7320
 
-
 
7321
 
-
 
7322
 
-
 
7323
   -- Remove Reference release
-
 
7324
   DELETE
-
 
7325
     FROM RELEASE_LINKS rl
-
 
7326
    WHERE rl.RTAG_ID = nRtagId
-
 
7327
      AND rl.REF_RTAG_ID = nRefRtagId;
-
 
7328
 
-
 
7329
 
-
 
7330
   -- Refresh Package states
-
 
7331
   TOUCH_RELEASE ( nRtagId );
-
 
7332
 
-
 
7333
 
-
 
7334
END;
-
 
7335
/*-------------------------------------------------------------------------------------------------------*/
-
 
7336
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
-
 
7337
 
-
 
7338
   cReleaseMode CHAR(1);
-
 
7339
   cPvMode CHAR(1);
-
 
7340
 
-
 
7341
BEGIN
-
 
7342
 
-
 
7343
   -- Get Release Mode
-
 
7344
   SELECT rt.OFFICIAL INTO cReleaseMode
-
 
7345
     FROM RELEASE_TAGS rt
-
 
7346
    WHERE rt.RTAG_ID = RtagId;
-
 
7347
 
-
 
7348
 
-
 
7349
   -- Get Package Mode
-
 
7350
   SELECT pv.DLOCKED INTO cPvMode
-
 
7351
     FROM PACKAGE_VERSIONS pv
-
 
7352
    WHERE pv.PV_ID = PvId;
-
 
7353
 
-
 
7354
   -- Only check if package is locked
-
 
7355
   IF (cPvMode = 'Y') THEN
-
 
7356
 
-
 
7357
      IF (cReleaseMode != 'N') AND (Permission != 'Y')
-
 
7358
      THEN
-
 
7359
         RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
-
 
7360
 
-
 
7361
      END IF;
-
 
7362
 
-
 
7363
   END IF;
-
 
7364
 
-
 
7365
 
-
 
7366
END;
-
 
7367
 
-
 
7368
/*-------------------------------------------------------------------------------------------------------*/
-
 
7369
END PK_RELEASE;
-
 
7370
/
-
 
7371
--------------------------------------------------------
-
 
7372
--  DDL for Package Body PK_RMAPI
-
 
7373
--------------------------------------------------------
-
 
7374
 
-
 
7375
  CREATE OR REPLACE PACKAGE BODY "PK_RMAPI" 
-
 
7376
IS
-
 
7377
 
13295
   /*-------------------------------------------------------------------------------------------------------*/
7378
   /*-------------------------------------------------------------------------------------------------------*/
13296
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
7379
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
-
 
7380
      RETURN typecur
-
 
7381
   IS
-
 
7382
      npvid     NUMBER  := 0;
-
 
7383
      RECORDS   typecur;
-
 
7384
   BEGIN
-
 
7385
      BEGIN
-
 
7386
         -- Get PV_ID --
-
 
7387
         SELECT pv.pv_id
-
 
7388
           INTO npvid
-
 
7389
           FROM PACKAGES pkg, package_versions pv
-
 
7390
          WHERE pv.pkg_id = pkg.pkg_id
-
 
7391
            AND pkg.pkg_name = pkgname
-
 
7392
            AND pv.pkg_version = pkgversion;
-
 
7393
      EXCEPTION
-
 
7394
         WHEN NO_DATA_FOUND
-
 
7395
         THEN
-
 
7396
            raise_application_error (-20000, 'Package Not Found!');
-
 
7397
            --WHEN OTHERS THEN
-
 
7398
                  -- Consider logging the error and then re-raise
-
 
7399
            RAISE;
-
 
7400
      END;
-
 
7401
 
-
 
7402
      -- Finally get package dependencies --
-
 
7403
      OPEN RECORDS FOR
-
 
7404
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
-
 
7405
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
-
 
7406
          WHERE dep.pv_id = npvid
-
 
7407
            AND dpv.pkg_id = dpkg.pkg_id
-
 
7408
            AND dpv.pv_id = dep.dpv_id;
-
 
7409
 
-
 
7410
      RETURN RECORDS;
-
 
7411
   END;
-
 
7412
 
-
 
7413
/*-------------------------------------------------------------------------------------------------------*/
-
 
7414
   FUNCTION wip_iteration_package (
-
 
7415
      projname        VARCHAR2,
-
 
7416
      iterationname   VARCHAR2,
-
 
7417
      pkgname         VARCHAR2
-
 
7418
   )
-
 
7419
      RETURN typecur
-
 
7420
   IS
-
 
7421
      nrtagid   NUMBER  := 0;
-
 
7422
      RECORDS   typecur;
-
 
7423
   BEGIN
-
 
7424
      BEGIN
-
 
7425
         -- Get latest rtag_id --
-
 
7426
         SELECT rt.rtag_id
-
 
7427
           INTO nrtagid
-
 
7428
           FROM projects proj, release_tags rt
-
 
7429
          WHERE rt.proj_id = proj.proj_id
-
 
7430
            AND UPPER (proj.proj_name) = UPPER (projname)
-
 
7431
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
-
 
7432
 
-
 
7433
         IF (nrtagid IS NULL)
-
 
7434
         THEN
-
 
7435
            raise_application_error (-20000,
-
 
7436
                                     'Work In Progress is Not Found!');
-
 
7437
         END IF;
-
 
7438
      EXCEPTION
-
 
7439
         WHEN NO_DATA_FOUND
-
 
7440
         THEN
-
 
7441
            raise_application_error (-20000,
-
 
7442
                                     'Work In Progress is Not Found!');
-
 
7443
            RAISE;
-
 
7444
      END;
-
 
7445
 
-
 
7446
      -- Finally get package dependencies --
-
 
7447
      OPEN RECORDS FOR
-
 
7448
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
-
 
7449
                pv.src_path
-
 
7450
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
-
 
7451
          WHERE pv.pkg_id = pkg.pkg_id
-
 
7452
            AND wip.pv_id = pv.pv_id
-
 
7453
            AND wip.rtag_id = nrtagid
-
 
7454
            AND pkg.pkg_name = pkgname;
-
 
7455
 
-
 
7456
      RETURN RECORDS;
-
 
7457
   END;
-
 
7458
 
-
 
7459
/*-------------------------------------------------------------------------------------------------------*/
-
 
7460
   FUNCTION auto_make_vcsrelease (
-
 
7461
      rtagid                   IN   NUMBER,
-
 
7462
      pkgname                  IN   VARCHAR2,
-
 
7463
      vext                     IN   VARCHAR2,
-
 
7464
      newpkgversion            IN   VARCHAR2,
-
 
7465
      vcstag                   IN   VARCHAR2,
-
 
7466
      dependenciesimportlist   IN   VARCHAR2,
-
 
7467
      isrippled                IN   NUMBER,
-
 
7468
      username                 IN   VARCHAR2
-
 
7469
   )
13297
      RETURN NUMBER
7470
      RETURN NUMBER
13298
   IS
7471
   IS
-
 
7472
      pkgid                           NUMBER;
-
 
7473
      pvid                            NUMBER                        := 0;
-
 
7474
      userid                          NUMBER;
-
 
7475
      dlocked                         VARCHAR2 (20)                 := NULL;
-
 
7476
      clonefrompvid                   NUMBER;
-
 
7477
      ssv_mm                          package_versions.v_mm%TYPE;
-
 
7478
      ssv_nmm                         package_versions.v_nmm%TYPE;
-
 
7479
      ssv_ext                         package_versions.v_ext%TYPE;
-
 
7480
      return_package_not_found        NUMBER                        := -1;
-
 
7481
      return_package_already_exists   NUMBER                        := -2;
-
 
7482
      return_not_approved             NUMBER                        := -3;
-
 
7483
      return_migrated_pkg             NUMBER                        := -4;
-
 
7484
 
-
 
7485
 
-
 
7486
      x_vcstypeid                     NUMBER;
-
 
7487
      x_tag                           VARCHAR2(32);
-
 
7488
      x_label                         VARCHAR2(60);
-
 
7489
      x_srcpath                       VARCHAR2(2000);
-
 
7490
      p_srcpath                       VARCHAR2(2000);
-
 
7491
 
-
 
7492
      -- Regular expression constituents
-
 
7493
      Token         VARCHAR2(16) := '([^:]+)';  -- a token is anything except a ':' character
-
 
7494
      Seperator     VARCHAR2(4)  := '::';       -- tokens will be seperated by '::'
-
 
7495
      BOL           VARCHAR2(4)  := '^';
-
 
7496
      Anything      VARCHAR2(4)  := '.*';
-
 
7497
      ReplaceToken1 VARCHAR2(4)  := '\1';
-
 
7498
      ReplaceToken2 VARCHAR2(4)  := '\2';
-
 
7499
      ReplaceToken3 VARCHAR2(4)  := '\3';
-
 
7500
      iprev_modifier_id               NUMBER;
-
 
7501
 
13299
   BEGIN
7502
   BEGIN
13300
       /*
-
 
13301
      || N - unlocked
-
 
13302
      || Y - release and locked
-
 
13303
      || P - penging approval
-
 
13304
      || A - approved package ready for auto-build
7503
      /*--------------- Business Rules Here -------------------*/
13305
      */
-
 
13306
      IF cdlock = 'N' OR cdlock = 'R'
7504
      IF (rtagid IS NULL)
13307
      THEN
7505
      THEN
13308
         -- WORK IN PROGRESS --
7506
         raise_application_error (-20000, 'RtagId must be supplied.');
13309
         RETURN 0;
7507
      END IF;
-
 
7508
 
13310
      ELSIF cdlock = 'P' OR cdlock = 'A'
7509
      IF (pkgname IS NULL)
13311
      THEN
7510
      THEN
-
 
7511
         raise_application_error (-20000, 'PkgName must be supplied.');
13312
         -- PENDING --
7512
      END IF;
-
 
7513
 
-
 
7514
      IF (newpkgversion IS NULL)
-
 
7515
      THEN
-
 
7516
         raise_application_error (-20000, 'PkgVersion must be supplied.');
13313
         RETURN 1;
7517
      END IF;
-
 
7518
 
13314
      ELSIF cdlock = 'Y'
7519
      IF (vcstag IS NULL)
-
 
7520
      THEN
-
 
7521
         raise_application_error (-20000, 'PkgVcsTag must be supplied.');
-
 
7522
      END IF;
-
 
7523
 
-
 
7524
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
13315
      THEN
7525
      THEN
13316
         -- RELEASED --
-
 
13317
         RETURN 2;
-
 
13318
      ELSE
-
 
13319
         -- NOT FOUND --
-
 
13320
         raise_application_error
7526
         raise_application_error
13321
                         (-20000,
7527
            (-20000,
13322
                             'Cannot decide where to place package. [cDlock='
7528
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
13323
                          || cdlock
7529
            );
13324
                          || ']'
7530
      END IF;
-
 
7531
 
13325
                         );
7532
      IF (username IS NULL)
-
 
7533
      THEN
-
 
7534
         raise_application_error (-20000, 'UserName must be supplied.');
13326
      END IF;
7535
      END IF;
-
 
7536
 
-
 
7537
      -- Parse the PkgVcsTag
-
 
7538
      -- Sets up
-
 
7539
      --   x_tag, x_label, x_srcpath
-
 
7540
 
-
 
7541
       BEGIN
-
 
7542
          -- Extract the first token - this will be the short tag name for the VCS (eg. 'CC', 'SVN', etc)
-
 
7543
          x_tag := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Anything, ReplaceToken1);
-
 
7544
 
-
 
7545
          -- Decode the short tag
-
 
7546
          CASE x_tag
-
 
7547
             WHEN 'CC' THEN
-
 
7548
                -- extract the 2nd and 3rd tokens, those being the source path and label respectively
-
 
7549
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
-
 
7550
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
-
 
7551
 
-
 
7552
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
-
 
7553
                -- check for that error as well as the obvious zero-length string conditions.
-
 
7554
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
-
 
7555
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
-
 
7556
                END IF;
-
 
7557
                
-
 
7558
                IF isSVNbyName(pkgname) > 0 THEN
-
 
7559
                    -- Don't allow migrated packages to be released from a CC label
-
 
7560
                    return return_migrated_pkg;
-
 
7561
                END IF;
-
 
7562
 
-
 
7563
 
-
 
7564
             WHEN 'SVN' THEN
-
 
7565
                -- extract the 2nd token, that being the subversion tag
-
 
7566
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
-
 
7567
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
-
 
7568
 
-
 
7569
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
-
 
7570
                -- check for that error as well as the obvious zero-length string conditions.
-
 
7571
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
-
 
7572
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
-
 
7573
                END IF;
-
 
7574
 
-
 
7575
             WHEN 'UC' THEN
-
 
7576
                -- nothing to extract, just assign defaults
-
 
7577
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
-
 
7578
                x_label   := 'N/A';
-
 
7579
             ELSE
-
 
7580
                raise_application_error (-20000, 'Unrecognised VCS Tag!');
-
 
7581
          END CASE;
-
 
7582
       END;
-
 
7583
 
-
 
7584
      -- Get the VCS_TYPE_ID for the version control system.
-
 
7585
      BEGIN
-
 
7586
         SELECT vt.vcs_type_id
-
 
7587
         INTO x_vcstypeid
-
 
7588
         FROM VCS_TYPE vt
-
 
7589
         WHERE vt.tag = x_tag;
-
 
7590
         EXCEPTION
-
 
7591
            WHEN NO_DATA_FOUND THEN
-
 
7592
               raise_application_error (-20000, 'Database is missing a version control system tag (' || x_tag || ')!' );
-
 
7593
      END;
-
 
7594
 
-
 
7595
 
-
 
7596
      -- Get user_id
-
 
7597
      BEGIN
-
 
7598
         SELECT usr.user_id
-
 
7599
           INTO userid
-
 
7600
           FROM users usr
-
 
7601
          WHERE UPPER (usr.user_name) = UPPER (username)
-
 
7602
            AND usr.is_disabled IS NULL;
-
 
7603
      EXCEPTION
-
 
7604
         WHEN NO_DATA_FOUND
-
 
7605
         THEN
-
 
7606
            raise_application_error (-20000,
-
 
7607
                                        'UserName '
-
 
7608
                                     || username
-
 
7609
                                     || ' is not valid or disabled.'
-
 
7610
                                    );
-
 
7611
      END;
-
 
7612
 
-
 
7613
/*-------------------------------------------------------*/
-
 
7614
 
-
 
7615
      -- Create package if necessary
-
 
7616
      IF isrippled = 1
-
 
7617
      THEN
-
 
7618
         /* Ripple Build */
-
 
7619
         BEGIN
-
 
7620
            -- Make sure that package does not exist
-
 
7621
            SELECT pv.pv_id
-
 
7622
              INTO pvid
-
 
7623
              FROM package_versions pv, PACKAGES pkg
-
 
7624
             WHERE pv.pkg_id = pkg.pkg_id
-
 
7625
               AND pkg.pkg_name = pkgname
-
 
7626
               AND pv.pkg_version = newpkgversion;
-
 
7627
         EXCEPTION
-
 
7628
            WHEN NO_DATA_FOUND
-
 
7629
            THEN
-
 
7630
               pvid := 0;
-
 
7631
         END;
-
 
7632
 
-
 
7633
         IF (pvid = 0)
-
 
7634
         THEN
-
 
7635
            -- Split current version in parts
-
 
7636
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
-
 
7637
 
-
 
7638
            BEGIN
-
 
7639
               -- Find package to be replaced with the ripple package
-
 
7640
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
-
 
7641
               THEN
-
 
7642
                  SELECT pv.pv_id, pv.src_path
-
 
7643
                    INTO clonefrompvid, p_srcpath
-
 
7644
                    FROM PACKAGES pkg, package_versions pv,
-
 
7645
                         release_content rc
-
 
7646
                   WHERE rc.pv_id = pv.pv_id
-
 
7647
                     AND pv.pkg_id = pkg.pkg_id
-
 
7648
                     AND rc.rtag_id = rtagid
-
 
7649
                     AND pkg.pkg_name = pkgname
-
 
7650
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
-
 
7651
               ELSE
-
 
7652
                  SELECT pv.pv_id, pv.src_path
-
 
7653
                    INTO clonefrompvid, p_srcpath
-
 
7654
                    FROM PACKAGES pkg, package_versions pv,
-
 
7655
                         release_content rc
-
 
7656
                   WHERE rc.pv_id = pv.pv_id
-
 
7657
                     AND pv.pkg_id = pkg.pkg_id
-
 
7658
                     AND rc.rtag_id = rtagid
-
 
7659
                     AND pkg.pkg_name = pkgname
-
 
7660
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
-
 
7661
               END IF;
-
 
7662
            EXCEPTION
-
 
7663
               WHEN NO_DATA_FOUND
-
 
7664
               THEN
-
 
7665
                  raise_application_error
-
 
7666
                                        (-20000,
-
 
7667
                                            'Cannot get CloneFromPvId. VExt='
-
 
7668
                                         || vext
-
 
7669
                                         || ', RtagId='
-
 
7670
                                         || rtagid
-
 
7671
                                         || ', PkgName='
-
 
7672
                                         || pkgname
-
 
7673
                                         || ', SSV_EXT='
-
 
7674
                                         || ssv_ext
-
 
7675
                                        );
-
 
7676
            END;
-
 
7677
 
-
 
7678
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
-
 
7679
            THEN
-
 
7680
               -- Create package
-
 
7681
               seed_package_names_versions (pkgname,
-
 
7682
                                            newpkgversion,
-
 
7683
                                            userid,
-
 
7684
                                            pvid,
-
 
7685
                                            clonefrompvid
-
 
7686
                                           );
-
 
7687
            ELSE
-
 
7688
               -- Create package
-
 
7689
               seed_package_names_versions2 (pkgname,
-
 
7690
                                             newpkgversion,
-
 
7691
                                             userid,
-
 
7692
                                             pvid,
-
 
7693
                                             clonefrompvid
-
 
7694
                                            );
-
 
7695
            END IF;
-
 
7696
 
-
 
7697
            -- Update Package reason for release
-
 
7698
            UPDATE package_versions pv
-
 
7699
               SET pv.comments = 'Rippled Build.',
-
 
7700
                   pv.build_type = 'Y'
-
 
7701
             WHERE pv.pv_id = pvid;
-
 
7702
         ELSE
-
 
7703
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
-
 
7704
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
-
 
7705
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
-
 
7706
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
-
 
7707
            UPDATE package_versions pv
-
 
7708
               SET pv.release_notes_info = null,
-
 
7709
                   pv.modified_stamp = ora_sysdatetime
-
 
7710
             WHERE pv.pv_id = pvid;
-
 
7711
 
-
 
7712
            --DEVI-066151
-
 
7713
            log_action (pvid, 'package_rebuilt', userid, 'Package Re-built...');
-
 
7714
 
-
 
7715
            RETURN return_package_already_exists;
-
 
7716
         END IF;
-
 
7717
      ELSE
-
 
7718
         /* Auto build from Pending area */
-
 
7719
 
-
 
7720
         -- Find package in pending area
-
 
7721
         BEGIN
-
 
7722
            SELECT pv.pv_id, pv.dlocked, pv.src_path
-
 
7723
              INTO pvid, dlocked, p_srcpath
-
 
7724
              FROM planned pl, package_versions pv, PACKAGES pkg
-
 
7725
             WHERE pl.pv_id = pv.pv_id
-
 
7726
               AND pv.pkg_id = pkg.pkg_id
-
 
7727
               AND pl.rtag_id = rtagid
-
 
7728
               AND pkg.pkg_name = pkgname
-
 
7729
               AND pv.dlocked = 'A'
-
 
7730
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
-
 
7731
               AND rownum = 1
-
 
7732
             ORDER BY pv.modified_stamp;
-
 
7733
         EXCEPTION
-
 
7734
            WHEN NO_DATA_FOUND
-
 
7735
            THEN
-
 
7736
               pvid := 0;
-
 
7737
         END;
-
 
7738
 
-
 
7739
         IF (pvid = 0)
-
 
7740
         THEN
-
 
7741
            -- Package does not exist in pending area, hence report it
-
 
7742
            RETURN return_package_not_found;
-
 
7743
         ELSIF (dlocked != 'A')
-
 
7744
         THEN
-
 
7745
            -- Package is not approved for autobuild
-
 
7746
            RETURN return_not_approved;
-
 
7747
         END IF;
-
 
7748
 
-
 
7749
      END IF;
-
 
7750
 
-
 
7751
      -- Ensure Source Path does not change
-
 
7752
      -- Do not expect the SVN development branch to change
-
 
7753
      -- From the previous package
-
 
7754
      IF ( x_tag = 'SVN' AND p_srcpath != x_srcpath )
-
 
7755
      THEN
-
 
7756
        raise_application_error (-20000, 'Source Path does not match (' || p_srcpath || ','|| x_srcpath || ')' );
-
 
7757
      END IF;
-
 
7758
 
-
 
7759
      BEGIN
-
 
7760
         -- Import Dependencies
-
 
7761
         import_dependencies (pvid, dependenciesimportlist, userid);
-
 
7762
      END;
-
 
7763
 
-
 
7764
 
-
 
7765
      BEGIN
-
 
7766
         -- Split current version in parts
-
 
7767
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
-
 
7768
 
-
 
7769
         -- Update Package Details
-
 
7770
         UPDATE package_versions pv
-
 
7771
            SET pv.pkg_version = newpkgversion,
-
 
7772
                pv.v_ext = ssv_ext,
-
 
7773
                pv.v_mm = ssv_mm,
-
 
7774
                pv.v_nmm = ssv_nmm,
-
 
7775
                pv.src_path = x_srcpath,
-
 
7776
                pv.pkg_label = x_label,
-
 
7777
                pv.vcs_type_id = x_vcstypeid
-
 
7778
          WHERE pv.pv_id = pvid;
-
 
7779
      EXCEPTION
-
 
7780
         WHEN DUP_VAL_ON_INDEX
-
 
7781
         THEN
-
 
7782
            -- Package already exists, hence cannot be used for ripple build
-
 
7783
            RETURN return_package_already_exists;
-
 
7784
      END;
-
 
7785
 
-
 
7786
      -- Update the is_autobuildable
-
 
7787
      UPDATE package_versions
-
 
7788
         SET is_autobuildable = 'Y'
-
 
7789
       WHERE pv_id = pvid;
-
 
7790
 
-
 
7791
      -- DEVI-063601
-
 
7792
      -- For planned builds the modifier_id shouldn't be set to buildadm.
-
 
7793
      -- To ensure this the modifier_id is obtained so it can be restored after
-
 
7794
      -- the function pk_environment.auto_make_release is called.
-
 
7795
      -- This function calls, change_state, which sets the modifier_id to the
-
 
7796
      -- specified userid, which for auto builds is buildadm.
-
 
7797
      SELECT pv.modifier_id INTO iprev_modifier_id
-
 
7798
      FROM package_versions pv WHERE pv.pv_id = pvid;
-
 
7799
 
-
 
7800
      -- Now release package
-
 
7801
      pk_environment.auto_make_release (pvid,
-
 
7802
                                        rtagid,
-
 
7803
                                        userid,
-
 
7804
                                        vext,
-
 
7805
                                        ssv_ext,
-
 
7806
                                        clonefrompvid
-
 
7807
                                       );
-
 
7808
 
-
 
7809
      -- DEVI-063601
-
 
7810
      -- if it is a planned build then restore the modifier_id to the previous modifier
-
 
7811
      UPDATE package_versions pv SET pv.modifier_id = iprev_modifier_id
-
 
7812
      WHERE pv.pv_id = pvid;
-
 
7813
 
-
 
7814
      --Now clean the PLANNED_VERSIONS table
-
 
7815
      SELECT pkg_id
-
 
7816
        INTO pkgid
-
 
7817
        FROM PACKAGES
-
 
7818
       WHERE pkg_name = pkgname;
-
 
7819
 
-
 
7820
      DELETE FROM planned_versions
-
 
7821
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
-
 
7822
 
-
 
7823
      RETURN pvid;
-
 
7824
   END;
-
 
7825
 
-
 
7826
/*-------------------------------------------------------------------------------------------------------*/
-
 
7827
   PROCEDURE import_dependencies (
-
 
7828
      pvid                     IN   NUMBER,
-
 
7829
      dependenciesimportlist   IN   VARCHAR2,
-
 
7830
      userid                   IN   NUMBER
-
 
7831
   )
-
 
7832
   IS
-
 
7833
/*
-
 
7834
|| DependenciesImportList Format:
-
 
7835
|| "pkgA","1.0.0";"pkgB","2.0.0";
-
 
7836
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
-
 
7837
*/
-
 
7838
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
-
 
7839
         INDEX BY VARCHAR2 (4000);
-
 
7840
 
-
 
7841
      seperator         VARCHAR2 (2)           := '||';
-
 
7842
      pkgname           VARCHAR2 (4000);
-
 
7843
      pkgversion        VARCHAR2 (4000);
-
 
7844
      buildtype         VARCHAR2 (50);
-
 
7845
      pkgid             NUMBER;
-
 
7846
      vext              VARCHAR2 (4000);
-
 
7847
      dpvid             NUMBER;
-
 
7848
      slist             VARCHAR2 (4000);
-
 
7849
      cbuildtypes       tdictionary;
-
 
7850
      dependencyrow     NUMBER;
-
 
7851
      sdependency       VARCHAR2 (4000);
-
 
7852
      first_pos         VARCHAR2 (4000);
-
 
7853
      second_pos        VARCHAR2 (4000);
-
 
7854
      third_pos         VARCHAR2 (4000);
-
 
7855
      forth_pos         VARCHAR2 (4000);
-
 
7856
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
-
 
7857
 
-
 
7858
      CURSOR curbuildtype
-
 
7859
      IS
-
 
7860
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
-
 
7861
                dep.build_type
-
 
7862
           FROM package_dependencies dep, package_versions dpv
-
 
7863
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
-
 
7864
 
-
 
7865
      recbuildtype      curbuildtype%ROWTYPE;
-
 
7866
   BEGIN
-
 
7867
      slist := dependenciesimportlist;
-
 
7868
 
-
 
7869
      -- Preformat String
-
 
7870
      IF NOT slist IS NULL
-
 
7871
      THEN
-
 
7872
         slist := REPLACE (slist, ' ');                      -- Remove spaces
-
 
7873
         slist := REPLACE (slist, UTL_TCP.crlf);
-
 
7874
         -- Remove new line and carriage-return characters
-
 
7875
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
-
 
7876
      END IF;
-
 
7877
 
-
 
7878
      -- Get Current Dependencies
-
 
7879
      OPEN curbuildtype;
-
 
7880
 
-
 
7881
      FETCH curbuildtype
-
 
7882
       INTO recbuildtype;
-
 
7883
 
-
 
7884
      WHILE curbuildtype%FOUND
-
 
7885
      LOOP
-
 
7886
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
-
 
7887
 
-
 
7888
         FETCH curbuildtype
-
 
7889
          INTO recbuildtype;
-
 
7890
      END LOOP;
-
 
7891
 
-
 
7892
      CLOSE curbuildtype;
-
 
7893
 
-
 
7894
      -- Separate dependencies with ; separator
-
 
7895
      citemcollection := in_list_varchar2 (slist, ';');
-
 
7896
 
-
 
7897
      BEGIN
-
 
7898
         -- Remove old dependencies
-
 
7899
         DELETE FROM package_dependencies dep
-
 
7900
               WHERE dep.pv_id = pvid;
-
 
7901
 
-
 
7902
         -- Loop through dependencies
-
 
7903
         FOR dependencyrow IN 1 .. citemcollection.COUNT
-
 
7904
         LOOP
-
 
7905
            -- Extract pkg_name and pkg_version
-
 
7906
            sdependency := citemcollection (dependencyrow);
-
 
7907
            first_pos := INSTR (sdependency, '"', 1, 1);
-
 
7908
            second_pos := INSTR (sdependency, '"', 1, 2);
-
 
7909
            third_pos := INSTR (sdependency, '"', 1, 3);
-
 
7910
            forth_pos := INSTR (sdependency, '"', 1, 4);
-
 
7911
            pkgname :=
-
 
7912
               SUBSTR (sdependency,
-
 
7913
                       (first_pos + 1),
-
 
7914
                       (second_pos - first_pos - 1)
-
 
7915
                      );
-
 
7916
            pkgversion :=
-
 
7917
               SUBSTR (sdependency,
-
 
7918
                       (third_pos + 1),
-
 
7919
                       (forth_pos - third_pos - 1)
-
 
7920
                      );
-
 
7921
 
-
 
7922
            -- Dependency must exits to be linked against
-
 
7923
            BEGIN
-
 
7924
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
-
 
7925
                 INTO dpvid, pkgid, vext
-
 
7926
                 FROM package_versions pv, PACKAGES pkg
-
 
7927
                WHERE pv.pkg_id = pkg.pkg_id
-
 
7928
                  AND pkg.pkg_name = pkgname
-
 
7929
                  AND pv.pkg_version = pkgversion;
-
 
7930
            EXCEPTION
-
 
7931
               WHEN NO_DATA_FOUND
-
 
7932
               THEN
-
 
7933
                  raise_application_error
-
 
7934
                                  (-20000,
-
 
7935
                                      'Dependency ['
-
 
7936
                                   || pkgname
-
 
7937
                                   || ' '
-
 
7938
                                   || pkgversion
-
 
7939
                                   || '] does not exist yet and cannot be used!'
-
 
7940
                                  );
-
 
7941
            END;
-
 
7942
 
-
 
7943
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
-
 
7944
            BEGIN
-
 
7945
               buildtype := cbuildtypes (pkgid || seperator || vext);
-
 
7946
 
-
 
7947
               IF buildtype IS NULL
-
 
7948
               THEN
-
 
7949
                  -- Set build type to LinkPackageArchive by default
-
 
7950
                  buildtype := 'L';
-
 
7951
               END IF;
-
 
7952
            EXCEPTION
-
 
7953
               WHEN NO_DATA_FOUND
-
 
7954
               THEN
-
 
7955
                  buildtype := 'L';
-
 
7956
            END;
-
 
7957
 
-
 
7958
            -- Insert Dependencies
-
 
7959
            update_package_dependency (pvid,
-
 
7960
                                       pkgname,
-
 
7961
                                       pkgversion,
-
 
7962
                                       buildtype,
-
 
7963
                                       userid,
-
 
7964
                                       0
-
 
7965
                                      );
-
 
7966
         END LOOP;
-
 
7967
      END;
13327
   END;
7968
   END;
13328
 
7969
 
13329
/*-------------------------------------------------------------------------------------------------------*/
7970
/*-------------------------------------------------------------------------------------------------------*/
13330
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
7971
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
13331
      RETURN NUMBER
7972
      RETURN VARCHAR2
13332
   IS
7973
   IS
13333
      envtab    NUMBER            := -1;
-
 
13334
 
-
 
13335
      CURSOR curarea
-
 
13336
      IS
-
 
13337
         SELECT 2 AS envtab
-
 
13338
           FROM release_content rc
-
 
13339
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
-
 
13340
         UNION
-
 
13341
         SELECT 0 AS envtab
-
 
13342
           FROM work_in_progress wip
-
 
13343
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
-
 
13344
         UNION
-
 
13345
         SELECT 1 AS envtab
-
 
13346
           FROM planned pl
-
 
13347
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
-
 
13348
 
-
 
13349
      recarea   curarea%ROWTYPE;
7974
      pkgversion   VARCHAR2 (4000);
13350
   BEGIN
7975
   BEGIN
13351
      OPEN curarea;
7976
      BEGIN
13352
 
-
 
13353
      FETCH curarea
7977
         SELECT pv.pkg_version
13354
       INTO recarea;
7978
           INTO pkgversion
13355
 
-
 
13356
      IF curarea%FOUND
7979
           FROM PACKAGES pkg, release_content rc, package_versions pv
13357
      THEN
7980
          WHERE pv.pv_id = rc.pv_id
13358
         envtab := recarea.envtab;
7981
            AND pkg.pkg_id = pv.pkg_id
13359
      END IF;
7982
            AND pkg.pkg_name = pkgname
13360
 
-
 
13361
      CLOSE curarea;
7983
            AND rc.rtag_id = rtagid;
13362
 
7984
 
13363
      RETURN envtab;
7985
         RETURN pkgversion;
-
 
7986
      END;
13364
   END;
7987
   END;
13365
 
7988
 
13366
/*-------------------------------------------------------------------------------------------------------*/
7989
/*-------------------------------------------------------------------------------------------------------*/
13367
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
7990
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
13368
      RETURN NUMBER
7991
      RETURN VARCHAR2
13369
   IS
7992
   IS
13370
      ispatch   package_versions.dlocked%TYPE;
7993
      pkgversion   VARCHAR2 (4000);
13371
      viewid    NUMBER                          := -1;
-
 
13372
 
-
 
13373
      CURSOR curview
-
 
13374
      IS
7994
   BEGIN
13375
         SELECT rc.base_view_id AS view_id
-
 
13376
           FROM release_content rc
-
 
13377
          WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
-
 
13378
         UNION
-
 
13379
         SELECT wip.view_id AS view_id
-
 
13380
           FROM work_in_progress wip
-
 
13381
          WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
-
 
13382
         UNION
-
 
13383
         SELECT pl.view_id AS view_id
-
 
13384
           FROM planned pl
-
 
13385
          WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
-
 
13386
 
-
 
13387
      recview   curview%ROWTYPE;
-
 
13388
   BEGIN
7995
      BEGIN
13389
      -- Get dlock state
-
 
13390
      SELECT pv.is_patch
7996
         SELECT pv.pkg_version
13391
        INTO ispatch
7997
           INTO pkgversion
13392
        FROM package_versions pv
7998
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
13393
       WHERE pv.pv_id = pvid;
7999
          WHERE pv.pv_id = wip.pv_id
13394
 
-
 
13395
      -- Decide which view id should package go under.
8000
            AND pkg.pkg_id = pv.pkg_id
13396
      IF (ispatch != 'Y') OR (ispatch IS NULL)
-
 
13397
      THEN
-
 
13398
         -- Get VIEW ID of Package
8001
            AND pkg.pkg_name = pkgname
13399
         OPEN curview;
-
 
13400
 
-
 
13401
         FETCH curview
-
 
13402
          INTO recview;
8002
            AND wip.rtag_id = rtagid;
13403
 
8003
 
13404
         IF curview%FOUND
8004
         IF pkgversion IS NULL
13405
         THEN
8005
         THEN
13406
            viewid := recview.view_id;
8006
            SELECT pv.pkg_version
13407
         ELSE
8007
              INTO pkgversion
13408
            raise_application_error
8008
              FROM PACKAGES pkg, planned pl, package_versions pv
13409
               (-20000,
8009
             WHERE pv.pv_id = pl.pv_id
13410
                   'Cannot find view_id to proceed. [PvId='
8010
               AND pkg.pkg_id = pv.pkg_id
13411
                || pvid
8011
               AND pkg.pkg_name = pkgname
13412
                || ']. The current version may not exist in the release anymore.'
-
 
13413
               );
8012
               AND pl.rtag_id = rtagid;
13414
         END IF;
8013
         END IF;
13415
 
8014
 
13416
         CLOSE curview;
8015
         RETURN pkgversion;
13417
      ELSE
-
 
13418
         -- Get VIEW ID of Patch (view id of parent package)
-
 
13419
         SELECT rc.base_view_id
-
 
13420
           INTO viewid
-
 
13421
           FROM release_content rc, package_patches ppv
-
 
13422
          WHERE rc.rtag_id = rtagid
-
 
13423
            AND rc.pv_id = ppv.pv_id
-
 
13424
            AND ppv.patch_id = pvid;
-
 
13425
      END IF;
8016
      END;
13426
 
-
 
13427
      RETURN viewid;
-
 
13428
   END;
8017
   END;
13429
 
8018
 
13430
/*-------------------------------------------------------------------------------------------------------*/
8019
/*-------------------------------------------------------------------------------------------------------*/
13431
   PROCEDURE add_package (
8020
   PROCEDURE update_dash_board (rtagid IN NUMBER)
13432
      pvid     IN   NUMBER,
-
 
13433
      viewid   IN   NUMBER,
-
 
13434
      rtagid   IN   NUMBER,
-
 
13435
      userid   IN   NUMBER
-
 
13436
   )
-
 
13437
   IS
8021
   IS
13438
      dlocked   package_versions.dlocked%TYPE;
8022
      projid       NUMBER;
13439
      envtab    NUMBER;
8023
      projiddb     NUMBER;
-
 
8024
      total        NUMBER;
-
 
8025
      auto_total   NUMBER;
-
 
8026
      rtagiddb     NUMBER;
13440
   BEGIN
8027
   BEGIN
13441
      IF can_edit_pkg_in_project (pvid, rtagid) = 1
-
 
13442
      THEN
-
 
13443
         -- Get dlock state
-
 
13444
         SELECT pv.dlocked
8028
      SELECT COUNT (*)
13445
           INTO dlocked
8029
        INTO total
13446
           FROM package_versions pv
8030
        FROM release_content rc, package_versions pv
13447
          WHERE pv.pv_id = pvid;
8031
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
13448
 
8032
 
-
 
8033
      SELECT COUNT (*)
13449
         -- Get which area should go under
8034
        INTO auto_total
13450
         envtab := select_environment_area (dlocked);
8035
        FROM release_content rc, package_versions pv
13451
         -- Log
8036
       WHERE pv.pv_id = rc.pv_id
13452
         log_action (pvid, 'action', userid, 'Start of Package Add...');
8037
         AND pv.is_autobuildable = 'Y'
-
 
8038
         AND rc.rtag_id = rtagid;
13453
 
8039
 
13454
         -- Remove Package
8040
      BEGIN
13455
         IF envtab = 0
8041
         SELECT rtag_id
13456
         THEN
8042
           INTO rtagiddb
13457
            -- WORK IN PROGRESS --
8043
           FROM dash_board
13458
            pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
8044
          WHERE rtag_id = rtagid;
-
 
8045
 
13459
         ELSIF envtab = 1
8046
         SELECT proj_id
13460
         THEN
8047
           INTO projiddb
13461
            -- PENDING --
8048
           FROM dash_board
13462
            pk_planned.add_package (pvid, viewid, rtagid, userid);
8049
          WHERE rtag_id = rtagid;
-
 
8050
      EXCEPTION
13463
         ELSIF envtab = 2
8051
         WHEN NO_DATA_FOUND
13464
         THEN
8052
         THEN
13465
            -- RELEASED --
8053
            rtagiddb := '';
-
 
8054
      END;
-
 
8055
 
13466
            -- NOTE: this package will be replaced with matching package
8056
      IF rtagiddb IS NULL
-
 
8057
      THEN
13467
            pk_release.add_package (pvid, viewid, rtagid, userid);
8058
         SELECT proj_id
13468
            -- Now do post Release Actions
8059
           INTO projid
13469
            pk_release.run_post_actions (pvid, rtagid);
8060
           FROM release_tags
13470
         END IF;
8061
          WHERE rtag_id = rtagid;
13471
 
8062
 
-
 
8063
         INSERT INTO dash_board
-
 
8064
                     (proj_id, rtag_id, last_build_time, automated_packages,
-
 
8065
                      total_packages
-
 
8066
                     )
-
 
8067
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
-
 
8068
                      total
-
 
8069
                     );
13472
         -- Log
8070
      ELSE
-
 
8071
         UPDATE dash_board
-
 
8072
            SET last_build_time = ora_sysdatetime,
-
 
8073
                automated_packages = auto_total,
-
 
8074
                total_packages = total
13473
         log_action (pvid, 'action', userid, 'End of Package Add...');
8075
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
13474
      END IF;
8076
      END IF;
13475
   END;
8077
   END;
13476
 
8078
 
13477
/*-------------------------------------------------------------------------------------------------------*/
8079
/*-------------------------------------------------------------------------------------------------------*/
13478
   PROCEDURE add_package_bulk (
8080
   FUNCTION exclude_from_build (
13479
      pvidlist   IN   VARCHAR2,
8081
      pvid          IN   NUMBER,
13480
      viewid     IN   NUMBER,
8082
      spkgversion   IN   VARCHAR2,
13481
      rtagid     IN   NUMBER,
8083
      rtagid        IN   NUMBER,
13482
      userid     IN   NUMBER
8084
      username      IN   VARCHAR2
13483
   )
8085
   )
-
 
8086
      RETURN NUMBER
13484
   IS
8087
   IS
13485
      nidcollector   relmgr_number_tab_t            := relmgr_number_tab_t
8088
      userid              NUMBER;
13486
                                                                          ();
8089
      outerrcode          NUMBER;
13487
      dlocked        package_versions.dlocked%TYPE;
8090
      pkgid               NUMBER;
-
 
8091
 
-
 
8092
      CURSOR dnr_duplicate_cur
-
 
8093
      IS
13488
      pvid           NUMBER;
8094
         SELECT *
13489
      envtab         NUMBER;
8095
           FROM do_not_ripple
-
 
8096
          WHERE pv_id = pvid AND rtag_id = rtagid;
-
 
8097
 
-
 
8098
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
13490
   BEGIN
8099
   BEGIN
-
 
8100
      outerrcode := -1;       -- Set default return error code to ERROR state
-
 
8101
 
13491
      /*--------------- Business Rules Here -------------------*/
8102
      /*--------------- Business Rules Here -------------------*/
13492
      IF (pvidlist IS NULL)
8103
      IF (rtagid IS NULL)
13493
      THEN
8104
      THEN
13494
         raise_application_error (-20000,
8105
         RETURN outerrcode;
13495
                                  'Please select at least one package.'
8106
--         raise_application_error (-20000, 'RtagId must be supplied.');
13496
                                 );
-
 
13497
      END IF;
8107
      END IF;
13498
 
8108
 
13499
/*-------------------------------------------------------*/
-
 
13500
      nidcollector := in_list_number (pvidlist);
-
 
13501
 
-
 
13502
      FOR i IN 1 .. nidcollector.COUNT
8109
      IF (pvid IS NULL)
13503
      LOOP
8110
      THEN
13504
         pvid := nidcollector (i);
8111
         RETURN outerrcode;
13505
         add_package (pvid, viewid, rtagid, userid);
8112
--         raise_application_error (-20000, 'PvId must be supplied.');
13506
      END LOOP;
8113
      END IF;
13507
   END;
-
 
13508
 
8114
 
13509
/*-------------------------------------------------------------------------------------------------------*/
-
 
13510
   PROCEDURE replace_package (
-
 
13511
      newpvid   IN   NUMBER,
-
 
13512
      oldpvid   IN   NUMBER,
-
 
13513
      rtagid    IN   NUMBER,
-
 
13514
      userid    IN   NUMBER
8115
      IF (username IS NULL)
13515
   )
-
 
13516
   IS
8116
      THEN
13517
      dlocked        package_versions.dlocked%TYPE;
-
 
13518
      viewid         NUMBER;
-
 
13519
      envtab         NUMBER;
-
 
13520
      ROWCOUNT       NUMBER;
-
 
13521
      creleasemode   CHAR (1);
-
 
13522
      npkgid         NUMBER;
8117
         RETURN outerrcode;
13523
   BEGIN
-
 
13524
      /*--------------- Business Rules Here -------------------*/
-
 
13525
      -- Check if oldPvId exists. It could have been removed
8118
--         raise_application_error (-20000, 'UserName must be supplied.');
13526
      SELECT COUNT (pv.pv_id)
-
 
13527
        INTO ROWCOUNT
8119
      END IF;
13528
        FROM package_versions pv
-
 
13529
       WHERE pv.pv_id = oldpvid;
-
 
13530
 
8120
 
-
 
8121
      -- Get user_id
-
 
8122
      BEGIN
-
 
8123
         SELECT usr.user_id
-
 
8124
           INTO userid
-
 
8125
           FROM users usr
-
 
8126
          WHERE UPPER (usr.user_name) = UPPER (username)
-
 
8127
            AND usr.is_disabled IS NULL;
-
 
8128
      EXCEPTION
-
 
8129
         WHEN NO_DATA_FOUND
-
 
8130
         THEN
-
 
8131
            RETURN outerrcode;
-
 
8132
--            raise_application_error (-20000,
13531
/*-------------------------------------------------------*/
8133
--                                        'UserName '
-
 
8134
--                                     || username
-
 
8135
--                                     || ' is not valid or disabled.'
-
 
8136
--                                    );
-
 
8137
      END;
13532
 
8138
 
13533
      /* This procedure is usually used by "History" option in Release Manager */
8139
      OPEN dnr_duplicate_cur;
13534
 
8140
 
13535
      -- Get dlock state
-
 
13536
      SELECT pv.dlocked
8141
      FETCH dnr_duplicate_cur
13537
        INTO dlocked
8142
       INTO dnr_duplicate_rec;
13538
        FROM package_versions pv
-
 
13539
       WHERE pv.pv_id = newpvid;
-
 
13540
 
8143
 
13541
      -- Get VIEW_ID ---
8144
      IF dnr_duplicate_cur%FOUND
13542
      IF ROWCOUNT = 1
-
 
13543
      THEN
8145
      THEN
13544
         viewid := get_view_location (oldpvid, rtagid);
-
 
13545
      ELSE
-
 
13546
         -- Set ViewID to default
-
 
13547
         viewid := 7;
8146
         outerrcode := 0;
13548
      END IF;
8147
      END IF;
13549
 
8148
 
13550
      -- Get which area should go under
8149
      IF dnr_duplicate_cur%NOTFOUND
13551
      envtab := select_environment_area (dlocked);
-
 
13552
      -- Log
-
 
13553
      log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
-
 
13554
 
-
 
13555
      -- Replace package
-
 
13556
      IF envtab = 0
-
 
13557
      THEN
8150
      THEN
13558
         -- WORK IN PROGRESS --
8151
         /* No duplicate recordset */
-
 
8152
         unripple_package (pvid, rtagid, userid);
-
 
8153
         outerrcode := 0;                            -- Set return to SUCCESS
-
 
8154
      END IF;
13559
 
8155
 
13560
         -- Delete old package
-
 
13561
         pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
-
 
13562
         -- Add new package
8156
      CLOSE dnr_duplicate_cur;
13563
         pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
-
 
13564
      ELSIF envtab = 1
-
 
13565
      THEN
-
 
13566
         -- PENDING --
-
 
13567
 
8157
 
13568
         -- Delete old package
8158
      SELECT pkg_id
13569
         pk_planned.remove_package (oldpvid, rtagid, userid);
-
 
13570
         -- Add new package
8159
        INTO pkgid
13571
         pk_planned.add_package (newpvid, viewid, rtagid, userid);
-
 
13572
      ELSIF envtab = 2
8160
        FROM package_versions
13573
      THEN
-
 
13574
         -- RELEASED --
8161
       WHERE pv_id = pvid;
13575
 
8162
 
13576
         -- Delete old package
-
 
13577
         pk_release.remove_package (oldpvid, rtagid, userid);
-
 
13578
         -- Add new package
-
 
13579
         pk_release.add_package (newpvid, viewid, rtagid, userid);
-
 
13580
         -- Now do post Release Actions
8163
      DELETE FROM planned_versions
13581
         pk_release.run_post_actions (newpvid, rtagid);
8164
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
13582
      END IF;
-
 
13583
 
8165
 
13584
      -- Log
8166
      RETURN outerrcode;
13585
      log_action (oldpvid, 'action', userid, 'End of Package Replace...');
-
 
13586
   END;
8167
   END;
13587
 
8168
 
13588
/*-------------------------------------------------------------------------------------------------------*/
8169
/*-------------------------------------------------------------------------------------------------------*/
13589
   FUNCTION remove_package (
8170
   FUNCTION exclude_indirect_from_build (
13590
      pvid          IN   NUMBER,
8171
      pvid          IN   NUMBER,
-
 
8172
      spkgversion   IN   VARCHAR2,
13591
      rtagid        IN   NUMBER,
8173
      rtagid        IN   NUMBER,
-
 
8174
      username      IN   VARCHAR2,
13592
      userid        IN   NUMBER,
8175
      rootpvid      IN   NUMBER,
-
 
8176
      rootcause     IN   VARCHAR2,
13593
      forceremove   IN   CHAR
8177
      rootfile      IN   VARCHAR2
13594
   )
8178
   )
13595
      RETURN NUMBER
8179
      RETURN NUMBER
13596
   IS
8180
   IS
13597
      envtab        NUMBER;
8181
      userid              NUMBER;
13598
      isused        BOOLEAN;
8182
      outerrcode          NUMBER;
13599
      recordcount   NUMBER;
8183
      pkgid               NUMBER;
13600
   BEGIN
-
 
13601
/*--------------- Business Rules Here -------------------*/
-
 
13602
/*-------------------------------------------------------*/
-
 
13603
 
8184
 
-
 
8185
      CURSOR dnr_duplicate_cur
-
 
8186
      IS
-
 
8187
         SELECT *
13604
      -- Find location of package
8188
           FROM do_not_ripple
13605
      envtab := get_package_area (pvid, rtagid);
8189
          WHERE pv_id = pvid AND rtag_id = rtagid;
13606
 
8190
 
13607
      -- Remove Package
8191
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
13608
      IF envtab = 0
-
 
13609
      THEN
8192
   BEGIN
13610
         -- WORK IN PROGRESS --
-
 
13611
         -- Delete package
8193
      outerrcode := -1;       -- Set default return error code to ERROR state
-
 
8194
 
13612
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
8195
      /*--------------- Business Rules Here -------------------*/
13613
         RETURN 0;
-
 
13614
      ELSIF envtab = 1
8196
      IF (rtagid IS NULL)
13615
      THEN
8197
      THEN
13616
         -- PENDING --
-
 
13617
         -- Delete package
8198
         RETURN outerrcode;
13618
         pk_planned.remove_package (pvid, rtagid, userid);
8199
--         raise_application_error (-20000, 'RtagId must be supplied.');
13619
         RETURN 0;
8200
      END IF;
-
 
8201
 
13620
      ELSIF envtab = 2
8202
      IF (pvid IS NULL)
13621
      THEN
8203
      THEN
13622
         -- RELEASED --
8204
         RETURN outerrcode;
-
 
8205
--         raise_application_error (-20000, 'PvId must be supplied.');
-
 
8206
      END IF;
13623
 
8207
 
13624
         -- Check if is used by other packages
8208
      IF (username IS NULL)
-
 
8209
      THEN
13625
         isused := TRUE;
8210
         RETURN outerrcode;
-
 
8211
--         raise_application_error (-20000, 'UserName must be supplied.');
-
 
8212
      END IF;
13626
 
8213
 
-
 
8214
      -- Get user_id
-
 
8215
      BEGIN
-
 
8216
         SELECT usr.user_id
-
 
8217
           INTO userid
13627
         IF forceremove = 'N'
8218
           FROM users usr
-
 
8219
          WHERE UPPER (usr.user_name) = UPPER (username)
-
 
8220
            AND usr.is_disabled IS NULL;
-
 
8221
      EXCEPTION
-
 
8222
         WHEN NO_DATA_FOUND
13628
         THEN
8223
         THEN
13629
            SELECT COUNT (pv.pv_id)
-
 
13630
              INTO recordcount
8224
            RETURN outerrcode;
13631
              FROM (SELECT dpv.pkg_id, dpv.v_ext
-
 
13632
                      FROM release_content rc,
8225
--            raise_application_error (-20000,
13633
                           package_dependencies dep,
8226
--                                        'UserName '
13634
                           package_versions dpv
8227
--                                     || username
13635
                     WHERE rc.rtag_id = rtagid
-
 
13636
                       AND rc.pv_id = dep.pv_id
-
 
13637
                       AND dep.dpv_id = dpv.pv_id) rdep,
8228
--                                     || ' is not valid or disabled.'
13638
                   package_versions pv
8229
--                                    );
13639
             WHERE pv.pkg_id = rdep.pkg_id
-
 
13640
               AND NVL (pv.v_ext, '|LINK_A_NULL|') =
-
 
13641
                                             NVL (rdep.v_ext, '|LINK_A_NULL|')
-
 
13642
               AND pv.pv_id = pvid;
8230
      END;
13643
 
8231
 
13644
            IF recordcount > 0
8232
     /* No duplicate recordset */
13645
            THEN
-
 
13646
               RETURN 1;                    -- Return 1 as package being used
8233
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
13647
            ELSE
-
 
13648
               isused := FALSE;
8234
     outerrcode := 0;                            -- Set return to SUCCESS
13649
            END IF;
-
 
13650
         END IF;
-
 
13651
 
8235
 
13652
         IF forceremove = 'Y' OR NOT isused
-
 
13653
         THEN
8236
      SELECT pkg_id
13654
            -- Delete old package
8237
        INTO pkgid
13655
            pk_release.remove_package (pvid, rtagid, userid);
-
 
13656
            -- Now do post Release Actions
8238
        FROM package_versions
13657
            pk_release.run_post_actions (pvid, rtagid);
-
 
13658
            RETURN 0;
8239
       WHERE pv_id = pvid;
13659
         END IF;
-
 
13660
      END IF;
-
 
13661
   END;
-
 
13662
 
8240
 
13663
/*-------------------------------------------------------------------------------------------------------*/
-
 
13664
   PROCEDURE get_environment_items (
-
 
13665
      viewtype           IN       NUMBER,
-
 
13666
      userid             IN       NUMBER,
-
 
13667
      rtagid             IN       NUMBER,
-
 
13668
      sviewidshowlist    IN       VARCHAR2,
-
 
13669
      ntruerecordcount   OUT      NUMBER,
-
 
13670
      recordset          OUT      typecur
-
 
13671
   )
-
 
13672
   IS
-
 
13673
   BEGIN
-
 
13674
      -- Get true record count because views can give false count
-
 
13675
      SELECT COUNT (pl.pv_id)
8241
      DELETE FROM planned_versions
13676
        INTO ntruerecordcount
-
 
13677
        FROM environment_view pl
-
 
13678
       WHERE pl.rtag_id = rtagid;
8242
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
13679
 
8243
 
13680
      IF viewtype = 1
-
 
13681
      THEN
-
 
13682
         /*--- GUEST VIEW ---*/
-
 
13683
         OPEN recordset FOR
-
 
13684
            SELECT   *
-
 
13685
                FROM (
-
 
13686
                      /* Base Views collapsed */
-
 
13687
                      SELECT DISTINCT vi.view_id, vi.view_name,
-
 
13688
                                      TO_NUMBER (NULL) AS pkg_state,
-
 
13689
                                      TO_NUMBER (NULL) AS deprecated_state,
-
 
13690
                                      TO_NUMBER (NULL) AS pv_id,
-
 
13691
                                      NULL AS pkg_name, NULL AS pkg_version,
-
 
13692
                                      NULL AS dlocked, NULL AS pv_description
-
 
13693
                                 FROM environment_view rel, views vi
-
 
13694
                                WHERE rel.view_id = vi.view_id
-
 
13695
                                  AND rtag_id = rtagid
-
 
13696
                                  AND rel.view_id NOT IN (
-
 
13697
                                         SELECT *
-
 
13698
                                           FROM THE
-
 
13699
                                                   (SELECT CAST
-
 
13700
                                                              (in_list_number
-
 
13701
                                                                  (sviewidshowlist
-
 
13702
                                                                  ) AS relmgr_number_tab_t
-
 
13703
                                                              )
-
 
13704
                                                      FROM DUAL
-
 
13705
                                                   ))
-
 
13706
                      UNION
-
 
13707
                      /* Base Views expanded */
-
 
13708
                      SELECT vi.view_id, vi.view_name,
-
 
13709
                             DECODE (rel.pkg_state,
-
 
13710
                                     NULL, 0,
-
 
13711
                                     rel.pkg_state
-
 
13712
                                    ) AS pkg_state,
-
 
13713
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
13714
                             pv.pkg_version, pv.dlocked, pv.pv_description
-
 
13715
                        FROM environment_view rel,
-
 
13716
                             PACKAGES pkg,
-
 
13717
                             package_versions pv,
-
 
13718
                             views vi
-
 
13719
                       WHERE pv.pkg_id = pkg.pkg_id
-
 
13720
                         AND rel.pv_id = pv.pv_id
-
 
13721
                         AND rel.view_id = vi.view_id
-
 
13722
                         AND rel.view_id IN (
-
 
13723
                                SELECT *
-
 
13724
                                  FROM THE
-
 
13725
                                          (SELECT CAST
-
 
13726
                                                     (in_list_number
-
 
13727
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
13728
                                                     )
-
 
13729
                                             FROM DUAL
-
 
13730
                                          ))
-
 
13731
                         AND rtag_id = rtagid) ord
-
 
13732
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
-
 
13733
      ELSIF viewtype = 2
8244
      RETURN outerrcode;
13734
      THEN
-
 
13735
         /*--- PERSONAL VIEW ---*/
-
 
13736
         OPEN recordset FOR
-
 
13737
            SELECT   *
-
 
13738
                FROM (
-
 
13739
                      /* Base Views collapsed */
-
 
13740
                      SELECT DISTINCT vi.view_id, vi.view_name,
-
 
13741
                                      TO_NUMBER (NULL) AS pkg_state,
-
 
13742
                                      TO_NUMBER (NULL) AS deprecated_state,
-
 
13743
                                      TO_NUMBER (NULL) AS pv_id,
-
 
13744
                                      NULL AS pkg_name, NULL AS pkg_version,
-
 
13745
                                      NULL AS dlocked, NULL AS pv_description
-
 
13746
                                 FROM environment_view rel,
-
 
13747
                                      view_settings vs,
-
 
13748
                                      views vi
-
 
13749
                                WHERE rel.view_id = vi.view_id
-
 
13750
                                  AND vs.view_id = rel.view_id
-
 
13751
                                  AND vs.user_id = userid
-
 
13752
                                  AND rtag_id = rtagid
-
 
13753
                                  AND rel.view_id NOT IN (
-
 
13754
                                         SELECT *
-
 
13755
                                           FROM THE
-
 
13756
                                                   (SELECT CAST
-
 
13757
                                                              (in_list_number
-
 
13758
                                                                  (sviewidshowlist
-
 
13759
                                                                  ) AS relmgr_number_tab_t
-
 
13760
                                                              )
-
 
13761
                                                      FROM DUAL
-
 
13762
                                                   ))
-
 
13763
                      UNION
-
 
13764
                      /* Base Views expanded */
-
 
13765
                      SELECT vi.view_id, vi.view_name,
-
 
13766
                             DECODE (rel.pkg_state,
-
 
13767
                                     NULL, 0,
-
 
13768
                                     rel.pkg_state
-
 
13769
                                    ) AS pkg_state,
-
 
13770
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
13771
                             pv.pkg_version, pv.dlocked, pv.pv_description
-
 
13772
                        FROM environment_view rel,
-
 
13773
                             PACKAGES pkg,
-
 
13774
                             package_versions pv,
-
 
13775
                             views vi,
-
 
13776
                             view_settings vs
-
 
13777
                       WHERE pv.pkg_id = pkg.pkg_id
-
 
13778
                         AND rel.pv_id = pv.pv_id
-
 
13779
                         AND rel.view_id = vi.view_id
-
 
13780
                         AND vs.view_id = vi.view_id
-
 
13781
                         AND vs.user_id = userid
-
 
13782
                         AND rel.view_id IN (
-
 
13783
                                SELECT *
-
 
13784
                                  FROM THE
-
 
13785
                                          (SELECT CAST
-
 
13786
                                                     (in_list_number
-
 
13787
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
13788
                                                     )
-
 
13789
                                             FROM DUAL
-
 
13790
                                          ))
-
 
13791
                         AND rtag_id = rtagid
-
 
13792
                      UNION
-
 
13793
                      /* Private Views collapsed */
-
 
13794
                      SELECT vi.view_id, vi.view_name,
-
 
13795
                             TO_NUMBER (NULL) AS pkg_state,
-
 
13796
                             TO_NUMBER (NULL) AS deprecated_state,
-
 
13797
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
-
 
13798
                             NULL AS pkg_version, NULL AS dlocked,
-
 
13799
                             NULL AS pv_description
-
 
13800
                        FROM view_settings vs,
-
 
13801
                             view_def vd,
-
 
13802
                             views vi,
-
 
13803
                             environment_view rel,
-
 
13804
                             package_versions pv
-
 
13805
                       WHERE vs.view_id = vi.view_id
-
 
13806
                         AND rel.pv_id = pv.pv_id
-
 
13807
                         AND vd.pkg_id = pv.pkg_id
-
 
13808
                         AND vd.view_id = vi.view_id
-
 
13809
                         AND vi.base_view = 'N'
-
 
13810
                         AND rel.rtag_id = rtagid
-
 
13811
                         AND vs.user_id = userid
-
 
13812
                         AND vi.view_id NOT IN (
-
 
13813
                                SELECT *
-
 
13814
                                  FROM THE
-
 
13815
                                          (SELECT CAST
-
 
13816
                                                     (in_list_number
-
 
13817
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
13818
                                                     )
-
 
13819
                                             FROM DUAL
-
 
13820
                                          ))
-
 
13821
                      UNION
-
 
13822
                      /* Private Views expanded */
-
 
13823
                      SELECT vi.view_id, vi.view_name,
-
 
13824
                             DECODE (rel.pkg_state,
-
 
13825
                                     NULL, 0,
-
 
13826
                                     rel.pkg_state
-
 
13827
                                    ) AS pkg_state,
-
 
13828
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
13829
                             pv.pkg_version, pv.dlocked, pv.pv_description
-
 
13830
                        FROM users usr,
-
 
13831
                             view_settings vs,
-
 
13832
                             view_def vd,
-
 
13833
                             views vi,
-
 
13834
                             environment_view rel,
-
 
13835
                             PACKAGES pkg,
-
 
13836
                             package_versions pv
-
 
13837
                       WHERE vs.user_id = usr.user_id
-
 
13838
                         AND vs.view_id = vi.view_id
-
 
13839
                         AND vd.view_id = vi.view_id
-
 
13840
                         AND pv.pkg_id = pkg.pkg_id
-
 
13841
                         AND rel.pv_id = pv.pv_id
-
 
13842
                         AND rel.rtag_id = rtagid
-
 
13843
                         AND vd.pkg_id = pkg.pkg_id
-
 
13844
                         AND vi.base_view = 'N'
-
 
13845
                         AND vi.view_id IN (
-
 
13846
                                SELECT *
-
 
13847
                                  FROM THE
-
 
13848
                                          (SELECT CAST
-
 
13849
                                                     (in_list_number
-
 
13850
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
13851
                                                     )
-
 
13852
                                             FROM DUAL
-
 
13853
                                          ))
-
 
13854
                         AND usr.user_id = userid) ord
-
 
13855
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
-
 
13856
      END IF;
-
 
13857
   END;
8245
   END;
13858
 
-
 
13859
/*-------------------------------------------------------------------------------------------------------*/
8246
/*-------------------------------------------------------------------------------------------------------*/
13860
   PROCEDURE get_released_items (
-
 
13861
      viewtype           IN       NUMBER,
-
 
13862
      userid             IN       NUMBER,
-
 
13863
      rtagid             IN       NUMBER,
-
 
13864
      sviewidshowlist    IN       VARCHAR2,
8247
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
13865
      ntruerecordcount   OUT      NUMBER,
-
 
13866
      recordset          OUT      typecur
-
 
13867
   )
-
 
13868
   IS
8248
   IS
13869
   BEGIN
8249
   BEGIN
13870
      -- Get true record count because views can give false count
-
 
13871
      SELECT COUNT (rc.pv_id)
-
 
13872
        INTO ntruerecordcount
8250
      INSERT INTO abt_action_log
13873
        FROM release_content rc
-
 
13874
       WHERE rc.rtag_id = rtagid;
-
 
13875
 
-
 
13876
      IF viewtype = 1
-
 
13877
      THEN
-
 
13878
         /*--- GUEST VIEW ---*/
-
 
13879
         OPEN recordset FOR
-
 
13880
            SELECT   *
-
 
13881
                FROM (
-
 
13882
                      /* Base Views collapsed */
-
 
13883
                      SELECT DISTINCT vi.view_id, vi.view_name,
-
 
13884
                                      TO_NUMBER (NULL) AS pkg_state,
-
 
13885
                                      TO_NUMBER (NULL) AS deprecated_state,
-
 
13886
                                      TO_NUMBER (NULL) AS pv_id,
-
 
13887
                                      NULL AS pkg_name, NULL AS pkg_version,
-
 
13888
                                      NULL AS dlocked, NULL AS pv_description
-
 
13889
                                 FROM release_content rel, views vi
-
 
13890
                                WHERE rel.base_view_id = vi.view_id
-
 
13891
                                  AND rtag_id = rtagid
-
 
13892
                                  AND rel.base_view_id NOT IN (
-
 
13893
                                         SELECT *
-
 
13894
                                           FROM THE
-
 
13895
                                                   (SELECT CAST
-
 
13896
                                                              (in_list_number
-
 
13897
                                                                  (sviewidshowlist
-
 
13898
                                                                  ) AS relmgr_number_tab_t
-
 
13899
                                                              )
-
 
13900
                                                      FROM DUAL
-
 
13901
                                                   ))
-
 
13902
                      UNION
-
 
13903
                      /* Base Views expanded */
-
 
13904
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
-
 
13905
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
13906
                             pv.pkg_version, pv.dlocked, pv.pv_description
-
 
13907
                        FROM release_content rel,
-
 
13908
                             PACKAGES pkg,
-
 
13909
                             package_versions pv,
8251
                  (rcon_id, action_datetime, action
13910
                             views vi
-
 
13911
                       WHERE pv.pkg_id = pkg.pkg_id
-
 
13912
                         AND rel.pv_id = pv.pv_id
-
 
13913
                         AND rel.base_view_id = vi.view_id
-
 
13914
                         AND rel.base_view_id IN (
-
 
13915
                                SELECT *
-
 
13916
                                  FROM THE
-
 
13917
                                          (SELECT CAST
-
 
13918
                                                     (in_list_number
-
 
13919
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
13920
                                                     )
-
 
13921
                                             FROM DUAL
-
 
13922
                                          ))
-
 
13923
                         AND rtag_id = rtagid) ord
-
 
13924
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
-
 
13925
      ELSIF viewtype = 2
-
 
13926
      THEN
-
 
13927
         /*--- PERSONAL VIEW ---*/
-
 
13928
         OPEN recordset FOR
-
 
13929
            SELECT   *
-
 
13930
                FROM (
8252
                  )
13931
                      /* Base Views collapsed */
-
 
13932
                      SELECT DISTINCT vi.view_id, vi.view_name,
-
 
13933
                                      TO_NUMBER (NULL) AS pkg_state,
-
 
13934
                                      TO_NUMBER (NULL) AS deprecated_state,
-
 
13935
                                      TO_NUMBER (NULL) AS pv_id,
-
 
13936
                                      NULL AS pkg_name, NULL AS pkg_version,
-
 
13937
                                      NULL AS dlocked, NULL AS pv_description
-
 
13938
                                 FROM release_content rel,
-
 
13939
                                      view_settings vs,
-
 
13940
                                      views vi
-
 
13941
                                WHERE rel.base_view_id = vi.view_id
-
 
13942
                                  AND vs.view_id = rel.base_view_id
-
 
13943
                                  AND vs.user_id = userid
-
 
13944
                                  AND rtag_id = rtagid
-
 
13945
                                  AND rel.base_view_id NOT IN (
-
 
13946
                                         SELECT *
-
 
13947
                                           FROM THE
-
 
13948
                                                   (SELECT CAST
-
 
13949
                                                              (in_list_number
-
 
13950
                                                                  (sviewidshowlist
-
 
13951
                                                                  ) AS relmgr_number_tab_t
-
 
13952
                                                              )
-
 
13953
                                                      FROM DUAL
-
 
13954
                                                   ))
-
 
13955
                      UNION
-
 
13956
                      /* Base Views expanded */
-
 
13957
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
-
 
13958
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
13959
                             pv.pkg_version, pv.dlocked, pv.pv_description
-
 
13960
                        FROM release_content rel,
-
 
13961
                             PACKAGES pkg,
-
 
13962
                             package_versions pv,
-
 
13963
                             views vi,
-
 
13964
                             view_settings vs
-
 
13965
                       WHERE pv.pkg_id = pkg.pkg_id
-
 
13966
                         AND rel.pv_id = pv.pv_id
-
 
13967
                         AND rel.base_view_id = vi.view_id
-
 
13968
                         AND vs.view_id = vi.view_id
-
 
13969
                         AND vs.user_id = userid
-
 
13970
                         AND rel.base_view_id IN (
-
 
13971
                                SELECT *
-
 
13972
                                  FROM THE
-
 
13973
                                          (SELECT CAST
-
 
13974
                                                     (in_list_number
-
 
13975
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
13976
                                                     )
-
 
13977
                                             FROM DUAL
-
 
13978
                                          ))
-
 
13979
                         AND rtag_id = rtagid
-
 
13980
                      UNION
-
 
13981
                      /* Private Views collapsed */
-
 
13982
                      SELECT vi.view_id, vi.view_name,
-
 
13983
                             TO_NUMBER (NULL) AS pkg_state,
-
 
13984
                             TO_NUMBER (NULL) AS deprecated_state,
-
 
13985
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
-
 
13986
                             NULL AS pkg_version, NULL AS dlocked,
-
 
13987
                             NULL AS pv_description
8253
           VALUES (rconid, ora_sysdatetime, action
13988
                        FROM view_settings vs,
-
 
13989
                             view_def vd,
-
 
13990
                             views vi,
-
 
13991
                             release_content rel,
-
 
13992
                             package_versions pv
-
 
13993
                       WHERE vs.view_id = vi.view_id
-
 
13994
                         AND rel.pv_id = pv.pv_id
-
 
13995
                         AND vd.pkg_id = pv.pkg_id
-
 
13996
                         AND vd.view_id = vi.view_id
-
 
13997
                         AND vi.base_view = 'N'
-
 
13998
                         AND rel.rtag_id = rtagid
-
 
13999
                         AND vs.user_id = userid
-
 
14000
                         AND vi.view_id NOT IN (
-
 
14001
                                SELECT *
-
 
14002
                                  FROM THE
-
 
14003
                                          (SELECT CAST
-
 
14004
                                                     (in_list_number
-
 
14005
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
14006
                                                     )
-
 
14007
                                             FROM DUAL
-
 
14008
                                          ))
-
 
14009
                      UNION
8254
                  );
14010
                      /* Private Views expanded */
-
 
14011
                      SELECT vi.view_id, vi.view_name, rel.pkg_state,
-
 
14012
                             rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
14013
                             pv.pkg_version, pv.dlocked, pv.pv_description
-
 
14014
                        FROM users usr,
-
 
14015
                             view_settings vs,
-
 
14016
                             view_def vd,
-
 
14017
                             views vi,
-
 
14018
                             release_content rel,
-
 
14019
                             PACKAGES pkg,
-
 
14020
                             package_versions pv
-
 
14021
                       WHERE vs.user_id = usr.user_id
-
 
14022
                         AND vs.view_id = vi.view_id
-
 
14023
                         AND vd.view_id = vi.view_id
-
 
14024
                         AND pv.pkg_id = pkg.pkg_id
-
 
14025
                         AND rel.pv_id = pv.pv_id
-
 
14026
                         AND rel.rtag_id = rtagid
-
 
14027
                         AND vd.pkg_id = pkg.pkg_id
-
 
14028
                         AND vi.base_view = 'N'
-
 
14029
                         AND vi.view_id IN (
-
 
14030
                                SELECT *
-
 
14031
                                  FROM THE
-
 
14032
                                          (SELECT CAST
-
 
14033
                                                     (in_list_number
-
 
14034
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
14035
                                                     )
-
 
14036
                                             FROM DUAL
-
 
14037
                                          ))
-
 
14038
                         AND usr.user_id = userid) ord
-
 
14039
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
-
 
14040
      END IF;
-
 
14041
   END;
8255
   END;
14042
 
8256
 
14043
/*-------------------------------------------------------------------------------------------------------*/
8257
/*-------------------------------------------------------------------------------------------------------*/
14044
   PROCEDURE get_work_in_progress_items (
8258
   FUNCTION insert_package_metrics (
14045
      viewtype           IN       NUMBER,
8259
      rtagid                   IN   NUMBER,
14046
      userid             IN       NUMBER,
8260
      pkgname                  IN   VARCHAR2,
14047
      rtagid             IN       NUMBER,
8261
      vext                     IN   VARCHAR2,
14048
      sviewidshowlist    IN       VARCHAR2,
8262
      metricstring             IN   VARCHAR2
14049
      ntruerecordcount   OUT      NUMBER,
-
 
14050
      recordset          OUT      typecur
-
 
14051
   )
8263
   )
-
 
8264
      RETURN NUMBER
14052
   IS
8265
   IS
14053
   BEGIN
-
 
-
 
8266
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
14054
      -- Get true record count because views can give false count
8267
      lv_pvid                  NUMBER                 := 0;
14055
      SELECT COUNT (wip.pv_id)
8268
      rownumber                NUMBER;
14056
        INTO ntruerecordcount
8269
      rowcontent               VARCHAR2(4000);
14057
        FROM work_in_progress wip
8270
      metricname               VARCHAR2(1000);
14058
       WHERE wip.rtag_id = rtagid;
8271
      metricvalue              VARCHAR2(4000);
-
 
8272
      return_insert_error      NUMBER                 := -1;
-
 
8273
      return_insert_success    NUMBER                 := 0;
14059
 
8274
 
14060
      IF viewtype = 1
8275
      /* Metrics */
14061
      THEN
-
 
14062
         /*--- GUEST VIEW ---*/
-
 
14063
         OPEN recordset FOR
-
 
14064
            SELECT   *
-
 
14065
                FROM (
-
 
14066
                      /* Base Views collapsed */
-
 
14067
                      SELECT DISTINCT vi.view_id, vi.view_name,
-
 
14068
                                      TO_NUMBER (NULL) AS pkg_state,
-
 
14069
                                      TO_NUMBER (NULL) AS deprecated_state,
-
 
14070
                                      TO_NUMBER (NULL) AS pv_id,
-
 
14071
                                      NULL AS pkg_name, NULL AS pkg_version,
-
 
14072
                                      NULL AS dlocked, NULL AS pv_description
-
 
14073
                                 FROM work_in_progress rel, views vi
-
 
14074
                                WHERE rel.view_id = vi.view_id
-
 
14075
                                  AND rtag_id = rtagid
-
 
14076
                                  AND rel.view_id NOT IN (
-
 
14077
                                         SELECT *
-
 
14078
                                           FROM THE
-
 
14079
                                                   (SELECT CAST
-
 
14080
                                                              (in_list_number
-
 
14081
                                                                  (sviewidshowlist
-
 
14082
                                                                  ) AS relmgr_number_tab_t
-
 
14083
                                                              )
-
 
14084
                                                      FROM DUAL
-
 
14085
                                                   ))
-
 
14086
                      UNION
-
 
14087
                      /* Base Views expanded */
-
 
14088
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
-
 
14089
                             
8276
      lv_branches                 NUMBER;
14090
                             --rel.pkg_state,
-
 
14091
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
-
 
14092
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
-
 
14093
                             pv.pv_description
-
 
14094
                        FROM work_in_progress rel,
-
 
14095
                             PACKAGES pkg,
8277
      lv_branchlist               VARCHAR2(4000);
14096
                             package_versions pv,
-
 
14097
                             views vi
8278
      lv_codefiles                NUMBER;
14098
                       WHERE pv.pkg_id = pkg.pkg_id
-
 
14099
                         AND rel.pv_id = pv.pv_id
-
 
14100
                         AND rel.view_id = vi.view_id
-
 
14101
                         AND rel.view_id IN (
-
 
14102
                                SELECT *
8279
      lv_ignoredfiles             NUMBER;
14103
                                  FROM THE
8280
      lv_directories              NUMBER;
14104
                                          (SELECT CAST
-
 
14105
                                                     (in_list_number
-
 
14106
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
14107
                                                     )
-
 
14108
                                             FROM DUAL
-
 
14109
                                          ))
-
 
14110
                         AND rtag_id = rtagid) ord
-
 
14111
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
-
 
14112
      ELSIF viewtype = 2
-
 
14113
      THEN
-
 
14114
         /*--- PERSONAL VIEW ---*/
-
 
14115
         OPEN recordset FOR
-
 
14116
            SELECT   *
-
 
14117
                FROM (
-
 
14118
                      /* Base Views collapsed */
-
 
14119
                      SELECT DISTINCT vi.view_id, vi.view_name,
-
 
14120
                                      TO_NUMBER (NULL) AS pkg_state,
-
 
14121
                                      TO_NUMBER (NULL) AS deprecated_state,
-
 
14122
                                      TO_NUMBER (NULL) AS pv_id,
-
 
14123
                                      NULL AS pkg_name, NULL AS pkg_version,
-
 
14124
                                      NULL AS dlocked, NULL AS pv_description
-
 
14125
                                 FROM work_in_progress rel,
-
 
14126
                                      view_settings vs,
-
 
14127
                                      views vi
-
 
14128
                                WHERE rel.view_id = vi.view_id
-
 
14129
                                  AND vs.view_id = rel.view_id
-
 
14130
                                  AND vs.user_id = userid
-
 
14131
                                  AND rtag_id = rtagid
-
 
14132
                                  AND rel.view_id NOT IN (
-
 
14133
                                         SELECT *
-
 
14134
                                           FROM THE
-
 
14135
                                                   (SELECT CAST
-
 
14136
                                                              (in_list_number
-
 
14137
                                                                  (sviewidshowlist
-
 
14138
                                                                  ) AS relmgr_number_tab_t
-
 
14139
                                                              )
-
 
14140
                                                      FROM DUAL
-
 
14141
                                                   ))
-
 
14142
                      UNION
-
 
14143
                      /* Base Views expanded */
-
 
14144
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
-
 
14145
                             
-
 
14146
                             --rel.pkg_state,
-
 
14147
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
-
 
14148
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
-
 
14149
                             pv.pv_description
-
 
14150
                        FROM work_in_progress rel,
-
 
14151
                             PACKAGES pkg,
-
 
14152
                             package_versions pv,
-
 
14153
                             views vi,
-
 
14154
                             view_settings vs
-
 
14155
                       WHERE pv.pkg_id = pkg.pkg_id
-
 
14156
                         AND rel.pv_id = pv.pv_id
-
 
14157
                         AND rel.view_id = vi.view_id
-
 
14158
                         AND vs.view_id = vi.view_id
-
 
14159
                         AND vs.user_id = userid
-
 
14160
                         AND rel.view_id IN (
-
 
14161
                                SELECT *
8281
      lv_directorydepth           NUMBER;
14162
                                  FROM THE
8282
      lv_totalfiles               NUMBER;
14163
                                          (SELECT CAST
-
 
14164
                                                     (in_list_number
-
 
14165
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
14166
                                                     )
-
 
14167
                                             FROM DUAL
-
 
14168
                                          ))
-
 
14169
                         AND rtag_id = rtagid
-
 
14170
                      UNION
-
 
14171
                      /* Private Views collapsed */
-
 
14172
                      SELECT vi.view_id, vi.view_name,
-
 
14173
                             TO_NUMBER (NULL) AS pkg_state,
-
 
14174
                             TO_NUMBER (NULL) AS deprecated_state,
-
 
14175
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
-
 
14176
                             NULL AS pkg_version, NULL AS dlocked,
-
 
14177
                             NULL AS pv_description
-
 
14178
                        FROM view_settings vs,
-
 
14179
                             view_def vd,
-
 
14180
                             views vi,
-
 
14181
                             work_in_progress rel,
-
 
14182
                             package_versions pv
-
 
14183
                       WHERE vs.view_id = vi.view_id
-
 
14184
                         AND rel.pv_id = pv.pv_id
-
 
14185
                         AND vd.pkg_id = pv.pkg_id
-
 
14186
                         AND vd.view_id = vi.view_id
-
 
14187
                         AND vi.base_view = 'N'
-
 
14188
                         AND rel.rtag_id = rtagid
-
 
14189
                         AND vs.user_id = userid
-
 
14190
                         AND vi.view_id NOT IN (
-
 
14191
                                SELECT *
8283
      lv_makefiles                NUMBER;
14192
                                  FROM THE
8284
      lv_blanklines               NUMBER;
14193
                                          (SELECT CAST
-
 
14194
                                                     (in_list_number
-
 
14195
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
14196
                                                     )
-
 
14197
                                             FROM DUAL
-
 
14198
                                          ))
-
 
14199
                      UNION
-
 
14200
                      /* Private Views expanded */
-
 
14201
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
-
 
14202
                             
-
 
14203
                             --rel.pkg_state,
-
 
14204
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
-
 
14205
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
-
 
14206
                             pv.pv_description
-
 
14207
                        FROM users usr,
-
 
14208
                             view_settings vs,
-
 
14209
                             view_def vd,
-
 
14210
                             views vi,
-
 
14211
                             work_in_progress rel,
-
 
14212
                             PACKAGES pkg,
-
 
14213
                             package_versions pv
-
 
14214
                       WHERE vs.user_id = usr.user_id
-
 
14215
                         AND vs.view_id = vi.view_id
-
 
14216
                         AND vd.view_id = vi.view_id
-
 
14217
                         AND pv.pkg_id = pkg.pkg_id
-
 
14218
                         AND rel.pv_id = pv.pv_id
-
 
14219
                         AND rel.rtag_id = rtagid
-
 
14220
                         AND vd.pkg_id = pkg.pkg_id
-
 
14221
                         AND vi.base_view = 'N'
-
 
14222
                         AND vi.view_id IN (
-
 
14223
                                SELECT *
8285
      lv_codelines                NUMBER;
14224
                                  FROM THE
8286
      lv_commentlines             NUMBER;
14225
                                          (SELECT CAST
-
 
14226
                                                     (in_list_number
-
 
14227
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
14228
                                                     )
-
 
14229
                                             FROM DUAL
-
 
14230
                                          ))
-
 
14231
                         AND usr.user_id = userid) ord
-
 
14232
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
-
 
14233
      END IF;
-
 
14234
   END;
-
 
14235
 
8287
 
14236
/*-------------------------------------------------------------------------------------------------------*/
-
 
14237
   PROCEDURE get_pending_items (
-
 
14238
      viewtype           IN       NUMBER,
-
 
14239
      userid             IN       NUMBER,
-
 
14240
      rtagid             IN       NUMBER,
-
 
14241
      sviewidshowlist    IN       VARCHAR2,
-
 
14242
      ntruerecordcount   OUT      NUMBER,
-
 
14243
      recordset          OUT      typecur
-
 
14244
   )
-
 
14245
   IS
-
 
14246
   BEGIN
8288
   BEGIN
14247
      -- Get true record count because views can give false count
8289
      /*--------------- Business Rules Here -------------------*/
14248
      SELECT COUNT (pl.pv_id)
-
 
14249
        INTO ntruerecordcount
-
 
14250
        FROM planned pl
-
 
14251
       WHERE pl.rtag_id = rtagid;
-
 
14252
 
-
 
14253
      IF viewtype = 1
8290
      IF (rtagid IS NULL)
14254
      THEN
-
 
14255
         /*--- GUEST VIEW ---*/
-
 
14256
         OPEN recordset FOR
-
 
14257
            SELECT   *
-
 
14258
                FROM (
-
 
14259
                      /* Base Views collapsed */
-
 
14260
                      SELECT DISTINCT vi.view_id, vi.view_name,
-
 
14261
                                      TO_NUMBER (NULL) AS pkg_state,
-
 
14262
                                      TO_NUMBER (NULL) AS deprecated_state,
-
 
14263
                                      TO_NUMBER (NULL) AS pv_id,
-
 
14264
                                      NULL AS pkg_name, NULL AS pkg_version,
-
 
14265
                                      NULL AS dlocked, NULL AS pv_description
-
 
14266
                                 FROM planned rel, views vi
-
 
14267
                                WHERE rel.view_id = vi.view_id
-
 
14268
                                  AND rtag_id = rtagid
-
 
14269
                                  AND rel.view_id NOT IN (
-
 
14270
                                         SELECT *
-
 
14271
                                           FROM THE
-
 
14272
                                                   (SELECT CAST
-
 
14273
                                                              (in_list_number
-
 
14274
                                                                  (sviewidshowlist
-
 
14275
                                                                  ) AS relmgr_number_tab_t
-
 
14276
                                                              )
-
 
14277
                                                      FROM DUAL
-
 
14278
                                                   ))
-
 
14279
                      UNION
-
 
14280
                      /* Base Views expanded */
-
 
14281
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
-
 
14282
                             
-
 
14283
                             --rel.pkg_state,
-
 
14284
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
-
 
14285
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
-
 
14286
                             pv.pv_description
-
 
14287
                        FROM planned rel,
-
 
14288
                             PACKAGES pkg,
-
 
14289
                             package_versions pv,
-
 
14290
                             views vi
-
 
14291
                       WHERE pv.pkg_id = pkg.pkg_id
-
 
14292
                         AND rel.pv_id = pv.pv_id
-
 
14293
                         AND rel.view_id = vi.view_id
-
 
14294
                         AND rel.view_id IN (
-
 
14295
                                SELECT *
-
 
14296
                                  FROM THE
-
 
14297
                                          (SELECT CAST
-
 
14298
                                                     (in_list_number
-
 
14299
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
14300
                                                     )
-
 
14301
                                             FROM DUAL
-
 
14302
                                          ))
-
 
14303
                         AND rtag_id = rtagid) ord
-
 
14304
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
-
 
14305
      ELSIF viewtype = 2
-
 
14306
      THEN
8291
      THEN
14307
         /*--- PERSONAL VIEW ---*/
-
 
14308
         OPEN recordset FOR
8292
         RETURN return_insert_error;
14309
            SELECT   *
-
 
14310
                FROM (
-
 
14311
                      /* Base Views collapsed */
-
 
14312
                      SELECT DISTINCT vi.view_id, vi.view_name,
-
 
14313
                                      TO_NUMBER (NULL) AS pkg_state,
-
 
14314
                                      TO_NUMBER (NULL) AS deprecated_state,
-
 
14315
                                      TO_NUMBER (NULL) AS pv_id,
-
 
14316
                                      NULL AS pkg_name, NULL AS pkg_version,
-
 
14317
                                      NULL AS dlocked, NULL AS pv_description
-
 
14318
                                 FROM planned rel, view_settings vs, views vi
-
 
14319
                                WHERE rel.view_id = vi.view_id
-
 
14320
                                  AND vs.view_id = rel.view_id
-
 
14321
                                  AND vs.user_id = userid
-
 
14322
                                  AND rtag_id = rtagid
-
 
14323
                                  AND rel.view_id NOT IN (
-
 
14324
                                         SELECT *
-
 
14325
                                           FROM THE
-
 
14326
                                                   (SELECT CAST
-
 
14327
                                                              (in_list_number
-
 
14328
                                                                  (sviewidshowlist
-
 
14329
                                                                  ) AS relmgr_number_tab_t
-
 
14330
                                                              )
-
 
14331
                                                      FROM DUAL
-
 
14332
                                                   ))
-
 
14333
                      UNION
-
 
14334
                      /* Base Views expanded */
-
 
14335
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
-
 
14336
                             
-
 
14337
                             --rel.pkg_state,
-
 
14338
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
-
 
14339
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
-
 
14340
                             pv.pv_description
-
 
14341
                        FROM planned rel,
-
 
14342
                             PACKAGES pkg,
-
 
14343
                             package_versions pv,
-
 
14344
                             views vi,
-
 
14345
                             view_settings vs
-
 
14346
                       WHERE pv.pkg_id = pkg.pkg_id
-
 
14347
                         AND rel.pv_id = pv.pv_id
-
 
14348
                         AND rel.view_id = vi.view_id
-
 
14349
                         AND vs.view_id = vi.view_id
-
 
14350
                         AND vs.user_id = userid
-
 
14351
                         AND rel.view_id IN (
-
 
14352
                                SELECT *
-
 
14353
                                  FROM THE
-
 
14354
                                          (SELECT CAST
-
 
14355
                                                     (in_list_number
-
 
14356
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
14357
                                                     )
-
 
14358
                                             FROM DUAL
-
 
14359
                                          ))
-
 
14360
                         AND rtag_id = rtagid
-
 
14361
                      UNION
-
 
14362
                      /* Private Views collapsed */
-
 
14363
                      SELECT vi.view_id, vi.view_name,
-
 
14364
                             TO_NUMBER (NULL) AS pkg_state,
-
 
14365
                             TO_NUMBER (NULL) AS deprecated_state,
-
 
14366
                             TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
-
 
14367
                             NULL AS pkg_version, NULL AS dlocked,
-
 
14368
                             NULL AS pv_description
-
 
14369
                        FROM view_settings vs,
-
 
14370
                             view_def vd,
-
 
14371
                             views vi,
-
 
14372
                             planned rel,
-
 
14373
                             package_versions pv
-
 
14374
                       WHERE vs.view_id = vi.view_id
-
 
14375
                         AND rel.pv_id = pv.pv_id
-
 
14376
                         AND vd.pkg_id = pv.pkg_id
-
 
14377
                         AND vd.view_id = vi.view_id
-
 
14378
                         AND vi.base_view = 'N'
-
 
14379
                         AND rel.rtag_id = rtagid
-
 
14380
                         AND vs.user_id = userid
-
 
14381
                         AND vi.view_id NOT IN (
-
 
14382
                                SELECT *
-
 
14383
                                  FROM THE
-
 
14384
                                          (SELECT CAST
-
 
14385
                                                     (in_list_number
-
 
14386
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
14387
                                                     )
-
 
14388
                                             FROM DUAL
-
 
14389
                                          ))
-
 
14390
                      UNION
-
 
14391
                      /* Private Views expanded */
-
 
14392
                      SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
-
 
14393
                             
-
 
14394
                             --rel.pkg_state,
-
 
14395
                             TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
-
 
14396
                             pkg.pkg_name, pv.pkg_version, pv.dlocked,
-
 
14397
                             pv.pv_description
-
 
14398
                        FROM users usr,
-
 
14399
                             view_settings vs,
-
 
14400
                             view_def vd,
-
 
14401
                             views vi,
-
 
14402
                             planned rel,
-
 
14403
                             PACKAGES pkg,
-
 
14404
                             package_versions pv
-
 
14405
                       WHERE vs.user_id = usr.user_id
-
 
14406
                         AND vs.view_id = vi.view_id
-
 
14407
                         AND vd.view_id = vi.view_id
-
 
14408
                         AND pv.pkg_id = pkg.pkg_id
-
 
14409
                         AND rel.pv_id = pv.pv_id
-
 
14410
                         AND rel.rtag_id = rtagid
-
 
14411
                         AND vd.pkg_id = pkg.pkg_id
-
 
14412
                         AND vi.base_view = 'N'
-
 
14413
                         AND vi.view_id IN (
-
 
14414
                                SELECT *
-
 
14415
                                  FROM THE
-
 
14416
                                          (SELECT CAST
-
 
14417
                                                     (in_list_number
-
 
14418
                                                              (sviewidshowlist) AS relmgr_number_tab_t
-
 
14419
                                                     )
-
 
14420
                                             FROM DUAL
-
 
14421
                                          ))
-
 
14422
                         AND usr.user_id = userid) ord
-
 
14423
            ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
-
 
14424
      END IF;
8293
      END IF;
14425
   END;
-
 
14426
 
-
 
14427
/*-------------------------------------------------------------------------------------------------------*/
-
 
14428
   PROCEDURE get_view_content (
-
 
14429
      rtagid      IN       NUMBER,
-
 
14430
      viewid      IN       NUMBER,
-
 
14431
      recordset   OUT      typecur
-
 
14432
   )
-
 
14433
   IS
-
 
14434
      isbaseview   CHAR (1);
-
 
14435
   BEGIN
-
 
14436
      -- Check if the view is BASE VIEW
-
 
14437
      SELECT vi.base_view
-
 
14438
        INTO isbaseview
-
 
14439
        FROM views vi
-
 
14440
       WHERE vi.view_id = viewid;
-
 
14441
 
8294
 
14442
      IF (isbaseview = 'Y')
8295
      IF (pkgname IS NULL)
14443
      THEN
8296
      THEN
14444
         -- Get Base view content
-
 
14445
         OPEN recordset FOR
8297
         RETURN return_insert_error;
14446
            SELECT   DECODE (rel.pkg_state,
-
 
14447
                             NULL, 0,
-
 
14448
                             rel.pkg_state
-
 
14449
                            ) AS pkg_state,
-
 
14450
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
14451
                     pv.pkg_version, pv.dlocked, pv.pv_description,
-
 
14452
                     pv.build_type
-
 
14453
                FROM environment_view rel, PACKAGES pkg, package_versions pv
-
 
14454
               WHERE pv.pkg_id = pkg.pkg_id
-
 
14455
                 AND rel.pv_id = pv.pv_id
-
 
14456
                 AND rel.view_id = viewid
-
 
14457
                 AND rel.rtag_id = rtagid
-
 
14458
            ORDER BY UPPER (pkg.pkg_name);
-
 
14459
      ELSE
-
 
14460
         -- Get non base view content
-
 
14461
         OPEN recordset FOR
-
 
14462
            SELECT   DECODE (rel.pkg_state,
-
 
14463
                             NULL, 0,
-
 
14464
                             rel.pkg_state
-
 
14465
                            ) AS pkg_state,
-
 
14466
                     rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
14467
                     pv.pkg_version, pv.dlocked, pv.pv_description,
-
 
14468
                     pv.build_type
-
 
14469
                FROM environment_view rel,
-
 
14470
                     PACKAGES pkg,
-
 
14471
                     package_versions pv,
-
 
14472
                     view_def vd
-
 
14473
               WHERE pv.pkg_id = pkg.pkg_id
-
 
14474
                 AND rel.pv_id = pv.pv_id
-
 
14475
                 AND rel.rtag_id = rtagid
-
 
14476
                 AND vd.view_id = viewid
-
 
14477
                 AND vd.pkg_id = pv.pkg_id
-
 
14478
            ORDER BY UPPER (pkg.pkg_name);
-
 
14479
      END IF;
8298
      END IF;
14480
   END;
-
 
14481
 
-
 
14482
/*-------------------------------------------------------------------------------------------------------*/
-
 
14483
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
-
 
14484
      RETURN NUMBER
-
 
14485
   IS
-
 
14486
      envtab             NUMBER;
-
 
14487
      returnvalue        NUMBER;
-
 
14488
      return_not_found   NUMBER := -1;
-
 
14489
   BEGIN
-
 
14490
      envtab := get_package_area (pvid, rtagid);
-
 
14491
 
8299
 
14492
      IF envtab = 0
8300
      IF (metricstring IS NULL)
14493
      THEN
-
 
14494
         -- WORK IN PROGRESS --
-
 
14495
         returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
-
 
14496
      ELSIF envtab = 1
-
 
14497
      THEN
-
 
14498
         -- PENDING --
-
 
14499
         returnvalue := pk_planned.get_package_view (pvid, rtagid);
-
 
14500
      ELSIF envtab = 2
-
 
14501
      THEN
8301
      THEN
14502
         -- RELEASED --
-
 
14503
         returnvalue := pk_release.get_package_view (pvid, rtagid);
-
 
14504
      ELSE
-
 
14505
         -- This may be a Patch not located anywhere but unlocked
-
 
14506
         returnvalue := return_not_found;
8302
         RETURN return_insert_error;
14507
      END IF;
8303
      END IF;
14508
 
8304
 
-
 
8305
      BEGIN
-
 
8306
         SELECT pv.pv_id
14509
      RETURN returnvalue;
8307
           INTO lv_pvid
-
 
8308
           FROM package_versions pv, packages pkg, release_content rc
-
 
8309
          WHERE pv.pkg_id = pkg.pkg_id
-
 
8310
            AND rc.rtag_id = rtagid
-
 
8311
            AND pv.pv_id = rc.pv_id
-
 
8312
            AND pkg.pkg_name = pkgname
-
 
8313
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
-
 
8314
      EXCEPTION
-
 
8315
           WHEN NO_DATA_FOUND
-
 
8316
           THEN
-
 
8317
                lv_pvid := 0;
14510
   END;
8318
      END;
14511
 
8319
 
14512
/*-------------------------------------------------------------------------------------------------------*/
-
 
14513
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
-
 
14514
   IS
-
 
14515
      viewid          NUMBER;
-
 
14516
      envtab          NUMBER;
-
 
14517
      ispatch         CHAR (1) := NULL;
-
 
14518
      buildtype       CHAR (1) := NULL;
-
 
14519
      lastversionid   NUMBER;
-
 
14520
   BEGIN
-
 
14521
      -- Check if package is patch
-
 
14522
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
-
 
14523
        INTO ispatch, buildtype, lastversionid
8320
      citemcollection := in_list_varchar2 (metricstring, ';');
14524
        FROM package_versions pv
-
 
14525
       WHERE pv.pv_id = pvid;
-
 
14526
 
8321
 
14527
      -- Get ViewId
-
 
14528
      viewid := get_package_view (pvid, rtagid);
-
 
14529
      -- Remove from current area
-
 
14530
      envtab := pk_environment.get_package_area (pvid, rtagid);
-
 
14531
 
-
 
14532
      -- Make sure that package was in work-in-progress or pending before makeing it release
-
 
14533
      -- Exclude patches, ripple builds
8322
      FOR rownumber IN 1 .. citemcollection.COUNT
14534
      IF (envtab < 0)
-
 
14535
      THEN
8323
      LOOP
14536
         -- Not found in work-in-progress or pending
8324
         rowcontent := citemcollection(rownumber);
14537
         IF (ispatch IS NULL) AND (buildtype = 'M')
8325
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
14538
         THEN
-
 
14539
            raise_application_error (-20000,
-
 
14540
                                     'This package cannot be released here.'
8326
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
14541
                                    );
-
 
14542
         END IF;
-
 
14543
      END IF;
-
 
14544
 
8327
 
-
 
8328
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
-
 
8329
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
-
 
8330
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
-
 
8331
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
-
 
8332
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
-
 
8333
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
-
 
8334
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
-
 
8335
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
-
 
8336
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
-
 
8337
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
-
 
8338
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
14545
      -- Log
8339
         END IF;
14546
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
8340
      END LOOP;
14547
 
8341
 
14548
      IF envtab = 0
8342
      IF (lv_pvid > 0)
14549
      THEN
-
 
14550
         -- WORK IN PROGRESS --
-
 
14551
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
-
 
14552
      ELSIF envtab = 1
-
 
14553
      THEN
8343
      THEN
-
 
8344
         -- Delete any existing entries for this package version to makes sure our data is untainted
-
 
8345
         DELETE FROM package_metrics pm
-
 
8346
         WHERE pm.pv_id = lv_pvid;
-
 
8347
 
-
 
8348
         -- Insert the new data into the metrics table
-
 
8349
         INSERT INTO package_metrics
-
 
8350
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
-
 
8351
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
14554
         -- PENDING --
8352
                     )
-
 
8353
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
14555
         pk_planned.remove_package (pvid, rtagid, userid);
8354
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
14556
      END IF;
8355
                     );
14557
 
8356
 
14558
      -- Change package state
8357
         -- Now update the Release_Metrics Table
14559
      pk_package.change_state (pvid, 'Y', userid);
8358
         update_release_metrics(rtagid);
14560
 
8359
 
14561
      -- Make sure it is valid BASE VIEW
8360
         RETURN return_insert_success;
14562
      IF viewid < 1
-
 
14563
      THEN
8361
      ELSE
14564
         viewid := 7;                            -- This is default base view
8362
         RETURN return_insert_error;
14565
      END IF;
8363
      END IF;
-
 
8364
   END;
14566
 
8365
 
-
 
8366
/*-------------------------------------------------------------------------------------------------------*/
-
 
8367
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
-
 
8368
   IS
-
 
8369
      lv_totalpackages       NUMBER;
-
 
8370
      lv_autobuilt           NUMBER;
-
 
8371
      lv_linesofcode         NUMBER;
-
 
8372
      lv_unittested          NUMBER;
-
 
8373
      lv_autotested          NUMBER;
-
 
8374
      lv_numOfbranches       NUMBER;
-
 
8375
      lv_lastbuildtime       DATE;
-
 
8376
   BEGIN
14567
      IF (ispatch IS NULL)
8377
      IF (rtagid > 0)
14568
      THEN
8378
      THEN
-
 
8379
         -- Get the total number of packages in this release and the number of
14569
         -- Add package to new area
8380
         -- those that are autobuilt
-
 
8381
         SELECT COUNT (DISTINCT rc.pv_id),
-
 
8382
                COUNT (DISTINCT autobuilt_qry.pv_id)
14570
         pk_release.add_package (pvid, viewid, rtagid, userid);
8383
           INTO lv_totalpackages, lv_autobuilt
-
 
8384
           FROM release_content rc,
-
 
8385
                package_versions pv,
14571
      END IF;
8386
                (
-
 
8387
                 SELECT rc.pv_id
-
 
8388
                   FROM release_content rc,
-
 
8389
                        package_versions pv
-
 
8390
                  WHERE pv.is_autobuildable = 'Y'
-
 
8391
                    AND pv.pv_id = rc.pv_id
-
 
8392
                    AND rc.rtag_id = rtagid
-
 
8393
                ) autobuilt_qry
-
 
8394
          WHERE pv.pv_id = rc.pv_id
-
 
8395
            AND rc.rtag_id = rtagid
-
 
8396
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
14572
 
8397
 
-
 
8398
         -- Get the build time of the last package built in this release and the
-
 
8399
         -- total number of lines of code
14573
      -- Now do post Release Actions
8400
         SELECT MAX(pm.created_stamp),
-
 
8401
                SUM(pm.code_lines)
-
 
8402
           INTO lv_lastbuildtime, lv_linesofcode
-
 
8403
           FROM package_metrics pm, release_content rc
-
 
8404
          WHERE pm.pv_id = rc.pv_id
14574
      pk_release.run_post_actions (pvid, rtagid);
8405
            AND rc.rtag_id = rtagid;
14575
 
8406
 
14576
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
8407
         -- Get the number of packages with unit tests in this release and the
-
 
8408
         -- number of those that are autotested
-
 
8409
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
14577
      DELETE FROM do_not_ripple
8410
           FROM unit_tests ut,
-
 
8411
                release_content rc
14578
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
8412
          WHERE ut.pv_id = rc.pv_id
-
 
8413
            AND rc.rtag_id = rtagid
-
 
8414
        AND ut.test_types_fk != 1;
14579
 
8415
 
14580
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
8416
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
14581
      DELETE FROM advisory_ripple
8417
          FROM unit_tests ut,
-
 
8418
               release_content rc
14582
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
8419
         WHERE ut.pv_id = rc.pv_id
-
 
8420
           AND rc.rtag_id = rtagid
-
 
8421
           AND ut.test_types_fk = 7;
14583
 
8422
 
14584
      -- Log
-
 
14585
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
-
 
14586
   END;
-
 
14587
 
8423
 
14588
/*-------------------------------------------------------------------------------------------------------*/
8424
         -- Count the number of unique branches in the packages in this release.
14589
   PROCEDURE auto_make_release (
8425
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
14590
      pvid            IN   NUMBER,
8426
--           FROM (
14591
      rtagid          IN   NUMBER,
8427
--                SELECT pv_id,
14592
      userid          IN   NUMBER,
8428
--                       regexp_substr(str, '[^,]+', 1, level) branch,
14593
      vext            IN   package_versions.v_ext%TYPE,
8429
--                       level lv,
14594
      ssv_ext         IN   package_versions.v_ext%TYPE,
8430
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
14595
      clonefrompvid   IN   NUMBER
8431
--                  FROM (
14596
   )
-
 
14597
   IS
-
 
14598
      viewid          NUMBER;
8432
--                       SELECT pm.pv_id,
14599
      envtab          NUMBER;
8433
--                              ','||pm.branch_list str
14600
      ispatch         CHAR (1) := NULL;
8434
--                         FROM package_metrics pm,
14601
      buildtype       CHAR (1) := NULL;
8435
--                              release_content rc
14602
      lastversionid   NUMBER;
8436
--                        WHERE pm.pv_id = rc.pv_id
14603
   BEGIN
-
 
14604
      -- Check if package is patch
8437
--                          AND rc.rtag_id = rtagid
14605
      SELECT pv.is_patch, pv.build_type, pv.last_pv_id
8438
--                       )
14606
        INTO ispatch, buildtype, lastversionid
8439
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
14607
        FROM package_versions pv
8440
--                )
14608
       WHERE pv.pv_id = pvid;
8441
--          WHERE lv != lg;
14609
 
8442
 
14610
      IF vext <> ssv_ext
-
 
14611
      THEN
-
 
14612
         -- Get ViewId
8443
         UPDATE release_metrics rm
14613
         viewid := get_package_view (clonefrompvid, rtagid);
8444
            SET rm.total_packages = lv_totalpackages,
14614
         -- Remove from current area
8445
                rm.autobuilt = lv_autobuilt,
14615
         envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
8446
                rm.lines_of_code = lv_linesofcode,
14616
      ELSE
-
 
14617
         -- Get ViewId
8447
                rm.unit_tested = lv_unittested,
14618
         viewid := get_package_view (pvid, rtagid);
8448
                rm.autotested = lv_autotested,
14619
         -- Remove from current area
8449
--                rm.branches = lv_numOfbranches,
14620
         envtab := pk_environment.get_package_area (pvid, rtagid);
8450
                rm.last_build_time = lv_lastbuildtime
14621
      END IF;
8451
          WHERE rtag_id = rtagid;
14622
 
8452
 
14623
      -- Make sure that package was in work-in-progress or pending before makeing it release
-
 
14624
      -- Exclude patches, ripple builds
-
 
14625
      IF (envtab < 0)
8453
         IF (SQL%ROWCOUNT = 0)
14626
      THEN
-
 
14627
         -- Not found in work-in-progress or pending
-
 
14628
         IF (ispatch IS NULL) AND (buildtype = 'M')
-
 
14629
         THEN
8454
         THEN
14630
            raise_application_error (-20000,
8455
            INSERT INTO release_metrics
14631
                                     'This package cannot be released here.'
8456
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
-
 
8457
                         autotested, last_build_time
-
 
8458
                        )
-
 
8459
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
-
 
8460
                         lv_autotested, lv_lastbuildtime
14632
                                    );
8461
                        );
14633
         END IF;
8462
         END IF;
-
 
8463
--         IF (SQL%ROWCOUNT = 0)
-
 
8464
--         THEN
-
 
8465
--            INSERT INTO release_metrics
-
 
8466
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
-
 
8467
--                         autotested, branches, last_build_time
-
 
8468
--                        )
-
 
8469
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
-
 
8470
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
-
 
8471
--                        );
-
 
8472
--         END IF;
-
 
8473
--      ELSE
-
 
8474
--         raise_application_error (-20000, 'RtagId must be supplied.');
14634
      END IF;
8475
      END IF;
-
 
8476
   END;
-
 
8477
/*-------------------------------------------------------------------------------------------------------*/
-
 
8478
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2
-
 
8479
   IS
-
 
8480
      vcstypeid    NUMBER;
-
 
8481
      vcstag       VARCHAR2(32);
-
 
8482
      label        VARCHAR2(60);
-
 
8483
      srcpath      VARCHAR2(2000);
-
 
8484
      vcstypeid_cc NUMBER;
-
 
8485
      vcstypeid_uc NUMBER;
-
 
8486
   BEGIN
-
 
8487
      -- Get the VCS_TYPE_ID for the ClearCase version control system. We do this so that we make no assumptions about
-
 
8488
      -- what the primary key value is for the ClearCase VCS entry.
-
 
8489
      BEGIN
-
 
8490
         SELECT vt.vcs_type_id
-
 
8491
         INTO vcstypeid_cc
-
 
8492
         FROM VCS_TYPE vt
-
 
8493
         WHERE vt.tag = 'CC';
-
 
8494
         EXCEPTION
-
 
8495
            WHEN NO_DATA_FOUND THEN
-
 
8496
               raise_application_error (-20000, 'Database is missing compulsory CC version control system tag!');
-
 
8497
      END;
14635
 
8498
 
-
 
8499
      -- Get the VCS_TYPE_ID for the Uncontrolled version control system. We do this so that we make no assumptions about
-
 
8500
      -- what the primary key value is for the Uncontrolled VCS entry.
14636
      -- Log
8501
      BEGIN
-
 
8502
         SELECT vt.vcs_type_id
-
 
8503
         INTO vcstypeid_uc
-
 
8504
         FROM VCS_TYPE vt
-
 
8505
         WHERE vt.tag = 'UC';
-
 
8506
         EXCEPTION
-
 
8507
            WHEN NO_DATA_FOUND THEN
14637
      log_action (pvid, 'action', userid, 'Start of Make Package Release...');
8508
               raise_application_error (-20000, 'Database is missing compulsory UC version control system tag!');
-
 
8509
      END;
14638
 
8510
 
14639
      IF vext <> ssv_ext
8511
      -- Get the PKG_LABEL, SRC_PATH, VCS_TYPE_ID for the package version
14640
      THEN
-
 
14641
         IF envtab = 0
8512
      -- As additional VCS types are introduced, we may have to extend what this SELECT statement returns
14642
         THEN
8513
      BEGIN
14643
            -- WORK IN PROGRESS --
8514
         SELECT pv.pkg_label, pv.src_path,
14644
            pk_work_in_progress.remove_package (clonefrompvid, rtagid,
8515
           (CASE WHEN pv.pkg_label = 'N/A' AND pv.vcs_type_id IS NULL THEN vcstypeid_uc
14645
                                                userid);
8516
                 WHEN pv.vcs_type_id IS NULL THEN vcstypeid_cc
14646
         ELSIF envtab = 1
8517
                 ELSE pv.vcs_type_id END) AS vcs_type_id
14647
         THEN
8518
         INTO label, srcpath, vcstypeid
14648
            -- PENDING --
8519
         FROM PACKAGE_VERSIONS pv
14649
            pk_planned.remove_package (clonefrompvid, rtagid, userid);
-
 
14650
         ELSIF envtab = 2
8520
         WHERE pv.pv_id = pvid;
14651
         THEN
8521
         EXCEPTION
14652
            -- RELEASED --
8522
            WHEN NO_DATA_FOUND THEN
14653
            pk_release.remove_package (clonefrompvid, rtagid, userid);
8523
               raise_application_error (-20000, 'Package Version Not Found!');
14654
         END IF;
8524
      END;
-
 
8525
 
-
 
8526
      -- Get the VCS TAG for the VCS_TYPE_ID.
14655
      ELSE
8527
      BEGIN
14656
         IF envtab = 0
8528
         SELECT vt.tag
14657
         THEN
8529
         INTO vcstag
14658
            -- WORK IN PROGRESS --
8530
         FROM VCS_TYPE vt
14659
            pk_work_in_progress.remove_package (pvid, rtagid, userid);
-
 
14660
         ELSIF envtab = 1
8531
         WHERE vt.vcs_type_id = vcstypeid;
14661
         THEN
8532
         EXCEPTION
14662
            -- PENDING --
8533
            WHEN NO_DATA_FOUND THEN
14663
            pk_planned.remove_package (pvid, rtagid, userid);
8534
               raise_application_error (-20000, 'Could not get VCS Tag for the package version!');
14664
         END IF;
-
 
14665
      END IF;
8535
      END;
14666
 
8536
 
-
 
8537
      -- Return value depending upon which VCS Tag is being used.
-
 
8538
      -- As additional VCS types are introduced, we have to add additional WHEN clauses
14667
      -- Change package state
8539
      CASE vcstag
-
 
8540
         WHEN 'CC' THEN
14668
      pk_package.change_state (pvid, 'Y', userid);
8541
            RETURN vcstag || '::' || srcpath || '::' || label;
-
 
8542
         WHEN 'SVN' THEN
-
 
8543
            RETURN vcstag || '::' || srcpath || '::' || label;
-
 
8544
         ELSE
-
 
8545
            RETURN vcstag || '::';
-
 
8546
      END CASE;
14669
 
8547
 
14670
      -- Make sure it is valid BASE VIEW
-
 
14671
      IF viewid < 1
-
 
14672
      THEN
8548
   END;
14673
         viewid := 7;                            -- This is default base view
8549
/*-------------------------------------------------------------------------------------------------------*/
14674
      END IF;
-
 
14675
 
8550
 
-
 
8551
/*-------------------------------------------------------------------------------------------------------
14676
      IF (ispatch IS NULL)
8552
Name:        update_vcs_details
-
 
8553
Description: Updates the Version Control System (vcs) details specified in the vcstag
-
 
8554
             parameter for the specified package version.
-
 
8555
             The specified package vcstag is parsed and split into 3 fields:
-
 
8556
                vcs type, src path, label
-
 
8557
             These fields are then stored for the specified pv_id in the package_versions, table.
-
 
8558
             An action is recorded in the action log and provides information for tracking and
-
 
8559
             for restoring the previous vcs settings if a recovery is required.
14677
      THEN
8560
Paramters:
14678
         -- Add package to new area
8561
             ipv_id:     Package version identifier
14679
         pk_release.add_package (pvid, viewid, rtagid, userid);
8562
             vcstag:     Full version control tag.
-
 
8563
                         Examples:
-
 
8564
                             "SVN::AUPERASVN01/DPG_SWBase/tools/trunk::daf_tools_25.1.7027.cr@1234"
-
 
8565
                            "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
-
 
8566
             user_id:    Identifier of the user that is performing this function.
-
 
8567
*/
-
 
8568
PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER)
-
 
8569
   IS
-
 
8570
      ivcs_type_id   NUMBER;
-
 
8571
      svcs_type      VARCHAR2(128);
-
 
8572
      ssrc_path      VARCHAR2(512);
-
 
8573
      spkg_label     VARCHAR2(512);
-
 
8574
      spattern       VARCHAR2(64);
-
 
8575
      saction_desc   VARCHAR2(2048);
-
 
8576
      old_vcs_type   VARCHAR2(128);
-
 
8577
      old_src_path   VARCHAR2(512);
-
 
8578
      old_pkg_label  VARCHAR2(512);
-
 
8579
      old_pkg_vcstag VARCHAR2(1024);
-
 
8580
      i              NUMBER;
-
 
8581
      vcount         NUMBER;
14680
      END IF;
8582
   BEGIN
-
 
8583
     -- Split vcs tag into fields: vcs type, src path, label
-
 
8584
     -- Fields are separated by '::'
-
 
8585
     -- e.g "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
-
 
8586
     -- The below regular expression pattern has groups to achieve this.
14681
 
8587
 
14682
      -- Now do post Release Actions
-
 
14683
      pk_release.run_post_actions (pvid, rtagid);
-
 
14684
      -- Now update the Dash_Board Table
-
 
14685
      pk_rmapi.update_dash_board (rtagid);
8588
     spattern:= '^([^:]*)::([^:]*)(::(.*))?$';
14686
 
8589
 
14687
      -- Now delete old version from DO_NOT_RIPPLE Table if it Exists
8590
     --As Oracle 10g does not allow REGEXP_SUBSTR to return a group,
14688
      DELETE FROM do_not_ripple
8591
     --REGEXP_REPLACE is used instead (Note: Oracle 11g has this enhancement).
-
 
8592
     SELECT REGEXP_REPLACE(vcstag,spattern, '\1') INTO svcs_type  FROM DUAL;
-
 
8593
     SELECT REGEXP_REPLACE(vcstag,spattern, '\2') INTO ssrc_path  FROM DUAL;
14689
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
8594
     SELECT REGEXP_REPLACE(vcstag,spattern, '\4') INTO spkg_label FROM DUAL;
14690
 
8595
 
-
 
8596
     -- Validate vcs type
-
 
8597
     BEGIN
14691
      -- Now delete old version from ADVISORY_RIPPLES Table if it Exists
8598
       SELECT vc.vcs_type_id INTO ivcs_type_id FROM vcs_type vc WHERE UPPER(svcs_type) = UPPER(vc.tag);
-
 
8599
     EXCEPTION
14692
      DELETE FROM advisory_ripple
8600
       WHEN NO_DATA_FOUND THEN
14693
            WHERE rtag_id = rtagid AND pv_id = lastversionid;
8601
         raise_application_error (-20000, 'Invalid vcs type: ' || '"' || svcs_type || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
-
 
8602
       --RAISE;
-
 
8603
     END;
14694
 
8604
 
14695
      -- Log
8605
     -- If Clearcase
-
 
8606
     IF (ivcs_type_id = 2) THEN
-
 
8607
       -- Validate source path
14696
      log_action (pvid, 'action', userid, 'End of Make Package Release...');
8608
       IF NOT REGEXP_LIKE(ssrc_path,'^(\\|\/)[a-z]+[0-9a-z_\.\-\\\/ -]*$','i') THEN
-
 
8609
         raise_application_error (-20000, 'Invalid CC src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
14697
   END;
8610
       END IF;
14698
 
8611
 
14699
/*-------------------------------------------------------------------------------------------------------*/
-
 
14700
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
-
 
14701
   IS
-
 
14702
      viewid   NUMBER;
-
 
14703
      envtab   NUMBER;
-
 
14704
   BEGIN
-
 
14705
      -- Get ViewId
8612
       -- Validate label
14706
      --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
8613
       -- For clearcase the label must be specified. For subversion it is not required.
14707
      viewid := get_package_view (pvid, rtagid);
8614
       IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+$','i') THEN
14708
      -- Remove from current area
-
 
14709
      envtab := pk_environment.get_package_area (pvid, rtagid);
8615
         raise_application_error (-20000, 'Invalid CC label:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
14710
      -- Log
8616
       END IF;
14711
      log_action (pvid,
-
 
14712
                  'action',
-
 
14713
                  userid,
-
 
14714
                  'Start of Make Package UnRelease...'
-
 
14715
                 );
-
 
14716
 
8617
 
14717
      IF envtab = 2
8618
     -- if Subversion
14718
      THEN
8619
     ELSIF (ivcs_type_id = 23) THEN
14719
         -- RELEASE AREA --
8620
       -- general validity
14720
         pk_release.remove_package (pvid, rtagid, userid);
8621
       -- Not as picky as the RM Data entry
14721
      ELSIF envtab = 1
-
 
14722
      THEN
-
 
14723
         -- PENDING --
8622
       IF NOT REGEXP_LIKE(ssrc_path,'^([0-9a-z_\.\-]+)(\/([0-9a-z_\.\-]+))+$','i') THEN
14724
         pk_planned.remove_package (pvid, rtagid, userid);
8623
         raise_application_error (-20000, 'Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
14725
      END IF;
8624
       END IF;
14726
 
8625
 
-
 
8626
       -- Validate Tag
14727
      -- Change package state
8627
       -- May be a Peg or a Label
14728
      pk_package.change_state (pvid, 'N', userid);
8628
       IF NOT REGEXP_LIKE(spkg_label,'^@?[0-9]+$','i') THEN
-
 
8629
           IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+($|@[0-9]+)','i') THEN
-
 
8630
             raise_application_error (-20000, 'Invalid SVN tag:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
-
 
8631
           END IF;
-
 
8632
       END IF;
14729
 
8633
 
14730
      -- Make sure it is valid BASE VIEW
8634
        -- Check for suitable ending
14731
      IF viewid < 1
-
 
14732
      THEN
-
 
14733
         viewid := 7;                            -- This is default base view
8635
        IF NOT REGEXP_LIKE(ssrc_path,'(\/tags$)|(\/branches\/)|(\/trunk$)','i') THEN
-
 
8636
            raise_application_error (-20000, 'Must end in /trunk or /tags/ or /branches/.... Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
14734
      END IF;
8637
        END IF;
14735
 
8638
 
-
 
8639
       -- Check for combined use of tags, branches, trunk or repeats of each
-
 
8640
       -- Count occurrences of /tags or /branches/ or /trunk
-
 
8641
       vcount:=0;
-
 
8642
       i:=1;
14736
      -- Add package to new area
8643
       WHILE i > 0 LOOP
14737
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
8644
         i:=REGEXP_INSTR(ssrc_path,'(\/tags(\/|$))|(\/branches(\/|$))|(\/trunk(\/|$))',i,1,1,'i');
14738
      -- Now do post Release Actions
8645
         IF i > 0 THEN
14739
      pk_release.run_post_actions (pvid, rtagid);
8646
           -- if found then increment count
14740
      -- Log
8647
           vcount:=vcount+1;
14741
      log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
8648
           i:=i-1;  -- move index back to "/"
-
 
8649
         END IF;
14742
   END;
8650
       END LOOP;
14743
 
8651
 
14744
/*-------------------------------------------------------------------------------------------------------*/
-
 
14745
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
-
 
14746
   IS
-
 
14747
      viewid      NUMBER;
8652
       IF vcount = 0  THEN
14748
      ispatch     CHAR (1) := NULL;
8653
         raise_application_error (-20000, 'Must contain exactly one of the keywords /trunk, /tags, /branches/. Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
14749
      buildtype   CHAR (1) := NULL;
-
 
14750
   BEGIN
8654
       END IF;
14751
      -- Check if package is patch
-
 
14752
      SELECT pv.is_patch, pv.build_type
-
 
14753
        INTO ispatch, buildtype
-
 
14754
        FROM package_versions pv
-
 
14755
       WHERE pv.pv_id = pvid;
-
 
14756
 
8655
 
14757
      -- Get ViewId
8656
       IF vcount > 1  THEN
14758
      viewid := get_package_view (pvid, rtagid);
8657
         raise_application_error (-20000, 'Combined use of /trunk, /tags, or /branches/. Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
14759
      --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
8658
       END IF;
14760
 
8659
 
14761
      -- Log
-
 
14762
      log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
-
 
14763
 
8660
 
14764
      IF (ispatch IS NULL)
-
 
14765
      THEN
-
 
14766
         -- Remove from current area
-
 
14767
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
-
 
14768
         -- Change package state
-
 
14769
         pk_package.change_state (pvid, 'P', userid);
-
 
14770
         -- Add package to new area
-
 
14771
         pk_planned.add_package (pvid, viewid, rtagid, userid);
-
 
14772
      END IF;
8661
     END IF;
14773
 
8662
 
14774
      -- Log
8663
     BEGIN
14775
      log_action (pvid, 'action', userid, 'End of Make Package Pending...');
8664
       -- Get current vcs tag for specified package version
-
 
8665
       SELECT pv.src_path, pv.pkg_label, vc.tag as vcs_type
-
 
8666
       INTO old_src_path, old_pkg_label, old_vcs_type
-
 
8667
       FROM package_versions pv, vcs_type vc
14776
   END;
8668
       WHERE pv.pv_id = ipv_id
-
 
8669
       AND pv.vcs_type_id = vc.vcs_type_id (+);
14777
 
8670
 
14778
/*-------------------------------------------------------------------------------------------------------*/
-
 
14779
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
-
 
14780
   IS
-
 
14781
   BEGIN
-
 
14782
      -- Log
8671
     EXCEPTION
14783
      log_action (pvid,
-
 
14784
                  'action',
8672
       WHEN NO_DATA_FOUND THEN
14785
                  userid,
-
 
14786
                  'Start of Package Pending Approval...'
-
 
14787
                 );
-
 
14788
      -- Change package state
-
 
14789
      pk_package.change_state (pvid, 'A', userid);
-
 
14790
      -- Log
-
 
14791
      log_action (pvid, 'action', userid,
-
 
14792
                  'End of Package Pending Approval...');
8673
         raise_application_error (-20000, 'Package version not found: ' || ipv_id);
14793
   END;
8674
     END;
14794
 
8675
 
14795
/*-------------------------------------------------------------------------------------------------------*/
-
 
14796
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
8676
     old_pkg_vcstag:= old_vcs_type || '::' || old_src_path;
14797
   IS
-
 
14798
      viewid   NUMBER;
8677
     IF (old_pkg_label IS NOT NULL) THEN
-
 
8678
       old_pkg_vcstag:=old_pkg_vcstag || '::' || old_pkg_label;
14799
   BEGIN
8679
     END IF;
14800
      -- Get ViewId
-
 
14801
      viewid := get_package_view (pvid, rtagid);
-
 
14802
-- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
-
 
14803
 
8680
 
14804
      -- Log
-
 
14805
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
-
 
14806
      -- Remove from current area
8681
     -- Create action description
14807
      pk_planned.remove_package (pvid, rtagid, userid);
8682
     -- This description will contain the old and new tags.
14808
      -- Change package state
-
 
14809
      pk_package.change_state (pvid, 'R', userid);
8683
     -- Its purpose is to provide information for tracking and for restoring previous vcs settings if a recovery is required.
14810
      -- Add package to new area
8684
     -- An example of the action description is below:
14811
      pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
8685
     --   OldTag:CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr NewTag:SVN::DPG_SWBase/tools/tags/daf_tools_25.1.7027.cr
14812
      -- Log
-
 
14813
      log_action (pvid, 'action', userid, 'Start of Reject Package...');
8686
     saction_desc:='OldTag:' || old_pkg_vcstag || ' ' || 'NewTag:' || vcstag;
14814
   END;
-
 
14815
 
8687
 
14816
/*-------------------------------------------------------------------------------------------------------*/
8688
     -- Store new vcs details
14817
   PROCEDURE change_package_view (
8689
     UPDATE package_versions SET
14818
      pvid        IN   NUMBER,
8690
       src_path = ssrc_path,
14819
      rtagid      IN   NUMBER,
8691
       pkg_label = spkg_label,
14820
      newviewid   IN   NUMBER
8692
       vcs_type_id = ivcs_type_id
14821
   )
-
 
14822
   IS
8693
     WHERE
14823
      envtab   NUMBER;
8694
       pv_id = ipv_id;
14824
   BEGIN
-
 
14825
      envtab := pk_environment.get_package_area (pvid, rtagid);
-
 
14826
 
8695
 
14827
      IF envtab = 0
-
 
14828
      THEN
-
 
14829
         -- WORK IN PROGRESS --
-
 
14830
         pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
8696
     -- Store action in action log so that we can back track and also restore vcs settings if required.
14831
      ELSIF envtab = 1
-
 
14832
      THEN
-
 
14833
         -- PENDING --
-
 
14834
         pk_planned.change_package_view (pvid, rtagid, newviewid);
-
 
14835
      ELSIF envtab = 2
-
 
14836
      THEN
-
 
14837
         -- RELEASED --
-
 
14838
         pk_release.change_package_view (pvid, rtagid, newviewid);
8697
     log_action (ipv_id,'VcsConversion',user_id,saction_desc);
14839
      END IF;
-
 
14840
   END;
-
 
14841
 
8698
 
14842
/*-------------------------------------------------------------------------------------------------------*/
-
 
14843
   PROCEDURE find_package (
-
 
14844
      skeyword      IN       VARCHAR2,
-
 
14845
      nrtagid       IN       NUMBER,
-
 
14846
      nsearcharea   IN       NUMBER,
-
 
14847
      recordset     OUT      typecur
-
 
14848
   )
-
 
14849
   IS
-
 
14850
   BEGIN
-
 
14851
      IF nsearcharea = 0
8699
   END update_vcs_details;
14852
      THEN
-
 
14853
         /* Search Work In Progress */
-
 
14854
         OPEN recordset FOR
-
 
14855
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
-
 
14856
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
-
 
14857
                     pv.modified_stamp, usr.full_name, usr.user_email
-
 
14858
                FROM views vi,
-
 
14859
                     work_in_progress rc,
-
 
14860
                     PACKAGES pkg,
-
 
14861
                     package_versions pv,
-
 
14862
                     users usr
-
 
14863
               WHERE rc.view_id = vi.view_id
-
 
14864
                 AND rc.pv_id = pv.pv_id
-
 
14865
                 AND pkg.pkg_id = pv.pkg_id
-
 
14866
                 AND pv.modifier_id = usr.user_id
-
 
14867
                 AND rc.rtag_id = nrtagid
-
 
14868
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
-
 
14869
            ORDER BY UPPER (pkg.pkg_name);
-
 
14870
      ELSIF nsearcharea = 1
-
 
14871
      THEN
-
 
14872
         /* Search Pending */
-
 
14873
         OPEN recordset FOR
-
 
14874
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
-
 
14875
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
-
 
14876
                     pv.modified_stamp, usr.full_name, usr.user_email
-
 
14877
                FROM views vi,
-
 
14878
                     planned rc,
-
 
14879
                     PACKAGES pkg,
-
 
14880
                     package_versions pv,
-
 
14881
                     users usr
-
 
14882
               WHERE rc.view_id = vi.view_id
-
 
14883
                 AND rc.pv_id = pv.pv_id
-
 
14884
                 AND pkg.pkg_id = pv.pkg_id
-
 
14885
                 AND pv.modifier_id = usr.user_id
-
 
14886
                 AND rc.rtag_id = nrtagid
-
 
14887
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
-
 
14888
            ORDER BY UPPER (pkg.pkg_name);
-
 
14889
      ELSIF nsearcharea = 2
-
 
14890
      THEN
-
 
14891
         /* Search Released */
-
 
14892
         OPEN recordset FOR
-
 
14893
            SELECT   nsearcharea AS env_area, vi.view_name, pv.dlocked,
-
 
14894
                     pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
-
 
14895
                     pv.modified_stamp, usr.full_name, usr.user_email
-
 
14896
                FROM views vi,
-
 
14897
                     release_content rc,
-
 
14898
                     PACKAGES pkg,
-
 
14899
                     package_versions pv,
-
 
14900
                     users usr
-
 
14901
               WHERE rc.base_view_id = vi.view_id
-
 
14902
                 AND rc.pv_id = pv.pv_id
-
 
14903
                 AND pkg.pkg_id = pv.pkg_id
-
 
14904
                 AND pv.modifier_id = usr.user_id
-
 
14905
                 AND rc.rtag_id = nrtagid
-
 
14906
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
-
 
14907
            ORDER BY UPPER (pkg.pkg_name);
-
 
14908
      ELSIF nsearcharea = 3
-
 
14909
      THEN
-
 
14910
         /* Search ALL */
-
 
14911
         OPEN recordset FOR
-
 
14912
            SELECT   rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
-
 
14913
                     pv.pv_id, pv.pkg_version, pv.comments,
-
 
14914
                     pv.modified_stamp, usr.full_name, usr.user_email
-
 
14915
                FROM views vi,
-
 
14916
                     environment_view rc,
-
 
14917
                     PACKAGES pkg,
-
 
14918
                     package_versions pv,
-
 
14919
                     users usr
-
 
14920
               WHERE rc.view_id = vi.view_id
-
 
14921
                 AND rc.pv_id = pv.pv_id
-
 
14922
                 AND pkg.pkg_id = pv.pkg_id
-
 
14923
                 AND pv.modifier_id = usr.user_id
-
 
14924
                 AND rc.rtag_id = nrtagid
-
 
14925
                 AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
-
 
14926
            ORDER BY UPPER (pkg.pkg_name);
-
 
14927
      END IF;
-
 
14928
   END;
-
 
14929
 
8700
 
14930
/*-------------------------------------------------------------------------------------------------------*/
8701
/*-------------------------------------------------------------------------------------------------------
14931
   PROCEDURE find_file (
-
 
14932
      skeyword      IN       VARCHAR2,
-
 
14933
      nrtagid       IN       NUMBER,
-
 
14934
      nsearcharea   IN       NUMBER,
-
 
14935
      npagesize     IN       NUMBER,
-
 
14936
      recordset     OUT      typecur
-
 
14937
   )
-
 
14938
   IS
-
 
14939
   BEGIN
-
 
14940
      IF nsearcharea = 0
-
 
14941
      THEN
-
 
14942
         /* Search Work In Progress */
-
 
14943
         OPEN recordset FOR
-
 
14944
            SELECT   qry.*
-
 
14945
                FROM (
-
 
14946
                      /* File search on Packages */
-
 
14947
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
-
 
14948
                             pv.pv_id, pv.pkg_version, art.crc_cksum
-
 
14949
                        FROM work_in_progress rc,
-
 
14950
                             PACKAGES pkg,
-
 
14951
                             package_versions pv,
-
 
14952
                             release_components art
-
 
14953
                       WHERE rc.pv_id = art.pv_id
-
 
14954
                         AND pv.pkg_id = pkg.pkg_id
-
 
14955
                         AND rc.pv_id = pv.pv_id
-
 
14956
                         AND rc.rtag_id = nrtagid
-
 
14957
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
-
 
14958
                      UNION ALL
-
 
14959
                      /* File search on Products */
-
 
14960
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
-
 
14961
                             pv.pv_id, pv.pkg_version, art.crc_cksum
-
 
14962
                        FROM work_in_progress rc,
-
 
14963
                             PACKAGES pkg,
-
 
14964
                             package_versions pv,
-
 
14965
                             product_components art
-
 
14966
                       WHERE rc.pv_id = art.pv_id
-
 
14967
                         AND pv.pkg_id = pkg.pkg_id
-
 
14968
                         AND rc.pv_id = pv.pv_id
-
 
14969
                         AND rc.rtag_id = nrtagid
-
 
14970
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
-
 
14971
               WHERE ROWNUM <= npagesize
-
 
14972
            ORDER BY UPPER (qry.pkg_name);
-
 
14973
      ELSIF nsearcharea = 1
-
 
14974
      THEN
-
 
14975
         /* Search Pending */
-
 
14976
         OPEN recordset FOR
-
 
14977
            SELECT   qry.*
-
 
14978
                FROM (
8702
Name:        isSVN
14979
                      /* File search on Packages */
-
 
14980
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
-
 
14981
                             pv.pv_id, pv.pkg_version, art.crc_cksum
8703
Description: Determine if any of the packages versions are controlled under SVN
14982
                        FROM planned rc,
-
 
14983
                             PACKAGES pkg,
-
 
14984
                             package_versions pv,
-
 
14985
                             release_components art
-
 
14986
                       WHERE rc.pv_id = art.pv_id
-
 
14987
                         AND pv.pkg_id = pkg.pkg_id
-
 
14988
                         AND rc.pv_id = pv.pv_id
-
 
14989
                         AND rc.rtag_id = nrtagid
-
 
14990
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
-
 
14991
                      UNION ALL
-
 
14992
                      /* File search on Products */
-
 
14993
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
-
 
14994
                             pv.pv_id, pv.pkg_version, art.crc_cksum
8704
			 Intended to be used to prevent users from releasing a package
14995
                        FROM planned rc,
-
 
14996
                             PACKAGES pkg,
-
 
14997
                             package_versions pv,
-
 
14998
                             product_components art
-
 
14999
                       WHERE rc.pv_id = art.pv_id
-
 
15000
                         AND pv.pkg_id = pkg.pkg_id
-
 
15001
                         AND rc.pv_id = pv.pv_id
-
 
15002
                         AND rc.rtag_id = nrtagid
-
 
15003
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
-
 
15004
               WHERE ROWNUM <= npagesize
-
 
15005
            ORDER BY UPPER (qry.pkg_name);
-
 
15006
      ELSIF nsearcharea = 2
-
 
15007
      THEN
-
 
15008
         /* Search Released */
8705
			 that has been migrated to SVN
15009
         OPEN recordset FOR
-
 
15010
            SELECT   qry.*
-
 
15011
                FROM (
-
 
15012
                      /* File search on Packages */
-
 
15013
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
-
 
15014
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
-
 
15015
                             NULL AS patch_id
-
 
15016
                        FROM release_content rc,
-
 
15017
                             PACKAGES pkg,
-
 
15018
                             package_versions pv,
-
 
15019
                             release_components art
-
 
15020
                       WHERE rc.pv_id = art.pv_id
-
 
15021
                         AND pv.pkg_id = pkg.pkg_id
-
 
15022
                         AND rc.pv_id = pv.pv_id
-
 
15023
                         AND rc.rtag_id = nrtagid
-
 
15024
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
-
 
15025
                      UNION ALL
-
 
15026
                      /* File search on Products */
-
 
15027
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
-
 
15028
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
-
 
15029
                             NULL AS patch_id
-
 
15030
                        FROM release_content rc,
-
 
15031
                             PACKAGES pkg,
-
 
15032
                             package_versions pv,
-
 
15033
                             product_components art
-
 
15034
                       WHERE rc.pv_id = art.pv_id
-
 
15035
                         AND pv.pkg_id = pkg.pkg_id
-
 
15036
                         AND rc.pv_id = pv.pv_id
-
 
15037
                         AND rc.rtag_id = nrtagid
-
 
15038
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
-
 
15039
                      UNION ALL
-
 
15040
                      /* File search on Patches */
-
 
15041
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
-
 
15042
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
-
 
15043
                             DECODE (art.file_path,
-
 
15044
                                     NULL, pp.patch_id,
-
 
15045
                                     NULL
-
 
15046
                                    ) AS patch_id
-
 
15047
                        FROM release_content rc,
-
 
15048
                             PACKAGES pkg,
-
 
15049
                             package_versions pv,
-
 
15050
                             release_components art,
-
 
15051
                             package_patches pp
-
 
15052
                       WHERE pv.pv_id = pp.pv_id
-
 
15053
                         AND pv.pkg_id = pkg.pkg_id
-
 
15054
                         AND rc.rtag_id = nrtagid
-
 
15055
                         AND art.pv_id = pp.patch_id
-
 
15056
                         AND rc.pv_id = pp.pv_id
-
 
15057
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
-
 
15058
               WHERE ROWNUM <= npagesize
-
 
15059
            ORDER BY UPPER (qry.pkg_name);
-
 
15060
      ELSIF nsearcharea = 3
-
 
15061
      THEN
-
 
15062
         /* Search ALL */
-
 
15063
         OPEN recordset FOR
-
 
15064
            SELECT   qry.*
-
 
15065
                FROM (
-
 
15066
                      /* File search on Packages */
-
 
15067
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
-
 
15068
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
-
 
15069
                             NULL AS patch_id
-
 
15070
                        FROM environment_view rc,
-
 
15071
                             PACKAGES pkg,
-
 
15072
                             package_versions pv,
-
 
15073
                             release_components art
-
 
15074
                       WHERE rc.pv_id = art.pv_id
-
 
15075
                         AND pv.pkg_id = pkg.pkg_id
-
 
15076
                         AND rc.pv_id = pv.pv_id
-
 
15077
                         AND rc.rtag_id = nrtagid
-
 
15078
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
-
 
15079
                      UNION ALL
-
 
15080
                      /* File search on Products */
-
 
15081
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
-
 
15082
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
-
 
15083
                             NULL AS patch_id
-
 
15084
                        FROM environment_view rc,
-
 
15085
                             PACKAGES pkg,
-
 
15086
                             package_versions pv,
-
 
15087
                             product_components art
-
 
15088
                       WHERE rc.pv_id = art.pv_id
-
 
15089
                         AND pv.pkg_id = pkg.pkg_id
-
 
15090
                         AND rc.pv_id = pv.pv_id
-
 
15091
                         AND rc.rtag_id = nrtagid
-
 
15092
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)
-
 
15093
                      UNION ALL
-
 
15094
                      /* File search on Patches */
-
 
15095
                      SELECT art.file_name, art.file_path, pkg.pkg_name,
-
 
15096
                             pv.pv_id, pv.pkg_version, art.crc_cksum,
-
 
15097
                             DECODE (art.file_path,
-
 
15098
                                     NULL, pp.patch_id,
-
 
15099
                                     NULL
-
 
15100
                                    ) AS patch_id
-
 
15101
                        FROM release_content rc,
-
 
15102
                             PACKAGES pkg,
-
 
15103
                             package_versions pv,
-
 
15104
                             release_components art,
-
 
15105
                             package_patches pp
-
 
15106
                       WHERE pv.pv_id = pp.pv_id
-
 
15107
                         AND pv.pkg_id = pkg.pkg_id
-
 
15108
                         AND rc.rtag_id = nrtagid
-
 
15109
                         AND art.pv_id = pp.patch_id
-
 
15110
                         AND rc.pv_id = pp.pv_id
-
 
15111
                         AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
-
 
15112
               WHERE ROWNUM <= npagesize
-
 
15113
            ORDER BY UPPER (qry.pkg_name);
-
 
15114
      END IF;
-
 
15115
   END;
-
 
15116
 
8706
 
15117
/*-------------------------------------------------------------------------------------------------------*/
-
 
15118
   PROCEDURE get_prodrelease_items (
-
 
15119
      rtagid             IN       NUMBER,
-
 
15120
      ntruerecordcount   OUT      NUMBER,
-
 
15121
      recordset          OUT      typecur
-
 
15122
   )
-
 
15123
   IS
-
 
15124
   BEGIN
-
 
15125
      -- Get true record count n the number of integration products
-
 
15126
      SELECT COUNT (rc.pv_id)
-
 
15127
        INTO ntruerecordcount
-
 
15128
        FROM release_content rc
-
 
15129
       WHERE rc.rtag_id = rtagid;
-
 
15130
 
-
 
15131
      OPEN recordset FOR
-
 
15132
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,    --rel.pkg_state,
-
 
15133
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
15134
                  pv.pkg_version, pv.dlocked, pv.pv_description
-
 
15135
             FROM release_content rel,
-
 
15136
                  PACKAGES pkg,
-
 
15137
                  package_versions pv,
8707
Paramters:	pkgid:     Package ID
15138
                  views vi
-
 
15139
            WHERE pv.pkg_id = pkg.pkg_id
-
 
15140
              AND rel.pv_id = pv.pv_id
-
 
15141
              AND rel.base_view_id = vi.view_id
-
 
15142
              AND pv.is_deployable = 'Y'
-
 
15143
              AND rtag_id = rtagid
-
 
15144
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
-
 
15145
                                              FROM deployment_manager.os_contents)
-
 
15146
              AND rel.product_state IS NULL
-
 
15147
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
-
 
15148
   END;
-
 
15149
 
8708
 
15150
/*-------------------------------------------------------------------------------------------------------*/
-
 
15151
   PROCEDURE get_integration_items (
8709
Returns:	Number of versions under SVN version control
-
 
8710
*/
-
 
8711
      
15152
      rtagid             IN       NUMBER,
8712
FUNCTION isSVN( pkgid IN NUMBER )
15153
      ntruerecordcount   OUT      NUMBER,
8713
    RETURN NUMBER
15154
      recordset          OUT      typecur
-
 
15155
   )
-
 
15156
   IS
8714
    IS
-
 
8715
    svncount   NUMBER  := 0;
15157
   BEGIN
8716
   BEGIN
15158
      -- Get true record count n the number of integration products
8717
        SELECT COUNT(*) INTO svncount FROM PACKAGE_VERSIONS pv WHERE pv.PKG_ID = pkgid AND pv.VCS_TYPE_ID = 23;
15159
      SELECT COUNT (rc.pv_id)
-
 
15160
        INTO ntruerecordcount
-
 
15161
        FROM release_content rc
8718
        RETURN (svncount);
15162
       WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
-
 
15163
 
-
 
15164
      OPEN recordset FOR
-
 
15165
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
-
 
15166
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
15167
                  pv.pkg_version, pv.dlocked, pv.pv_description
-
 
15168
             FROM release_content rel,
-
 
15169
                  PACKAGES pkg,
-
 
15170
                  package_versions pv,
-
 
15171
                  views vi
-
 
15172
            WHERE pv.pkg_id = pkg.pkg_id
-
 
15173
              AND rel.pv_id = pv.pv_id
-
 
15174
              AND rel.base_view_id = vi.view_id
-
 
15175
              AND pv.is_deployable = 'Y'
-
 
15176
              AND rtag_id = rtagid
-
 
15177
              AND rel.product_state IN (1, 5)
-
 
15178
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
-
 
15179
   END;
8719
   END;
-
 
8720
   
-
 
8721
/*-------------------------------------------------------------------------------------------------------
-
 
8722
Name:        isSVNbyName
-
 
8723
Description: Determine if any of the packages versions are controlled under SVN
-
 
8724
			 Intended to be used to prevent users from releasing a package
-
 
8725
			 that has been migrated to SVN
15180
 
8726
 
15181
/*-------------------------------------------------------------------------------------------------------*/
-
 
15182
   PROCEDURE get_test_items (
-
 
15183
      rtagid             IN       NUMBER,
-
 
15184
      ntruerecordcount   OUT      NUMBER,
-
 
15185
      recordset          OUT      typecur
-
 
15186
   )
-
 
15187
   IS
-
 
15188
   BEGIN
-
 
15189
      -- Get true record count n the number of test products
-
 
15190
      SELECT COUNT (rc.pv_id)
-
 
15191
        INTO ntruerecordcount
-
 
15192
        FROM release_content rc
8727
Paramters:	pkgname:	Package Name
15193
       WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
-
 
15194
 
-
 
15195
      OPEN recordset FOR
-
 
15196
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
-
 
15197
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
15198
                  pv.pkg_version, pv.dlocked, pv.pv_description
-
 
15199
             FROM release_content rel,
-
 
15200
                  PACKAGES pkg,
-
 
15201
                  package_versions pv,
-
 
15202
                  views vi
-
 
15203
            WHERE pv.pkg_id = pkg.pkg_id
-
 
15204
              AND rel.pv_id = pv.pv_id
-
 
15205
              AND rel.base_view_id = vi.view_id
-
 
15206
              AND pv.is_deployable = 'Y'
-
 
15207
              AND rtag_id = rtagid
-
 
15208
              AND rel.product_state = 2
-
 
15209
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
-
 
15210
   END;
-
 
15211
 
8728
 
15212
/*-------------------------------------------------------------------------------------------------------*/
-
 
15213
   PROCEDURE get_deploy_items (
-
 
15214
      rtagid             IN       NUMBER,
-
 
15215
      ntruerecordcount   OUT      NUMBER,
-
 
15216
      recordset          OUT      typecur
-
 
15217
   )
-
 
15218
   IS
-
 
15219
   BEGIN
-
 
15220
      -- Get true record count n the number of deploy products
8729
Returns:	Number of versions under SVN version control
15221
      SELECT COUNT (rc.pv_id)
-
 
15222
        INTO ntruerecordcount
-
 
15223
        FROM release_content rc
-
 
15224
       WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
-
 
15225
 
8730
*/
15226
      OPEN recordset FOR
-
 
15227
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
-
 
15228
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
15229
                  pv.pkg_version, pv.dlocked, pv.pv_description
-
 
15230
             FROM release_content rel,
-
 
15231
                  PACKAGES pkg,
-
 
15232
                  package_versions pv,
-
 
15233
                  views vi
-
 
15234
            WHERE pv.pkg_id = pkg.pkg_id
-
 
15235
              AND rel.pv_id = pv.pv_id
-
 
15236
              AND rel.base_view_id = vi.view_id
-
 
15237
              AND pv.is_deployable = 'Y'
-
 
15238
              AND rtag_id = rtagid
-
 
15239
              AND rel.product_state IN (3, 5)
-
 
15240
              AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
-
 
15241
                                              FROM deployment_manager.os_contents)
-
 
15242
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
-
 
15243
   END;
-
 
15244
 
8731
 
15245
/*-------------------------------------------------------------------------------------------------------*/
-
 
15246
   PROCEDURE get_reject_items (
-
 
15247
      rtagid             IN       NUMBER,
8732
FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) 
15248
      ntruerecordcount   OUT      NUMBER,
8733
    RETURN NUMBER
15249
      recordset          OUT      typecur
-
 
15250
   )
8734
IS
15251
   IS
8735
   svncount   NUMBER  := 0;
15252
   BEGIN
8736
   BEGIN
15253
      -- Get true record count n the number of reject products
8737
        SELECT COUNT(*) INTO svncount FROM PACKAGE_VERSIONS pv, PACKAGES pkg WHERE pkg.pkg_name = pkgname AND pv.PKG_ID = pkg.pkg_id AND pv.VCS_TYPE_ID = 23;
15254
      SELECT COUNT (rc.pv_id)
8738
        RETURN (svncount);
15255
        INTO ntruerecordcount
8739
   END;
15256
        FROM release_content rc
-
 
15257
       WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
-
 
15258
 
8740
   
15259
      OPEN recordset FOR
-
 
15260
         SELECT   vi.view_id, vi.view_name, rel.pkg_state,
-
 
15261
                  rel.deprecated_state, pv.pv_id, pkg.pkg_name,
-
 
15262
                  pv.pkg_version, pv.dlocked, pv.pv_description
-
 
15263
             FROM release_content rel,
-
 
15264
                  PACKAGES pkg,
-
 
15265
                  package_versions pv,
-
 
15266
                  views vi
-
 
15267
            WHERE pv.pkg_id = pkg.pkg_id
-
 
15268
              AND rel.pv_id = pv.pv_id
-
 
15269
              AND rel.base_view_id = vi.view_id
-
 
15270
              AND pv.is_deployable = 'Y'
-
 
15271
              AND rtag_id = rtagid
-
 
15272
              AND rel.product_state = 4
-
 
15273
         ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
-
 
15274
   END;
8741
   END;
15275
/*-------------------------------------------------------------------------------------------------------*/
-
 
15276
END pk_environment_test;
-
 
15277
/
8742
/
15278
--------------------------------------------------------
8743
--------------------------------------------------------
15279
--  DDL for Package Body PK_BUILDAPI_TEST
8744
--  DDL for Package Body PK_WORK_IN_PROGRESS
15280
--------------------------------------------------------
8745
--------------------------------------------------------
15281
 
8746
 
15282
  CREATE OR REPLACE PACKAGE BODY "PK_BUILDAPI_TEST" IS
8747
  CREATE OR REPLACE PACKAGE BODY "PK_WORK_IN_PROGRESS" IS
15283
 
8748
 
15284
/*
8749
/*
15285
------------------------------
8750
------------------------------
15286
||  Last Modified:  S.Vukovic
8751
||  Last Modified:  S.Vukovic
15287
||  Modified Date:  30/Mar/2005
8752
||  Modified Date:  2/May/2005
15288
||  Body Version:   1.0
8753
||  Body Version:   1.0
15289
------------------------------
8754
------------------------------
15290
*/
8755
*/
15291
 
8756
 
15292
 
8757
 
15293
/*-------------------------------------------------------------------------------------------------------*/
8758
/*-------------------------------------------------------------------------------------------------------*/
15294
PROCEDURE Add_Product_Component ( nPvId IN NUMBER,
8759
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
8760
 
15295
								  sOsName IN VARCHAR2,
8761
	oldPvId NUMBER;
15296
								  sOrigFilePath IN VARCHAR2,
-
 
15297
								  sFileName IN VARCHAR2,
8762
	ReleaseLocation VARCHAR2(4000);
15298
								  sDestFilePath IN VARCHAR2,
-
 
15299
								  nByteSize IN NUMBER,
-
 
15300
								  sCRCcksum IN VARCHAR2 ) IS
8763
	sLocation VARCHAR2(4000) := NULL;
15301
 
8764
 
15302
	nOsId NUMBER;
-
 
15303
 
8765
 
15304
BEGIN
8766
BEGIN
15305
	/*--------------- Business Rules Here -------------------*/
8767
	/*--------------- Business Rules Here -------------------*/
-
 
8768
	/*-------------------------------------------------------*/
-
 
8769
 
-
 
8770
	BEGIN
-
 
8771
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
-
 
8772
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
-
 
8773
		  FROM WORK_IN_PROGRESS wip,
15306
	-- OS Name Requirements --
8774
		  	   RELEASE_TAGS rt,
-
 
8775
			   PROJECTS proj
-
 
8776
		 WHERE wip.PV_ID = newPvId
-
 
8777
		   AND wip.RTAG_ID = rt.RTAG_ID
-
 
8778
		   AND rt.OFFICIAL != 'Y'
-
 
8779
		   AND rt.PROJ_ID = proj.PROJ_ID;
-
 
8780
 
-
 
8781
		EXCEPTION
15307
	IF (sOsName IS NULL) THEN
8782
	    	WHEN NO_DATA_FOUND THEN
15308
		RAISE_APPLICATION_ERROR (-20000, 'OsName cannot be NULL.');
8783
	       		sLocation := NULL;
-
 
8784
	   
15309
	END IF;
8785
	END;	   	   
15310
 
8786
 
15311
 
8787
 
15312
	-- File Requirements --
-
 
15313
	IF (NOT sFileName IS NULL) THEN
-
 
15314
 
8788
 
15315
		IF (nByteSize IS NULL) THEN
8789
	IF (sLocation IS NULL)  THEN
-
 
8790
 
-
 
8791
		-- Add to "Work in progress"
15316
			RAISE_APPLICATION_ERROR (-20000, 'Byte Size cannot be NULL.');
8792
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
-
 
8793
		VALUES( RtagId, newPvId, ViewId );
15317
 
8794
 
15318
		ELSIF (sCRCcksum IS NULL) THEN
-
 
15319
			RAISE_APPLICATION_ERROR (-20000, 'CRC CKSUM cannot be NULL.');
-
 
15320
 
8795
 
-
 
8796
	    /* LOG ACTION */
-
 
8797
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
8798
		  FROM PROJECTS proj,
-
 
8799
		  	   RELEASE_TAGS rt
-
 
8800
		 WHERE rt.PROJ_ID = proj.PROJ_ID
15321
		END IF;
8801
		   AND rt.RTAG_ID = RtagId;
15322
 
8802
 
-
 
8803
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
-
 
8804
 
-
 
8805
	ELSE
-
 
8806
		
-
 
8807
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
-
 
8808
		
15323
	END IF;
8809
	END IF;
15324
 
8810
 
-
 
8811
END;
-
 
8812
/*-------------------------------------------------------------------------------------------------------*/
-
 
8813
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
-
 
8814
 
-
 
8815
	ReleaseLocation VARCHAR2(4000);
15325
 
8816
 
15326
	-- Folder Requirements --
-
 
15327
	-- No requirements for now.
8817
BEGIN
15328
 
8818
 
-
 
8819
	/*--------------- Business Rules Here -------------------*/
15329
	/*-------------------------------------------------------*/
8820
	/*-------------------------------------------------------*/
15330
 
8821
 
15331
	-- Get OsId
-
 
15332
	nOsId := Get_OsId ( sOsName );
-
 
15333
 
8822
 
-
 
8823
	-- Get release location for logging pusposes
-
 
8824
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
8825
	  FROM PROJECTS proj,
-
 
8826
	  	   RELEASE_TAGS rt
-
 
8827
	 WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
8828
	   AND rt.RTAG_ID = RtagId;
-
 
8829
 
-
 
8830
 
-
 
8831
	-- Delete from Work In Progress
-
 
8832
	DELETE
-
 
8833
	  FROM WORK_IN_PROGRESS wip
-
 
8834
	 WHERE wip.RTAG_ID = RtagId
-
 
8835
	   AND wip.PV_ID = PvId;
-
 
8836
 
-
 
8837
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
15334
 
8838
 
15335
	-- Insert component entry
-
 
15336
	INSERT INTO PRODUCT_COMPONENTS ( PV_ID, OS_ID, FILE_PATH, FILE_NAME, DESTINATION_PATH, BYTE_SIZE, CRC_CKSUM )
-
 
15337
    VALUES (
-
 
15338
			  nPvId,
-
 
15339
			  nOsId,
-
 
15340
			  sOrigFilePath,
-
 
15341
			  sFileName,
-
 
15342
			  sDestFilePath,
-
 
15343
			  nByteSize,
-
 
15344
			  sCRCcksum
-
 
15345
			);
-
 
15346
 
8839
 
15347
 
8840
 
15348
	EXCEPTION
-
 
15349
    WHEN DUP_VAL_ON_INDEX
-
 
15350
	THEN
-
 
15351
		RAISE_APPLICATION_ERROR (-20000, 'Cannot have duplicate product components.');
-
 
15352
 
8841
 
15353
END;
8842
END;
15354
/*-------------------------------------------------------------------------------------------------------*/
8843
/*-------------------------------------------------------------------------------------------------------*/
15355
PROCEDURE Remove_All_Product_Components ( nPvId IN NUMBER, sOsName IN VARCHAR2 ) IS
8844
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
15356
 
8845
 
-
 
8846
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
-
 
8847
	ReleaseLocation VARCHAR2(4000);
15357
	nOsId NUMBER;
8848
	PvId NUMBER;
15358
 
8849
 
15359
BEGIN
8850
BEGIN
-
 
8851
 
15360
	/*--------------- Business Rules Here -------------------*/
8852
	/*--------------- Business Rules Here -------------------*/
-
 
8853
	IF (PvIdList IS NULL)
-
 
8854
	THEN
-
 
8855
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
-
 
8856
	END IF;
15361
	/*-------------------------------------------------------*/
8857
	/*-------------------------------------------------------*/
15362
 
8858
 
15363
	-- Get OsId
8859
 
15364
	nOsId := Get_OsId ( sOsName );
8860
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
15365
 
8861
 
15366
 
8862
 
-
 
8863
	-- Get release location for logging pusposes
-
 
8864
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
8865
	  FROM PROJECTS proj,
-
 
8866
	  	   RELEASE_TAGS rt
-
 
8867
	 WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
8868
	   AND rt.RTAG_ID = RtagId;
-
 
8869
 
-
 
8870
 
-
 
8871
	FOR i IN 1..nIdCollector.COUNT
-
 
8872
	LOOP
-
 
8873
		PvId := nIdCollector(i);
-
 
8874
 
15367
	-- Delete component entry
8875
		-- Delete from Work In Progress
15368
	DELETE
8876
		DELETE
15369
	  FROM PRODUCT_COMPONENTS pc
8877
		  FROM WORK_IN_PROGRESS wip
15370
	 WHERE pc.PV_ID = nPvId
8878
		 WHERE wip.RTAG_ID = RtagId
15371
	   AND pc.OS_ID = nOsId;
8879
		   AND wip.PV_ID = PvId;
-
 
8880
 
-
 
8881
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
-
 
8882
 
-
 
8883
	END LOOP;
15372
 
8884
 
15373
 
8885
 
15374
END;
8886
END;
15375
/*-------------------------------------------------------------------------------------------------------*/
8887
/*-------------------------------------------------------------------------------------------------------*/
15376
FUNCTION Get_OsId ( sOsName IN VARCHAR2 ) RETURN NUMBER IS
8888
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
15377
	Code NUMBER;
-
 
15378
	
-
 
15379
BEGIN
-
 
15380
 
8889
 
15381
	-- Get Platform Code --
-
 
15382
	SELECT pf.CODE INTO Code
-
 
15383
	  FROM PLATFORMS pf
8890
	ReturnValue NUMBER;
15384
	 WHERE UPPER( pf.NAME ) = UPPER( sOsName );
-
 
15385
	   
-
 
15386
	
-
 
15387
	RETURN Code;	   
-
 
15388
 
8891
 
15389
	EXCEPTION
8892
BEGIN
-
 
8893
	SELECT wip.VIEW_ID INTO ReturnValue
15390
    	WHEN NO_DATA_FOUND THEN
8894
	  FROM WORK_IN_PROGRESS wip
15391
       		RAISE_APPLICATION_ERROR (-20000, 'Platform '|| sOsName ||' is not valid. It needs to be added to PLATFORMS table in Release Manager.' );
8895
	 WHERE wip.RTAG_ID = RtagId
15392
   	RAISE;
8896
	   AND wip.PV_ID = PvId;
-
 
8897
 
-
 
8898
	RETURN ReturnValue;
15393
END;
8899
END;
15394
/*-------------------------------------------------------------------------------------------------------*/
8900
/*-------------------------------------------------------------------------------------------------------*/
15395
PROCEDURE Update_Build_Service ( sDatabaseServer IN VARCHAR2,
8901
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
15396
			  					 sWebServer IN VARCHAR2,
-
 
15397
								 sMailServer IN VARCHAR2,
-
 
-
 
8902
 
15398
								 sMailSender IN VARCHAR2) IS
8903
	IsBaseView CHAR(1);
15399
									 
8904
	
15400
BEGIN
8905
BEGIN
15401
 
8906
 
-
 
8907
	-- Check if the view is BASE VIEW
-
 
8908
	SELECT vi.BASE_VIEW INTO IsBaseView
-
 
8909
	  FROM VIEWS vi
-
 
8910
	 WHERE vi.VIEW_ID = ViewId;
-
 
8911
	 
-
 
8912
	IF (IsBaseView = 'Y') THEN 
-
 
8913
		-- Get Base view content
-
 
8914
		OPEN RecordSet FOR
-
 
8915
		SELECT 0 AS PKG_STATE,
-
 
8916
			   NULL AS DEPRECATED_STATE,
-
 
8917
			   pv.pv_id, 
-
 
8918
			   pkg.pkg_name, 
-
 
8919
			   pv.pkg_version, 
-
 
8920
			   pv.dlocked, 
-
 
8921
			   pv.pv_description,
-
 
8922
			   pv.BUILD_TYPE
-
 
8923
		  FROM WORK_IN_PROGRESS rel,
-
 
8924
		       packages pkg,
-
 
8925
		       package_versions pv
-
 
8926
		 WHERE pv.pkg_id = pkg.pkg_id
-
 
8927
		   AND rel.pv_id = pv.pv_id
-
 
8928
		   AND rel.VIEW_ID = ViewId
-
 
8929
		   AND rel.RTAG_ID = RtagId
-
 
8930
		 ORDER BY UPPER(pkg.PKG_NAME);
-
 
8931
	 
15402
 
8932
 
-
 
8933
	ELSE	 
-
 
8934
	 
-
 
8935
	 	-- Get non base view content
-
 
8936
		OPEN RecordSet FOR
-
 
8937
		SELECT 0 AS PKG_STATE,
15403
	 UPDATE BUILD_SERVICE_CONFIG
8938
			   NULL AS DEPRECATED_STATE,
-
 
8939
			   pv.pv_id, 
-
 
8940
			   pkg.pkg_name, 
-
 
8941
			   pv.pkg_version, 
-
 
8942
			   pv.dlocked, 
-
 
8943
			   pv.pv_description,
-
 
8944
			   pv.BUILD_TYPE
-
 
8945
		  FROM WORK_IN_PROGRESS rel,
15404
	 SET CONFIG = sDatabaseServer
8946
		       packages pkg,
-
 
8947
		       package_versions pv,
-
 
8948
			   VIEW_DEF vd
15405
	 WHERE SERVICE = 'DATABASE SERVER'; 
8949
		 WHERE pv.pkg_id = pkg.pkg_id
15406
 
-
 
-
 
8950
		   AND rel.pv_id = pv.pv_id
15407
	 UPDATE BUILD_SERVICE_CONFIG
8951
		   AND vd.VIEW_ID = ViewId
15408
	 SET CONFIG = sWebServer
8952
		   AND vd.PKG_ID = pv.PKG_ID
-
 
8953
		   AND rel.RTAG_ID = RtagId
15409
	 WHERE SERVICE = 'WEB SERVER'; 
8954
		 ORDER BY UPPER(pkg.PKG_NAME);
15410
	 
8955
	 
15411
	 UPDATE BUILD_SERVICE_CONFIG
-
 
15412
	 SET CONFIG = sMailServer
-
 
15413
	 WHERE SERVICE = 'MAIL SERVER'; 
-
 
15414
	 
8956
	 
15415
	 UPDATE BUILD_SERVICE_CONFIG
-
 
15416
	 SET CONFIG = sMailSender
-
 
15417
	 WHERE SERVICE = 'BUILD FAILURE MAIL SENDER'; 	 	 									 
-
 
15418
									 
8957
	END IF;	 	
15419
									 
8958
	
15420
									 
8959
 
15421
END;
8960
END;
15422
/*-------------------------------------------------------------------------------------------------------*/
8961
/*-------------------------------------------------------------------------------------------------------*/
15423
PROCEDURE ADD_GBE_MACHTYPE ( sGBEValue in VARCHAR2 ) IS
8962
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
15424
 
8963
	
15425
GBE_ID NUMBER;
-
 
15426
 
-
 
15427
BEGIN
8964
BEGIN
15428
 
-
 
15429
	-- Get GBE_ID
-
 
15430
	SELECT SEQ_GBE_ID.NEXTVAL INTO GBE_ID FROM DUAL;
-
 
15431
	
8965
	
15432
	INSERT INTO GBE_MACHTYPE (GBE_ID, GBE_VALUE)
8966
	UPDATE WORK_IN_PROGRESS wip SET
15433
	VALUES( GBE_ID, sGBEValue);
8967
	wip.VIEW_ID = NewViewId
15434
		 
8968
	WHERE wip.PV_ID = PvId
-
 
8969
	  AND wip.RTAG_ID = RtagId;
15435
 
8970
	
15436
END;
8971
END;
15437
/*-------------------------------------------------------------------------------------------------------*/
8972
/*-------------------------------------------------------------------------------------------------------*/
-
 
8973
END PK_WORK_IN_PROGRESS;
-
 
8974
/
-
 
8975
--------------------------------------------------------
-
 
8976
--  DDL for Package Body RM_ISSUES
15438
PROCEDURE REMOVE_GBE_MACHTYPE ( nGBE_ID IN NUMBER ) IS
8977
--------------------------------------------------------
15439
 
8978
 
15440
BEGIN
8979
  CREATE OR REPLACE PACKAGE BODY "RM_ISSUES" AS
15441
 
8980
 
15442
	 DELETE FROM GBE_MACHTYPE WHERE GBE_ID = nGBE_ID;
8981
-- Private Implementation -----------------------------------------------------
15443
 
8982
 
15444
END;
-
 
15445
/*-------------------------------------------------------------------------------------------------------*/
-
 
15446
PROCEDURE UPDATE_GBE_MACHTYPE ( nGBE_ID IN NUMBER, sGBEValue IN VARCHAR2 ) IS
-
 
15447
 
8983
 
-
 
8984
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
15448
BEGIN
8985
	AS
15449
 
8986
 
-
 
8987
	BEGIN
15450
	 UPDATE GBE_MACHTYPE
8988
		-- start boundary case
15451
	 SET GBE_VALUE = sGBEValue 
8989
		IF ( XXstart < XX ) THEN
15452
	 WHERE GBE_ID = nGBE_ID;
8990
			RETURN 1;
15453
 
8991
 
-
 
8992
		ELSIF ( XXstart = XX ) THEN
15454
 
8993
 
15455
END;
-
 
15456
/*-------------------------------------------------------------------------------------------------------*/
-
 
15457
PROCEDURE ADD_DAEMON ( sDaemonHostname IN VARCHAR2, nRtagId IN NUMBER, nGbeId IN NUMBER ) IS
-
 
15458
        
8994
			-- need to consider YY
15459
nRecordNumber NUMBER;
8995
			IF ( YYstart < YY ) THEN
15460
nRconId NUMBER;
8996
				RETURN 1;
15461
BEGIN
8997
 
15462
	-- Get RCON_ID
-
 
15463
	SELECT SEQ_RCON_ID.NEXTVAL INTO nRconId FROM DUAL; 
-
 
15464
        
-
 
15465
        SELECT count(*) INTO nRecordNumber 
-
 
15466
        FROM RELEASE_CONFIG
-
 
15467
        WHERE RTAG_ID = nRtagId;
-
 
15468
        
-
 
15469
        IF nRecordNumber = 0 THEN
8998
			ELSIF ( YYstart = YY ) THEN
15470
       	   INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
-
 
15471
           VALUES (nRconId, nRtagId, sDaemonHostname, 'M', nGbeId);
-
 
15472
        ELSE
-
 
15473
        	INSERT INTO RELEASE_CONFIG (RCON_ID, RTAG_ID, DAEMON_HOSTNAME, DAEMON_MODE, GBE_ID)
-
 
15474
        	VALUES (nRconId, nRtagId, sDaemonHostname, 'S', nGbeId);
-
 
15475
        END IF;
-
 
15476
        
-
 
15477
 
8999
 
-
 
9000
					-- need to consider ZZ
-
 
9001
					IF ( ZZstart <= ZZ ) THEN
-
 
9002
						RETURN 1;
15478
 
9003
 
-
 
9004
					ELSE
-
 
9005
						RETURN 0;
-
 
9006
					END IF;
-
 
9007
 
-
 
9008
			ELSE
-
 
9009
				RETURN 0;
-
 
9010
			END IF;
-
 
9011
		ELSE
-
 
9012
			RETURN 0;
-
 
9013
		END IF;
-
 
9014
	EXCEPTION
-
 
9015
		WHEN OTHERS THEN
-
 
9016
			RETURN -1;
-
 
9017
	END;
-
 
9018
 
-
 
9019
 
-
 
9020
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
-
 
9021
	AS
-
 
9022
 
-
 
9023
	BEGIN
-
 
9024
		-- end boundary case
-
 
9025
		IF ( XX < XXend ) THEN
-
 
9026
			RETURN 1;
-
 
9027
 
-
 
9028
		ELSIF ( XX = XXend ) THEN
-
 
9029
 
-
 
9030
			-- need to consider YY
-
 
9031
			IF ( YY < YYend ) THEN
-
 
9032
				RETURN 1;
-
 
9033
 
-
 
9034
			ELSIF ( YY = YYend ) THEN
-
 
9035
 
-
 
9036
					-- need to consider ZZ
-
 
9037
					IF ( ZZ <= ZZend ) THEN
-
 
9038
						RETURN 1;
-
 
9039
 
-
 
9040
					ELSE
-
 
9041
						RETURN 0;
-
 
9042
					END IF;
-
 
9043
			ELSE
-
 
9044
 
-
 
9045
				RETURN 0;
-
 
9046
			END IF;
-
 
9047
		ELSE
-
 
9048
			RETURN 0;
-
 
9049
		END IF;
-
 
9050
	EXCEPTION
-
 
9051
		WHEN OTHERS THEN
-
 
9052
			RETURN -1;
-
 
9053
	END;
-
 
9054
 
-
 
9055
	/*
-
 
9056
	-	version format:		XX.YY.ZZ.abc
-
 
9057
	*/
-
 
9058
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
-
 
9059
	AS
-
 
9060
		XXstart		NUMBER	:=	0;
-
 
9061
		XXend		NUMBER	:=	0;
-
 
9062
		XX			NUMBER	:=	0;
-
 
9063
		YYstart		NUMBER	:=	0;
-
 
9064
		YYend		NUMBER	:=	0;
-
 
9065
		YY			NUMBER	:=	0;
-
 
9066
		ZZstart		NUMBER	:=	0;
-
 
9067
		ZZend		NUMBER	:=	0;
-
 
9068
		ZZ			NUMBER	:=	0;
-
 
9069
		first_dot	NUMBER	:=	0;
-
 
9070
		second_dot	NUMBER	:=	0;
-
 
9071
		third_dot	NUMBER	:=	0;
-
 
9072
 
-
 
9073
		ProjExtstart	VARCHAR2(10);
-
 
9074
		ProjExtend		VARCHAR2(10);
-
 
9075
		ProjExt			VARCHAR2(10);
-
 
9076
 
-
 
9077
	BEGIN
-
 
9078
		-- strip the version number
-
 
9079
		first_dot :=  INSTR(version_start, '.', 1, 1);
-
 
9080
		second_dot :=  INSTR(version_start, '.', 1, 2);
-
 
9081
		third_dot :=  INSTR(version_start, '.', 1, 3);
-
 
9082
 
-
 
9083
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
-
 
9084
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
-
 
9085
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
-
 
9086
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
-
 
9087
 
-
 
9088
		first_dot :=  INSTR(version_end, '.', 1, 1);
-
 
9089
		second_dot :=  INSTR(version_end, '.', 1, 2);
-
 
9090
		third_dot :=  INSTR(version_end, '.', 1, 3);
-
 
9091
 
-
 
9092
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
-
 
9093
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
-
 
9094
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
-
 
9095
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
-
 
9096
 
-
 
9097
		first_dot :=  INSTR(version, '.', 1, 1);
-
 
9098
		second_dot :=  INSTR(version, '.', 1, 2);
-
 
9099
		third_dot :=  INSTR(version, '.', 1, 3);
-
 
9100
 
-
 
9101
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
-
 
9102
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
-
 
9103
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
-
 
9104
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
-
 
9105
 
-
 
9106
		-- only include versions if all project extensions are the same
-
 
9107
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
-
 
9108
 
-
 
9109
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
-
 
9110
				RETURN 1;
-
 
9111
			ELSE
-
 
9112
				RETURN 0;
-
 
9113
			END IF;
-
 
9114
		ELSE
-
 
9115
			RETURN 0;
-
 
9116
		END IF;
-
 
9117
 
-
 
9118
	EXCEPTION
-
 
9119
		WHEN OTHERS THEN
-
 
9120
			RETURN -1;
-
 
9121
	END;
-
 
9122
 
-
 
9123
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
-
 
9124
	AS
-
 
9125
	    pkg_id NUMBER;
-
 
9126
	BEGIN
-
 
9127
		SELECT
-
 
9128
			p.PKG_ID
-
 
9129
		INTO
-
 
9130
			pkg_id
-
 
9131
		FROM
-
 
9132
			PACKAGES p
-
 
9133
		WHERE
-
 
9134
			p.PKG_NAME = pkgName;
-
 
9135
 
-
 
9136
		RETURN pkg_id;
-
 
9137
	EXCEPTION
-
 
9138
	    WHEN OTHERS THEN
-
 
9139
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
-
 
9140
			RETURN -1;
15479
END;
9141
	END;
-
 
9142
 
-
 
9143
 
15480
/*-------------------------------------------------------------------------------------------------------*/        
9144
-- Public Implementation ------------------------------------------------------
-
 
9145
 
-
 
9146
	/*
-
 
9147
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
-
 
9148
	--
-
 
9149
	-- INPUT PARAMETERS:
-
 
9150
	--
-
 
9151
	--		pkg_name  	-  	The name of the top level package to get issues for
-
 
9152
	--		version_start	-	The start version for the comparison
-
 
9153
	--		version_end	-	The end version for the comparison
-
 
9154
	*/
-
 
9155
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
-
 
9156
	AS
-
 
9157
		pkgId	NUMBER;
-
 
9158
	BEGIN
-
 
9159
		-- get pkg_id of the input package:
-
 
9160
		pkgId := GetPkgId( pkg_name );
-
 
9161
 
-
 
9162
		OPEN vCursor FOR
-
 
9163
		SELECT
-
 
9164
			  pv.PKG_ID,
-
 
9165
			  pv.PKG_VERSION,
-
 
9166
			  pv.PV_ID,
-
 
9167
			  i_pkg.ISS_ID,
-
 
9168
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
-
 
9169
			  pd.DPKG_ID,
-
 
9170
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
-
 
9171
			  pd.DPV_ID,
-
 
9172
			  i_dpkg.ISS_ID AS ISSUE_ID
-
 
9173
		FROM
-
 
9174
			 PACKAGE_VERSIONS pv
-
 
9175
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
-
 
9176
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
-
 
9177
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
-
 
9178
		WHERE
-
 
9179
   			 pv.PKG_ID = pkgId
-
 
9180
		AND
-
 
9181
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
-
 
9182
		AND
-
 
9183
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
-
 
9184
		ORDER BY
-
 
9185
			 pv.PKG_ID,
-
 
9186
			 pv.PV_ID,
-
 
9187
			 pd.DPKG_ID,
-
 
9188
			 pd.DPV_ID;
-
 
9189
	EXCEPTION
-
 
9190
		WHEN OTHERS THEN
-
 
9191
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
-
 
9192
	END;
-
 
9193
 
-
 
9194
 
-
 
9195
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
-
 
9196
 
-
 
9197
	/*
-
 
9198
	-- Proc: LoadIssuesTable
-
 
9199
	--
-
 
9200
	-- Populates Package_Issues table with details of issues from all dependent packages.
-
 
9201
	-- This will be for all package versions of the input pkg_name between the
-
 
9202
	-- version_start and version_end.
-
 
9203
	--
-
 
9204
	-- INPUT PARAMETERS:
-
 
9205
	--
-
 
9206
	--		pkg_name  	-  	The name of the top level package to get issues for
-
 
9207
	--		version_start	-	The start version for the comparison
-
 
9208
	--		version_end	-	The end version for the comparison
-
 
9209
	*/
-
 
9210
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
-
 
9211
	AS
-
 
9212
		pkgId	NUMBER;
-
 
9213
 
-
 
9214
		CURSOR pack_vers_cur IS
-
 
9215
			SELECT
-
 
9216
				pv.PV_ID,
-
 
9217
				pv.PKG_VERSION,
-
 
9218
				pv.PKG_ID,
-
 
9219
				p.PKG_NAME
-
 
9220
			FROM
-
 
9221
				PACKAGE_VERSIONS pv
-
 
9222
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
-
 
9223
			WHERE
-
 
9224
   				 pv.PKG_ID = pkgId
-
 
9225
			AND
-
 
9226
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
-
 
9227
 
-
 
9228
	BEGIN
-
 
9229
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
-
 
9230
 
-
 
9231
		-- get the pkg_id we are finding issues for
-
 
9232
		pkgId := GetPkgId( pkg_name );
-
 
9233
 
-
 
9234
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
-
 
9235
		FOR pack_ver_rec IN  pack_vers_cur
-
 
9236
		LOOP
-
 
9237
			InsertIssuesForDepends( pack_ver_rec.PV_ID, pack_ver_rec.PKG_ID, pack_ver_rec.PKG_NAME, pack_ver_rec.PV_ID, pack_ver_rec.PKG_VERSION );
-
 
9238
			COMMIT;
-
 
9239
		END LOOP;
-
 
9240
 
-
 
9241
		-- The output cursor - shows the individual versions of the top level package then were reported on
-
 
9242
		OPEN vCursor FOR
-
 
9243
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
-
 
9244
/*removed
-
 
9245
		SELECT
-
 
9246
			PKG_VERSION
-
 
9247
		FROM
-
 
9248
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
-
 
9249
*/
-
 
9250
 
-
 
9251
 
-
 
9252
	EXCEPTION
-
 
9253
		WHEN OTHERS THEN
-
 
9254
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
-
 
9255
	END;
-
 
9256
 
-
 
9257
 
-
 
9258
	/*
-
 
9259
	-- Proc: InsertIssuesForDepends
-
 
9260
	--
-
 
9261
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
-
 
9262
	--
-
 
9263
	-- INPUT PARAMETERS:
-
 
9264
	--
-
 
9265
	--		pvID  		-  	The package version id of the package to get issues for
-
 
9266
	--		top_pkgID	-  	The package id of the top level package to get issues for - should be the same as pvID when called from LoadIssuesTable (different when called recursively)
-
 
9267
	--		top_pkgName -  	The package name of the top level package
-
 
9268
	--		top_pvID  	-  	The package version id of the top level package
-
 
9269
	--		top_pkgVer  -  	The package version description of the top level package
-
 
9270
	*/
-
 
9271
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
-
 
9272
	AS
-
 
9273
		pkgId		NUMBER;
-
 
9274
		issCnt		NUMBER := 0;
-
 
9275
		pkgCheck	NUMBER := 0;
-
 
9276
		depCheck	NUMBER := 0;
-
 
9277
 
-
 
9278
		dpkgName	VARCHAR(50);
-
 
9279
		dpkgVersion	VARCHAR(50);
-
 
9280
 
-
 
9281
		CURSOR dep_packs_cur IS
-
 
9282
			SELECT
-
 
9283
				DPV_ID
-
 
9284
			FROM
-
 
9285
				PACKAGE_DEPENDENCIES
-
 
9286
			WHERE
-
 
9287
				PV_ID = pvID;
-
 
9288
 
-
 
9289
	BEGIN
-
 
9290
 
-
 
9291
		-- check to see if the package has been processed previously
-
 
9292
		SELECT
-
 
9293
			COUNT(*)
-
 
9294
		INTO
-
 
9295
			pkgCheck
-
 
9296
		FROM
-
 
9297
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
-
 
9298
		WHERE
-
 
9299
			DPV_ID = pvID;
-
 
9300
 
-
 
9301
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
-
 
9302
 
-
 
9303
		-- Package not already processed (no cyclic dependency) - process it
-
 
9304
		IF ( pkgCheck = 0 ) THEN
-
 
9305
 
-
 
9306
			-- check to see if this package version has any issues assigned to it
-
 
9307
			SELECT
-
 
9308
				COUNT(*)
-
 
9309
			INTO
-
 
9310
				issCnt
-
 
9311
			FROM
-
 
9312
				CQ_ISSUES i
-
 
9313
			WHERE
-
 
9314
				i.PV_ID = pvID;
-
 
9315
 
-
 
9316
			dbms_output.put_line('issCnt: ' || issCnt );
-
 
9317
 
-
 
9318
			-- Always enter a marker row into the table even if there are no issues for the package.
-
 
9319
			-- This allows us to pick up any cyclic dependencies.
-
 
9320
			IF ( issCnt > 0 ) THEN
-
 
9321
				-- get issues and insert into RM_PACKAGE_ISSUES
-
 
9322
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
-
 
9323
 
-
 
9324
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
-
 
9325
					SELECT DISTINCT
-
 
9326
						top_pkgID		AS PKG_ID,
-
 
9327
						top_pkgName		AS PKG_NAME,
-
 
9328
						top_pvID		AS PV_ID,
-
 
9329
						top_pkgVer		AS PKG_VERSION,
-
 
9330
						pv.PV_ID		AS DPV_ID,
-
 
9331
						p.PKG_NAME		AS DPKG_NAME,
-
 
9332
						pv.PKG_VERSION	AS DPKG_VERSION,
-
 
9333
						ci.ISS_DB,
-
 
9334
						ci.ISS_ID
-
 
9335
					FROM
-
 
9336
						PACKAGE_VERSIONS pv
-
 
9337
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
-
 
9338
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
-
 
9339
					WHERE
-
 
9340
						pv.PV_ID = pvID;
-
 
9341
 
-
 
9342
			ELSE
-
 
9343
				-- get the dpkg details - there will always be a row returned here
-
 
9344
				SELECT
-
 
9345
					p.PKG_NAME
-
 
9346
				INTO
-
 
9347
					dpkgName
-
 
9348
				FROM
-
 
9349
					PACKAGE_VERSIONS pv
-
 
9350
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
-
 
9351
				WHERE
-
 
9352
	   				 pv.PV_ID = pvID;
-
 
9353
 
-
 
9354
				SELECT
-
 
9355
					pv.PKG_VERSION
-
 
9356
				INTO
-
 
9357
					dpkgVersion
-
 
9358
				FROM
-
 
9359
					PACKAGE_VERSIONS pv
-
 
9360
				WHERE
-
 
9361
	   				 pv.PV_ID = pvID;
-
 
9362
 
-
 
9363
				-- enter a marker row
-
 
9364
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
-
 
9365
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
-
 
9366
				VALUES (
-
 
9367
					top_pkgID,
-
 
9368
					top_pkgName,
-
 
9369
					top_pvID,
-
 
9370
					top_pkgVer,
-
 
9371
					pvID,
-
 
9372
					dpkgName,
-
 
9373
					dpkgVersion,
-
 
9374
					NULL,
-
 
9375
					NULL );
-
 
9376
 
-
 
9377
			END IF;
-
 
9378
 
-
 
9379
			-- If this package version has dependencies then recurse
-
 
9380
			SELECT
-
 
9381
				COUNT(*)
-
 
9382
			INTO
-
 
9383
				depCheck
-
 
9384
			FROM
-
 
9385
				PACKAGE_DEPENDENCIES
-
 
9386
			WHERE
-
 
9387
				PV_ID = pvID;
-
 
9388
 
-
 
9389
			IF ( depCheck > 0 ) THEN
-
 
9390
				-- get dependencies and call this function recursively for each one
-
 
9391
				FOR dep_rec IN  dep_packs_cur
-
 
9392
				LOOP
-
 
9393
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
-
 
9394
				END LOOP;
-
 
9395
 
-
 
9396
			END IF;
-
 
9397
 
-
 
9398
		END IF;
-
 
9399
 
-
 
9400
	/*EXCEPTION
-
 
9401
		WHEN OTHERS THEN
-
 
9402
			no exception handling required
-
 
9403
	*/
-
 
9404
	END;
-
 
9405
 
15481
END PK_BUILDAPI_TEST;
9406
END Rm_Issues;
15482
/
9407
/
15483
--------------------------------------------------------
9408
--------------------------------------------------------
15484
--  DDL for Procedure ADD_AUTOBUILD_FAILURE_INFO
9409
--  DDL for Procedure ADD_AUTOBUILD_FAILURE_INFO
15485
--------------------------------------------------------
9410
--------------------------------------------------------
15486
 
9411
 
Line 15533... Line 9458...
15533
 
9458
 
15534
   add_view_members (groupid, suserlist);
9459
   add_view_members (groupid, suserlist);
15535
END add_autobuild_failure_info;
9460
END add_autobuild_failure_info;
15536
/
9461
/
15537
--------------------------------------------------------
9462
--------------------------------------------------------
15538
--  DDL for Procedure DEPRECATE_PACKAGE
9463
--  DDL for Procedure ADD_COMPONENT
15539
--------------------------------------------------------
9464
--------------------------------------------------------
15540
 
9465
 
15541
  CREATE OR REPLACE PROCEDURE "DEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
9466
  CREATE OR REPLACE PROCEDURE "ADD_COMPONENT" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
15542
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
9467
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
-
 
9468
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
15543
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
9469
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
-
 
9470
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
15544
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
9471
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
15545
											   nUserId IN NUMBER) IS
9472
                                           ) IS
-
 
9473
/* ---------------------------------------------------------------------------
15546
ext VARCHAR2(50);
9474
    Version: 3.0.0
15547
 
-
 
-
 
9475
   --------------------------------------------------------------------------- */
15548
 
9476
 
15549
 
9477
 
15550
											   
-
 
15551
BEGIN
9478
BEGIN
15552
 
9479
 
15553
	--Extract the package version extension
-
 
15554
	SELECT V_EXT into ext
-
 
15555
	FROM PACKAGE_VERSIONS
-
 
15556
	WHERE PV_ID = nPvId; 
-
 
15557
	
-
 
15558
    -- Deprecate Package
-
 
15559
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
-
 
15560
	VALUES (nRtagId, nPkgId, sComments, ext);
-
 
15561
	
-
 
15562
	IF ext IS NOT NULL THEN
-
 
15563
	   UPDATE RELEASE_CONTENT 
9480
	 --- Insert into RELEASE_COMPONENTS
15564
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
-
 
15565
	   WHERE RTAG_ID = nRtagId
-
 
15566
	   AND PV_ID IN (SELECT PV.PV_ID 
-
 
15567
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
-
 
15568
				  	WHERE PKG.PKG_ID = PV.PKG_ID
-
 
15569
				  	AND PV.V_EXT = ext
-
 
15570
				  	AND PKG.PKG_ID = nPkgId
-
 
15571
				 	);						
-
 
15572
	ELSE
-
 
15573
	   UPDATE RELEASE_CONTENT 
-
 
15574
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
-
 
15575
	   WHERE RTAG_ID = nRtagId
-
 
15576
	   AND PV_ID IN (SELECT PV.PV_ID 
-
 
15577
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
-
 
15578
				  	WHERE PKG.PKG_ID = PV.PKG_ID
-
 
15579
				  	AND PV.V_EXT IS NULL
-
 
15580
				  	AND PKG.PKG_ID = nPkgId
-
 
15581
				 	);
-
 
15582
	END IF;
-
 
15583
				 
-
 
15584
	UPDATE RELEASE_CONTENT
-
 
15585
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
-
 
15586
	WHERE RTAG_ID = nRtagId
-
 
15587
	AND PV_ID IN (		   SELECT DISTINCT
-
 
15588
 	 		  	 		   qry.PV_ID
-
 
15589
						        FROM (
-
 
15590
								 	  SELECT dep.*,
-
 
15591
									  LEVEL AS LEVEL_NUM
-
 
15592
									  FROM PACKAGE_DEPENDENCIES dep 
-
 
15593
 								START WITH dep.DPV_ID IN ( nPvId ) 
-
 
15594
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
-
 
15595
 								) qry,
-
 
15596
								PACKAGES pkg,
-
 
15597
								PACKAGE_VERSIONS pv,
-
 
15598
								RELEASE_CONTENT rc
-
 
15599
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
9481
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
15600
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
9482
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
15601
							 AND rc.DEPRECATED_STATE IS NULL
-
 
15602
				 );			 
-
 
15603
 
9483
 
15604
    /* LOG ACTION */
-
 
15605
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
-
 
15606
	
-
 
15607
 
9484
 
-
 
9485
 
-
 
9486
 
15608
END Deprecate_Package;
9487
END Add_Component;
15609
/
9488
/
15610
--------------------------------------------------------
9489
--------------------------------------------------------
15611
--  DDL for Procedure LOG_PROJECT_ACTION
9490
--  DDL for Procedure ADD_PACKAGE_INTEREST
15612
--------------------------------------------------------
9491
--------------------------------------------------------
15613
 
9492
 
15614
  CREATE OR REPLACE PROCEDURE "LOG_PROJECT_ACTION" ( nProjId IN NUMBER,
9493
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
15615
												 enumActionTypeName IN VARCHAR2,
9494
	   	  		  								  nPkgIdList IN VARCHAR2,
15616
		                                         nUserId IN NUMBER,
-
 
15617
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
-
 
15618
												 nRtagId IN NUMBER  ) IS
9495
												  nUserId IN NUMBER
15619
/* ---------------------------------------------------------------------------
-
 
15620
    Version: 3.0
9496
	   	  		  								  ) IS
15621
   --------------------------------------------------------------------------- */
-
 
15622
 
9497
 
-
 
9498
/******************************************************************************
-
 
9499
   NAME:       ADD_PACKAGE_INTEREST
-
 
9500
   PURPOSE:    
-
 
9501
 
-
 
9502
   REVISIONS:
-
 
9503
   Ver        Date        Author           Description
-
 
9504
   ---------  ----------  ---------------  ------------------------------------
-
 
9505
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
-
 
9506
 
-
 
9507
   NOTES:
-
 
9508
 
-
 
9509
   Automatically available Auto Replace Keywords:
-
 
9510
      Object Name:     ADD_PACKAGE_INTEREST
15623
    ActionTypeId NUMBER;
9511
      Sysdate:         12/05/2006
-
 
9512
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
-
 
9513
      Username:         (set in TOAD Options, Procedure Editor)
-
 
9514
      Table Name:       (set in the "New PL/SQL Object" dialog)
15624
 
9515
 
-
 
9516
******************************************************************************/
-
 
9517
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
-
 
9518
   nPkgId NUMBER;
15625
BEGIN
9519
BEGIN
15626
 
9520
 
15627
    -- Get Action Type FK
9521
	 npkgidcollector := in_list_number2 (nPkgIdList);
-
 
9522
	 
15628
    SELECT act.ACTTYPE_ID INTO ActionTypeId
9523
	FOR i IN 1..npkgidcollector.COUNT
15629
      FROM ACTION_TYPE act
9524
	LOOP
15630
     WHERE act.NAME = enumActionTypeName;
9525
		nPkgId := npkgidcollector(i);
15631
 
9526
 
-
 
9527
	 --- Insert into PACKAGE_INTEREST TABLE
-
 
9528
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
-
 
9529
	 VALUES(nProjId, nPkgId, nUserId);
-
 
9530
	END LOOP;	 
-
 
9531
	 
15632
 
9532
 
-
 
9533
END ADD_PACKAGE_INTEREST;
-
 
9534
/
-
 
9535
--------------------------------------------------------
15633
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
9536
--  DDL for Procedure ADD_PACKAGE_INTEREST_TEST
15634
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
9537
--------------------------------------------------------
15635
 
9538
 
-
 
9539
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST_TEST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
-
 
9540
	   	  		  								  nPkgIdList IN VARCHAR2,
-
 
9541
												  nUserId IN NUMBER
-
 
9542
	   	  		  								  ) IS
15636
 
9543
 
-
 
9544
/******************************************************************************
-
 
9545
   NAME:       ADD_PACKAGE_INTEREST
-
 
9546
   PURPOSE:    
-
 
9547
 
-
 
9548
   REVISIONS:
-
 
9549
   Ver        Date        Author           Description
-
 
9550
   ---------  ----------  ---------------  ------------------------------------
-
 
9551
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
-
 
9552
 
-
 
9553
   NOTES:
-
 
9554
 
-
 
9555
   Automatically available Auto Replace Keywords:
-
 
9556
      Object Name:     ADD_PACKAGE_INTEREST
-
 
9557
      Sysdate:         12/05/2006
-
 
9558
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
-
 
9559
      Username:         (set in TOAD Options, Procedure Editor)
-
 
9560
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
9561
 
-
 
9562
******************************************************************************/
-
 
9563
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
-
 
9564
   nPkgId NUMBER;
-
 
9565
BEGIN
-
 
9566
 
-
 
9567
	 npkgidcollector := in_list_number2 (nPkgIdList);
-
 
9568
	 
-
 
9569
	FOR i IN 1..npkgidcollector.COUNT
-
 
9570
	LOOP
-
 
9571
		nPkgId := npkgidcollector(i);
-
 
9572
 
-
 
9573
	 --- Insert into PACKAGE_INTEREST TABLE
-
 
9574
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
-
 
9575
	 VALUES(nProjId, nPkgId, nUserId);
-
 
9576
	END LOOP;	 
-
 
9577
	 
-
 
9578
 
15637
END Log_Project_Action;
9579
END ADD_PACKAGE_INTEREST_TEST;
15638
/
9580
/
15639
--------------------------------------------------------
9581
--------------------------------------------------------
15640
--  DDL for Procedure RIPPLE_PACKAGE
9582
--  DDL for Procedure ADD_RUNTIME_DEPENDENCY
15641
--------------------------------------------------------
9583
--------------------------------------------------------
15642
 
9584
 
15643
  CREATE OR REPLACE PROCEDURE "RIPPLE_PACKAGE" (
9585
  CREATE OR REPLACE PROCEDURE "ADD_RUNTIME_DEPENDENCY" ( NNpv_id IN NUMBER,
15644
        sPvIdList IN VARCHAR2,
9586
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
15645
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
9587
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15646
        nUserId IN NUMBER
9588
                                                     NNuser_id IN NUMBER
15647
    ) IS
9589
                                                    ) IS
15648
/* ---------------------------------------------------------------------------
9590
/* ---------------------------------------------------------------------------
15649
    Version: 4.1
9591
    Version: 3.1
15650
   --------------------------------------------------------------------------- */
9592
   --------------------------------------------------------------------------- */
15651
 
9593
 
-
 
9594
    retRTD_ID NUMBER;
-
 
9595
 
-
 
9596
	CURSOR rtd_cur IS
-
 
9597
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
-
 
9598
    rtd_rec rtd_cur%ROWTYPE;
-
 
9599
 
15652
BEGIN
9600
BEGIN
-
 
9601
    --- Seed database with package_name and version if required ---
-
 
9602
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
15653
 
9603
 
15654
    IF (sPvIdList IS NULL) THEN
9604
	OPEN rtd_cur;
15655
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
-
 
15656
    END IF;
9605
    FETCH rtd_cur INTO rtd_rec;
15657
 
9606
 
15658
    -- Ripple Package
-
 
15659
    DELETE FROM DO_NOT_RIPPLE
9607
    IF rtd_cur%NOTFOUND
15660
    WHERE RTAG_ID = nRtagId
-
 
15661
    AND PV_ID IN (
-
 
15662
        SELECT *
-
 
15663
        FROM THE (
9608
    THEN
15664
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
9609
		/* Make sure it does not exists already as runtime dependency */
15665
            AS RELMGR_NUMBER_TAB_t )
-
 
15666
            FROM DUAL
-
 
15667
        )
-
 
15668
    );
-
 
15669
 
9610
 
15670
    /* LOG ACTION */
9611
		--- Add new Runtime Dependency ---
-
 
9612
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
15671
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
9613
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
15672
 
9614
 
-
 
9615
    	/* LOG ACTION */
-
 
9616
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
-
 
9617
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
-
 
9618
 
-
 
9619
	END IF;
-
 
9620
 
-
 
9621
 
15673
END Ripple_Package;
9622
END Add_Runtime_Dependency;
15674
/
9623
/
15675
--------------------------------------------------------
9624
--------------------------------------------------------
15676
--  DDL for Procedure DT_SETPROPERTYBYID
9625
--  DDL for Procedure ADD_VIEW_MEMBERS
15677
--------------------------------------------------------
9626
--------------------------------------------------------
15678
 
9627
 
15679
  CREATE OR REPLACE PROCEDURE "DT_SETPROPERTYBYID" ( PARAM_ID   IN NUMBER, PARAM_PROPERTY IN VARCHAR2, PARAM_VALUE  IN VARCHAR2, PARAM_LVALUE  IN LONG RAW ) AS BEGIN DECLARE X NUMBER(40); BEGIN SELECT COUNT(*) INTO X FROM MICROSOFTDTPROPERTIES WHERE OBJECTID=PARAM_ID AND PROPERTY=PARAM_PROPERTY; IF X = 0 THEN INSERT INTO MICROSOFTDTPROPERTIES (ID, PROPERTY, OBJECTID, VALUE, LVALUE, VERSION) VALUES (MICROSOFTSEQDTPROPERTIES.NEXTVAL, PARAM_PROPERTY, PARAM_ID, PARAM_VALUE, PARAM_LVALUE, 0); ELSE UPDATE MICROSOFTDTPROPERTIES SET VALUE=PARAM_VALUE, LVALUE=PARAM_LVALUE, VERSION=VERSION+1 WHERE OBJECTID=PARAM_ID AND PROPERTY=PARAM_PROPERTY; END IF; END; END DT_SETPROPERTYBYID;
9628
  CREATE OR REPLACE PROCEDURE "ADD_VIEW_MEMBERS" (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
-
 
9629
 
-
 
9630
/******************************************************************************
-
 
9631
   NAME:       ADD_VIEW_MEMBERS
-
 
9632
   PURPOSE:    
-
 
9633
 
-
 
9634
   REVISIONS:
-
 
9635
   Ver        Date        Author           Description
-
 
9636
   ---------  ----------  ---------------  ------------------------------------
-
 
9637
   1.0        11/04/2006          1. Created this procedure.
-
 
9638
 
-
 
9639
   NOTES:
-
 
9640
 
-
 
9641
   Automatically available Auto Replace Keywords:
-
 
9642
      Object Name:     ADD_VIEW_MEMBERS
-
 
9643
      Sysdate:         11/04/2006
-
 
9644
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
-
 
9645
      Username:         (set in TOAD Options, Procedure Editor)
-
 
9646
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
9647
 
-
 
9648
******************************************************************************/
-
 
9649
CURSOR user_cur IS
-
 
9650
	SELECT u.USER_ID
-
 
9651
	  FROM USERS u
-
 
9652
	 WHERE u.USER_ID IN (
-
 
9653
	 	   			   	SELECT * 
-
 
9654
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
-
 
9655
						);
-
 
9656
user_rec user_cur%ROWTYPE;
-
 
9657
 
-
 
9658
 
-
 
9659
BEGIN
-
 
9660
 
-
 
9661
	 OPEN user_cur;
-
 
9662
	 FETCH user_cur INTO user_rec;
-
 
9663
	 
-
 
9664
	 WHILE user_cur%FOUND
-
 
9665
	 LOOP
-
 
9666
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
-
 
9667
	 	 VALUES ( nGroupId, user_rec.USER_ID);
-
 
9668
	 	 
-
 
9669
	 	 FETCH user_cur INTO user_rec;	 
-
 
9670
	 END LOOP;	 
-
 
9671
	 	 
-
 
9672
		 
-
 
9673
		 
-
 
9674
END ADD_VIEW_MEMBERS;
15680
/
9675
/
15681
--------------------------------------------------------
9676
--------------------------------------------------------
15682
--  DDL for Procedure BASIC_CLONE
9677
--  DDL for Procedure BASIC_CLONE
15683
--------------------------------------------------------
9678
--------------------------------------------------------
15684
 
9679
 
Line 15877... Line 9872...
15877
---------------------------------------------------------------------------------------------------------------
9872
---------------------------------------------------------------------------------------------------------------
15878
 
9873
 
15879
END Basic_Clone;
9874
END Basic_Clone;
15880
/
9875
/
15881
--------------------------------------------------------
9876
--------------------------------------------------------
15882
--  DDL for Procedure UPDATE_UNIT_TEST
9877
--  DDL for Procedure BUILD_TREE
15883
--------------------------------------------------------
-
 
15884
 
-
 
15885
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST" ( nTest_id IN NUMBER,
-
 
15886
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
-
 
15887
											   nPv_id IN NUMBER,
-
 
15888
											   nUserId IN NUMBER,
-
 
15889
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
-
 
15890
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
-
 
15891
	                                           sCompletion_date IN VARCHAR2,
-
 
15892
											   sDpkg_path IN VARCHAR2,
-
 
15893
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
-
 
15894
											   sResults IN VARCHAR2,
-
 
15895
											   outFileName OUT VARCHAR2
-
 
15896
                                              ) IS
-
 
15897
/* ---------------------------------------------------------------------------
-
 
15898
    Version: 3.1.0
-
 
15899
   --------------------------------------------------------------------------- */
-
 
15900
   
-
 
15901
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
-
 
15902
 
-
 
15903
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
-
 
15904
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
-
 
15905
 
-
 
15906
 
-
 
15907
BEGIN
-
 
15908
 
-
 
15909
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
-
 
15910
       	ResultsURL := sResults;
-
 
15911
       ELSE
-
 
15912
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
-
 
15913
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
-
 
15914
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
-
 
15915
           END IF;
-
 
15916
       END IF;
-
 
15917
 
-
 
15918
	--- Update Unit Test ---
-
 
15919
    UPDATE UNIT_TESTS SET
-
 
15920
           TEST_SUMMARY = sTest_summary,
-
 
15921
		   NUMOF_TEST = sNumof_test,
-
 
15922
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
-
 
15923
		   COMPLETED_BY = nUserId,
-
 
15924
		   RESULTS_URL = ResultsURL,
-
 
15925
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
-
 
15926
     WHERE TEST_ID = nTest_id
-
 
15927
       AND PV_ID = nPv_id;
-
 
15928
 
-
 
15929
END Update_Unit_Test;
-
 
15930
/
-
 
15931
--------------------------------------------------------
-
 
15932
--  DDL for Procedure SET_TO_AUTOBUILDABLE
-
 
15933
--------------------------------------------------------
-
 
15934
 
-
 
15935
  CREATE OR REPLACE PROCEDURE "SET_TO_AUTOBUILDABLE" (
-
 
15936
   nrtagid     IN   NUMBER,
-
 
15937
   spvidlist   IN   VARCHAR2
-
 
15938
)
-
 
15939
IS
-
 
15940
/******************************************************************************
-
 
15941
   NAME:       SET_TO_AUTOBUILDABLE
-
 
15942
   PURPOSE:
-
 
15943
 
-
 
15944
   REVISIONS:
-
 
15945
   Ver        Date        Author           Description
-
 
15946
   ---------  ----------  ---------------  ------------------------------------
-
 
15947
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
-
 
15948
 
-
 
15949
   NOTES:
-
 
15950
 
-
 
15951
   Automatically available Auto Replace Keywords:
-
 
15952
      Object Name:     SET_TO_AUTOBUILDABLE
-
 
15953
      Sysdate:         15/12/2006
-
 
15954
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
-
 
15955
      Username:         (set in TOAD Options, Procedure Editor)
-
 
15956
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
15957
 
-
 
15958
******************************************************************************/
-
 
15959
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
-
 
15960
   PvId NUMBER;
-
 
15961
BEGIN
-
 
15962
 
-
 
15963
   npvidcollector := in_list_number2 (spvidlist);
-
 
15964
   
-
 
15965
   UPDATE package_versions
-
 
15966
      SET is_autobuildable = 'N'
-
 
15967
    WHERE pv_id IN (SELECT pv_id
-
 
15968
                      FROM release_content
-
 
15969
                     WHERE rtag_id = nrtagid);
-
 
15970
 
-
 
15971
  
-
 
15972
   
-
 
15973
   	FOR i IN 1..npvidcollector.COUNT
-
 
15974
	LOOP
-
 
15975
		PvId := npvidcollector(i);
-
 
15976
 
-
 
15977
		UPDATE package_versions
-
 
15978
		set is_autobuildable = 'Y'
-
 
15979
		where pv_id = PvId;
-
 
15980
 
-
 
15981
	END LOOP;
-
 
15982
   
-
 
15983
   
-
 
15984
END set_to_autobuildable;
-
 
15985
/
-
 
15986
--------------------------------------------------------
-
 
15987
--  DDL for Procedure LEVEL_N_CONFLICTS
-
 
15988
--------------------------------------------------------
-
 
15989
 
-
 
15990
  CREATE OR REPLACE PROCEDURE "LEVEL_N_CONFLICTS" (
-
 
15991
   nnrtag_id       IN       NUMBER,
-
 
15992
   nnsession_num   IN       NUMBER,
-
 
15993
   nnrowcnt        OUT      NUMBER,
-
 
15994
   nniteration     IN       NUMBER
-
 
15995
)
-
 
15996
IS
-
 
15997
/* ---------------------------------------------------------------------------
-
 
15998
    Version: 3.0.1
-
 
15999
   --------------------------------------------------------------------------- */
-
 
16000
   previteration   NUMBER := nniteration - 1;
-
 
16001
BEGIN
-
 
16002
   /* ---------  LEVEL 1 CONFILCTS -----------
-
 
16003
   || Following states are used:
-
 
16004
   || 0 -> NOT FOUND
-
 
16005
   || 1 -> MAJOR
-
 
16006
   || 2 -> MINOR MINOR
-
 
16007
   */
-
 
16008
   INSERT INTO temp_env_states
-
 
16009
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
-
 
16010
                      pv.pv_id, pv.pkg_id, pv.v_ext,
-
 
16011
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
-
 
16012
                 FROM package_dependencies dep,
-
 
16013
                      package_versions dpv,
-
 
16014
                      package_versions pv,
-
 
16015
                      release_content rel,
-
 
16016
                      temp_env_states tes
-
 
16017
                WHERE rel.pv_id = dep.pv_id
-
 
16018
                  AND rel.rtag_id = nnrtag_id
-
 
16019
                  AND dep.pv_id = pv.pv_id
-
 
16020
                  AND dep.dpv_id = dpv.pv_id
-
 
16021
                  AND dpv.pkg_id = tes.pkg_id
-
 
16022
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
-
 
16023
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
-
 
16024
                  AND tes.session_num = nnsession_num
-
 
16025
                  AND tes.level_num = previteration
-
 
16026
                  AND (dep.pv_id, dep.dpv_id) IN 
-
 
16027
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
-
 
16028
                                                 || packages already stored in Temp Table.
-
 
16029
                                                 */
-
 
16030
                      (
-
 
16031
                         SELECT pd.pv_id, pd.dpv_id
-
 
16032
                           FROM package_dependencies pd, release_content rc
-
 
16033
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
-
 
16034
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
-
 
16035
                         MINUS
-
 
16036
                         SELECT igw.pv_id, igw.dpv_id
-
 
16037
                           FROM ignore_warnings igw
-
 
16038
                          WHERE igw.rtag_id = nnrtag_id);
-
 
16039
 
-
 
16040
   nnrowcnt := SQL%ROWCOUNT;
-
 
16041
END level_n_conflicts;
-
 
16042
/
-
 
16043
--------------------------------------------------------
-
 
16044
--  DDL for Procedure REMOVE_COMPONENTS
-
 
16045
--------------------------------------------------------
9878
--------------------------------------------------------
16046
 
9879
 
16047
  CREATE OR REPLACE PROCEDURE "REMOVE_COMPONENTS" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
9880
  CREATE OR REPLACE PROCEDURE "BUILD_TREE" ( nRtag_id IN NUMBER,
16048
/* ---------------------------------------------------------------------------
-
 
16049
    Version: 3.0.0
-
 
16050
   --------------------------------------------------------------------------- */
-
 
16051
 
-
 
16052
 
-
 
16053
BEGIN
-
 
16054
 
-
 
16055
	 --- Delete From RELEASE_COMPONENTS
9881
	   	  		  					     retSessionNum OUT NUMBER ) IS
16056
	 DELETE FROM RELEASE_COMPONENTS
-
 
16057
	 WHERE PV_ID = nPvId;
-
 
16058
 
-
 
16059
END Remove_Components;
-
 
16060
/
-
 
16061
--------------------------------------------------------
-
 
16062
--  DDL for Procedure ADD_COMPONENT
-
 
16063
--------------------------------------------------------
-
 
16064
 
9882
 
16065
  CREATE OR REPLACE PROCEDURE "ADD_COMPONENT" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
-
 
16066
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
-
 
16067
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
-
 
16068
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
-
 
16069
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
-
 
16070
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
-
 
16071
                                           ) IS
-
 
16072
/* ---------------------------------------------------------------------------
9883
/* ---------------------------------------------------------------------------
16073
    Version: 3.0.0
9884
    Version: 3.0.0
16074
   --------------------------------------------------------------------------- */
9885
   --------------------------------------------------------------------------- */
16075
 
-
 
16076
 
-
 
16077
BEGIN
-
 
16078
 
-
 
16079
	 --- Insert into RELEASE_COMPONENTS
9886
    rowCnt 			NUMBER := 0;						-- Iterations counter
16080
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
9887
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
16081
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
9888
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
16082
 
-
 
16083
 
-
 
16084
 
-
 
16085
 
-
 
16086
END Add_Component;
-
 
16087
/
-
 
16088
--------------------------------------------------------
-
 
16089
--  DDL for Procedure ADD_PACKAGE_INTEREST
-
 
16090
--------------------------------------------------------
-
 
16091
 
-
 
16092
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
-
 
16093
	   	  		  								  nPkgIdList IN VARCHAR2,
9889
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
16094
												  nUserId IN NUMBER
9890
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
16095
	   	  		  								  ) IS
9891
    sessionNum 		NUMBER;
16096
 
-
 
16097
/******************************************************************************
-
 
16098
   NAME:       ADD_PACKAGE_INTEREST
-
 
16099
   PURPOSE:    
-
 
16100
 
-
 
16101
   REVISIONS:
9892
	levelNum		NUMBER;
16102
   Ver        Date        Author           Description
-
 
16103
   ---------  ----------  ---------------  ------------------------------------
-
 
16104
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
-
 
16105
 
-
 
16106
   NOTES:
-
 
16107
 
-
 
16108
   Automatically available Auto Replace Keywords:
-
 
16109
      Object Name:     ADD_PACKAGE_INTEREST
-
 
16110
      Sysdate:         12/05/2006
-
 
16111
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
-
 
16112
      Username:         (set in TOAD Options, Procedure Editor)
-
 
16113
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
16114
 
9893
	
16115
******************************************************************************/
-
 
16116
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
-
 
16117
   nPkgId NUMBER;
-
 
16118
BEGIN
9894
BEGIN
-
 
9895
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
-
 
9896
	
-
 
9897
	/*
-
 
9898
	||	   Start UP THE TREE
-
 
9899
	*/
-
 
9900
	
-
 
9901
	
-
 
9902
	/* Packages with no dependencies */    
-
 
9903
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
-
 
9904
		SELECT sessionNum AS SESSION_NUM,
-
 
9905
			   iteration AS LEVEL_NUM,
-
 
9906
			   UP_THE_TREE AS DIRECTION,
-
 
9907
			   rc.pv_id, pv.pkg_id, pv.v_ext
-
 
9908
		  FROM release_content rc,
-
 
9909
		  	   package_versions pv
-
 
9910
		 WHERE rc.rtag_id = nRtag_id
-
 
9911
		   AND rc.pv_id = pv.pv_id
-
 
9912
		 MINUS
-
 
9913
		SELECT sessionNum AS SESSION_NUM, 
-
 
9914
			   iteration AS LEVEL_NUM,
-
 
9915
			   UP_THE_TREE AS DIRECTION,
-
 
9916
			   dep.pv_id, pv.pkg_id, pv.v_ext
-
 
9917
		  FROM package_dependencies dep,
-
 
9918
		  	   package_versions pv
-
 
9919
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
-
 
9920
		   AND dep.pv_id = pv.pv_id;
-
 
9921
		   
-
 
9922
		   
-
 
9923
	/* Browse UP the build tree */	   
-
 
9924
	iteration := iteration + 1;
-
 
9925
    LOOP
-
 
9926
        
-
 
9927
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
-
 
9928
			SELECT DISTINCT 
-
 
9929
			       sessionNum AS SESSION_NUM,
-
 
9930
			       iteration AS LEVEL_NUM,
-
 
9931
				   UP_THE_TREE AS DIRECTION, 
-
 
9932
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
-
 
9933
			  FROM (  
-
 
9934
			        SELECT dep.pv_id, pv.pkg_id, pv.v_ext, dep.dpv_id, dpv.pkg_id AS dpkg_id, dpv.v_ext AS dv_ext
-
 
9935
			          FROM package_dependencies dep,
-
 
9936
			               release_content rc,
-
 
9937
						   package_versions pv,
-
 
9938
						   package_versions dpv
-
 
9939
			         WHERE dep.pv_id = rc.pv_id
-
 
9940
			           AND rc.rtag_id = nRtag_id
-
 
9941
					   AND dep.pv_id = pv.pv_id
-
 
9942
					   AND dep.dpv_id = dpv.pv_id
-
 
9943
					) rdep,
-
 
9944
					temp_tree_browse ttb
-
 
9945
			 WHERE rdep.dpkg_id  = ttb.pkg_id
-
 
9946
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
-
 
9947
			   AND ttb.SESSION_NUM = sessionNum
-
 
9948
			   AND ttb.LEVEL_NUM = iteration - 1	
-
 
9949
			MINUS
-
 
9950
			/* Packages with all depencencies NOT matched */  
-
 
9951
			SELECT DISTINCT 
-
 
9952
			       sessionNum AS SESSION_NUM,
-
 
9953
			       iteration AS LEVEL_NUM, 
-
 
9954
				   UP_THE_TREE AS DIRECTION,
-
 
9955
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
-
 
9956
			  FROM (  
-
 
9957
			        SELECT dep.pv_id, pv.pkg_id, pv.v_ext, dep.dpv_id, dpv.pkg_id AS dpkg_id, dpv.v_ext AS dv_ext
-
 
9958
			          FROM package_dependencies dep,
-
 
9959
			               release_content rc,
-
 
9960
						   package_versions pv,
-
 
9961
						   package_versions dpv
-
 
9962
			         WHERE dep.pv_id = rc.pv_id
-
 
9963
			           AND rc.rtag_id = nRtag_id
-
 
9964
					   AND dep.pv_id = pv.pv_id
-
 
9965
					   AND dep.dpv_id = dpv.pv_id
-
 
9966
					) rdep,
-
 
9967
					(
-
 
9968
					 SELECT tb.*
-
 
9969
					   FROM temp_tree_browse tb
-
 
9970
					  WHERE tb.SESSION_NUM = sessionNum
-
 
9971
					) ttb
-
 
9972
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
-
 
9973
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
-
 
9974
			   AND ttb.SESSION_NUM IS NULL;
-
 
9975
		
-
 
9976
		rowCnt := SQL%ROWCOUNT;
-
 
9977
		IF rowCnt > 0 THEN
-
 
9978
           iteration := iteration + 1;
-
 
9979
		END IF;
-
 
9980
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
-
 
9981
    END LOOP;
-
 
9982
	
-
 
9983
	/*---------------------------------------------------------------------------------------------------------------------*/
16119
 
9984
	
16120
	 npkgidcollector := in_list_number2 (nPkgIdList);
9985
	/*     Check for unresolved dependencies
-
 
9986
	||  
-
 
9987
	*/
-
 
9988
	/* UNRESOLVED */
-
 
9989
	 SELECT COUNT(*) INTO rowCnt
-
 
9990
	   FROM (
-
 
9991
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
-
 
9992
			  FROM release_content rc,
-
 
9993
			  	   package_versions pv
-
 
9994
			 WHERE rc.rtag_id = nRtag_id
-
 
9995
			   AND rc.pv_id = pv.pv_id	   
-
 
9996
			MINUS
-
 
9997
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
-
 
9998
			  FROM temp_tree_browse ttb
-
 
9999
			 WHERE ttb.session_num = sessionNum
-
 
10000
			);
-
 
10001
				
16121
	 
10002
	 
-
 
10003
			  
-
 
10004
	 IF rowCnt > 0 
-
 
10005
	 THEN
16122
	FOR i IN 1..npkgidcollector.COUNT
10006
	 	 /*     Circular dependencies detected.
-
 
10007
		 ||     Try to resolve build order from the top now.
-
 
10008
		 ||		Start DOWN THE TREE
16123
	LOOP
10009
		 */
-
 
10010
		 
-
 
10011
		iteration := 0; 
-
 
10012
		 /* Top Level packages */	
-
 
10013
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
-
 
10014
			SELECT sessionNum AS SESSION_NUM,
-
 
10015
			       iteration AS LEVEL_NUM,
-
 
10016
				   DOWN_THE_TREE AS DIRECTION,
-
 
10017
				   pv.pv_id, pv.pkg_id, pv.v_ext
-
 
10018
			  FROM (		   
-
 
10019
					/* Packages no one depends on ( Top level packages )*/
-
 
10020
					( 
-
 
10021
					/* All parents*/ 
-
 
10022
					SELECT pv.pkg_id, pv.v_ext
-
 
10023
			          FROM package_dependencies dep,
-
 
10024
			               release_content rc,
-
 
10025
						   package_versions pv
-
 
10026
			         WHERE dep.pv_id = rc.pv_id
-
 
10027
			           AND rc.rtag_id = nRtag_id
-
 
10028
					   AND dep.pv_id = pv.pv_id
-
 
10029
					 MINUS
-
 
10030
					 /* All children */
-
 
10031
					SELECT dpv.pkg_id, dpv.v_ext
-
 
10032
			          FROM package_dependencies dep,
-
 
10033
			               release_content rc,
-
 
10034
						   package_versions dpv
-
 
10035
			         WHERE dep.pv_id = rc.pv_id
-
 
10036
			           AND rc.rtag_id = nRtag_id
-
 
10037
					   AND dep.dpv_id = dpv.pv_id
-
 
10038
					 ) 
-
 
10039
					 MINUS
-
 
10040
					/* Packages with resolved dependencies from UP THE TREE */ 
-
 
10041
					SELECT ttb.pkg_id, ttb.v_ext
-
 
10042
					  FROM temp_tree_browse ttb
-
 
10043
					 WHERE ttb.session_num = sessionNum
-
 
10044
				  ) tpkg,
-
 
10045
				  package_versions pv,
-
 
10046
				  release_content rc
-
 
10047
			WHERE rc.rtag_id = nRtag_id
-
 
10048
			  AND rc.pv_id = pv.pv_id
16124
		nPkgId := npkgidcollector(i);
10049
			  AND tpkg.pkg_id = pv.pkg_id
-
 
10050
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
-
 
10051
		
16125
 
10052
		
-
 
10053
		 /* Keep taking packages which no one depende on */			  
16126
	 --- Insert into PACKAGE_INTEREST TABLE
10054
		 iteration := iteration - 1;  
-
 
10055
		 LOOP	  
16127
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
10056
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
-
 
10057
					SELECT sessionNum AS SESSION_NUM,
-
 
10058
					       iteration AS LEVEL_NUM,
-
 
10059
					       DOWN_THE_TREE AS DIRECTION,
-
 
10060
					       pv.pv_id, pv.pkg_id, pv.v_ext
-
 
10061
					  FROM (		   
-
 
10062
					 	/* All Unresolved */
-
 
10063
					 	(
-
 
10064
					 	SELECT pv.pkg_id, pv.v_ext
-
 
10065
					 	  FROM release_content rc,
-
 
10066
					 	  	   package_versions pv
-
 
10067
					 	 WHERE rc.rtag_id = nRtag_id
-
 
10068
					 	   AND rc.pv_id = pv.pv_id	   
-
 
10069
					 	MINUS
-
 
10070
					 	SELECT ttb.pkg_id, ttb.v_ext
-
 
10071
					 	  FROM temp_tree_browse ttb
-
 
10072
					 	 WHERE ttb.session_num = sessionNum
-
 
10073
					 	)
-
 
10074
					 	 MINUS
-
 
10075
					 	(  
-
 
10076
					 	 /* Children of Unresolved */  
16128
	 VALUES(nProjId, nPkgId, nUserId);
10077
					 	SELECT dpv.pkg_id, dpv.V_EXT
-
 
10078
					 	  FROM (
-
 
10079
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
-
 
10080
					 			  FROM release_content rc,
-
 
10081
					 			  	   package_versions pv
-
 
10082
					 			 WHERE rc.rtag_id = nRtag_id
-
 
10083
					 			   AND rc.pv_id = pv.pv_id	   
-
 
10084
					 			MINUS
-
 
10085
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
-
 
10086
					 			  FROM temp_tree_browse ttb
-
 
10087
					 			 WHERE ttb.session_num = sessionNum
-
 
10088
					 		   ) unr,
-
 
10089
					 		   package_dependencies dep,
-
 
10090
					 		   package_versions dpv
-
 
10091
					 	 WHERE unr.pv_id = dep.pv_id
-
 
10092
					 	   AND dep.dpv_id = dpv.pv_id
-
 
10093
					 	 )  
-
 
10094
					   ) tpkg,
-
 
10095
					   package_versions pv,
-
 
10096
					   release_content rc
-
 
10097
					WHERE rc.rtag_id = nRtag_id
-
 
10098
					  AND rc.pv_id = pv.pv_id
-
 
10099
					  AND tpkg.pkg_id = pv.pkg_id
-
 
10100
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
-
 
10101
					  
-
 
10102
            rowCnt := SQL%ROWCOUNT;
-
 
10103
        	IF rowCnt > 0 THEN
-
 
10104
	           iteration := iteration - 1;
-
 
10105
			END IF;
-
 
10106
            EXIT WHEN (rowCnt < 1);
16129
	END LOOP;	 
10107
     	END LOOP;
-
 
10108
		
-
 
10109
	 END IF;
16130
	 
10110
	 
16131
 
-
 
16132
END ADD_PACKAGE_INTEREST;
-
 
16133
/
-
 
16134
--------------------------------------------------------
-
 
16135
--  DDL for Procedure UNLOCK_PACKAGE
-
 
16136
--------------------------------------------------------
-
 
16137
 
-
 
16138
  CREATE OR REPLACE PROCEDURE "UNLOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
-
 
16139
											 nUserId IN NUMBER ) IS
-
 
16140
/* ---------------------------------------------------------------------------
-
 
16141
    Author: Rupesh Solanki
-
 
16142
	
-
 
16143
	Version: 4.0
-
 
16144
   --------------------------------------------------------------------------- */
-
 
16145
   STATE CHAR;
-
 
16146
   
-
 
16147
BEGIN
-
 
16148
	 
10111
	 
16149
	SELECT DLOCKED INTO STATE
-
 
16150
	FROM PACKAGE_VERSIONS
-
 
16151
	WHERE PV_ID = nPvId; 
-
 
16152
 
-
 
16153
	IF STATE = 'A' THEN --It was made official for autobuilds
10112
	/*---------------------------------------------------------------------------------------------------------------------*/
16154
		-- Unlock Package
-
 
16155
		UPDATE PACKAGE_VERSIONS pv SET
-
 
16156
		pv.DLOCKED = 'P'
-
 
16157
		WHERE pv.PV_ID = nPvId;	
-
 
16158
	ELSE
-
 
16159
		-- Unlock Package
-
 
16160
		UPDATE PACKAGE_VERSIONS pv SET
-
 
16161
		pv.DLOCKED = 'N'
-
 
16162
		WHERE pv.PV_ID = nPvId;	
-
 
16163
	
10113
	
16164
	END IF;	   
-
 
16165
 
-
 
16166
    /* LOG ACTION */
-
 
16167
   	Log_Action ( nPvId, 'unlock_package', nUserId );
-
 
16168
 
-
 
16169
END Unlock_Package;
-
 
16170
/
10114
	/* 
16171
--------------------------------------------------------
-
 
16172
--  DDL for Procedure REMOVE_PROJECT_VIEW_OWNER
-
 
16173
--------------------------------------------------------
-
 
16174
 
-
 
16175
  CREATE OR REPLACE PROCEDURE "REMOVE_PROJECT_VIEW_OWNER" (nProjId IN NUMBER,
-
 
16176
	   	  		  						 			  nViewId IN NUMBER,
-
 
16177
										 			  sUserIdList IN VARCHAR2,
-
 
16178
										 			  nUserId IN NUMBER ) IS
-
 
16179
 
-
 
16180
GroupId NUMBER;													  
-
 
16181
										 
-
 
16182
									 
-
 
16183
 
-
 
16184
/******************************************************************************
-
 
16185
   NAME:       UPDATE_VIEW
-
 
16186
   PURPOSE:    
-
 
16187
 
-
 
16188
   REVISIONS:
-
 
16189
   Ver        Date        Author           		Description
-
 
16190
   ---------  ----------  ---------------  ------------------------------------
-
 
16191
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
-
 
16192
 
-
 
16193
   NOTES:
-
 
16194
 
-
 
16195
   Automatically available Auto Replace Keywords:
-
 
16196
      Object Name:     UPDATE_VIEW
-
 
16197
      Sysdate:         10/04/2006
10115
	|| 	 Save results from temp table
16198
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
-
 
16199
      Username:         (set in TOAD Options, Procedure Editor)
-
 
16200
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
16201
 
-
 
16202
******************************************************************************/
-
 
16203
 
-
 
16204
BEGIN
-
 
16205
	 SELECT GROUP_EMAIL_ID into GroupId
-
 
16206
	 FROM AUTOBUILD_FAILURE
-
 
16207
	 WHERE PROJ_ID = nProjId
-
 
16208
	 AND VIEW_ID = nViewId;
-
 
16209
	 
10116
	*/	
16210
	 DELETE FROM MEMBERS_GROUP
10117
	/* Clean up build_order table */
16211
	 WHERE GROUP_EMAIL_ID = GroupId
10118
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
16212
	 AND USER_ID IN (
-
 
16213
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
-
 
16214
	 );
-
 
16215
	
10119
	
-
 
10120
	/* Save UP THE TREE */
-
 
10121
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
-
 
10122
		SELECT nRtag_id AS rtag_id,
-
 
10123
			   ttb.level_num AS step_num, 
-
 
10124
			   ttb.PV_ID
-
 
10125
		  FROM temp_tree_browse ttb
-
 
10126
		 WHERE ttb.session_num = sessionNum
-
 
10127
		   AND ttb.direction = UP_THE_TREE;	
16216
 
10128
		   
-
 
10129
	/*Get last step_num */
-
 
10130
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
-
 
10131
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
16217
	
10132
	
-
 
10133
	/* UNRESOLVED */
16218
END REMOVE_PROJECT_VIEW_OWNER;
10134
	 SELECT COUNT(*) INTO rowCnt
16219
/
10135
	   FROM (
16220
--------------------------------------------------------
10136
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
-
 
10137
			  FROM release_content rc,
-
 
10138
			  	   package_versions pv
16221
--  DDL for Procedure DEPLOY_TO_RELEASE
10139
			 WHERE rc.rtag_id = nRtag_id
16222
--------------------------------------------------------
10140
			   AND rc.pv_id = pv.pv_id	   
16223
 
10141
			MINUS
16224
  CREATE OR REPLACE PROCEDURE "DEPLOY_TO_RELEASE" IS
10142
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
16225
 
-
 
-
 
10143
			  FROM temp_tree_browse ttb
16226
/******************************************************************************
10144
			 WHERE ttb.session_num = sessionNum
16227
   
10145
			);
16228
 
10146
	
16229
******************************************************************************/
-
 
16230
 
10147
			
16231
	CURSOR curInfo IS
10148
	IF rowCnt > 0
-
 
10149
	THEN
-
 
10150
		/* Save unresolved packages */
-
 
10151
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
16232
    SELECT DISTINCT
10152
		    SELECT  nRtag_id AS rtag_id,
-
 
10153
				    levelNum AS step_num, 
16233
        qry.DPV_ID
10154
				    upv.PV_ID,
-
 
10155
					'Y' AS UNRESOLVED
16234
     FROM (
10156
			   FROM (
16235
             SELECT dep.*,
10157
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
16236
                    LEVEL AS LEVEL_NUM
10158
					  FROM release_content rc,
16237
               FROM PACKAGE_DEPENDENCIES dep
10159
					  	   package_versions pv
16238
             START WITH dep.PV_ID IN ( 
10160
					 WHERE rc.rtag_id = nRtag_id
16239
                        
10161
					   AND rc.pv_id = pv.pv_id	   
16240
                        69124,63479,60048,49566,49562,54351,63560,54360,46053,59753,97060,97061,100883,78236,75241,92371,92372,105682,135506,127204,135615,136498,137571,61534,76540,96787,133102,96770,96771,116692,133768,61537,88935,110216,96797,69469,98123,111626,96802,100289,97233,97623,135801,69700,77808,43026,77809,43027,100825,126854,105589,96405,102105,133770,134408,91177,91179,96822,96824,48031,78965,78936,78935,79114,76620,125164,61804,96826,61977,67592,72594,134415,135804,65097,64850,64851,64879,64881,64882,64884,67612,67613,67614,67615,68501,68502,68503,68516,68518,68519,68521,71974,68659,69764,68662,68661,68757,69765,69766,69767,71975,71976,71977,71978,71979,71980,75149,71982,71983,75153,75158,71986,75160,75161,75162,72418,72419,71987,71988,71990,75164,72420,72421,72423,72424,72425,75165,75181,75182,83285,75184,75201,75220,75240,75260,75280,75242,76320,75320,76340,76321,82031,76341,76342,76344,76345,76806,76350,76810,76811,76360,76361,76362,76380,76637,76638,76639,76647,76649,76812,76650,78261,76815,77603,76818,76846,76847,76848,76849,77604,77606,77016,77607,77608,77609,78518,77671,77610,78519,78520,78205,78206,77795,78262,78263,78666,78521,78669,78767,78768,78770,78771,82032,79471,78772,82033,80856,80210,80898,82449,80211,80212,80214,80215,80216,80611,80217,82034,82035,80749,80750,82036,94266,82037,82038,82039,82040,82041,82042,82043,82044,82045,82046,82450,82296,82297,82451,82047,82298,82299,82300,82452,82453,82454,82455,82456,82457,82769,82458,82459,82770,82460,82461,82771,83286,85069,83543,83544,83287,85070,84959,85071,85072,84960,85073,85074,84975,85194,85075,85195,85196,85197,85198,85199,94267,85231,85237,94268,94269,94270,94271,94273,94274,94275,94276,94277,94278,94279,94280,94281,94282,94283,94284,94285,94286,94287,94288,94289,94290,94291,94292,94293,94294,94295,94296,94297,94298,94299,94300,94301,94302,94303,94304,94305,94306,94307,94308,94309,94310,94311,94312,94313,94314,94315,94316,94634,94317,94635,97035,94319,94320,94636,94637,94322,96536,96552,96554,96555,96556,96568,96569,96570,96571,96572,96573,96574,96575,96576,96577,96578,96579,96580,96581,96582,96583,96584,96585,96586,96818,97435,96819,96820,97599,97436,97437,97438,97439,97440,97434,97723,97640,97641,97642,97724,97725,97729,97743,97825,98097,98098,98099,98100,97999,98049,98101,98102,98103,99506,98268,98207,99507,99508,99509,99159,99510,99511,99512,102883,99513,99514,100243,99515,99880,99562,99563,99676,99677,99678,99881,99882,99883,99884,100244,100245,100623,100247,100624,100625,100626,100885,100719,100886,100887,100888,100889,100890,100990,100991,101301,101603,110065,101605,102180,102627,102181,102182,102183,102184,102185,102186,102187,102188,102189,102190,102191,104378,102192,104379,102193,102379,102380,102381,102884,102410,102411,102628,102465,102629,102630,102885,102886,102887,104380,104381,104382,104383,104384,104385,104387,110063,104389,106409,104561,104594,104660,105088,105089,105090,105091,105093,105097,105673,105768,106410,109314,106173,110064,137890,106433,106960,109080,111665,122015,110954,116763,110066,116764,110123,111867,110713,116765,111666,116869,111667,111668,116766,116767,115142,115143,121477,113924,114594,116768,115144,116769,115170,115172,115171,115644,120042,120043,116092,116870,116871,118382,116872,116876,120044,118026,119364,121485,120045,120416,121478,120417,122016,124577,129495,123602,123600,124578,124579,124580,124581,124784,125238,127096,127097,129496,129497,128036,128415,129498,129499,129914,130063,130064,130680,130681,131333,131488,133886,132219,132477,132478,133887,136537,136552,136538,136539,136540,136553,136554,136555,137869,85076,80857,62418,64889,64890,64891,64893,68666,68667,68668,68670,68671,68672,68673,72019,72020,72023,72024,72227,77745,77746,77747,77748,77749,77750,77751,77798,78773,80751,82464,82465,83288,92874,92875,92876,92877,92878,94122,94123,96290,96882,96883,97554,97514,97726,98008,98009,98051,99193,100248,99608,100249,100250,100670,100671,100672,101059,101061,101607,102194,102195,102412,102413,102633,104390,104391,106421,104560,104595,105767,106174,106426,109081,122017,137851,110712,116873,115145,115146,114597,115645,116095,120046,123551,122018,124584,124585,129500,129501,129502,128417,129503,129915,130066,131487,133897,133882,133883,136559,85078,100673,63475,78264,78265,78266,78267,78775,80753,94118,94119,94120,94121,96888,100251,100252,102631,102590,102632,65229,43366,69139,132551,59764,127129,101196,96830,61535,105433,96833,96835,96839,83795,77723,126868,99146,70188,117523,117524,117525,99237,100854,100855,137314,137315,96868,138232,138233,69709,96907,130854,119208,69520,124772,96878,60049,47875,70354,59371,54558,59849,33893,43087,43134,33894,60054,24345,49563,49558,97474,84982,31770,30950,49926,60050,52670,59846,59891,30966,59744,61988,59745,59881,59746,59741,47449,59747,64101,63480,63562,105382,105383,60052,48955,49561,49556,47401,65896,65906,65909,65985,108670,68697,68698,59754,59752,59751,62526,59805,59799,66981,46050,59756,46044,59806,46051,59807,82290,66980,59808,46046,61536,88834,70260,111081,105409,66093,66095,66094,47440,65778,59750,56748,99152,78409
10162
					MINUS
16241
                        
10163
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
16242
                        ) 
10164
					  FROM temp_tree_browse ttb
16243
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
10165
					 WHERE ttb.session_num = sessionNum
16244
 		) qry,
10166
					) upv;
16245
 		PACKAGES pkg,
10167
	END IF;	
-
 
10168
			
16246
		PACKAGE_VERSIONS pv
10169
	/* Save DOWN THE TREE */
-
 
10170
	levelNum := 1000;
16247
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
10171
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
-
 
10172
		SELECT nRtag_id AS rtag_id,
16248
         and (pv.is_patch is null or pv.is_patch = 'N');
10173
			   levelNum + ttb.level_num  AS step_num, 
-
 
10174
			   ttb.PV_ID
-
 
10175
		  FROM temp_tree_browse ttb
-
 
10176
		 WHERE ttb.session_num = sessionNum
16249
    recInfo curInfo%ROWTYPE;
10177
		   AND ttb.direction = DOWN_THE_TREE;
16250
	
10178
	
16251
	
10179
	
16252
BEGIN
-
 
16253
 
-
 
16254
	OPEN curInfo;
-
 
16255
    FETCH curInfo INTO recInfo;
10180
	/*---------------------------------------------------------------------------------------------------------------------*/
16256
	
10181
	
16257
	WHILE curInfo%FOUND
10182
	/* Clean up temp table */
16258
	LOOP
-
 
16259
 
-
 
16260
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
-
 
16261
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
10183
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
16262
    
-
 
16263
    FETCH curInfo INTO recInfo;
-
 
16264
		
10184
	
16265
	END LOOP;
-
 
16266
 
-
 
16267
	CLOSE curInfo;
-
 
16268
 
-
 
16269
 
-
 
16270
 
-
 
16271
 
-
 
16272
END DEPLOY_TO_RELEASE; 
-
 
16273
/
-
 
16274
--------------------------------------------------------
-
 
16275
--  DDL for Procedure TOUCH_RELEASE
-
 
16276
--------------------------------------------------------
-
 
16277
 
-
 
16278
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE" ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
-
 
16279
/* ---------------------------------------------------------------------------
-
 
16280
    The purpose of this procedure is to flag in the database that the specified
-
 
16281
    release has changed to an extent that the procedure Rebuild_Environment
-
 
16282
    should be called at the next opportunity in order that the package state
-
 
16283
    icons are all re-evaluated.
-
 
16284
    The package state icons are controlled using the pkg_state column in the
-
 
16285
    release_content table, and Rebuild_Environment updates that column.
-
 
16286
    It will be through user action in the website that Rebuild_Environment will
-
 
16287
    be called, for example:
-
 
16288
      a) when setting/clearing ignore warnings checkboxes
-
 
16289
      b) when someone opens a page upon a rtag/pvid and rebuild_en flag is set
-
 
16290
      c) when someone opens the build order report form
-
 
16291
      d) when someone modifies dependencies of a package
-
 
16292
      + other scenarios (?)
10185
	retSessionNum := sessionNum;
16293
   --------------------------------------------------------------------------- */
-
 
16294
BEGIN
-
 
16295
   -- Touch Release for Rebuild
-
 
16296
   UPDATE RELEASE_TAGS rt SET
-
 
16297
          rt.REBUILD_ENV = 'Y',
-
 
16298
          rt.REBUILD_STAMP = 0
-
 
16299
    WHERE rt.RTAG_ID = nRtagId;
-
 
16300
 
-
 
16301
END Touch_Release;
10186
END Build_Tree;
16302
/
10187
/
16303
--------------------------------------------------------
10188
--------------------------------------------------------
16304
--  DDL for Procedure UNRIPPLE_PACKAGE
10189
--  DDL for Procedure CHANGE_PACKAGE_STATE
16305
--------------------------------------------------------
10190
--------------------------------------------------------
16306
 
10191
 
16307
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE" (
10192
  CREATE OR REPLACE PROCEDURE "CHANGE_PACKAGE_STATE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
16308
        sPvIdList IN VARCHAR2,
-
 
16309
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
10193
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
16310
        nUserId IN NUMBER
-
 
16311
    ) IS
-
 
16312
/* ---------------------------------------------------------------------------
10194
/* ---------------------------------------------------------------------------
16313
    Version: 4.1
10195
    Version: 4.0
16314
   --------------------------------------------------------------------------- */
10196
   --------------------------------------------------------------------------- */
16315
 
10197
 
16316
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
-
 
16317
 
-
 
16318
BEGIN
-
 
16319
 
-
 
16320
    IF (sPvIdList IS NULL) THEN
-
 
16321
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
-
 
16322
    END IF;
-
 
16323
 
-
 
16324
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
-
 
16325
 
-
 
16326
    -- UnRipple Package
-
 
16327
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
-
 
16328
    SELECT nRtagId, pv.PV_ID
-
 
16329
    FROM PACKAGE_VERSIONS pv
-
 
16330
    WHERE pv.PV_ID IN (
-
 
16331
        SELECT *
-
 
16332
        FROM TABLE (
-
 
16333
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
-
 
16334
        )
-
 
16335
    );
-
 
16336
    
-
 
16337
    /* LOG ACTION */
-
 
16338
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
-
 
16339
 
-
 
16340
END UnRipple_Package;
-
 
16341
/
-
 
16342
--------------------------------------------------------
-
 
16343
--  DDL for Procedure DT_DROPUSEROBJECTBYID
-
 
16344
--------------------------------------------------------
-
 
16345
 
-
 
16346
  CREATE OR REPLACE PROCEDURE "DT_DROPUSEROBJECTBYID" ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
-
 
16347
/
-
 
16348
--------------------------------------------------------
-
 
16349
--  DDL for Procedure UNRIPPLE_PACKAGE_INDIRECT
-
 
16350
--------------------------------------------------------
-
 
16351
 
-
 
16352
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE_INDIRECT" (
-
 
16353
        nPvId IN NUMBER,
-
 
16354
        nRtagId IN NUMBER,
-
 
16355
        nUserId IN NUMBER,
-
 
16356
        nrootCausePvId IN NUMBER,
-
 
16357
        srootCause IN VARCHAR2,
-
 
16358
        srootFile IN VARCHAR2
-
 
16359
    ) IS
-
 
16360
    ReleaseLocation VARCHAR2(4000);
-
 
16361
BEGIN
10198
BEGIN
16362
 
10199
 
16363
    -- UnRipple Package
10200
    -- Unlock Package
16364
    delete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;
-
 
16365
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);
-
 
16366
 
-
 
16367
    /* LOG ACTION */
-
 
16368
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
16369
              FROM PROJECTS proj,
10201
    UPDATE RELEASE_CONTENT rc SET
16370
                   RELEASE_TAGS rt
10202
    	rc.PKG_STATE = 0
16371
             WHERE rt.RTAG_ID = nRtagId
10203
    WHERE rc.PV_ID = nPvId
16372
               AND rt.PROJ_ID = proj.PROJ_ID;
10204
	AND rc.RTAG_ID = nRtagId;
16373
 
10205
 
16374
    /* LOG ACTION */
10206
    /* LOG ACTION */
16375
    Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );
10207
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
16376
 
-
 
16377
END UnRipple_Package_Indirect;
-
 
16378
/
-
 
16379
--------------------------------------------------------
-
 
16380
--  DDL for Procedure TO_INSERT_VTREE_ID
-
 
16381
--------------------------------------------------------
-
 
16382
 
-
 
16383
  CREATE OR REPLACE PROCEDURE "TO_INSERT_VTREE_ID" IS
-
 
16384
 
-
 
16385
/******************************************************************************
-
 
16386
   NAME:       TO_INSERT_VTREE_ID
-
 
16387
   PURPOSE:    
-
 
16388
 
-
 
16389
   REVISIONS:
-
 
16390
   Ver        Date        Author           Description
-
 
16391
   ---------  ----------  ---------------  ------------------------------------
-
 
16392
   1.0        2/02/2007          1. Created this procedure.
-
 
16393
 
-
 
16394
   NOTES:
-
 
16395
 
-
 
16396
   Automatically available Auto Replace Keywords:
-
 
16397
      Object Name:     TO_INSERT_VTREE_ID
-
 
16398
      Sysdate:         2/02/2007
-
 
16399
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
-
 
16400
      Username:         (set in TOAD Options, Procedure Editor)
-
 
16401
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
16402
 
-
 
16403
******************************************************************************/
-
 
16404
VTreeId NUMBER;																			  																	   
-
 
16405
 
-
 
16406
 
-
 
16407
	CURSOR curInfo IS
-
 
16408
    SELECT RTAG_ID
-
 
16409
	FROM RELEASE_TAGS
-
 
16410
	WHERE VTREE_ID IS NULL;
-
 
16411
    recInfo curInfo%ROWTYPE;
-
 
16412
	
-
 
16413
	
-
 
16414
BEGIN
-
 
16415
 
-
 
16416
	OPEN curInfo;
-
 
16417
    FETCH curInfo INTO recInfo;
-
 
16418
	
-
 
16419
	WHILE curInfo%FOUND
-
 
16420
	LOOP
-
 
16421
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
-
 
16422
 
-
 
16423
		UPDATE RELEASE_TAGS
-
 
16424
		SET VTREE_ID = VTreeId
-
 
16425
		WHERE RTAG_ID = recInfo.RTAG_ID;
-
 
16426
 
-
 
16427
		FETCH curInfo INTO recInfo;
-
 
16428
	END LOOP;
-
 
16429
 
-
 
16430
	CLOSE curInfo;
-
 
16431
 
10208
 
16432
END TO_INSERT_VTREE_ID;
10209
END Change_Package_State;
16433
/
10210
/
16434
--------------------------------------------------------
10211
--------------------------------------------------------
16435
--  DDL for Procedure CHANGE_RELEASE_MODE
10212
--  DDL for Procedure CHANGE_RELEASE_MODE
16436
--------------------------------------------------------
10213
--------------------------------------------------------
16437
 
10214
 
Line 16511... Line 10288...
16511
 
10288
 
16512
 
10289
 
16513
END CHANGE_RELEASE_MODE;
10290
END CHANGE_RELEASE_MODE;
16514
/
10291
/
16515
--------------------------------------------------------
10292
--------------------------------------------------------
16516
--  DDL for Procedure UPDATE_UNIT_TEST_TEST
-
 
16517
--------------------------------------------------------
-
 
16518
 
-
 
16519
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_TEST" ( nTest_id IN NUMBER,
-
 
16520
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
-
 
16521
											   nPv_id IN NUMBER,
-
 
16522
											   nUserId IN NUMBER,
-
 
16523
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
-
 
16524
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
-
 
16525
	                                           sCompletion_date IN VARCHAR2,
-
 
16526
											   sDpkg_path IN VARCHAR2,
-
 
16527
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
-
 
16528
											   sResults IN VARCHAR2,
-
 
16529
											   outFileName OUT VARCHAR2
-
 
16530
                                              ) IS
-
 
16531
/* ---------------------------------------------------------------------------
-
 
16532
    Version: 3.1.0
-
 
16533
   --------------------------------------------------------------------------- */
-
 
16534
   
-
 
16535
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
-
 
16536
 
-
 
16537
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
-
 
16538
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
-
 
16539
 
-
 
16540
 
-
 
16541
BEGIN
-
 
16542
 
-
 
16543
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
-
 
16544
       	ResultsURL := sResults;
-
 
16545
       ELSE
-
 
16546
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
-
 
16547
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
-
 
16548
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
-
 
16549
           END IF;
-
 
16550
       END IF;
-
 
16551
 
-
 
16552
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
-
 
16553
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
-
 
16554
    		sResults_url:= 'doc' || '/' || 
-
 
16555
			;
-
 
16556
        END IF;*/
-
 
16557
	--- Update Unit Test ---
-
 
16558
    UPDATE UNIT_TESTS SET
-
 
16559
           TEST_SUMMARY = sTest_summary,
-
 
16560
		   NUMOF_TEST = sNumof_test,
-
 
16561
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
-
 
16562
		   COMPLETED_BY = nUserId,
-
 
16563
		   RESULTS_URL = ResultsURL,
-
 
16564
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
-
 
16565
     WHERE TEST_ID = nTest_id
-
 
16566
       AND PV_ID = nPv_id;
-
 
16567
 
-
 
16568
END Update_Unit_Test_Test;
-
 
16569
/
-
 
16570
--------------------------------------------------------
-
 
16571
--  DDL for Procedure NEW_VERSION
10293
--  DDL for Procedure CHECK_NEW_PATCHES
16572
--------------------------------------------------------
10294
--------------------------------------------------------
16573
 
10295
 
16574
  CREATE OR REPLACE PROCEDURE "NEW_VERSION" ( NNorig_pv_id IN NUMBER,
10296
  CREATE OR REPLACE PROCEDURE "CHECK_NEW_PATCHES" (
16575
                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE DEFAULT NULL,
-
 
16576
                                          NNsetto_pv_id IN NUMBER DEFAULT NULL,
-
 
16577
                                          NNrtag_id IN NUMBER,
10297
   nrtagid   IN   release_content.rtag_id%TYPE
16578
                                          NNuser_id IN NUMBER,
-
 
16579
                                          enumISSUES_STATE_IMPORTED IN NUMBER,
-
 
16580
                                          retPv_id OUT NUMBER ) IS
-
 
16581
										  
-
 
16582
										  
-
 
16583
  TO BE REMOVED   !!!										  
-
 
16584
										  
-
 
16585
										  
-
 
16586
										  
10298
)
16587
										  
10299
IS
16588
/* ---------------------------------------------------------------------------
10300
/* ---------------------------------------------------------------------------
16589
    Version: 3.3
10301
    Version: 3.0
16590
   --------------------------------------------------------------------------- */
10302
   --------------------------------------------------------------------------- */
16591
 
-
 
16592
    ReleaseLocation VARCHAR2(4000);
-
 
16593
    origPkg_id PACKAGE_VERSIONS.pkg_id%TYPE;
-
 
16594
    origDlocked PACKAGE_VERSIONS.dlocked%TYPE;
-
 
16595
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
-
 
16596
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
-
 
16597
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
-
 
16598
    nIssuesTypes NUMBER;
-
 
16599
 
-
 
16600
    CURSOR package_versions_cur IS
-
 
16601
        SELECT pv.pv_id, pv.is_patch
-
 
16602
          FROM PACKAGE_VERSIONS pv
-
 
16603
         WHERE pv.pkg_version = SSpkg_version
-
 
16604
           AND pv.pkg_id IN ( SELECT DISTINCT origpv.pkg_id FROM PACKAGE_VERSIONS origpv WHERE origpv.pv_id = NNorig_pv_id );
-
 
16605
    package_versions_rec package_versions_cur%ROWTYPE;
-
 
16606
 
-
 
16607
    CURSOR clone_package_versions_cur IS
-
 
16608
        SELECT DISTINCT pkg_id, dlocked FROM PACKAGE_VERSIONS WHERE pv_id = NNorig_pv_id;
-
 
16609
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
-
 
16610
 
-
 
16611
BEGIN
10303
BEGIN
16612
	IF NNsetto_pv_id IS NULL
-
 
16613
    THEN
-
 
16614
		-- SetToPv_id is not supplied, hence proceed.
-
 
16615
 
-
 
16616
	    /* ---------------------------------------------------- */
10304
   /*--------------- Business Rules Here -------------------*/
16617
	    /* Find id package_version exists                       */
10305
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
16618
	    /* ---------------------------------------------------- */
-
 
16619
 
-
 
16620
	    OPEN package_versions_cur;
-
 
16621
	    FETCH package_versions_cur INTO package_versions_rec;
-
 
16622
 
-
 
16623
	    IF package_versions_cur%NOTFOUND
-
 
16624
	    THEN
-
 
16625
	        SELECT SEQ_PV_ID.NEXTVAL INTO retPv_id FROM DUAL;
-
 
16626
	        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
-
 
16627
 
-
 
16628
	        OPEN clone_package_versions_cur;
-
 
16629
	        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
-
 
16630
	        origPkg_id := clone_package_versions_rec.pkg_id;
-
 
16631
	        origDlocked := clone_package_versions_rec.dlocked;
-
 
16632
	        CLOSE clone_package_versions_cur;
-
 
16633
 
-
 
16634
	        -- Clone Package Version Details --
-
 
16635
	        INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT,
10306
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
16636
	                                       src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, IS_DEPLOYABLE, IS_BUILD_ENV_REQUIRED )
-
 
16637
	            SELECT retPv_id         AS pv_id,
-
 
16638
	                   origPkg_id       AS pkg_id,
-
 
16639
	                   SSpkg_version    AS pkg_version,
-
 
16640
	                   'N'              AS dlocked,
-
 
16641
	                   Ora_Sysdate      AS created_stamp,
-
 
16642
	                   NNuser_id        AS creator_id,
-
 
16643
	                   Ora_Sysdatetime  AS modified_stamp,
-
 
16644
	                   NNuser_id        AS modifier_id,
-
 
16645
	                   SSV_MM           AS V_MM,
-
 
16646
	                   SSV_NMM          AS V_NMM,
-
 
16647
	                   SSV_EXT          AS V_EXT,
-
 
16648
	                   pv.src_path,
-
 
16649
	                   pv.pv_description,
-
 
16650
                       pv.PV_OVERVIEW,
-
 
16651
                       NNorig_pv_id 	AS LAST_PV_ID,
-
 
16652
	                   pv.owner_id,
-
 
16653
					   pv.IS_DEPLOYABLE,
-
 
16654
					   pv.IS_BUILD_ENV_REQUIRED
-
 
16655
	              FROM PACKAGE_VERSIONS pv
-
 
16656
	             WHERE pv.pv_id = NNorig_pv_id;
-
 
16657
 
-
 
16658
 
-
 
16659
	        -- Set Issues Type for cloning ---
-
 
16660
	        IF origDlocked = 'Y'
-
 
16661
	        THEN
-
 
16662
            	nIssuesTypes := enumISSUES_STATE_IMPORTED;
-
 
16663
	        ELSE
-
 
16664
            	nIssuesTypes := NULL;
-
 
16665
	        END IF;
-
 
16666
 
-
 
16667
			Basic_Clone ( NNorig_pv_id, retPv_id, NNrtag_id, NNuser_id, origPkg_id, nIssuesTypes );
-
 
16668
 
-
 
16669
 
-
 
16670
 
-
 
16671
	    ELSE
-
 
16672
	        retPv_id := package_versions_rec.pv_id;
-
 
16673
 
-
 
16674
	    END IF;
-
 
16675
 
-
 
16676
        CLOSE package_versions_cur;
-
 
16677
 
-
 
16678
	ELSE
-
 
16679
    	retPv_id := NNsetto_pv_id;
-
 
16680
    END IF;
10307
   END IF
16681
 
-
 
16682
 
-
 
16683
    /* ---------------------------------------------------- */
-
 
16684
    /* Insert into Release Contents (EXCLUDE PATCHES)       */
-
 
16685
    /* ---------------------------------------------------- */
-
 
16686
	IF (package_versions_rec.is_patch != 'Y') OR (package_versions_rec.is_patch IS NULL) THEN
-
 
16687
	    UPDATE RELEASE_CONTENT
-
 
16688
	       SET pv_id = retPv_id,
-
 
16689
	           insert_stamp = Ora_Sysdate,
-
 
16690
	           insertor_id = NNuser_id
-
 
16691
	     WHERE rtag_id = NNrtag_id
-
 
16692
	       AND pv_id = NNorig_pv_id;
-
 
16693
 
-
 
16694
        /* LOG ACTION */
-
 
16695
        SELECT proj.PROJ_NAME ||' / '|| vt.VTREE_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
16696
		  FROM PROJECTS proj,
-
 
16697
		  	   VTREES vt,
-
 
16698
		       RELEASE_TAGS rt
-
 
16699
		 WHERE rt.VTREE_ID = vt.VTREE_ID
-
 
16700
		   AND vt.PROJ_ID = proj.PROJ_ID
-
 
16701
		   AND rt.RTAG_ID = NNrtag_id;
-
 
16702
 
-
 
16703
        Log_Action ( NNorig_pv_id, 'replaced_with', NNuser_id, 'Replacing version: '|| SSpkg_version ||' at '|| ReleaseLocation );
-
 
16704
   		Log_Action ( retPv_id, 'add', NNuser_id, 'Location: '|| ReleaseLocation );
-
 
16705
 
-
 
16706
	END IF;
-
 
16707
 
-
 
16708
 
10308
 
-
 
10309
   /*-------------------------------------------------------*/
-
 
10310
   UPDATE release_content rc
-
 
10311
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
-
 
10312
    WHERE rc.pv_id IN (
-
 
10313
             SELECT prod.pv_id
-
 
10314
               FROM (SELECT   pp.pv_id AS orig_parent_id,
-
 
10315
                              COUNT (*) AS num_of_patches
-
 
10316
                         FROM release_content rc, package_patches pp
-
 
10317
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
-
 
10318
                     GROUP BY pp.pv_id) orig,
-
 
10319
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
-
 
10320
                              COUNT (*) AS num_of_patches
-
 
10321
                         FROM release_content rc,
-
 
10322
                              package_patches pp,
-
 
10323
                              package_dependencies dep,
-
 
10324
                              package_versions pv,
-
 
10325
                              package_patches prodpp
-
 
10326
                        WHERE rc.pv_id = pp.pv_id
-
 
10327
                          AND rc.rtag_id = nrtagid
-
 
10328
                          AND pp.patch_id = dep.dpv_id
-
 
10329
                          AND dep.pv_id = pv.pv_id
-
 
10330
                          AND pv.is_patch = 'Y'
-
 
10331
                          AND pv.dlocked = 'Y'
-
 
10332
                          AND prodpp.patch_id = dep.pv_id
-
 
10333
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
-
 
10334
                    release_content rc
-
 
10335
              WHERE orig.orig_parent_id = prod.pv_id
-
 
10336
                AND orig.num_of_patches != prod.num_of_patches
-
 
10337
                AND rc.rtag_id = nrtagid
-
 
10338
                AND rc.pv_id = prod.pv_id
-
 
10339
                AND rc.pkg_state = 0
-
 
10340
             UNION
-
 
10341
             SELECT   prodpp.pv_id
-
 
10342
                 FROM release_content rc,
-
 
10343
                      package_patches pp,
-
 
10344
                      package_dependencies dep,
-
 
10345
                      package_versions pv,
-
 
10346
                      package_patches prodpp
-
 
10347
                WHERE rc.pv_id = pp.pv_id
-
 
10348
                  AND rc.rtag_id = nrtagid
-
 
10349
                  AND pp.patch_id = dep.dpv_id
-
 
10350
                  AND dep.pv_id = pv.pv_id
-
 
10351
                  AND pv.is_patch = 'Y'
-
 
10352
                  AND pv.dlocked = 'Y'
-
 
10353
                  AND prodpp.patch_id = dep.pv_id
-
 
10354
             GROUP BY prodpp.pv_id, pp.pv_id
-
 
10355
             MINUS
-
 
10356
             SELECT   pp.pv_id
-
 
10357
                 FROM release_content rc, package_patches pp
-
 
10358
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
-
 
10359
             GROUP BY pp.pv_id);
16709
END New_Version;
10360
END check_new_patches;
16710
/
10361
/
16711
--------------------------------------------------------
10362
--------------------------------------------------------
16712
--  DDL for Procedure ADD_RUNTIME_DEPENDENCY
10363
--  DDL for Procedure CLEAN_ADVISORY_RIPPLE
16713
--------------------------------------------------------
10364
--------------------------------------------------------
16714
 
10365
 
16715
  CREATE OR REPLACE PROCEDURE "ADD_RUNTIME_DEPENDENCY" ( NNpv_id IN NUMBER,
10366
  CREATE OR REPLACE PROCEDURE "CLEAN_ADVISORY_RIPPLE" (nrtagid IN NUMBER)
16716
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
-
 
16717
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
-
 
-
 
10367
IS
16718
                                                     NNuser_id IN NUMBER
10368
/******************************************************************************
16719
                                                    ) IS
10369
   NAME:       clean_advisory_ripple
16720
/* ---------------------------------------------------------------------------
-
 
16721
    Version: 3.1
-
 
16722
   --------------------------------------------------------------------------- */
-
 
16723
 
10370
 
-
 
10371
   PURPOSE:    To delete entries from the advisory_ripple table based upon
16724
    retRTD_ID NUMBER;
10372
               an RTAG_ID only
16725
 
10373
 
-
 
10374
               This is a tidy-up operation performed against the advisory_ripple
16726
	CURSOR rtd_cur IS
10375
               table, ensuring that the table does not have rtag_id/pv_id
16727
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
10376
               combinations that cannot be found in the release's wip/pending/release
16728
    rtd_rec rtd_cur%ROWTYPE;
10377
               tabs.
16729
 
10378
 
-
 
10379
******************************************************************************/
16730
BEGIN
10380
BEGIN
16731
    --- Seed database with package_name and version if required ---
10381
   -- Delete any invalid rtag_id/pv_id combination from the advisory_ripple table.
16732
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
10382
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
16733
 
-
 
16734
	OPEN rtd_cur;
-
 
16735
    FETCH rtd_cur INTO rtd_rec;
10383
   -- work_in_progress, planned, or release_content table.
16736
 
-
 
16737
    IF rtd_cur%NOTFOUND
10384
   -- NOTE: Planned operations that represent pending additive/subtractive merge
16738
    THEN
-
 
16739
		/* Make sure it does not exists already as runtime dependency */
10385
   -- operations are ignored because they have not been approved yet and so
16740
 
-
 
16741
		--- Add new Runtime Dependency ---
10386
   -- cannot be said to be "in the release".
-
 
10387
   DELETE FROM advisory_ripple
16742
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
10388
         WHERE rtag_id = nrtagid
-
 
10389
           AND pv_id not in
16743
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
10390
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
16744
 
-
 
16745
    	/* LOG ACTION */
10391
                 UNION
16746
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
10392
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
-
 
10393
                 UNION
16747
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
10394
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
16748
 
-
 
16749
	END IF;
10395
               );
16750
 
-
 
16751
 
-
 
16752
END Add_Runtime_Dependency;
10396
END clean_advisory_ripple;
16753
/
10397
/
16754
--------------------------------------------------------
10398
--------------------------------------------------------
16755
--  DDL for Procedure LEVEL_ONE_CONFLICTS
10399
--  DDL for Procedure CLEAN_DO_NOT_RIPPLE
16756
--------------------------------------------------------
10400
--------------------------------------------------------
16757
 
10401
 
16758
  CREATE OR REPLACE PROCEDURE "LEVEL_ONE_CONFLICTS" (
10402
  CREATE OR REPLACE PROCEDURE "CLEAN_DO_NOT_RIPPLE" (nrtagid IN NUMBER)
16759
   nnrtag_id       IN   NUMBER,
-
 
16760
   nnsession_num   IN   NUMBER
-
 
16761
)
-
 
16762
IS
10403
IS
16763
BEGIN
-
 
16764
   /* ---------  LEVEL 1 CONFILCTS -----------
-
 
16765
   || Following states are used:
-
 
16766
   || 0 -> NOT FOUND
-
 
16767
   || 1 -> MAJOR
-
 
16768
   || 2 -> MINOR MINOR
-
 
16769
   */
-
 
16770
   INSERT INTO temp_env_states
-
 
16771
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
-
 
16772
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
-
 
16773
                      DECODE (frc.v_nmm,
-
 
16774
                              NULL, 0,
-
 
16775
                              errpv.v_nmm, DECODE (frc.v_mm,
-
 
16776
                                                   errpv.v_mm, NULL,
-
 
16777
                                                   2
-
 
16778
                                                  ),
-
 
16779
                              1
-
 
16780
                             ) AS MESSAGE
-
 
16781
                 FROM (
-
 
16782
                       /* Full Release Contents used for reference*/
-
 
16783
                        SELECT rel.rtag_id, rpv.pv_id, rpv.pkg_id,
-
 
16784
                                NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
10404
/******************************************************************************
16785
                                rpv.pkg_version, rpv.v_nmm, rpv.v_mm,
-
 
16786
                                (SELECT COUNT(*)
-
 
16787
                                   FROM ADVISORY_RIPPLE avr
-
 
16788
                                  WHERE avr.rtag_id = rel.rtag_id
-
 
16789
                                    AND avr.pv_id = rel.pv_id
-
 
16790
                                ) AS IsAvr
-
 
16791
                          FROM release_content rel,
-
 
16792
                                package_versions rpv
-
 
16793
                          WHERE rel.pv_id = rpv.pv_id
-
 
16794
                             AND rtag_id = nnrtag_id
-
 
16795
                      ) frc,
-
 
16796
 
-
 
16797
                      (
-
 
16798
                       /* DPV_IDs not found in release (excluding those from pegged versions whose dependencies will not
-
 
16799
                          necessarily be satisfied in the release) */
-
 
16800
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
-
 
16801
                         FROM package_dependencies dep,
-
 
16802
                              package_versions dep_dpv
-
 
16803
                        WHERE dep.dpv_id = dep_dpv.pv_id
-
 
16804
                          AND dep.pv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
-
 
16805
                          AND NOT dep.pv_id IN (SELECT pegv.pv_id FROM PEGGED_VERSIONS pegv WHERE pegv.rtag_id = nnrtag_id)
-
 
16806
                          AND NOT dep.dpv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
-
 
16807
                       MINUS
-
 
16808
                       /* MINUS Dependencies to be ignored */
-
 
16809
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
-
 
16810
                         FROM ignore_warnings igw,
-
 
16811
                              package_versions igw_dpv
-
 
16812
                        WHERE igw.dpv_id = igw_dpv.pv_id
-
 
16813
                          AND igw.rtag_id = nnrtag_id
-
 
16814
                      ) err,
-
 
16815
                      package_versions errpkg,
-
 
16816
                      package_versions errpv
-
 
16817
                WHERE err.err_dpv = errpv.pv_id
-
 
16818
                  AND errpv.pkg_id = frc.pkg_id(+)
-
 
16819
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
-
 
16820
                  AND err.pv_id = errpkg.pv_id
-
 
16821
                  AND frc.IsAvr = 0;
10405
   NAME:       clean_do_not_ripple
16822
END level_one_conflicts;
-
 
16823
/
-
 
16824
--------------------------------------------------------
-
 
16825
--  DDL for Procedure OLE
-
 
16826
--------------------------------------------------------
-
 
16827
 
-
 
16828
  CREATE OR REPLACE PROCEDURE "OLE" 
-
 
16829
IS retval VARCHAR2(40);   
-
 
16830
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
-
 
16831
DBMS_OUTPUT.PUT_LINE(retval);
-
 
16832
/
-
 
16833
--------------------------------------------------------
-
 
16834
--  DDL for Procedure SYNC_PROJECTS_NEW_VERSION
-
 
16835
--------------------------------------------------------
-
 
16836
 
10406
 
16837
  CREATE OR REPLACE PROCEDURE "SYNC_PROJECTS_NEW_VERSION" ( nPv_id 				IN NUMBER,
-
 
16838
														  sSyncRtagsInList		IN VARCHAR2,
-
 
16839
				                                          nUser_id 				IN NUMBER ) IS
10407
   PURPOSE:    To delete entries from the do_not_ripple table based upon
16840
/* ---------------------------------------------------------------------------
-
 
16841
    Version: 3.0.0
10408
               an RTAG_ID only
16842
   --------------------------------------------------------------------------- */
-
 
16843
 
10409
 
16844
	CURSOR sync_rtags_cur IS
-
 
16845
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
10410
               This is a tidy-up operation performed against the do_not_ripple
16846
		  FROM release_content rc,
-
 
16847
		  	   package_versions pv,
-
 
16848
		       package_versions opv
-
 
16849
		 WHERE rc.pv_id = pv.pv_id
-
 
16850
		   AND opv.pkg_id = pv.pkg_id
-
 
16851
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
10411
               table, ensuring that the table does not have rtag_id/pv_id
16852
		   AND opv.pv_id = nPv_id
-
 
16853
		   AND rtag_id IN ( SELECT *
-
 
16854
		   	   		   	      FROM THE (
-
 
16855
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
10412
               combinations that cannot be found in the release's wip/pending/release
16856
					       		   	    FROM dual
10413
               tabs.
16857
									   )
-
 
16858
						  );
-
 
16859
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
-
 
16860
 
10414
 
-
 
10415
******************************************************************************/
16861
BEGIN
10416
BEGIN
16862
 
-
 
16863
	OPEN sync_rtags_cur;
-
 
16864
	FETCH sync_rtags_cur INTO sync_rtags_rec;
10417
   -- Delete any invalid rtag_id/pv_id combination from the do_not_ripple table.
16865
 
-
 
16866
	WHILE sync_rtags_cur%FOUND
-
 
16867
	LOOP
-
 
16868
		DELETE FROM RELEASE_CONTENT
-
 
16869
		 WHERE rtag_id = sync_rtags_rec.rtag_id
10418
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
16870
	       AND pv_id = sync_rtags_rec.pv_id;
10419
   -- work_in_progress, planned, or release_content table.
16871
 
-
 
16872
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
10420
   -- NOTE: Planned operations that represent pending additive/subtractive merge
16873
	   		   VALUES ( sync_rtags_rec.rtag_id,
10421
   -- operations are ignored because they have not been approved yet and so
16874
		       		  	nPv_id,
-
 
16875
						sync_rtags_rec.BASE_VIEW_ID,
-
 
16876
	           			Ora_Sysdate,
10422
   -- cannot be said to be "in the release".
16877
	           			nUser_id,
10423
   DELETE FROM do_not_ripple
16878
						0
-
 
16879
	      	   		   );
10424
         WHERE rtag_id = nrtagid
16880
 
-
 
16881
-- 		UPDATE RELEASE_CONTENT
-
 
16882
-- 	       SET pv_id = nPv_id,
10425
           AND pv_id not in
16883
-- 	           insert_stamp = Ora_Sysdate,
10426
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
16884
-- 	           insertor_id = nUser_id
10427
                 UNION
16885
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
10428
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
16886
-- 	       AND pv_id = sync_rtags_rec.pv_id;
10429
                 UNION
16887
 
-
 
16888
		FETCH sync_rtags_cur INTO sync_rtags_rec;
10430
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
16889
	END LOOP;
-
 
16890
 
-
 
16891
	CLOSE sync_rtags_cur;
10431
               );
16892
 
-
 
16893
END Sync_Projects_New_Version;
10432
END clean_do_not_ripple;
16894
/
10433
/
16895
--------------------------------------------------------
10434
--------------------------------------------------------
16896
--  DDL for Procedure LOCK_PACKAGE
10435
--  DDL for Procedure CLEAR_ADVISORY_RIPPLE
16897
--------------------------------------------------------
10436
--------------------------------------------------------
16898
 
10437
 
16899
  CREATE OR REPLACE PROCEDURE "LOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
10438
  CREATE OR REPLACE PROCEDURE "CLEAR_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
-
 
10439
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
16900
											 nUserId IN NUMBER ) IS
10440
											 nUserId IN NUMBER ) IS
16901
/* ---------------------------------------------------------------------------
10441
/* ---------------------------------------------------------------------------
16902
    Version: 4.0
10442
    Version: 4.0
16903
   --------------------------------------------------------------------------- */
10443
   --------------------------------------------------------------------------- */
16904
 
10444
 
16905
BEGIN
10445
BEGIN
16906
 
10446
 
16907
    -- Lock Package
10447
    -- Clear Advisory Ripple Package
16908
    UPDATE PACKAGE_VERSIONS pv SET
-
 
16909
    	pv.DLOCKED = 'Y'
-
 
16910
    WHERE pv.PV_ID = nPvId;
-
 
16911
 
-
 
16912
    /* LOG ACTION */
-
 
16913
   	Log_Action ( nPvId, 'lock_package', nUserId );
-
 
16914
 
-
 
16915
END Lock_Package;
-
 
16916
/
-
 
16917
--------------------------------------------------------
-
 
16918
--  DDL for Procedure UPDATE_PACKAGE_STATES
-
 
16919
--------------------------------------------------------
-
 
16920
 
-
 
16921
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_STATES" ( NNrtag_id IN NUMBER,
-
 
16922
                                                    NNsession_num IN NUMBER ) IS
-
 
16923
/* =============  STATE RULES =================== */
-
 
16924
/*
-
 
16925
   MNR   MRR   MN   MR    |   pkg_state
-
 
16926
   ------------------------------------
-
 
16927
    0     0     0     0   |      OK
-
 
16928
    0     0     0     1   |      MAJOR
-
 
16929
    0     0     1     0   |      MINOR
-
 
16930
    0     0     1     1   |      MAJOR
-
 
16931
   ------------------------------------
-
 
16932
    0     1     0     0   |      MAJOR_READY
-
 
16933
    0     1     0     1   |      MAJOR
-
 
16934
    0     1     1     0   |      MAJOR
-
 
16935
    0     1     1     1   |      MAJOR
-
 
16936
   ------------------------------------
-
 
16937
    1     0     0     0   |      MINOR_READY
-
 
16938
    1     0     0     1   |      MAJOR
-
 
16939
    1     0     1     0   |      MINOR
-
 
16940
    1     0     1     1   |      MAJOR
-
 
16941
   ------------------------------------
-
 
16942
    1     1     0     0   |      MAJOR_READY
-
 
16943
    1     1     0     1   |      MAJOR
-
 
16944
    1     1     1     0   |      MAJOR
-
 
16945
    1     1     1     1   |      MAJOR
-
 
16946
   ------------------------------------
-
 
16947
*/
-
 
16948
BEGIN
-
 
16949
    /*----------------------------------------------
-
 
16950
    ||              MINOR READY
-
 
16951
    */----------------------------------------------
-
 
16952
 
-
 
16953
    UPDATE release_content
-
 
16954
       SET pkg_state = 4
-
 
16955
     WHERE rtag_id = NNrtag_id
-
 
16956
       AND pv_id IN
-
 
16957
           (
-
 
16958
           SELECT DISTINCT pv_id
-
 
16959
           FROM temp_env_states
-
 
16960
           WHERE session_num = NNsession_num
-
 
16961
             AND level_num = 1
-
 
16962
             AND tes_state = 2
-
 
16963
           );
-
 
16964
 
-
 
16965
    /*----------------------------------------------
-
 
16966
    ||              MAJOR READY
-
 
16967
    */----------------------------------------------
-
 
16968
    UPDATE release_content
-
 
16969
       SET pkg_state = 3
-
 
16970
     WHERE rtag_id = NNrtag_id
-
 
16971
       AND pv_id IN
-
 
16972
           (
-
 
16973
           SELECT DISTINCT pv_id
-
 
16974
           FROM temp_env_states
-
 
16975
           WHERE session_num = NNsession_num
-
 
16976
             AND level_num = 1
-
 
16977
             AND tes_state IN (0,1)
-
 
16978
           );
-
 
16979
 
-
 
16980
    /*----------------------------------------------
-
 
16981
    ||                MINOR
-
 
16982
    */----------------------------------------------
-
 
16983
    UPDATE release_content
-
 
16984
       SET pkg_state = 2
-
 
16985
     WHERE rtag_id = NNrtag_id
-
 
16986
       AND pv_id IN
-
 
16987
           (
-
 
16988
           SELECT DISTINCT pv_id
-
 
16989
            FROM temp_env_states
-
 
16990
            WHERE session_num = NNsession_num
-
 
16991
              AND level_num >= 2
-
 
16992
              AND tes_state = 2
-
 
16993
            MINUS
-
 
16994
           SELECT pv_id
-
 
16995
             FROM release_content
-
 
16996
            WHERE rtag_id = NNrtag_id
-
 
16997
              AND pkg_state = 3
-
 
16998
           );
-
 
16999
 
-
 
17000
    /*----------------------------------------------
-
 
17001
    ||                MAJOR
-
 
17002
    */----------------------------------------------
-
 
17003
    UPDATE release_content
-
 
17004
       SET pkg_state = 1
-
 
17005
     WHERE rtag_id = NNrtag_id
-
 
17006
       AND pv_id IN
-
 
17007
           (
-
 
17008
           SELECT DISTINCT pv_id
-
 
17009
           FROM temp_env_states
-
 
17010
           WHERE session_num = NNsession_num
-
 
17011
             AND level_num >= 2
-
 
17012
             AND tes_state IN (0,1)
-
 
17013
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
-
 
17014
           UNION
-
 
17015
           SELECT DISTINCT tes.pv_id
-
 
17016
           FROM temp_env_states tes,
-
 
17017
                release_content rc
-
 
17018
           WHERE tes.session_num = NNsession_num
-
 
17019
             AND tes.level_num >= 2
-
 
17020
             AND tes.tes_state = 2
-
 
17021
             AND rtag_id = NNrtag_id
-
 
17022
             AND rc.pv_id = tes.pv_id
-
 
17023
             AND rc.pkg_state = 3
-
 
17024
           );
-
 
17025
 
-
 
17026
    /*----------------------------------------------
-
 
17027
    ||                 OK
-
 
17028
    */----------------------------------------------
-
 
17029
    UPDATE release_content
-
 
17030
       SET pkg_state = 0
-
 
17031
     WHERE rtag_id = NNrtag_id
-
 
17032
       AND pv_id IN
-
 
17033
           (
-
 
17034
           SELECT rc.pv_id
-
 
17035
             FROM release_content rc
-
 
17036
            WHERE rc.rtag_id = NNrtag_id
-
 
17037
              AND NOT rc.pv_id IN
-
 
17038
                    (
-
 
17039
                     SELECT DISTINCT pv_id
-
 
17040
                     FROM temp_env_states WHERE session_num = NNsession_num
-
 
17041
                    )
-
 
17042
           );
-
 
17043
 
-
 
17044
      Update_Deprecation_State (NNrtag_id);
-
 
17045
 
-
 
17046
    /*----------------------------------------------
-
 
17047
    ||              PEGGED VERSIONS DEPENDENT
-
 
17048
    */----------------------------------------------
-
 
17049
    UPDATE release_content
-
 
17050
       SET pkg_state = 10
-
 
17051
     WHERE rtag_id = NNrtag_id
-
 
17052
       AND pv_id IN
-
 
17053
           (
-
 
17054
           SELECT DISTINCT pv_id
-
 
17055
           FROM pegged_versions pegv
-
 
17056
           WHERE pegv.rtag_id = NNrtag_id
-
 
17057
           );
-
 
17058
 
-
 
17059
    /*----------------------------------------------
-
 
17060
    ||              ADVISORY RIPPLE
10448
    DELETE FROM ADVISORY_RIPPLE
17061
    */----------------------------------------------
-
 
17062
    UPDATE release_content
-
 
17063
       SET pkg_state = 8
-
 
17064
     WHERE rtag_id = NNrtag_id
-
 
17065
       AND pv_id IN
-
 
17066
           (
-
 
17067
           SELECT DISTINCT pv_id
-
 
17068
           FROM advisory_ripple ar
-
 
17069
           WHERE ar.rtag_id = NNrtag_id
-
 
17070
           )
-
 
17071
       AND pv_id IN
-
 
17072
           (
-
 
17073
           SELECT DISTINCT pv_id
-
 
17074
           FROM release_content rc
-
 
17075
           WHERE rc.rtag_id = NNrtag_id
-
 
17076
           );
-
 
17077
 
-
 
17078
END Update_Package_States;
-
 
17079
/
-
 
17080
--------------------------------------------------------
-
 
17081
--  DDL for Procedure REMOVE_DOCUMENT
-
 
17082
--------------------------------------------------------
-
 
17083
 
-
 
17084
  CREATE OR REPLACE PROCEDURE "REMOVE_DOCUMENT" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
-
 
17085
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
-
 
17086
                                              nUserId IN NUMBER ) IS
-
 
17087
/* ---------------------------------------------------------------------------
-
 
17088
    Version: 3.0
-
 
17089
   --------------------------------------------------------------------------- */
-
 
17090
 
-
 
17091
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
-
 
17092
 
-
 
17093
BEGIN
-
 
17094
 
-
 
17095
	-- Get Doc Num
-
 
17096
    SELECT pd.DOC_NUM INTO DocNumber
-
 
17097
      FROM PACKAGE_DOCUMENTS pd
-
 
17098
     WHERE pd.PV_ID = nPvId
-
 
17099
       AND pd.DOC_ID = nDocId;
-
 
17100
 
-
 
17101
 
-
 
17102
	-- Delete Document
-
 
17103
    DELETE
-
 
17104
      FROM PACKAGE_DOCUMENTS pd
-
 
17105
     WHERE pd.PV_ID = nPvId
10449
	WHERE PV_ID = nPvId
17106
       AND pd.DOC_ID = nDocId;
10450
	AND RTAG_ID = nRtagId;
17107
 
-
 
17108
 
10451
 
17109
    /* LOG ACTION */
10452
    /* LOG ACTION */
17110
   	Log_Action ( nPvId, 'document_remove', nUserId,
10453
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
17111
   			     'Document number: '|| DocNumber );
-
 
17112
 
-
 
17113
 
-
 
17114
END Remove_Document;
-
 
17115
/
10454
	
17116
--------------------------------------------------------
-
 
17117
--  DDL for Procedure SPLIT_VERSION
-
 
17118
--------------------------------------------------------
-
 
17119
 
-
 
17120
  CREATE OR REPLACE PROCEDURE "SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
-
 
17121
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
-
 
17122
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
-
 
17123
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
-
 
17124
/* ---------------------------------------------------------------------------
-
 
17125
    Version: 3.0.0
-
 
17126
   --------------------------------------------------------------------------- */
-
 
17127
 
-
 
17128
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
-
 
17129
        INDEX BY BINARY_INTEGER;
-
 
17130
 
-
 
17131
    version_components VERSION_COMPONENTS_TYPE;
-
 
17132
    lastDot NUMBER := 0;
-
 
17133
    currDot NUMBER := 0;
-
 
17134
 
-
 
17135
BEGIN
-
 
17136
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
-
 
17137
 
-
 
17138
    IF ( currDot > 0 )
-
 
17139
    THEN
-
 
17140
        -- YES dot separator found --
10455
	/*Rebuild_Environment(nRtagId);*/
17141
        SSV_EXT := GET_V_EXT( SSpkg_version );
-
 
17142
 
-
 
17143
        IF NOT SSV_EXT IS NULL
-
 
17144
        THEN
-
 
17145
            lastDot := currDot;
-
 
17146
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
-
 
17147
 
-
 
17148
            IF ( currDot > 0 )
-
 
17149
            THEN
-
 
17150
                -- XXXX.M.E
-
 
17151
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
-
 
17152
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
-
 
17153
            ELSE
-
 
17154
                -- XXXX.E
-
 
17155
                SSV_MM := NULL;
-
 
17156
                SSV_NMM := SSpkg_version;
-
 
17157
            END IF;
-
 
17158
 
-
 
17159
        ELSE
-
 
17160
            -- XXXX.M
-
 
17161
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
-
 
17162
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
-
 
17163
 
-
 
17164
        END IF;
-
 
17165
 
-
 
17166
    ELSE
-
 
17167
        -- NO dot separator found --
-
 
17168
        -- XXXXXX
-
 
17169
        SSV_MM  := NULL;
-
 
17170
        SSV_NMM := SSpkg_version;
-
 
17171
        SSV_EXT := NULL;
-
 
17172
 
-
 
17173
    END IF;
-
 
17174
 
10456
 
17175
END Split_Version;
10457
END Clear_Advisory_Ripple;
17176
/
10458
/
17177
--------------------------------------------------------
10459
--------------------------------------------------------
17178
--  DDL for Procedure ADD_PACKAGE_INTEREST_TEST
10460
--  DDL for Procedure CLONED_PACKAGE_PROCESSES
17179
--------------------------------------------------------
10461
--------------------------------------------------------
17180
 
10462
 
17181
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST_TEST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
10463
  CREATE OR REPLACE PROCEDURE "CLONED_PACKAGE_PROCESSES" 
17182
	   	  		  								  nPkgIdList IN VARCHAR2,
-
 
17183
												  nUserId IN NUMBER
-
 
17184
	   	  		  								  ) IS
10464
IS
17185
 
10465
 
-
 
10466
proc_id NUMBER;
17186
/******************************************************************************
10467
/******************************************************************************
17187
   NAME:       ADD_PACKAGE_INTEREST
10468
   NAME:       DELETE_DO_NOT_RIPPLE
-
 
10469
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
17188
   PURPOSE:    
10470
               IS RELEASED
17189
 
10471
 
17190
   REVISIONS:
10472
   REVISIONS:
17191
   Ver        Date        Author           Description
10473
   Ver        Date        Author           Description
17192
   ---------  ----------  ---------------  ------------------------------------
10474
   ---------  ----------  ---------------  ------------------------------------
17193
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
10475
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
17194
 
10476
 
17195
   NOTES:
10477
   NOTES:
17196
 
10478
 
17197
   Automatically available Auto Replace Keywords:
10479
   Automatically available Auto Replace Keywords:
17198
      Object Name:     ADD_PACKAGE_INTEREST
10480
      Object Name:     DELETE_DO_NOT_RIPPLE
17199
      Sysdate:         12/05/2006
10481
      Sysdate:         21/04/2006
17200
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
10482
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
17201
      Username:         (set in TOAD Options, Procedure Editor)
10483
      Username:         (set in TOAD Options, Procedure Editor)
17202
      Table Name:       (set in the "New PL/SQL Object" dialog)
10484
      Table Name:       (set in the "New PL/SQL Object" dialog)
17203
 
10485
 
17204
******************************************************************************/
10486
******************************************************************************/
-
 
10487
   CURSOR ripple_cur
-
 
10488
   IS
17205
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
10489
      select distinct proc_id, prod_id from deployment_manager.processes_config;
-
 
10490
 
17206
   nPkgId NUMBER;
10491
   ripple_rec   ripple_cur%ROWTYPE;
17207
BEGIN
10492
BEGIN
-
 
10493
   OPEN ripple_cur;
17208
 
10494
 
17209
	 npkgidcollector := in_list_number2 (nPkgIdList);
-
 
17210
	 
-
 
17211
	FOR i IN 1..npkgidcollector.COUNT
10495
   FETCH ripple_cur
17212
	LOOP
-
 
17213
		nPkgId := npkgidcollector(i);
10496
    INTO ripple_rec;
17214
 
10497
 
17215
	 --- Insert into PACKAGE_INTEREST TABLE
-
 
17216
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
-
 
17217
	 VALUES(nProjId, nPkgId, nUserId);
10498
   WHILE ripple_cur%FOUND
17218
	END LOOP;	 
10499
   LOOP
17219
	 
10500
   
17220
 
10501
 
-
 
10502
   
-
 
10503
insert into package_processes (PROC_ID, PV_ID) 
-
 
10504
values( ripple_rec.proc_id, ripple_rec.prod_id);
-
 
10505
 
-
 
10506
      FETCH ripple_cur
-
 
10507
       INTO ripple_rec;
-
 
10508
   END LOOP;
17221
END ADD_PACKAGE_INTEREST_TEST;
10509
END CLONED_PACKAGE_PROCESSES;
17222
/
10510
/
17223
--------------------------------------------------------
10511
--------------------------------------------------------
17224
--  DDL for Procedure CLONED_PROCESSES
10512
--  DDL for Procedure CLONED_PROCESSES
17225
--------------------------------------------------------
10513
--------------------------------------------------------
17226
 
10514
 
Line 17271... Line 10559...
17271
       INTO ripple_rec;
10559
       INTO ripple_rec;
17272
   END LOOP;
10560
   END LOOP;
17273
END CLONED_PROCESSES;
10561
END CLONED_PROCESSES;
17274
/
10562
/
17275
--------------------------------------------------------
10563
--------------------------------------------------------
17276
--  DDL for Procedure ADD_VIEW_MEMBERS
10564
--  DDL for Procedure DELETE_AUTOBUILD_FAILURE_INFO
17277
--------------------------------------------------------
10565
--------------------------------------------------------
17278
 
10566
 
17279
  CREATE OR REPLACE PROCEDURE "ADD_VIEW_MEMBERS" (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
10567
  CREATE OR REPLACE PROCEDURE "DELETE_AUTOBUILD_FAILURE_INFO" 
17280
 
10568
IS
17281
/******************************************************************************
10569
/******************************************************************************
17282
   NAME:       ADD_VIEW_MEMBERS
10570
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
17283
   PURPOSE:    
10571
   PURPOSE:
17284
 
10572
 
17285
   REVISIONS:
10573
   REVISIONS:
17286
   Ver        Date        Author           Description
10574
   Ver        Date        Author           Description
17287
   ---------  ----------  ---------------  ------------------------------------
10575
   ---------  ----------  ---------------  ------------------------------------
17288
   1.0        11/04/2006          1. Created this procedure.
10576
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
17289
 
10577
 
17290
   NOTES:
10578
   NOTES:
17291
 
10579
 
17292
   Automatically available Auto Replace Keywords:
10580
   Automatically available Auto Replace Keywords:
17293
      Object Name:     ADD_VIEW_MEMBERS
10581
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
17294
      Sysdate:         11/04/2006
10582
      Sysdate:         2/06/2006
17295
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
10583
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
17296
      Username:         (set in TOAD Options, Procedure Editor)
10584
      Username:         (set in TOAD Options, Procedure Editor)
17297
      Table Name:       (set in the "New PL/SQL Object" dialog)
10585
      Table Name:       (set in the "New PL/SQL Object" dialog)
17298
 
10586
 
17299
******************************************************************************/
10587
******************************************************************************/
17300
CURSOR user_cur IS
10588
BEGIN
17301
	SELECT u.USER_ID
10589
   DELETE FROM autobuild_failure
17302
	  FROM USERS u
10590
         WHERE group_email_id NOT IN (SELECT group_email_id
-
 
10591
                                        FROM members_group);
17303
	 WHERE u.USER_ID IN (
10592
END delete_autobuild_failure_info;
-
 
10593
/
-
 
10594
--------------------------------------------------------
17304
	 	   			   	SELECT * 
10595
--  DDL for Procedure DEPLOY_TO_RELEASE
17305
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
10596
--------------------------------------------------------
17306
						);
10597
 
17307
user_rec user_cur%ROWTYPE;
10598
  CREATE OR REPLACE PROCEDURE "DEPLOY_TO_RELEASE" IS
17308
 
10599
 
-
 
10600
/******************************************************************************
-
 
10601
   
-
 
10602
 
-
 
10603
******************************************************************************/
17309
 
10604
 
-
 
10605
	CURSOR curInfo IS
-
 
10606
    SELECT DISTINCT
-
 
10607
        qry.DPV_ID
-
 
10608
     FROM (
-
 
10609
             SELECT dep.*,
-
 
10610
                    LEVEL AS LEVEL_NUM
-
 
10611
               FROM PACKAGE_DEPENDENCIES dep
-
 
10612
             START WITH dep.PV_ID IN ( 
-
 
10613
                        
-
 
10614
                        69124,63479,60048,49566,49562,54351,63560,54360,46053,59753,97060,97061,100883,78236,75241,92371,92372,105682,135506,127204,135615,136498,137571,61534,76540,96787,133102,96770,96771,116692,133768,61537,88935,110216,96797,69469,98123,111626,96802,100289,97233,97623,135801,69700,77808,43026,77809,43027,100825,126854,105589,96405,102105,133770,134408,91177,91179,96822,96824,48031,78965,78936,78935,79114,76620,125164,61804,96826,61977,67592,72594,134415,135804,65097,64850,64851,64879,64881,64882,64884,67612,67613,67614,67615,68501,68502,68503,68516,68518,68519,68521,71974,68659,69764,68662,68661,68757,69765,69766,69767,71975,71976,71977,71978,71979,71980,75149,71982,71983,75153,75158,71986,75160,75161,75162,72418,72419,71987,71988,71990,75164,72420,72421,72423,72424,72425,75165,75181,75182,83285,75184,75201,75220,75240,75260,75280,75242,76320,75320,76340,76321,82031,76341,76342,76344,76345,76806,76350,76810,76811,76360,76361,76362,76380,76637,76638,76639,76647,76649,76812,76650,78261,76815,77603,76818,76846,76847,76848,76849,77604,77606,77016,77607,77608,77609,78518,77671,77610,78519,78520,78205,78206,77795,78262,78263,78666,78521,78669,78767,78768,78770,78771,82032,79471,78772,82033,80856,80210,80898,82449,80211,80212,80214,80215,80216,80611,80217,82034,82035,80749,80750,82036,94266,82037,82038,82039,82040,82041,82042,82043,82044,82045,82046,82450,82296,82297,82451,82047,82298,82299,82300,82452,82453,82454,82455,82456,82457,82769,82458,82459,82770,82460,82461,82771,83286,85069,83543,83544,83287,85070,84959,85071,85072,84960,85073,85074,84975,85194,85075,85195,85196,85197,85198,85199,94267,85231,85237,94268,94269,94270,94271,94273,94274,94275,94276,94277,94278,94279,94280,94281,94282,94283,94284,94285,94286,94287,94288,94289,94290,94291,94292,94293,94294,94295,94296,94297,94298,94299,94300,94301,94302,94303,94304,94305,94306,94307,94308,94309,94310,94311,94312,94313,94314,94315,94316,94634,94317,94635,97035,94319,94320,94636,94637,94322,96536,96552,96554,96555,96556,96568,96569,96570,96571,96572,96573,96574,96575,96576,96577,96578,96579,96580,96581,96582,96583,96584,96585,96586,96818,97435,96819,96820,97599,97436,97437,97438,97439,97440,97434,97723,97640,97641,97642,97724,97725,97729,97743,97825,98097,98098,98099,98100,97999,98049,98101,98102,98103,99506,98268,98207,99507,99508,99509,99159,99510,99511,99512,102883,99513,99514,100243,99515,99880,99562,99563,99676,99677,99678,99881,99882,99883,99884,100244,100245,100623,100247,100624,100625,100626,100885,100719,100886,100887,100888,100889,100890,100990,100991,101301,101603,110065,101605,102180,102627,102181,102182,102183,102184,102185,102186,102187,102188,102189,102190,102191,104378,102192,104379,102193,102379,102380,102381,102884,102410,102411,102628,102465,102629,102630,102885,102886,102887,104380,104381,104382,104383,104384,104385,104387,110063,104389,106409,104561,104594,104660,105088,105089,105090,105091,105093,105097,105673,105768,106410,109314,106173,110064,137890,106433,106960,109080,111665,122015,110954,116763,110066,116764,110123,111867,110713,116765,111666,116869,111667,111668,116766,116767,115142,115143,121477,113924,114594,116768,115144,116769,115170,115172,115171,115644,120042,120043,116092,116870,116871,118382,116872,116876,120044,118026,119364,121485,120045,120416,121478,120417,122016,124577,129495,123602,123600,124578,124579,124580,124581,124784,125238,127096,127097,129496,129497,128036,128415,129498,129499,129914,130063,130064,130680,130681,131333,131488,133886,132219,132477,132478,133887,136537,136552,136538,136539,136540,136553,136554,136555,137869,85076,80857,62418,64889,64890,64891,64893,68666,68667,68668,68670,68671,68672,68673,72019,72020,72023,72024,72227,77745,77746,77747,77748,77749,77750,77751,77798,78773,80751,82464,82465,83288,92874,92875,92876,92877,92878,94122,94123,96290,96882,96883,97554,97514,97726,98008,98009,98051,99193,100248,99608,100249,100250,100670,100671,100672,101059,101061,101607,102194,102195,102412,102413,102633,104390,104391,106421,104560,104595,105767,106174,106426,109081,122017,137851,110712,116873,115145,115146,114597,115645,116095,120046,123551,122018,124584,124585,129500,129501,129502,128417,129503,129915,130066,131487,133897,133882,133883,136559,85078,100673,63475,78264,78265,78266,78267,78775,80753,94118,94119,94120,94121,96888,100251,100252,102631,102590,102632,65229,43366,69139,132551,59764,127129,101196,96830,61535,105433,96833,96835,96839,83795,77723,126868,99146,70188,117523,117524,117525,99237,100854,100855,137314,137315,96868,138232,138233,69709,96907,130854,119208,69520,124772,96878,60049,47875,70354,59371,54558,59849,33893,43087,43134,33894,60054,24345,49563,49558,97474,84982,31770,30950,49926,60050,52670,59846,59891,30966,59744,61988,59745,59881,59746,59741,47449,59747,64101,63480,63562,105382,105383,60052,48955,49561,49556,47401,65896,65906,65909,65985,108670,68697,68698,59754,59752,59751,62526,59805,59799,66981,46050,59756,46044,59806,46051,59807,82290,66980,59808,46046,61536,88834,70260,111081,105409,66093,66095,66094,47440,65778,59750,56748,99152,78409
-
 
10615
                        
-
 
10616
                        ) 
-
 
10617
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
-
 
10618
 		) qry,
-
 
10619
 		PACKAGES pkg,
-
 
10620
		PACKAGE_VERSIONS pv
-
 
10621
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
-
 
10622
         and (pv.is_patch is null or pv.is_patch = 'N');
-
 
10623
    recInfo curInfo%ROWTYPE;
-
 
10624
	
-
 
10625
	
17310
BEGIN
10626
BEGIN
17311
 
10627
 
17312
	 OPEN user_cur;
10628
	OPEN curInfo;
17313
	 FETCH user_cur INTO user_rec;
10629
    FETCH curInfo INTO recInfo;
17314
	 
10630
	
17315
	 WHILE user_cur%FOUND
10631
	WHILE curInfo%FOUND
17316
	 LOOP
10632
	LOOP
-
 
10633
 
17317
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
10634
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
17318
	 	 VALUES ( nGroupId, user_rec.USER_ID);
10635
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
17319
	 	 
10636
    
17320
	 	 FETCH user_cur INTO user_rec;	 
10637
    FETCH curInfo INTO recInfo;
-
 
10638
		
17321
	 END LOOP;	 
10639
	END LOOP;
-
 
10640
 
-
 
10641
	CLOSE curInfo;
-
 
10642
 
17322
	 	 
10643
 
17323
		 
10644
 
17324
		 
10645
 
17325
END ADD_VIEW_MEMBERS;
10646
END DEPLOY_TO_RELEASE; 
17326
/
10647
/
17327
--------------------------------------------------------
10648
--------------------------------------------------------
17328
--  DDL for Procedure RESET_IGNORE_WARNINGS
10649
--  DDL for Procedure DEPRECATE_PACKAGE
17329
--------------------------------------------------------
10650
--------------------------------------------------------
17330
 
10651
 
-
 
10652
  CREATE OR REPLACE PROCEDURE "DEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
-
 
10653
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
-
 
10654
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
-
 
10655
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
-
 
10656
											   nUserId IN NUMBER) IS
-
 
10657
ext VARCHAR2(50);
-
 
10658
 
-
 
10659
 
-
 
10660
 
-
 
10661
											   
-
 
10662
BEGIN
-
 
10663
 
-
 
10664
	--Extract the package version extension
-
 
10665
	SELECT V_EXT into ext
-
 
10666
	FROM PACKAGE_VERSIONS
-
 
10667
	WHERE PV_ID = nPvId; 
-
 
10668
	
-
 
10669
    -- Deprecate Package
-
 
10670
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
-
 
10671
	VALUES (nRtagId, nPkgId, sComments, ext);
-
 
10672
	
-
 
10673
	IF ext IS NOT NULL THEN
-
 
10674
	   UPDATE RELEASE_CONTENT 
-
 
10675
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
-
 
10676
	   WHERE RTAG_ID = nRtagId
-
 
10677
	   AND PV_ID IN (SELECT PV.PV_ID 
-
 
10678
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
-
 
10679
				  	WHERE PKG.PKG_ID = PV.PKG_ID
-
 
10680
				  	AND PV.V_EXT = ext
-
 
10681
				  	AND PKG.PKG_ID = nPkgId
-
 
10682
				 	);						
-
 
10683
	ELSE
-
 
10684
	   UPDATE RELEASE_CONTENT 
-
 
10685
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
-
 
10686
	   WHERE RTAG_ID = nRtagId
-
 
10687
	   AND PV_ID IN (SELECT PV.PV_ID 
-
 
10688
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
-
 
10689
				  	WHERE PKG.PKG_ID = PV.PKG_ID
-
 
10690
				  	AND PV.V_EXT IS NULL
-
 
10691
				  	AND PKG.PKG_ID = nPkgId
-
 
10692
				 	);
-
 
10693
	END IF;
-
 
10694
				 
-
 
10695
	UPDATE RELEASE_CONTENT
-
 
10696
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
-
 
10697
	WHERE RTAG_ID = nRtagId
-
 
10698
	AND PV_ID IN (		   SELECT DISTINCT
-
 
10699
 	 		  	 		   qry.PV_ID
-
 
10700
						        FROM (
-
 
10701
								 	  SELECT dep.*,
-
 
10702
									  LEVEL AS LEVEL_NUM
-
 
10703
									  FROM PACKAGE_DEPENDENCIES dep 
-
 
10704
 								START WITH dep.DPV_ID IN ( nPvId ) 
-
 
10705
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
-
 
10706
 								) qry,
-
 
10707
								PACKAGES pkg,
-
 
10708
								PACKAGE_VERSIONS pv,
-
 
10709
								RELEASE_CONTENT rc
-
 
10710
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
-
 
10711
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
-
 
10712
							 AND rc.DEPRECATED_STATE IS NULL
-
 
10713
				 );			 
-
 
10714
 
-
 
10715
    /* LOG ACTION */
-
 
10716
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
-
 
10717
	
-
 
10718
 
-
 
10719
END Deprecate_Package;
-
 
10720
/
-
 
10721
--------------------------------------------------------
-
 
10722
--  DDL for Procedure DT_DROPUSEROBJECTBYID
-
 
10723
--------------------------------------------------------
-
 
10724
 
-
 
10725
  CREATE OR REPLACE PROCEDURE "DT_DROPUSEROBJECTBYID" ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
-
 
10726
/
-
 
10727
--------------------------------------------------------
-
 
10728
--  DDL for Procedure DT_SETPROPERTYBYID
-
 
10729
--------------------------------------------------------
-
 
10730
 
17331
  CREATE OR REPLACE PROCEDURE "RESET_IGNORE_WARNINGS" ( sPvIdList IN VARCHAR2,
10731
  CREATE OR REPLACE PROCEDURE "DT_SETPROPERTYBYID" ( PARAM_ID   IN NUMBER, PARAM_PROPERTY IN VARCHAR2, PARAM_VALUE  IN VARCHAR2, PARAM_LVALUE  IN LONG RAW ) AS BEGIN DECLARE X NUMBER(40); BEGIN SELECT COUNT(*) INTO X FROM MICROSOFTDTPROPERTIES WHERE OBJECTID=PARAM_ID AND PROPERTY=PARAM_PROPERTY; IF X = 0 THEN INSERT INTO MICROSOFTDTPROPERTIES (ID, PROPERTY, OBJECTID, VALUE, LVALUE, VERSION) VALUES (MICROSOFTSEQDTPROPERTIES.NEXTVAL, PARAM_PROPERTY, PARAM_ID, PARAM_VALUE, PARAM_LVALUE, 0); ELSE UPDATE MICROSOFTDTPROPERTIES SET VALUE=PARAM_VALUE, LVALUE=PARAM_LVALUE, VERSION=VERSION+1 WHERE OBJECTID=PARAM_ID AND PROPERTY=PARAM_PROPERTY; END IF; END; END DT_SETPROPERTYBYID;
-
 
10732
/
-
 
10733
--------------------------------------------------------
-
 
10734
--  DDL for Procedure IGNORE_DEPENDENCY_WARNINGS
-
 
10735
--------------------------------------------------------
-
 
10736
 
-
 
10737
  CREATE OR REPLACE PROCEDURE "IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
17332
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
10738
                                                         nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
-
 
10739
                                                         sIgnoreIdList IN VARCHAR2,
-
 
10740
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
-
 
10741
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
17333
/* ---------------------------------------------------------------------------
10742
/* ---------------------------------------------------------------------------
-
 
10743
    Updates the ignore warnings table - this is really two functions in one.
-
 
10744
 
-
 
10745
    1) One function updates the table based on a list of dependent PV_IDs and a parent PV_ID
-
 
10746
       and is called from the RM website's SetIgnoreWarnings() function after a user changes
-
 
10747
       the ignore warnings checkboxes and submits the form.
-
 
10748
       This can (at time of writing this) only be done within releases that are not build
-
 
10749
       daemon enabled. The ignore warnings feature is a feature we would like to see the end
-
 
10750
       of in an ideal world.
-
 
10751
       The SetIgnoreWarnings() website function now calls Touch_Release so there is no need to
-
 
10752
       do so in this stored procedure, thereby making this stored procedure much more precise in
-
 
10753
       that it only updates the ignore_warnings table (action log table too although that is just
-
 
10754
       a log and doesn't affect any subsequent business rules behaviour) and it cares nothing
-
 
10755
       about website presentation layer states, etc.
-
 
10756
 
-
 
10757
    2) The other function updates the table for out of sync dependencies that have in fact
-
 
10758
       been satisfied by patches made to some other product in the release.
-
 
10759
       This seems to be a seldom used feature in current projects.
-
 
10760
       It is probably the most often taken path through this function given that it occurs when
-
 
10761
       this function is called from Rebuild_Environment, and that is called in many circumstances
-
 
10762
       from the RM website whenever the seems to be a possibility that the state of a package
-
 
10763
       in a release might have changed and therefore affects the state of other packages in
-
 
10764
       that same release.
-
 
10765
 
17334
    Version: 5.0
10766
    Parameter Usage:
-
 
10767
                        when called from    | when called from
-
 
10768
                        Rebuild_Environment | SetIgnoreWarnings()
-
 
10769
                        stored procedure.   | in the Website
-
 
10770
      --------------------------------------+----------------------------
-
 
10771
      nRtagId           RTAG_ID             | RTAG_ID
-
 
10772
      nPvId             NULL                | PV_ID
-
 
10773
      sIgnoreIdList     NULL                | list of dependent PV_ID's
-
 
10774
      bDoPatchIgnore    TRUE                | FALSE
-
 
10775
      nUserId           NULL                | current user ID
17335
   --------------------------------------------------------------------------- */
10776
   --------------------------------------------------------------------------- */
17336
 
10777
 
17337
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
10778
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
-
 
10779
ReleaseLocation VARCHAR2(4000);
-
 
10780
ActionTypeId NUMBER;
17338
 
10781
 
17339
BEGIN
10782
BEGIN
17340
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
-
 
17341
 
10783
 
17342
    -- Remove Ignore Warnings
10784
   IF (NOT bDoPatchIgnore) THEN
17343
     DELETE
-
 
17344
       FROM ignore_warnings
10785
      /* Manual Ignore Warnings - this execution path is the one taken when called from SetIgnoreWarnings() in the Website
17345
	  WHERE (rtag_id, pv_id, dpv_id) IN
-
 
17346
	     (
10786
      */
17347
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
-
 
17348
	        FROM ignore_warnings igw,
-
 
17349
	             package_versions dpv,
-
 
17350
	             package_versions pv
-
 
17351
	       WHERE igw.dpv_id = dpv.pv_id
-
 
17352
	         AND igw.rtag_id = nRTagId
-
 
17353
	         AND dpv.pkg_id = pv.pkg_id
-
 
17354
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
10787
      oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
17355
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
-
 
17356
         );
-
 
17357
 
10788
 
-
 
10789
 
-
 
10790
      /* Log Action */
-
 
10791
      -- Get Release Location
-
 
10792
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
10793
        FROM PROJECTS proj,
-
 
10794
             RELEASE_TAGS rt
-
 
10795
       WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
10796
         AND rt.RTAG_ID = nRtagId;
-
 
10797
 
-
 
10798
      -- Get Action Type Id for IGNORE_ON
-
 
10799
      SELECT act.ACTTYPE_ID INTO ActionTypeId
-
 
10800
        FROM ACTION_TYPE act
-
 
10801
       WHERE act.NAME = 'ignore_on';
-
 
10802
 
-
 
10803
      -- Get Ignored (Current MINUS Old)
-
 
10804
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
-
 
10805
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
-
 
10806
        FROM (
-
 
10807
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
-
 
10808
                FROM PACKAGE_VERSIONS pv
-
 
10809
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
-
 
10810
              MINUS
-
 
10811
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
-
 
10812
                FROM IGNORE_WARNINGS igw
-
 
10813
               WHERE igw.RTAG_ID = nRtagId
-
 
10814
                 AND igw.PV_ID = nPvId
-
 
10815
             ) qry,
-
 
10816
             PACKAGE_VERSIONS pv,
-
 
10817
             PACKAGES pkg,
-
 
10818
             RELEASE_CONTENT rc,
-
 
10819
             PACKAGE_VERSIONS rpv
-
 
10820
       WHERE pv.PKG_ID = pkg.PKG_ID
-
 
10821
         AND rc.RTAG_ID = nRtagId
-
 
10822
         AND rc.PV_ID = rpv.PV_ID
-
 
10823
         AND rpv.PKG_ID = pv.PKG_ID
-
 
10824
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
-
 
10825
         AND qry.DPV_ID = pv.PV_ID;
-
 
10826
 
-
 
10827
 
-
 
10828
      -- Get Action Type Id for IGNORE_OFF
-
 
10829
      SELECT act.ACTTYPE_ID INTO ActionTypeId
-
 
10830
        FROM ACTION_TYPE act
-
 
10831
       WHERE act.NAME = 'ignore_off';
-
 
10832
 
-
 
10833
      -- Get UnIgnored (Old MINUS Current)
-
 
10834
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
-
 
10835
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
-
 
10836
        FROM (
-
 
10837
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
-
 
10838
                FROM IGNORE_WARNINGS igw
-
 
10839
               WHERE igw.RTAG_ID = nRtagId
-
 
10840
                 AND igw.PV_ID = nPvId
-
 
10841
              MINUS
-
 
10842
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
-
 
10843
                FROM PACKAGE_VERSIONS pv
-
 
10844
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
-
 
10845
             ) qry,
-
 
10846
             PACKAGE_VERSIONS pv,
-
 
10847
             PACKAGES pkg,
-
 
10848
             RELEASE_CONTENT rc,
-
 
10849
             PACKAGE_VERSIONS rpv
-
 
10850
       WHERE pv.PKG_ID = pkg.PKG_ID
-
 
10851
         AND rc.RTAG_ID = nRtagId
-
 
10852
         AND rc.PV_ID = rpv.PV_ID
-
 
10853
         AND rpv.PKG_ID = pv.PKG_ID
-
 
10854
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
-
 
10855
         AND qry.DPV_ID = pv.PV_ID;
-
 
10856
 
-
 
10857
 
-
 
10858
      -- Delete Current Ignore Warnings
-
 
10859
      DELETE
-
 
10860
        FROM IGNORE_WARNINGS igw
-
 
10861
       WHERE igw.RTAG_ID = nRtagId
-
 
10862
         AND igw.PV_ID = nPvId
-
 
10863
         AND igw.IS_PATCH_IGNORE IS NULL;
-
 
10864
 
-
 
10865
 
-
 
10866
      IF (oIgnoreIdCollector.COUNT > 0) THEN
-
 
10867
         -- Insert Ignore Warnings
-
 
10868
         INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
-
 
10869
         SELECT nRtagId,
-
 
10870
                nPvId,
-
 
10871
                pv.PV_ID AS DPV_ID
-
 
10872
           FROM PACKAGE_VERSIONS pv
-
 
10873
          WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
-
 
10874
      END IF;
-
 
10875
 
-
 
10876
   ELSE
-
 
10877
      /* Patch Ignore Warnings - this execution path is the one taken when called from the Rebuild_Environment stored procedure */
-
 
10878
 
-
 
10879
      -- Delete Current Patch Ignore Warnings
-
 
10880
      DELETE
-
 
10881
        FROM IGNORE_WARNINGS igw
-
 
10882
       WHERE igw.RTAG_ID = nRtagId
-
 
10883
         AND igw.IS_PATCH_IGNORE = 'Y';
-
 
10884
 
-
 
10885
 
-
 
10886
      -- Delete Manual Ignores that need to be Patch Ignores
-
 
10887
      DELETE
-
 
10888
        FROM IGNORE_WARNINGS igw
-
 
10889
       WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
-
 
10890
             (
-
 
10891
              SELECT DISTINCT
-
 
10892
                     nRtagId,
-
 
10893
                     err.PV_ID,
-
 
10894
                     err.ERR_DPV AS DPV_ID
-
 
10895
               FROM  (
-
 
10896
                      /* Full Release Contents used for reference*/
-
 
10897
                      SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
-
 
10898
                        FROM release_content rel, package_versions rpv
-
 
10899
                       WHERE rel.pv_id = rpv.pv_id
-
 
10900
                         AND rtag_id = nRtagId
-
 
10901
                     ) frc,
-
 
10902
                     (
-
 
10903
                      /* DPV_IDs not fount in release*/
-
 
10904
                      SELECT dep.pv_id, dep.dpv_id AS err_dpv
-
 
10905
                        FROM package_dependencies dep
-
 
10906
                       WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
-
 
10907
                         AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
-
 
10908
                     ) err,
-
 
10909
                     (
-
 
10910
                      SELECT DISTINCT pp.PV_ID, dep.DPV_ID
-
 
10911
                        FROM PACKAGE_PATCHES pp,
-
 
10912
                             PACKAGE_DEPENDENCIES dep,
-
 
10913
                             RELEASE_CONTENT rc
-
 
10914
                       WHERE rc.RTAG_ID = nRtagId
-
 
10915
                         AND rc.PV_ID = pp.PV_ID
-
 
10916
                         AND dep.PV_ID = pp.PATCH_ID
-
 
10917
                     ) pp,
-
 
10918
                     package_versions errpkg,
-
 
10919
                     package_versions errpv
-
 
10920
               WHERE err.err_dpv = errpv.pv_id
-
 
10921
                 AND errpv.pkg_id = frc.pkg_id(+)
-
 
10922
                 AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
-
 
10923
                 AND err.pv_id = errpkg.pv_id
-
 
10924
                 AND err.PV_ID = pp.PV_ID
-
 
10925
                 AND frc.PV_ID = pp.DPV_ID
-
 
10926
             );
-
 
10927
 
-
 
10928
      /*
-
 
10929
      ---------------------------------------------------
-
 
10930
      --  Make sure that select statement above and below are same
-
 
10931
      ---------------------------------------------------
-
 
10932
      */
-
 
10933
 
-
 
10934
      -- Insert Patch Ignores
-
 
10935
      INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
-
 
10936
      SELECT DISTINCT
-
 
10937
             nRtagId,
-
 
10938
             err.PV_ID,
-
 
10939
             err.ERR_DPV AS DPV_ID,
-
 
10940
             'Y'
-
 
10941
        FROM (
-
 
10942
              /* Full Release Contents used for reference*/
-
 
10943
              SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
-
 
10944
                FROM release_content rel, package_versions rpv
-
 
10945
               WHERE rel.pv_id = rpv.pv_id
-
 
10946
                 AND rtag_id = nRtagId
-
 
10947
             ) frc,
-
 
10948
             (
-
 
10949
               /* DPV_IDs not fount in release*/
-
 
10950
               SELECT dep.pv_id, dep.dpv_id AS err_dpv
-
 
10951
                 FROM package_dependencies dep
-
 
10952
                WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
-
 
10953
                  AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
-
 
10954
             ) err,
-
 
10955
             (
-
 
10956
              SELECT DISTINCT pp.PV_ID, dep.DPV_ID
-
 
10957
                FROM PACKAGE_PATCHES pp,
-
 
10958
                     PACKAGE_DEPENDENCIES dep,
-
 
10959
                     RELEASE_CONTENT rc
-
 
10960
               WHERE rc.RTAG_ID = nRtagId
-
 
10961
                 AND rc.PV_ID = pp.PV_ID
-
 
10962
                 AND dep.PV_ID = pp.PATCH_ID
-
 
10963
             ) pp,
-
 
10964
             package_versions errpkg,
-
 
10965
             package_versions errpv
-
 
10966
       WHERE err.err_dpv = errpv.pv_id
-
 
10967
         AND errpv.pkg_id = frc.pkg_id(+)
-
 
10968
         AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
-
 
10969
         AND err.pv_id = errpkg.pv_id
-
 
10970
         AND err.PV_ID = pp.PV_ID
-
 
10971
         AND frc.PV_ID = pp.DPV_ID;
-
 
10972
 
-
 
10973
    END IF;
-
 
10974
 
17358
END Reset_Ignore_Warnings;
10975
END Ignore_Dependency_Warnings;
17359
/
10976
/
17360
--------------------------------------------------------
10977
--------------------------------------------------------
17361
--  DDL for Procedure INSERT_INTO_PACKAGE_BUILD_INFO
10978
--  DDL for Procedure INSERT_INTO_PACKAGE_BUILD_INFO
17362
--------------------------------------------------------
10979
--------------------------------------------------------
17363
 
10980
 
Line 17413... Line 11030...
17413
 
11030
 
17414
 
11031
 
17415
END INSERT_INTO_PACKAGE_BUILD_INFO;
11032
END INSERT_INTO_PACKAGE_BUILD_INFO;
17416
/
11033
/
17417
--------------------------------------------------------
11034
--------------------------------------------------------
-
 
11035
--  DDL for Procedure INSERT_MULTIPLE_STICKY_NOTES
-
 
11036
--------------------------------------------------------
-
 
11037
 
-
 
11038
  CREATE OR REPLACE PROCEDURE "INSERT_MULTIPLE_STICKY_NOTES" IS
-
 
11039
 
-
 
11040
/******************************************************************************
-
 
11041
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
-
 
11042
   PURPOSE:    
-
 
11043
 
-
 
11044
   REVISIONS:
-
 
11045
   Ver        Date        Author           Description
-
 
11046
   ---------  ----------  ---------------  ------------------------------------
-
 
11047
   1.0        6/12/2006          1. Created this procedure.
-
 
11048
 
-
 
11049
   NOTES:
-
 
11050
 
-
 
11051
   Automatically available Auto Replace Keywords:
-
 
11052
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
-
 
11053
      Sysdate:         6/12/2006
-
 
11054
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
-
 
11055
      Username:         (set in TOAD Options, Procedure Editor)
-
 
11056
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
11057
 
-
 
11058
******************************************************************************/
-
 
11059
 
-
 
11060
	CURSOR curInfo IS
-
 
11061
    SELECT PV_ID
-
 
11062
	FROM PACKAGE_BUILD_ENV
-
 
11063
	WHERE BE_ID IN (11, 12);
-
 
11064
    recInfo curInfo%ROWTYPE;
-
 
11065
	
-
 
11066
	
-
 
11067
BEGIN
-
 
11068
 
-
 
11069
	OPEN curInfo;
-
 
11070
    FETCH curInfo INTO recInfo;
-
 
11071
	
-
 
11072
	WHILE curInfo%FOUND
-
 
11073
	LOOP
-
 
11074
 
-
 
11075
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
-
 
11076
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
-
 
11077
		
-
 
11078
		FETCH curInfo INTO recInfo;
-
 
11079
		
-
 
11080
	END LOOP;
-
 
11081
 
-
 
11082
	CLOSE curInfo;
-
 
11083
 
-
 
11084
 
-
 
11085
 
-
 
11086
 
-
 
11087
END INSERT_MULTIPLE_STICKY_NOTES;
-
 
11088
/
-
 
11089
--------------------------------------------------------
-
 
11090
--  DDL for Procedure LEVEL_N_CONFLICTS
-
 
11091
--------------------------------------------------------
-
 
11092
 
-
 
11093
  CREATE OR REPLACE PROCEDURE "LEVEL_N_CONFLICTS" (
-
 
11094
   nnrtag_id       IN       NUMBER,
-
 
11095
   nnsession_num   IN       NUMBER,
-
 
11096
   nnrowcnt        OUT      NUMBER,
-
 
11097
   nniteration     IN       NUMBER
-
 
11098
)
-
 
11099
IS
-
 
11100
/* ---------------------------------------------------------------------------
-
 
11101
    Version: 3.0.1
-
 
11102
   --------------------------------------------------------------------------- */
-
 
11103
   previteration   NUMBER := nniteration - 1;
-
 
11104
BEGIN
-
 
11105
   /* ---------  LEVEL 1 CONFILCTS -----------
-
 
11106
   || Following states are used:
-
 
11107
   || 0 -> NOT FOUND
-
 
11108
   || 1 -> MAJOR
-
 
11109
   || 2 -> MINOR MINOR
-
 
11110
   */
-
 
11111
   INSERT INTO temp_env_states
-
 
11112
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
-
 
11113
                      pv.pv_id, pv.pkg_id, pv.v_ext,
-
 
11114
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
-
 
11115
                 FROM package_dependencies dep,
-
 
11116
                      package_versions dpv,
-
 
11117
                      package_versions pv,
-
 
11118
                      release_content rel,
-
 
11119
                      temp_env_states tes
-
 
11120
                WHERE rel.pv_id = dep.pv_id
-
 
11121
                  AND rel.rtag_id = nnrtag_id
-
 
11122
                  AND dep.pv_id = pv.pv_id
-
 
11123
                  AND dep.dpv_id = dpv.pv_id
-
 
11124
                  AND dpv.pkg_id = tes.pkg_id
-
 
11125
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
-
 
11126
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
-
 
11127
                  AND tes.session_num = nnsession_num
-
 
11128
                  AND tes.level_num = previteration
-
 
11129
                  AND (dep.pv_id, dep.dpv_id) IN 
-
 
11130
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
-
 
11131
                                                 || packages already stored in Temp Table.
-
 
11132
                                                 */
-
 
11133
                      (
-
 
11134
                         SELECT pd.pv_id, pd.dpv_id
-
 
11135
                           FROM package_dependencies pd, release_content rc
-
 
11136
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
-
 
11137
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
-
 
11138
                         MINUS
-
 
11139
                         SELECT igw.pv_id, igw.dpv_id
-
 
11140
                           FROM ignore_warnings igw
-
 
11141
                          WHERE igw.rtag_id = nnrtag_id);
-
 
11142
 
-
 
11143
   nnrowcnt := SQL%ROWCOUNT;
-
 
11144
END level_n_conflicts;
-
 
11145
/
-
 
11146
--------------------------------------------------------
17418
--  DDL for Procedure UPDATE_ADDITIONAL_NOTE
11147
--  DDL for Procedure LEVEL_ONE_CONFLICTS
-
 
11148
--------------------------------------------------------
-
 
11149
 
-
 
11150
  CREATE OR REPLACE PROCEDURE "LEVEL_ONE_CONFLICTS" (
-
 
11151
   nnrtag_id       IN   NUMBER,
-
 
11152
   nnsession_num   IN   NUMBER
-
 
11153
)
-
 
11154
IS
-
 
11155
BEGIN
-
 
11156
   /* ---------  LEVEL 1 CONFILCTS -----------
-
 
11157
   || Following states are used:
-
 
11158
   || 0 -> NOT FOUND
-
 
11159
   || 1 -> MAJOR
-
 
11160
   || 2 -> MINOR MINOR
-
 
11161
   */
-
 
11162
   INSERT INTO temp_env_states
-
 
11163
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
-
 
11164
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
-
 
11165
                      DECODE (frc.v_nmm,
-
 
11166
                              NULL, 0,
-
 
11167
                              errpv.v_nmm, DECODE (frc.v_mm,
-
 
11168
                                                   errpv.v_mm, NULL,
-
 
11169
                                                   2
-
 
11170
                                                  ),
-
 
11171
                              1
-
 
11172
                             ) AS MESSAGE
-
 
11173
                 FROM (
-
 
11174
                       /* Full Release Contents used for reference*/
-
 
11175
                        SELECT rel.rtag_id, rpv.pv_id, rpv.pkg_id,
-
 
11176
                                NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
-
 
11177
                                rpv.pkg_version, rpv.v_nmm, rpv.v_mm,
-
 
11178
                                (SELECT COUNT(*)
-
 
11179
                                   FROM ADVISORY_RIPPLE avr
-
 
11180
                                  WHERE avr.rtag_id = rel.rtag_id
-
 
11181
                                    AND avr.pv_id = rel.pv_id
-
 
11182
                                ) AS IsAvr
-
 
11183
                          FROM release_content rel,
-
 
11184
                                package_versions rpv
-
 
11185
                          WHERE rel.pv_id = rpv.pv_id
-
 
11186
                             AND rtag_id = nnrtag_id
-
 
11187
                      ) frc,
-
 
11188
 
-
 
11189
                      (
-
 
11190
                       /* DPV_IDs not found in release (excluding those from pegged versions whose dependencies will not
-
 
11191
                          necessarily be satisfied in the release) */
-
 
11192
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
-
 
11193
                         FROM package_dependencies dep,
-
 
11194
                              package_versions dep_dpv
-
 
11195
                        WHERE dep.dpv_id = dep_dpv.pv_id
-
 
11196
                          AND dep.pv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
-
 
11197
                          AND NOT dep.pv_id IN (SELECT pegv.pv_id FROM PEGGED_VERSIONS pegv WHERE pegv.rtag_id = nnrtag_id)
-
 
11198
                          AND NOT dep.dpv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
-
 
11199
                       MINUS
-
 
11200
                       /* MINUS Dependencies to be ignored */
-
 
11201
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
-
 
11202
                         FROM ignore_warnings igw,
-
 
11203
                              package_versions igw_dpv
-
 
11204
                        WHERE igw.dpv_id = igw_dpv.pv_id
-
 
11205
                          AND igw.rtag_id = nnrtag_id
-
 
11206
                      ) err,
-
 
11207
                      package_versions errpkg,
-
 
11208
                      package_versions errpv
-
 
11209
                WHERE err.err_dpv = errpv.pv_id
-
 
11210
                  AND errpv.pkg_id = frc.pkg_id(+)
-
 
11211
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
-
 
11212
                  AND err.pv_id = errpkg.pv_id
-
 
11213
                  AND frc.IsAvr = 0;
-
 
11214
END level_one_conflicts;
-
 
11215
/
-
 
11216
--------------------------------------------------------
-
 
11217
--  DDL for Procedure LOCK_PACKAGE
17419
--------------------------------------------------------
11218
--------------------------------------------------------
17420
 
11219
 
17421
  CREATE OR REPLACE PROCEDURE "UPDATE_ADDITIONAL_NOTE" ( pnNote_id IN NUMBER,
11220
  CREATE OR REPLACE PROCEDURE "LOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
17422
													 pnPv_id IN NUMBER,
11221
											 nUserId IN NUMBER ) IS
17423
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
-
 
17424
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
-
 
17425
                                                     pnUser_id IN NUMBER,
-
 
17426
                                                     outErrCode OUT NUMBER
-
 
17427
                                                    ) IS
-
 
17428
/* ---------------------------------------------------------------------------
11222
/* ---------------------------------------------------------------------------
17429
    Version: 3.0.1
11223
    Version: 4.0
17430
   --------------------------------------------------------------------------- */
11224
   --------------------------------------------------------------------------- */
17431
 
11225
 
17432
    newID NUMBER;
-
 
17433
 
-
 
17434
    /* Disallow duplicate Note Titles */
-
 
17435
	CURSOR an_duplicate_cur IS
-
 
17436
        SELECT COUNT(*) AS cnt_note
-
 
17437
          FROM ADDITIONAL_NOTES
-
 
17438
         WHERE pv_id = pnPv_id
-
 
17439
           AND note_id != pnNote_id
-
 
17440
           AND note_title = psNote_title;
-
 
17441
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
-
 
17442
 
-
 
17443
BEGIN
11226
BEGIN
17444
	outErrCode := -1;		-- Set default return error code to ERROR state
-
 
17445
 
11227
 
17446
	OPEN an_duplicate_cur;
11228
    -- Lock Package
17447
    FETCH an_duplicate_cur INTO an_duplicate_rec;
11229
    UPDATE PACKAGE_VERSIONS pv SET
-
 
11230
    	pv.DLOCKED = 'Y'
-
 
11231
    WHERE pv.PV_ID = nPvId;
17448
 
11232
 
17449
    IF an_duplicate_rec.cnt_note < 1
-
 
17450
    THEN
-
 
17451
		--- Update Additional Note ---
-
 
17452
	    UPDATE ADDITIONAL_NOTES SET
11233
    /* LOG ACTION */
17453
		       note_title = psNote_title,
-
 
17454
		       note_body = psNote_body,
-
 
17455
		       mod_date = Ora_Sysdate,
-
 
17456
		       mod_user = pnUser_id
-
 
17457
         WHERE note_id = pnNote_id
-
 
17458
           AND pv_id = pnPv_id;
-
 
17459
		outErrCode := 0;		-- Set return to SUCCESS
11234
   	Log_Action ( nPvId, 'lock_package', nUserId );
17460
	END IF;
-
 
17461
 
11235
 
17462
	CLOSE an_duplicate_cur;
-
 
17463
END Update_Additional_Note;
11236
END Lock_Package;
17464
/
11237
/
17465
--------------------------------------------------------
11238
--------------------------------------------------------
17466
--  DDL for Procedure NEW_UNIT_TEST
11239
--  DDL for Procedure LOG_ACTION
17467
--------------------------------------------------------
11240
--------------------------------------------------------
17468
 
11241
 
17469
  CREATE OR REPLACE PROCEDURE "NEW_UNIT_TEST" ( nPv_id IN NUMBER,
11242
  CREATE OR REPLACE PROCEDURE "LOG_ACTION" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
17470
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
11243
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
17471
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
-
 
17472
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
11244
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
17473
                                            sDpkg_path IN VARCHAR2,
-
 
17474
                                            sResults IN VARCHAR2,
-
 
17475
                                            sCompletion_date IN VARCHAR2,
-
 
17476
                                            nCompleted_by IN NUMBER,
-
 
17477
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
-
 
17478
											enumTEST_TYPE_NOT_DONE IN NUMBER,
11245
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
17479
											outFileName OUT VARCHAR2
-
 
17480
                                           ) IS
-
 
17481
/* ---------------------------------------------------------------------------
11246
/* ---------------------------------------------------------------------------
17482
    Version: 3.2.0
11247
    Version: 3.0
17483
   --------------------------------------------------------------------------- */
11248
   --------------------------------------------------------------------------- */
17484
 
11249
 
17485
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
-
 
17486
 
-
 
17487
    newID NUMBER;
11250
    ActionTypeId NUMBER;
17488
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
-
 
17489
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
-
 
17490
 
11251
 
17491
BEGIN
11252
BEGIN
17492
 
11253
 
17493
	-- Get new ID --
11254
    -- Get Action Type FK
17494
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
11255
    SELECT act.ACTTYPE_ID INTO ActionTypeId
-
 
11256
      FROM ACTION_TYPE act
-
 
11257
     WHERE act.NAME = enumActionTypeName;
17495
 
11258
 
17496
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
-
 
17497
       	ResultsURL := sResults;
-
 
17498
       ELSE
-
 
17499
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
-
 
17500
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
-
 
17501
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
-
 
17502
           END IF;
-
 
17503
       END IF;
-
 
17504
 
11259
 
17505
	-- Remove NOT_DONE entry if exists
11260
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
17506
	DELETE FROM UNIT_TESTS
-
 
17507
	 WHERE pv_id = nPv_id
-
 
17508
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
11261
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
17509
 
11262
 
17510
	--- Add Additional Note ---
-
 
17511
    INSERT INTO UNIT_TESTS ( TEST_ID,
-
 
17512
								PV_ID,
-
 
17513
								TEST_TYPES_FK,
-
 
17514
								TEST_SUMMARY,
-
 
17515
								COMPLETION_DATE,
-
 
17516
								COMPLETED_BY,
-
 
17517
								RESULTS_URL,
-
 
17518
								RESULTS_ATTACHMENT_NAME,
-
 
17519
								NUMOF_TEST )
-
 
17520
    VALUES (
-
 
17521
       	newID,
-
 
17522
           nPv_id,
-
 
17523
           nTestTypeId,
-
 
17524
           sTest_summary,
-
 
17525
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
-
 
17526
           nCompleted_by,
-
 
17527
           ResultsURL,
-
 
17528
           ResultsAttachment,
-
 
17529
		   sNumOfTest );
-
 
17530
 
11263
 
17531
END New_Unit_Test;
11264
END Log_Action;
17532
/
11265
/
17533
--------------------------------------------------------
11266
--------------------------------------------------------
17534
--  DDL for Procedure SWITCH_REPRODUCIBLE_PACKAGE
11267
--  DDL for Procedure LOG_ACTION_BULK
17535
--------------------------------------------------------
11268
--------------------------------------------------------
17536
 
11269
 
17537
  CREATE OR REPLACE PROCEDURE "SWITCH_REPRODUCIBLE_PACKAGE" (nPvId IN NUMBER, nUserId IN NUMBER)IS
11270
  CREATE OR REPLACE PROCEDURE "LOG_ACTION_BULK" ( nPvIdList IN VARCHAR2,
17538
Auto CHAR;
-
 
17539
/******************************************************************************
11271
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
17540
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
11272
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
17541
   PURPOSE:    
-
 
17542
 
-
 
17543
   REVISIONS:
-
 
17544
   Ver        Date        Author           Description
11273
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
17545
   ---------  ----------  ---------------  ------------------------------------
11274
/* ---------------------------------------------------------------------------
17546
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
-
 
17547
 
-
 
17548
   NOTES:
11275
    Version: 3.0
-
 
11276
   --------------------------------------------------------------------------- */
17549
 
11277
 
17550
   Automatically available Auto Replace Keywords:
-
 
17551
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
-
 
17552
      Sysdate:         14/12/2006
11278
    ActionTypeId NUMBER;
17553
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
-
 
17554
      Username:         (set in TOAD Options, Procedure Editor)
11279
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
17555
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
17556
 
11280
 
17557
******************************************************************************/
-
 
17558
BEGIN
11281
BEGIN
17559
 
11282
 
17560
	 SELECT IS_AUTOBUILDABLE into Auto
-
 
17561
	 FROM PACKAGE_VERSIONS 
-
 
17562
	 WHERE PV_ID = nPvId;
-
 
17563
 
-
 
17564
	 IF Auto = 'N' Then
-
 
17565
	 
-
 
17566
	 	UPDATE PACKAGE_VERSIONS
-
 
17567
	 	SET IS_AUTOBUILDABLE = 'Y'
-
 
17568
	 	WHERE PV_ID = nPvId;
-
 
17569
	 
-
 
17570
	 
-
 
17571
	 	/* LOG ACTION */
-
 
17572
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
11283
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
17573
	 
-
 
17574
	 Else
-
 
17575
	 	 
-
 
17576
		 UPDATE PACKAGE_VERSIONS
-
 
17577
		 SET IS_AUTOBUILDABLE = 'N'
-
 
17578
		 WHERE PV_ID = nPvId;
-
 
17579
	 	 
-
 
17580
	 
-
 
17581
	 	 /* LOG ACTION */
-
 
17582
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
-
 
17583
	 
-
 
17584
	 End If;
-
 
17585
	 
-
 
17586
	 
-
 
17587
 
-
 
17588
	
-
 
17589
 
11284
 
-
 
11285
    -- Get Action Type FK
-
 
11286
    SELECT act.ACTTYPE_ID INTO ActionTypeId
-
 
11287
      FROM ACTION_TYPE act
-
 
11288
     WHERE act.NAME = enumActionTypeName;
17590
 
11289
 
-
 
11290
    -- Log Action
-
 
11291
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
-
 
11292
    SELECT nUserId,
-
 
11293
    	   ORA_SYSDATETIME,
-
 
11294
           pv.PV_ID,
-
 
11295
           sAdditionalComments,
-
 
11296
           ActionTypeId
-
 
11297
      FROM PACKAGE_VERSIONS pv
-
 
11298
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
17591
 
11299
 
17592
 
11300
 
17593
END SWITCH_REPRODUCIBLE_PACKAGE;
11301
END Log_Action_Bulk;
17594
/
11302
/
17595
--------------------------------------------------------
11303
--------------------------------------------------------
17596
--  DDL for Procedure LOG_DAEMON_ACTION
11304
--  DDL for Procedure LOG_DAEMON_ACTION
17597
--------------------------------------------------------
11305
--------------------------------------------------------
17598
 
11306
 
Line 17619... Line 11327...
17619
 
11327
 
17620
 
11328
 
17621
END Log_Daemon_Action;
11329
END Log_Daemon_Action;
17622
/
11330
/
17623
--------------------------------------------------------
11331
--------------------------------------------------------
17624
--  DDL for Procedure UPDATE_MISC_VIEW
11332
--  DDL for Procedure LOG_PROJECT_ACTION
17625
--------------------------------------------------------
11333
--------------------------------------------------------
17626
 
11334
 
17627
  CREATE OR REPLACE PROCEDURE "UPDATE_MISC_VIEW" IS
11335
  CREATE OR REPLACE PROCEDURE "LOG_PROJECT_ACTION" ( nProjId IN NUMBER,
17628
/******************************************************************************
11336
												 enumActionTypeName IN VARCHAR2,
17629
   NAME:       UPDATE_MISC_VIEW
11337
		                                         nUserId IN NUMBER,
17630
   PURPOSE:    
11338
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
17631
 
-
 
17632
   REVISIONS:
-
 
17633
   Ver        Date        Author           Description
11339
												 nRtagId IN NUMBER  ) IS
17634
   ---------  ----------  ---------------  ------------------------------------
11340
/* ---------------------------------------------------------------------------
17635
   1.0        16/03/2007          1. Created this procedure.
-
 
17636
 
-
 
17637
   NOTES:
11341
    Version: 3.0
-
 
11342
   --------------------------------------------------------------------------- */
17638
 
11343
 
17639
   Automatically available Auto Replace Keywords:
-
 
17640
      Object Name:     UPDATE_MISC_VIEW
-
 
17641
      Sysdate:         16/03/2007
11344
    ActionTypeId NUMBER;
17642
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
-
 
17643
      Username:         (set in TOAD Options, Procedure Editor)
-
 
17644
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
17645
 
11345
 
17646
******************************************************************************/
-
 
17647
   CURSOR view_cur /*Create a record set to store the ripple data*/
-
 
17648
   IS
11346
BEGIN
17649
   	 SELECT pkg.pkg_id, rc.base_view_id 
-
 
17650
	 FROM package_versions pv, packages pkg, release_content rc
-
 
17651
	 where rc.rtag_id = 2362
-
 
17652
	 and rc.pv_id = pv.pv_id
-
 
17653
	 and pv.pkg_id = pkg.pkg_id;
-
 
17654
   view_rec   view_cur%ROWTYPE;
-
 
17655
 
11347
 
-
 
11348
    -- Get Action Type FK
-
 
11349
    SELECT act.ACTTYPE_ID INTO ActionTypeId
-
 
11350
      FROM ACTION_TYPE act
-
 
11351
     WHERE act.NAME = enumActionTypeName;
17656
 
11352
 
17657
 
11353
 
17658
BEGIN
-
 
-
 
11354
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
17659
   OPEN view_cur;
11355
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
17660
 
11356
 
17661
   FETCH view_cur
-
 
17662
    INTO view_rec;
-
 
17663
 
11357
 
17664
   WHILE view_cur%FOUND
11358
END Log_Project_Action;
17665
   LOOP
11359
/
-
 
11360
--------------------------------------------------------
-
 
11361
--  DDL for Procedure NEW_ADDITIONAL_NOTE
-
 
11362
--------------------------------------------------------
17666
 
11363
 
17667
	   
-
 
17668
	   update release_content
11364
  CREATE OR REPLACE PROCEDURE "NEW_ADDITIONAL_NOTE" ( pnPv_id IN NUMBER,
17669
	   set base_view_id = view_rec.base_view_id
11365
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
17670
	   where rtag_id = 8027
11366
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
17671
	   and pv_id IN 
11367
                                                  pnUser_id IN NUMBER,
17672
	   (
-
 
17673
	   	select pv.pv_id from release_content rc, package_versions pv
11368
                                                  outErrCode OUT NUMBER
17674
		where rc.rtag_id = 8027
11369
                                                 ) IS
-
 
11370
/* ---------------------------------------------------------------------------
17675
		and pv.pv_id = rc.pv_id
11371
    Version: 3.0.0
17676
		and pv.pkg_id = view_rec.pkg_id 
11372
   --------------------------------------------------------------------------- */
17677
	  
-
 
17678
	   );
-
 
17679
	  
-
 
17680
	   
-
 
17681
 
11373
 
17682
	   
-
 
17683
	   
-
 
17684
	   
-
 
17685
	   
-
 
17686
   	   
11374
    newID NUMBER;
17687
 
11375
 
17688
   FETCH view_cur
11376
	CURSOR an_duplicate_cur IS
17689
   		 INTO view_rec;
11377
        SELECT note_id
-
 
11378
          FROM ADDITIONAL_NOTES
17690
   END LOOP;	 
11379
         WHERE pv_id = pnPv_id
-
 
11380
           AND note_title = psNote_title;
-
 
11381
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
17691
 
11382
 
-
 
11383
BEGIN
-
 
11384
	outErrCode := -1;		-- Set default return error code to ERROR state
17692
 
11385
 
-
 
11386
	OPEN an_duplicate_cur;
-
 
11387
    FETCH an_duplicate_cur INTO an_duplicate_rec;
17693
 
11388
 
-
 
11389
    IF an_duplicate_cur%NOTFOUND
-
 
11390
    THEN
-
 
11391
		/* No duplicate titles */
-
 
11392
		-- Get new ID --
-
 
11393
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
17694
 
11394
 
-
 
11395
		--- Add Additional Note ---
-
 
11396
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
-
 
11397
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
-
 
11398
		outErrCode := 0;		-- Set return to SUCCESS
-
 
11399
	END IF;
17695
 
11400
 
-
 
11401
	CLOSE an_duplicate_cur;
17696
END UPDATE_MISC_VIEW; 
11402
END New_Additional_Note;
17697
/
11403
/
17698
--------------------------------------------------------
11404
--------------------------------------------------------
17699
--  DDL for Procedure CHECK_NEW_PATCHES
11405
--  DDL for Procedure NEW_PACKAGE_NAME
17700
--------------------------------------------------------
11406
--------------------------------------------------------
17701
 
11407
 
17702
  CREATE OR REPLACE PROCEDURE "CHECK_NEW_PATCHES" (
11408
  CREATE OR REPLACE PROCEDURE "NEW_PACKAGE_NAME" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
17703
   nrtagid   IN   release_content.rtag_id%TYPE
11409
                                               retPKG_ID OUT NUMBER ) IS
17704
)
-
 
17705
IS
-
 
17706
/* ---------------------------------------------------------------------------
11410
/* ---------------------------------------------------------------------------
17707
    Version: 3.0
11411
    Version: 3.0.0
17708
   --------------------------------------------------------------------------- */
11412
   --------------------------------------------------------------------------- */
-
 
11413
 
-
 
11414
    CURSOR packages_cur IS
-
 
11415
        SELECT pkg.pkg_id
-
 
11416
          FROM packages pkg
-
 
11417
         WHERE pkg.pkg_name = SSpkg_name;
-
 
11418
    packages_rec packages_cur%ROWTYPE;
-
 
11419
 
-
 
11420
 
17709
BEGIN
11421
BEGIN
17710
   /*--------------- Business Rules Here -------------------*/
-
 
17711
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
-
 
17712
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
-
 
17713
   END IF
-
 
17714
 
11422
 
17715
   /*-------------------------------------------------------*/
11423
    /* ---------------------------------------------------- */
17716
   UPDATE release_content rc
-
 
17717
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
11424
    /* Find if package name exists                          */
17718
    WHERE rc.pv_id IN (
-
 
17719
             SELECT prod.pv_id
-
 
17720
               FROM (SELECT   pp.pv_id AS orig_parent_id,
-
 
17721
                              COUNT (*) AS num_of_patches
-
 
17722
                         FROM release_content rc, package_patches pp
-
 
17723
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
-
 
17724
                     GROUP BY pp.pv_id) orig,
-
 
17725
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
-
 
17726
                              COUNT (*) AS num_of_patches
-
 
17727
                         FROM release_content rc,
-
 
17728
                              package_patches pp,
-
 
17729
                              package_dependencies dep,
-
 
17730
                              package_versions pv,
-
 
17731
                              package_patches prodpp
-
 
17732
                        WHERE rc.pv_id = pp.pv_id
-
 
17733
                          AND rc.rtag_id = nrtagid
-
 
17734
                          AND pp.patch_id = dep.dpv_id
-
 
17735
                          AND dep.pv_id = pv.pv_id
-
 
17736
                          AND pv.is_patch = 'Y'
-
 
17737
                          AND pv.dlocked = 'Y'
-
 
17738
                          AND prodpp.patch_id = dep.pv_id
-
 
17739
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
-
 
17740
                    release_content rc
-
 
17741
              WHERE orig.orig_parent_id = prod.pv_id
-
 
17742
                AND orig.num_of_patches != prod.num_of_patches
-
 
17743
                AND rc.rtag_id = nrtagid
-
 
17744
                AND rc.pv_id = prod.pv_id
-
 
17745
                AND rc.pkg_state = 0
-
 
17746
             UNION
-
 
17747
             SELECT   prodpp.pv_id
-
 
17748
                 FROM release_content rc,
-
 
17749
                      package_patches pp,
-
 
17750
                      package_dependencies dep,
-
 
17751
                      package_versions pv,
-
 
17752
                      package_patches prodpp
-
 
17753
                WHERE rc.pv_id = pp.pv_id
-
 
17754
                  AND rc.rtag_id = nrtagid
-
 
17755
                  AND pp.patch_id = dep.dpv_id
-
 
17756
                  AND dep.pv_id = pv.pv_id
-
 
17757
                  AND pv.is_patch = 'Y'
-
 
17758
                  AND pv.dlocked = 'Y'
-
 
17759
                  AND prodpp.patch_id = dep.pv_id
-
 
17760
             GROUP BY prodpp.pv_id, pp.pv_id
-
 
17761
             MINUS
-
 
17762
             SELECT   pp.pv_id
-
 
17763
                 FROM release_content rc, package_patches pp
-
 
17764
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
-
 
17765
             GROUP BY pp.pv_id);
-
 
17766
END check_new_patches;
-
 
17767
/
-
 
17768
--------------------------------------------------------
-
 
17769
--  DDL for Procedure CLEAN_ADVISORY_RIPPLE
-
 
17770
--------------------------------------------------------
11425
    /* ---------------------------------------------------- */
17771
 
11426
 
17772
  CREATE OR REPLACE PROCEDURE "CLEAN_ADVISORY_RIPPLE" (nrtagid IN NUMBER)
11427
    OPEN packages_cur;
17773
IS
-
 
17774
/******************************************************************************
-
 
17775
   NAME:       clean_advisory_ripple
11428
    FETCH packages_cur INTO packages_rec;
17776
 
11429
 
17777
   PURPOSE:    To delete entries from the advisory_ripple table based upon
11430
    IF packages_cur%NOTFOUND
-
 
11431
    THEN
17778
               an RTAG_ID only
11432
        -- Create new pkg_name --
-
 
11433
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
17779
 
11434
 
17780
               This is a tidy-up operation performed against the advisory_ripple
-
 
17781
               table, ensuring that the table does not have rtag_id/pv_id
11435
        INSERT INTO packages ( pkg_id, pkg_name )
17782
               combinations that cannot be found in the release's wip/pending/release
-
 
17783
               tabs.
11436
        VALUES ( retPKG_ID, SSpkg_name );
17784
 
11437
 
17785
******************************************************************************/
-
 
17786
BEGIN
11438
    ELSE
17787
   -- Delete any invalid rtag_id/pv_id combination from the advisory_ripple table.
-
 
17788
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
-
 
17789
   -- work_in_progress, planned, or release_content table.
-
 
17790
   -- NOTE: Planned operations that represent pending additive/subtractive merge
-
 
17791
   -- operations are ignored because they have not been approved yet and so
-
 
17792
   -- cannot be said to be "in the release".
-
 
17793
   DELETE FROM advisory_ripple
-
 
17794
         WHERE rtag_id = nrtagid
11439
        retPKG_ID := packages_rec.pkg_id;
17795
           AND pv_id not in
-
 
17796
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
-
 
-
 
11440
 
17797
                 UNION
11441
    END IF;
17798
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
-
 
-
 
11442
 
-
 
11443
 
17799
                 UNION
11444
    CLOSE packages_cur;
17800
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
-
 
17801
               );
-
 
-
 
11445
 
17802
END clean_advisory_ripple;
11446
END New_Package_Name;
17803
/
11447
/
17804
--------------------------------------------------------
11448
--------------------------------------------------------
17805
--  DDL for Procedure NEW_PATCH
11449
--  DDL for Procedure NEW_PATCH
17806
--------------------------------------------------------
11450
--------------------------------------------------------
17807
 
11451
 
Line 17988... Line 11632...
17988
    CLOSE parent_cur;
11632
    CLOSE parent_cur;
17989
    CLOSE patch_cur;
11633
    CLOSE patch_cur;
17990
END New_Patch;
11634
END New_Patch;
17991
/
11635
/
17992
--------------------------------------------------------
11636
--------------------------------------------------------
17993
--  DDL for Procedure UPDATE_PROCESSES
11637
--  DDL for Procedure NEW_UNIT_TEST
17994
--------------------------------------------------------
11638
--------------------------------------------------------
17995
 
11639
 
17996
  CREATE OR REPLACE PROCEDURE "UPDATE_PROCESSES" 
11640
  CREATE OR REPLACE PROCEDURE "NEW_UNIT_TEST" ( nPv_id IN NUMBER,
17997
IS
-
 
17998
 
-
 
-
 
11641
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
17999
proc_id NUMBER;
11642
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
18000
/******************************************************************************
11643
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
18001
   NAME:       DELETE_DO_NOT_RIPPLE
11644
                                            sDpkg_path IN VARCHAR2,
-
 
11645
                                            sResults IN VARCHAR2,
18002
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
11646
                                            sCompletion_date IN VARCHAR2,
18003
               IS RELEASED
11647
                                            nCompleted_by IN NUMBER,
18004
 
-
 
-
 
11648
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
-
 
11649
											enumTEST_TYPE_NOT_DONE IN NUMBER,
18005
   REVISIONS:
11650
											outFileName OUT VARCHAR2
18006
   Ver        Date        Author           Description
11651
                                           ) IS
18007
   ---------  ----------  ---------------  ------------------------------------
11652
/* ---------------------------------------------------------------------------
18008
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
-
 
18009
 
-
 
18010
   NOTES:
11653
    Version: 3.2.0
-
 
11654
   --------------------------------------------------------------------------- */
18011
 
11655
 
18012
   Automatically available Auto Replace Keywords:
-
 
18013
      Object Name:     DELETE_DO_NOT_RIPPLE
-
 
18014
      Sysdate:         21/04/2006
-
 
18015
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
-
 
18016
      Username:         (set in TOAD Options, Procedure Editor)
11656
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
18017
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
18018
 
11657
 
18019
******************************************************************************/
-
 
18020
   CURSOR ripple_cur
11658
    newID NUMBER;
18021
   IS
11659
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
18022
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
11660
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
18023
 
11661
 
18024
   ripple_rec   ripple_cur%ROWTYPE;
-
 
18025
BEGIN
11662
BEGIN
18026
   OPEN ripple_cur;
-
 
18027
 
11663
 
18028
   FETCH ripple_cur
11664
	-- Get new ID --
18029
    INTO ripple_rec;
11665
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
18030
 
11666
 
-
 
11667
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
18031
   WHILE ripple_cur%FOUND
11668
       	ResultsURL := sResults;
18032
   LOOP
11669
       ELSE
-
 
11670
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
-
 
11671
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
-
 
11672
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
-
 
11673
           END IF;
18033
   
11674
       END IF;
18034
 
11675
 
18035
update deployment_manager.processes_config 
-
 
18036
set proc_id = ripple_rec.proc_id
11676
	-- Remove NOT_DONE entry if exists
18037
where pkg_health_tag = ripple_rec.proc_name
-
 
18038
and cmd_interface IS NULL
11677
	DELETE FROM UNIT_TESTS
18039
and pkg_owner IS NULL
11678
	 WHERE pv_id = nPv_id
18040
and is_interface IS NULL; 
11679
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
18041
   
-
 
18042
 
11680
 
-
 
11681
	--- Add Additional Note ---
-
 
11682
    INSERT INTO UNIT_TESTS ( TEST_ID,
-
 
11683
								PV_ID,
-
 
11684
								TEST_TYPES_FK,
-
 
11685
								TEST_SUMMARY,
-
 
11686
								COMPLETION_DATE,
-
 
11687
								COMPLETED_BY,
-
 
11688
								RESULTS_URL,
-
 
11689
								RESULTS_ATTACHMENT_NAME,
-
 
11690
								NUMOF_TEST )
-
 
11691
    VALUES (
-
 
11692
       	newID,
-
 
11693
           nPv_id,
-
 
11694
           nTestTypeId,
-
 
11695
           sTest_summary,
-
 
11696
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
18043
      FETCH ripple_cur
11697
           nCompleted_by,
18044
       INTO ripple_rec;
11698
           ResultsURL,
-
 
11699
           ResultsAttachment,
18045
   END LOOP;
11700
		   sNumOfTest );
-
 
11701
 
18046
END UPDATE_PROCESSES;
11702
END New_Unit_Test;
18047
/
11703
/
18048
--------------------------------------------------------
11704
--------------------------------------------------------
18049
--  DDL for Procedure DELETE_AUTOBUILD_FAILURE_INFO
11705
--  DDL for Procedure NEW_VERSION
18050
--------------------------------------------------------
11706
--------------------------------------------------------
18051
 
11707
 
18052
  CREATE OR REPLACE PROCEDURE "DELETE_AUTOBUILD_FAILURE_INFO" 
11708
  CREATE OR REPLACE PROCEDURE "NEW_VERSION" ( NNorig_pv_id IN NUMBER,
18053
IS
-
 
-
 
11709
                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE DEFAULT NULL,
18054
/******************************************************************************
11710
                                          NNsetto_pv_id IN NUMBER DEFAULT NULL,
-
 
11711
                                          NNrtag_id IN NUMBER,
18055
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
11712
                                          NNuser_id IN NUMBER,
-
 
11713
                                          enumISSUES_STATE_IMPORTED IN NUMBER,
-
 
11714
                                          retPv_id OUT NUMBER ) IS
-
 
11715
										  
-
 
11716
										  
-
 
11717
  TO BE REMOVED   !!!										  
-
 
11718
										  
-
 
11719
										  
-
 
11720
										  
-
 
11721
										  
-
 
11722
/* ---------------------------------------------------------------------------
18056
   PURPOSE:
11723
    Version: 3.3
-
 
11724
   --------------------------------------------------------------------------- */
18057
 
11725
 
-
 
11726
    ReleaseLocation VARCHAR2(4000);
18058
   REVISIONS:
11727
    origPkg_id PACKAGE_VERSIONS.pkg_id%TYPE;
18059
   Ver        Date        Author           Description
11728
    origDlocked PACKAGE_VERSIONS.dlocked%TYPE;
-
 
11729
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
18060
   ---------  ----------  ---------------  ------------------------------------
11730
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
18061
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
11731
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
-
 
11732
    nIssuesTypes NUMBER;
18062
 
11733
 
-
 
11734
    CURSOR package_versions_cur IS
-
 
11735
        SELECT pv.pv_id, pv.is_patch
18063
   NOTES:
11736
          FROM PACKAGE_VERSIONS pv
-
 
11737
         WHERE pv.pkg_version = SSpkg_version
-
 
11738
           AND pv.pkg_id IN ( SELECT DISTINCT origpv.pkg_id FROM PACKAGE_VERSIONS origpv WHERE origpv.pv_id = NNorig_pv_id );
-
 
11739
    package_versions_rec package_versions_cur%ROWTYPE;
18064
 
11740
 
18065
   Automatically available Auto Replace Keywords:
11741
    CURSOR clone_package_versions_cur IS
18066
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
-
 
18067
      Sysdate:         2/06/2006
-
 
18068
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
11742
        SELECT DISTINCT pkg_id, dlocked FROM PACKAGE_VERSIONS WHERE pv_id = NNorig_pv_id;
18069
      Username:         (set in TOAD Options, Procedure Editor)
11743
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
18070
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
18071
 
11744
 
18072
******************************************************************************/
-
 
18073
BEGIN
11745
BEGIN
18074
   DELETE FROM autobuild_failure
-
 
18075
         WHERE group_email_id NOT IN (SELECT group_email_id
-
 
18076
                                        FROM members_group);
-
 
18077
END delete_autobuild_failure_info;
11746
	IF NNsetto_pv_id IS NULL
18078
/
-
 
18079
--------------------------------------------------------
-
 
18080
--  DDL for Procedure TEST
11747
    THEN
18081
--------------------------------------------------------
11748
		-- SetToPv_id is not supplied, hence proceed.
18082
 
11749
 
-
 
11750
	    /* ---------------------------------------------------- */
18083
  CREATE OR REPLACE PROCEDURE "TEST" 
11751
	    /* Find id package_version exists                       */
18084
IS
-
 
-
 
11752
	    /* ---------------------------------------------------- */
18085
 
11753
 
18086
proc_id NUMBER;
-
 
18087
/******************************************************************************
-
 
18088
   NAME:       DELETE_DO_NOT_RIPPLE
11754
	    OPEN package_versions_cur;
18089
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
11755
	    FETCH package_versions_cur INTO package_versions_rec;
18090
               IS RELEASED
-
 
18091
 
11756
 
-
 
11757
	    IF package_versions_cur%NOTFOUND
18092
   REVISIONS:
11758
	    THEN
18093
   Ver        Date        Author           Description
11759
	        SELECT SEQ_PV_ID.NEXTVAL INTO retPv_id FROM DUAL;
18094
   ---------  ----------  ---------------  ------------------------------------
-
 
18095
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
11760
	        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
18096
 
11761
 
18097
   NOTES:
11762
	        OPEN clone_package_versions_cur;
-
 
11763
	        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
-
 
11764
	        origPkg_id := clone_package_versions_rec.pkg_id;
-
 
11765
	        origDlocked := clone_package_versions_rec.dlocked;
-
 
11766
	        CLOSE clone_package_versions_cur;
18098
 
11767
 
18099
   Automatically available Auto Replace Keywords:
11768
	        -- Clone Package Version Details --
-
 
11769
	        INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT,
-
 
11770
	                                       src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, IS_DEPLOYABLE, IS_BUILD_ENV_REQUIRED )
-
 
11771
	            SELECT retPv_id         AS pv_id,
-
 
11772
	                   origPkg_id       AS pkg_id,
-
 
11773
	                   SSpkg_version    AS pkg_version,
18100
      Object Name:     DELETE_DO_NOT_RIPPLE
11774
	                   'N'              AS dlocked,
18101
      Sysdate:         21/04/2006
11775
	                   Ora_Sysdate      AS created_stamp,
-
 
11776
	                   NNuser_id        AS creator_id,
18102
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
11777
	                   Ora_Sysdatetime  AS modified_stamp,
18103
      Username:         (set in TOAD Options, Procedure Editor)
11778
	                   NNuser_id        AS modifier_id,
-
 
11779
	                   SSV_MM           AS V_MM,
-
 
11780
	                   SSV_NMM          AS V_NMM,
-
 
11781
	                   SSV_EXT          AS V_EXT,
-
 
11782
	                   pv.src_path,
-
 
11783
	                   pv.pv_description,
-
 
11784
                       pv.PV_OVERVIEW,
18104
      Table Name:       (set in the "New PL/SQL Object" dialog)
11785
                       NNorig_pv_id 	AS LAST_PV_ID,
-
 
11786
	                   pv.owner_id,
-
 
11787
					   pv.IS_DEPLOYABLE,
-
 
11788
					   pv.IS_BUILD_ENV_REQUIRED
-
 
11789
	              FROM PACKAGE_VERSIONS pv
-
 
11790
	             WHERE pv.pv_id = NNorig_pv_id;
18105
 
11791
 
18106
******************************************************************************/
-
 
18107
   CURSOR ripple_cur
-
 
18108
   IS
-
 
18109
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
-
 
18110
 
11792
 
-
 
11793
	        -- Set Issues Type for cloning ---
18111
   ripple_rec   ripple_cur%ROWTYPE;
11794
	        IF origDlocked = 'Y'
18112
BEGIN
11795
	        THEN
-
 
11796
            	nIssuesTypes := enumISSUES_STATE_IMPORTED;
-
 
11797
	        ELSE
-
 
11798
            	nIssuesTypes := NULL;
18113
   OPEN ripple_cur;
11799
	        END IF;
18114
 
11800
 
18115
   FETCH ripple_cur
-
 
18116
    INTO ripple_rec;
11801
			Basic_Clone ( NNorig_pv_id, retPv_id, NNrtag_id, NNuser_id, origPkg_id, nIssuesTypes );
18117
 
11802
 
18118
   WHILE ripple_cur%FOUND
-
 
18119
   LOOP
-
 
18120
   
-
 
18121
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
-
 
18122
   
-
 
18123
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
-
 
18124
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
-
 
18125
 
11803
 
-
 
11804
 
-
 
11805
	    ELSE
-
 
11806
	        retPv_id := package_versions_rec.pv_id;
-
 
11807
 
18126
      FETCH ripple_cur
11808
	    END IF;
-
 
11809
 
18127
       INTO ripple_rec;
11810
        CLOSE package_versions_cur;
-
 
11811
 
-
 
11812
	ELSE
-
 
11813
    	retPv_id := NNsetto_pv_id;
18128
   END LOOP;
11814
    END IF;
-
 
11815
 
-
 
11816
 
-
 
11817
    /* ---------------------------------------------------- */
-
 
11818
    /* Insert into Release Contents (EXCLUDE PATCHES)       */
-
 
11819
    /* ---------------------------------------------------- */
-
 
11820
	IF (package_versions_rec.is_patch != 'Y') OR (package_versions_rec.is_patch IS NULL) THEN
-
 
11821
	    UPDATE RELEASE_CONTENT
-
 
11822
	       SET pv_id = retPv_id,
-
 
11823
	           insert_stamp = Ora_Sysdate,
-
 
11824
	           insertor_id = NNuser_id
-
 
11825
	     WHERE rtag_id = NNrtag_id
-
 
11826
	       AND pv_id = NNorig_pv_id;
-
 
11827
 
-
 
11828
        /* LOG ACTION */
-
 
11829
        SELECT proj.PROJ_NAME ||' / '|| vt.VTREE_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
11830
		  FROM PROJECTS proj,
-
 
11831
		  	   VTREES vt,
-
 
11832
		       RELEASE_TAGS rt
-
 
11833
		 WHERE rt.VTREE_ID = vt.VTREE_ID
-
 
11834
		   AND vt.PROJ_ID = proj.PROJ_ID
-
 
11835
		   AND rt.RTAG_ID = NNrtag_id;
-
 
11836
 
-
 
11837
        Log_Action ( NNorig_pv_id, 'replaced_with', NNuser_id, 'Replacing version: '|| SSpkg_version ||' at '|| ReleaseLocation );
-
 
11838
   		Log_Action ( retPv_id, 'add', NNuser_id, 'Location: '|| ReleaseLocation );
-
 
11839
 
18129
END test;
11840
	END IF;
-
 
11841
 
-
 
11842
 
-
 
11843
END New_Version;
18130
/
11844
/
18131
--------------------------------------------------------
11845
--------------------------------------------------------
18132
--  DDL for Procedure CLEAN_DO_NOT_RIPPLE
11846
--  DDL for Procedure OLE
18133
--------------------------------------------------------
11847
--------------------------------------------------------
18134
 
11848
 
18135
  CREATE OR REPLACE PROCEDURE "CLEAN_DO_NOT_RIPPLE" (nrtagid IN NUMBER)
11849
  CREATE OR REPLACE PROCEDURE "OLE" 
18136
IS
11850
IS retval VARCHAR2(40);   
18137
/******************************************************************************
11851
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
18138
   NAME:       clean_do_not_ripple
11852
DBMS_OUTPUT.PUT_LINE(retval);
18139
 
11853
/
18140
   PURPOSE:    To delete entries from the do_not_ripple table based upon
11854
--------------------------------------------------------
18141
               an RTAG_ID only
11855
--  DDL for Procedure PAOLO_BUILD_TREE
-
 
11856
--------------------------------------------------------
18142
 
11857
 
18143
               This is a tidy-up operation performed against the do_not_ripple
-
 
18144
               table, ensuring that the table does not have rtag_id/pv_id
11858
  CREATE OR REPLACE PROCEDURE "PAOLO_BUILD_TREE" ( nRtag_id IN NUMBER ) IS
18145
               combinations that cannot be found in the release's wip/pending/release
-
 
18146
               tabs.
-
 
18147
 
11859
 
-
 
11860
    sessionNumber NUMBER := 0;
-
 
11861
    iteration NUMBER := 1; 
-
 
11862
    rowCnt NUMBER := 0;
18148
******************************************************************************/
11863
    maxIterations 	NUMBER := 50;
-
 
11864
	
18149
BEGIN
11865
BEGIN
-
 
11866
	
-
 
11867
   
18150
   -- Delete any invalid rtag_id/pv_id combination from the do_not_ripple table.
11868
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
18151
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
11869
    SELECT sessionNumber, iteration, rc.PV_ID
-
 
11870
      FROM RELEASE_CONTENT rc
18152
   -- work_in_progress, planned, or release_content table.
11871
     WHERE rc.RTAG_ID = nRtag_id;
-
 
11872
     
18153
   -- NOTE: Planned operations that represent pending additive/subtractive merge
11873
    iteration := iteration + 1;
-
 
11874
    LOOP
-
 
11875
        
18154
   -- operations are ignored because they have not been approved yet and so
11876
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
-
 
11877
		SELECT sessionNumber,     
18155
   -- cannot be said to be "in the release".
11878
               iteration,
-
 
11879
               dep.DPV_ID
18156
   DELETE FROM do_not_ripple
11880
          FROM TEMP_TREE_BROWSE ttb,
18157
         WHERE rtag_id = nrtagid
11881
               PACKAGE_DEPENDENCIES dep
18158
           AND pv_id not in
11882
         WHERE dep.PV_ID = ttb.PV_ID 
18159
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
11883
           AND ttb.LEVEL_NUM = iteration - 1 
-
 
11884
           
18160
                 UNION
11885
         MINUS  
-
 
11886
         
18161
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
11887
        SELECT sessionNumber, iteration, ttb.PV_ID
-
 
11888
          FROM TEMP_TREE_BROWSE ttb;   
-
 
11889
          
18162
                 UNION
11890
          
-
 
11891
         
-
 
11892
		
-
 
11893
		rowCnt := SQL%ROWCOUNT;
-
 
11894
		IF rowCnt > 0 THEN
-
 
11895
           iteration := iteration + 1;
-
 
11896
		END IF;
18163
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
11897
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
18164
               );
11898
    END LOOP; 
-
 
11899
    
18165
END clean_do_not_ripple;
11900
END PAOLO_Build_Tree;
18166
/
11901
/
18167
--------------------------------------------------------
11902
--------------------------------------------------------
18168
--  DDL for Procedure REBUILD_ENVIRONMENT
11903
--  DDL for Procedure REBUILD_ENVIRONMENT
18169
--------------------------------------------------------
11904
--------------------------------------------------------
18170
 
11905
 
Line 18218... Line 11953...
18218
	END IF;
11953
	END IF;
18219
    */
11954
    */
18220
END Rebuild_Environment;
11955
END Rebuild_Environment;
18221
/
11956
/
18222
--------------------------------------------------------
11957
--------------------------------------------------------
18223
--  DDL for Procedure TEST_MARCO
11958
--  DDL for Procedure RELEASE_MANAGER_MAILOUT
18224
--------------------------------------------------------
11959
--------------------------------------------------------
18225
 
11960
 
18226
  CREATE OR REPLACE PROCEDURE "TEST_MARCO" IS
11961
  CREATE OR REPLACE PROCEDURE "RELEASE_MANAGER_MAILOUT" (
-
 
11962
  sender      IN VARCHAR2,
-
 
11963
  recipient   IN VARCHAR2,
18227
/******************************************************************************
11964
  ccrecipient IN VARCHAR2,
18228
   NAME:       TEST_MARCO
11965
  subject     IN VARCHAR2,
18229
   PURPOSE:    
11966
  message     IN VARCHAR2
-
 
11967
  ) IS
18230
 
11968
 
18231
   REVISIONS:
11969
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
18232
   Ver        Date        Author           Description
11970
  connection utl_smtp.connection;
18233
   ---------  ----------  ---------------  ------------------------------------
11971
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
18234
   1.0        2/03/2007          1. Created this procedure.
11972
  header VARCHAR2(1000);
18235
 
11973
 
18236
   NOTES:
11974
BEGIN
18237
 
11975
 
18238
   Automatically available Auto Replace Keywords:
-
 
18239
      Object Name:     TEST_MARCO
11976
  --
18240
      Sysdate:         2/03/2007
11977
  -- Start the connection.
18241
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
-
 
-
 
11978
  --
18242
      Username:         (set in TOAD Options, Procedure Editor)
11979
  connection := utl_smtp.open_connection(mailhost,25);
18243
      Table Name:       (set in the "New PL/SQL Object" dialog)
-
 
18244
 
11980
 
18245
******************************************************************************/
11981
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
-
 
11982
     'From: '||sender||''||crlf||
-
 
11983
  'Subject: '||subject||crlf||
-
 
11984
       'To: '||recipient||crlf||
-
 
11985
       'CC: '||ccrecipient;
18246
 
11986
 
-
 
11987
  --
18247
parPv_id    NUMBER;
11988
  -- Handshake with the SMTP server
-
 
11989
  --
-
 
11990
  utl_smtp.helo(connection, mailhost);
18248
parPkg_id   NUMBER;
11991
  utl_smtp.mail(connection, sender);
18249
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
11992
  utl_smtp.rcpt(connection, recipient);
18250
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
11993
  utl_smtp.rcpt(connection, ccrecipient);
-
 
11994
  utl_smtp.open_data(connection);
-
 
11995
  --
-
 
11996
  -- Write the header
-
 
11997
  --
18251
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
11998
  utl_smtp.write_data(connection, header);
-
 
11999
  --
-
 
12000
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
18252
BEGIN
12001
  --
-
 
12002
  utl_smtp.write_data(connection, crlf ||message);
-
 
12003
  utl_smtp.close_data(connection);
-
 
12004
  utl_smtp.quit(connection);
18253
 
12005
 
-
 
12006
EXCEPTION
18254
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
12007
  WHEN UTL_SMTP.INVALID_OPERATION THEN
-
 
12008
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
-
 
12009
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
-
 
12010
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
-
 
12011
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
-
 
12012
    dbms_output.put_line(' Errors in code for SMTP transaction.');
18255
 
12013
 
18256
        /* LOG ACTION */
12014
END RELEASE_MANAGER_MAILOUT;
-
 
12015
/
-
 
12016
--------------------------------------------------------
18257
        Log_Action ( parPv_id, 'new_version', 3764,
12017
--  DDL for Procedure REMOVE_COMPONENTS
18258
        			 'New package version: '|| parPv_id || '.' );
12018
--------------------------------------------------------
18259
 
12019
 
18260
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
12020
  CREATE OR REPLACE PROCEDURE "REMOVE_COMPONENTS" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
18261
		
-
 
18262
     -- Clone Package Version Details --
-
 
18263
            INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT,
-
 
18264
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
-
 
18265
                SELECT parPv_id         AS pv_id,
-
 
18266
                       pv.pkg_id        AS pkg_id,
-
 
18267
                       parPv_id || '.'    AS pkg_version,
-
 
18268
                       'N'              AS dlocked,
-
 
18269
                       Ora_Sysdate      AS created_stamp,
-
 
18270
                       3764        AS creator_id,
-
 
18271
                       Ora_Sysdatetime  AS modified_stamp,
12021
/* ---------------------------------------------------------------------------
18272
                       3764        AS modifier_id,
-
 
18273
                       SSV_MM          AS V_MM,
-
 
18274
                       SSV_NMM         AS V_NMM,
-
 
18275
                       SSV_EXT          AS V_EXT,
-
 
18276
                       pv.src_path,
-
 
18277
                       pv.pv_description,
-
 
18278
                       pv.PV_OVERVIEW,
-
 
18279
                       112982 	AS LAST_PV_ID,
-
 
18280
                       pv.owner_id,
-
 
18281
					   pv.BUILD_TYPE,
12022
    Version: 3.0.0
18282
					   pv.IS_BUILD_ENV_REQUIRED,
-
 
18283
					   pv.bs_id,
-
 
18284
					   pv.is_autobuildable,
-
 
18285
					   pv.IS_DEPLOYABLE
-
 
18286
                  FROM PACKAGE_VERSIONS pv
-
 
18287
                 WHERE pv.pv_id = 112982;		
-
 
18288
		
-
 
18289
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
12023
   --------------------------------------------------------------------------- */
18290
 
12024
 
18291
 
12025
 
-
 
12026
BEGIN
-
 
12027
 
-
 
12028
	 --- Delete From RELEASE_COMPONENTS
-
 
12029
	 DELETE FROM RELEASE_COMPONENTS
-
 
12030
	 WHERE PV_ID = nPvId;
-
 
12031
 
18292
END TEST_MARCO;
12032
END Remove_Components;
18293
/
12033
/
18294
--------------------------------------------------------
12034
--------------------------------------------------------
18295
--  DDL for Procedure LOG_ACTION_BULK
12035
--  DDL for Procedure REMOVE_DOCUMENT
18296
--------------------------------------------------------
12036
--------------------------------------------------------
18297
 
12037
 
18298
  CREATE OR REPLACE PROCEDURE "LOG_ACTION_BULK" ( nPvIdList IN VARCHAR2,
12038
  CREATE OR REPLACE PROCEDURE "REMOVE_DOCUMENT" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
18299
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
12039
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
18300
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
12040
                                              nUserId IN NUMBER ) IS
18301
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
-
 
18302
/* ---------------------------------------------------------------------------
12041
/* ---------------------------------------------------------------------------
18303
    Version: 3.0
12042
    Version: 3.0
18304
   --------------------------------------------------------------------------- */
12043
   --------------------------------------------------------------------------- */
18305
 
12044
 
18306
    ActionTypeId NUMBER;
-
 
18307
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
12045
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
18308
 
12046
 
18309
BEGIN
12047
BEGIN
18310
 
12048
 
-
 
12049
	-- Get Doc Num
18311
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
12050
    SELECT pd.DOC_NUM INTO DocNumber
-
 
12051
      FROM PACKAGE_DOCUMENTS pd
-
 
12052
     WHERE pd.PV_ID = nPvId
-
 
12053
       AND pd.DOC_ID = nDocId;
18312
 
12054
 
18313
    -- Get Action Type FK
-
 
18314
    SELECT act.ACTTYPE_ID INTO ActionTypeId
-
 
18315
      FROM ACTION_TYPE act
-
 
18316
     WHERE act.NAME = enumActionTypeName;
-
 
18317
 
12055
 
18318
    -- Log Action
12056
	-- Delete Document
18319
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
-
 
18320
    SELECT nUserId,
12057
    DELETE
18321
    	   ORA_SYSDATETIME,
12058
      FROM PACKAGE_DOCUMENTS pd
18322
           pv.PV_ID,
12059
     WHERE pd.PV_ID = nPvId
18323
           sAdditionalComments,
12060
       AND pd.DOC_ID = nDocId;
18324
           ActionTypeId
-
 
18325
      FROM PACKAGE_VERSIONS pv
-
 
18326
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
-
 
18327
 
12061
 
18328
 
12062
 
-
 
12063
    /* LOG ACTION */
-
 
12064
   	Log_Action ( nPvId, 'document_remove', nUserId,
-
 
12065
   			     'Document number: '|| DocNumber );
-
 
12066
 
-
 
12067
 
18329
END Log_Action_Bulk;
12068
END Remove_Document;
18330
/
12069
/
18331
--------------------------------------------------------
12070
--------------------------------------------------------
18332
--  DDL for Procedure CLONED_PACKAGE_PROCESSES
12071
--  DDL for Procedure REMOVE_PACKAGE_INTEREST
18333
--------------------------------------------------------
12072
--------------------------------------------------------
18334
 
12073
 
18335
  CREATE OR REPLACE PROCEDURE "CLONED_PACKAGE_PROCESSES" 
12074
  CREATE OR REPLACE PROCEDURE "REMOVE_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
-
 
12075
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
-
 
12076
												  	nUserId IN NUMBER
18336
IS
12077
	   	  		  									) IS
18337
 
12078
 
18338
proc_id NUMBER;
-
 
18339
/******************************************************************************
12079
/******************************************************************************
18340
   NAME:       DELETE_DO_NOT_RIPPLE
12080
   NAME:       REMOVE_PACKAGE_INTEREST
18341
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
12081
   PURPOSE:    To remove interest in a given package per project
18342
               IS RELEASED
-
 
18343
 
12082
 
18344
   REVISIONS:
12083
   REVISIONS:
18345
   Ver        Date        Author           Description
12084
   Ver        Date        Author           Description
18346
   ---------  ----------  ---------------  ------------------------------------
12085
   ---------  ----------  ---------------  ------------------------------------
18347
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
12086
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
18348
 
12087
 
18349
   NOTES:
12088
   NOTES:
18350
 
12089
 
18351
   Automatically available Auto Replace Keywords:
12090
   Automatically available Auto Replace Keywords:
18352
      Object Name:     DELETE_DO_NOT_RIPPLE
12091
      Object Name:     REMOVE_PACKAGE_INTEREST
18353
      Sysdate:         21/04/2006
12092
      Sysdate:         12/05/2006
18354
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
12093
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
18355
      Username:         (set in TOAD Options, Procedure Editor)
12094
      Username:         (set in TOAD Options, Procedure Editor)
18356
      Table Name:       (set in the "New PL/SQL Object" dialog)
12095
      Table Name:       (set in the "New PL/SQL Object" dialog)
18357
 
12096
 
18358
******************************************************************************/
12097
******************************************************************************/
18359
   CURSOR ripple_cur
-
 
18360
   IS
-
 
18361
      select distinct proc_id, prod_id from deployment_manager.processes_config;
-
 
18362
 
-
 
18363
   ripple_rec   ripple_cur%ROWTYPE;
-
 
18364
BEGIN
12098
BEGIN
18365
   OPEN ripple_cur;
-
 
18366
 
-
 
18367
   FETCH ripple_cur
-
 
18368
    INTO ripple_rec;
-
 
18369
 
-
 
18370
   WHILE ripple_cur%FOUND
-
 
18371
   LOOP
-
 
18372
   
-
 
18373
 
-
 
18374
   
-
 
18375
insert into package_processes (PROC_ID, PV_ID) 
-
 
18376
values( ripple_rec.proc_id, ripple_rec.prod_id);
-
 
18377
 
12099
 
-
 
12100
	 --Delete from PACKAGE_INTEREST
18378
      FETCH ripple_cur
12101
	 DELETE FROM PACKAGE_INTEREST
18379
       INTO ripple_rec;
12102
	 WHERE PROJ_ID = nProjId
18380
   END LOOP;
12103
	 AND PKG_ID = nPkgId
-
 
12104
	 AND USER_ID = nUserId;
-
 
12105
	 
18381
END CLONED_PACKAGE_PROCESSES;
12106
END REMOVE_PACKAGE_INTEREST;
18382
/
12107
/
18383
--------------------------------------------------------
12108
--------------------------------------------------------
18384
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS2
12109
--  DDL for Procedure REMOVE_PATCH
18385
--------------------------------------------------------
12110
--------------------------------------------------------
18386
 
12111
 
18387
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS2" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
12112
  CREATE OR REPLACE PROCEDURE "REMOVE_PATCH" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
18388
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
12113
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
18389
                                                          NNuser_id IN NUMBER,
12114
                                           nUserId IN NUMBER ) IS
18390
                                                          retPV_ID OUT NUMBER,
-
 
18391
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
-
 
18392
/* ---------------------------------------------------------------------------
12115
/* ---------------------------------------------------------------------------
18393
    Version: 4.0
12116
    Version: 4.0
18394
   --------------------------------------------------------------------------- */
12117
   --------------------------------------------------------------------------- */
18395
 
12118
 
18396
    parPkg_id   NUMBER;
-
 
18397
    parPv_id    NUMBER;
-
 
18398
    cloneFrom_pv_id NUMBER;
-
 
18399
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
-
 
18400
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
-
 
18401
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
12119
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
18402
 
-
 
18403
    CURSOR packages_cur IS
-
 
18404
        SELECT pkg_id FROM PACKAGES
-
 
18405
        WHERE pkg_name = SSpkg_name;
-
 
18406
    packages_rec packages_cur%ROWTYPE;
-
 
18407
 
-
 
18408
    CURSOR package_versions_cur IS
-
 
18409
        SELECT pv_id FROM PACKAGE_VERSIONS
-
 
18410
        WHERE pkg_id = parPkg_id
-
 
18411
        AND pkg_version = SSpkg_version;
-
 
18412
    package_versions_rec package_versions_cur%ROWTYPE;
-
 
18413
 
12120
 
18414
    CURSOR clone_package_versions_cur IS
12121
CURSOR curPatch IS
-
 
12122
	SELECT pp.PV_ID,
-
 
12123
		   pp.PATCH_ID,
18415
        SELECT MAX(pv_id) AS pv_id
12124
	       ROWNUM AS NEW_INSTALL_ORDER
18416
          FROM PACKAGE_VERSIONS
12125
	  FROM PACKAGE_PATCHES pp
18417
         WHERE pkg_id = parPkg_id
12126
	 WHERE pp.PV_ID = nPvId
18418
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
12127
	ORDER BY pp.INSTALL_ORDER;
18419
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
12128
recPatch curPatch%ROWTYPE;
18420
 
12129
 
18421
BEGIN
12130
BEGIN
18422
    /* -------------------------------------------- */
-
 
18423
    /* Find if pkg_name exists and seed if required */
-
 
18424
    /* -------------------------------------------- */
-
 
18425
    OPEN packages_cur;
-
 
18426
    FETCH packages_cur INTO packages_rec;
-
 
18427
 
-
 
18428
    IF packages_cur%NOTFOUND
-
 
18429
    THEN
-
 
18430
        /* INSERT into packages table */
-
 
18431
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
-
 
18432
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
-
 
18433
 
-
 
18434
    ELSE
-
 
18435
        parPkg_id := packages_rec.pkg_id;
-
 
18436
 
-
 
18437
    END IF;
-
 
18438
 
-
 
18439
    CLOSE packages_cur;
-
 
18440
 
-
 
18441
 
-
 
18442
 
12131
 
18443
    /* ---------------------------------------------------- */
12132
	 -- Delete Patch
18444
    /* Find if package_version exists and seed if required  */
12133
     DELETE
18445
    /* ---------------------------------------------------- */
12134
       FROM PACKAGE_PATCHES pp
18446
    OPEN package_versions_cur;
12135
      WHERE pp.PV_ID = nPvId
18447
    FETCH package_versions_cur INTO package_versions_rec;
12136
        AND pp.PATCH_ID = nPatchId;
18448
 
12137
 
18449
    IF package_versions_cur%NOTFOUND
-
 
18450
    THEN
-
 
18451
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
-
 
18452
 
12138
 
18453
        /* LOG ACTION */
12139
	-- Redo Install Order
18454
        Log_Action ( parPv_id, 'new_version', NNuser_id,
12140
    OPEN curPatch;
18455
        			 'New package version: '|| SSpkg_version );
12141
	FETCH curPatch INTO recPatch;
18456
 
12142
 
18457
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
12143
	WHILE curPatch%FOUND
-
 
12144
	LOOP
18458
 
12145
 
-
 
12146
		UPDATE PACKAGE_PATCHES pp SET
-
 
12147
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
-
 
12148
		WHERE pp.PV_ID = nPvId
-
 
12149
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
18459
 
12150
 
-
 
12151
		FETCH curPatch INTO recPatch;
-
 
12152
	END LOOP;
18460
 
12153
 
-
 
12154
	CLOSE curPatch;
18461
 
12155
 
18462
 
12156
 
18463
            /* CLONE details from similar version  OR  from nCloneFromPvId */
-
 
18464
			IF ( NOT nCloneFromPvId IS NULL) THEN
-
 
18465
            	cloneFrom_pv_id := nCloneFromPvId;
-
 
18466
			ELSE
-
 
18467
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
-
 
18468
			END IF;
-
 
18469
 
12157
 
18470
            -- Clone Package Version Details --
-
 
18471
            INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT,
-
 
18472
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable, ripple_field )
-
 
18473
                SELECT parPv_id         AS pv_id,
-
 
18474
                       parPkg_id        AS pkg_id,
-
 
18475
                       SSpkg_version    AS pkg_version,
-
 
18476
                       'N'              AS dlocked,
-
 
18477
                       Ora_Sysdate      AS created_stamp,
-
 
18478
                       NNuser_id        AS creator_id,
-
 
18479
                       Ora_Sysdatetime  AS modified_stamp,
-
 
18480
                       NNuser_id        AS modifier_id,
-
 
18481
                       SSV_MM           AS V_MM,
-
 
18482
                       SSV_NMM          AS V_NMM,
-
 
18483
                       SSV_EXT          AS V_EXT,
-
 
18484
                       pv.src_path,
-
 
18485
                       pv.pv_description,
-
 
18486
                       pv.PV_OVERVIEW,
-
 
18487
                       cloneFrom_pv_id 	AS LAST_PV_ID,
-
 
18488
                       pv.owner_id,
-
 
18489
					   pv.BUILD_TYPE,
-
 
18490
					   pv.IS_BUILD_ENV_REQUIRED,
-
 
18491
					   pv.bs_id,
-
 
18492
					   pv.is_autobuildable,
-
 
18493
					   pv.IS_DEPLOYABLE,
-
 
18494
					   pv.ripple_field
-
 
18495
                  FROM PACKAGE_VERSIONS pv
-
 
18496
                 WHERE pv.pv_id = cloneFrom_pv_id;
-
 
18497
 
12158
 
-
 
12159
    /* LOG ACTION */
18498
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
12160
    SELECT pv.PKG_VERSION INTO PatchVersion
-
 
12161
      FROM PACKAGE_VERSIONS pv
-
 
12162
     WHERE pv.PV_ID = nPatchId;
18499
 
12163
 
-
 
12164
   	Log_Action ( nPvId, 'patch_remove', nUserId,
18500
        retPV_ID := parPv_id;
12165
   			     'Version: '|| PatchVersion );
18501
 
12166
 
18502
    ELSE
12167
END Remove_Patch;
-
 
12168
/
-
 
12169
--------------------------------------------------------
18503
        retPV_ID := package_versions_rec.pv_id;
12170
--  DDL for Procedure REMOVE_PROJECT_VIEW_OWNER
-
 
12171
--------------------------------------------------------
18504
 
12172
 
-
 
12173
  CREATE OR REPLACE PROCEDURE "REMOVE_PROJECT_VIEW_OWNER" (nProjId IN NUMBER,
-
 
12174
	   	  		  						 			  nViewId IN NUMBER,
-
 
12175
										 			  sUserIdList IN VARCHAR2,
18505
    END IF;
12176
										 			  nUserId IN NUMBER ) IS
18506
 
12177
 
18507
    CLOSE package_versions_cur;
12178
GroupId NUMBER;													  
-
 
12179
										 
-
 
12180
									 
18508
 
12181
 
-
 
12182
/******************************************************************************
-
 
12183
   NAME:       UPDATE_VIEW
-
 
12184
   PURPOSE:    
18509
 
12185
 
-
 
12186
   REVISIONS:
-
 
12187
   Ver        Date        Author           		Description
-
 
12188
   ---------  ----------  ---------------  ------------------------------------
-
 
12189
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
18510
 
12190
 
-
 
12191
   NOTES:
18511
 
12192
 
-
 
12193
   Automatically available Auto Replace Keywords:
18512
END Seed_Package_Names_Versions2;
12194
      Object Name:     UPDATE_VIEW
18513
/
-
 
-
 
12195
      Sysdate:         10/04/2006
18514
--------------------------------------------------------
12196
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
18515
--  DDL for Procedure BUILD_TREE
12197
      Username:         (set in TOAD Options, Procedure Editor)
18516
--------------------------------------------------------
12198
      Table Name:       (set in the "New PL/SQL Object" dialog)
18517
 
12199
 
18518
  CREATE OR REPLACE PROCEDURE "BUILD_TREE" ( nRtag_id IN NUMBER,
12200
******************************************************************************/
18519
	   	  		  					     retSessionNum OUT NUMBER ) IS
-
 
18520
 
12201
 
18521
/* ---------------------------------------------------------------------------
-
 
18522
    Version: 3.0.0
-
 
18523
   --------------------------------------------------------------------------- */
-
 
18524
    rowCnt 			NUMBER := 0;						-- Iterations counter
-
 
18525
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
-
 
18526
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
-
 
18527
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
-
 
18528
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
-
 
18529
    sessionNum 		NUMBER;
-
 
18530
	levelNum		NUMBER;
-
 
18531
	
-
 
18532
BEGIN
12202
BEGIN
18533
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
-
 
18534
	
-
 
18535
	/*
-
 
18536
	||	   Start UP THE TREE
-
 
18537
	*/
-
 
18538
	
-
 
18539
	
-
 
18540
	/* Packages with no dependencies */    
-
 
18541
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
-
 
18542
		SELECT sessionNum AS SESSION_NUM,
-
 
18543
			   iteration AS LEVEL_NUM,
-
 
18544
			   UP_THE_TREE AS DIRECTION,
-
 
18545
			   rc.pv_id, pv.pkg_id, pv.v_ext
-
 
18546
		  FROM release_content rc,
-
 
18547
		  	   package_versions pv
-
 
18548
		 WHERE rc.rtag_id = nRtag_id
-
 
18549
		   AND rc.pv_id = pv.pv_id
-
 
18550
		 MINUS
-
 
18551
		SELECT sessionNum AS SESSION_NUM, 
-
 
18552
			   iteration AS LEVEL_NUM,
-
 
18553
			   UP_THE_TREE AS DIRECTION,
-
 
18554
			   dep.pv_id, pv.pkg_id, pv.v_ext
-
 
18555
		  FROM package_dependencies dep,
-
 
18556
		  	   package_versions pv
-
 
18557
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
-
 
18558
		   AND dep.pv_id = pv.pv_id;
-
 
18559
		   
-
 
18560
		   
-
 
18561
	/* Browse UP the build tree */	   
-
 
18562
	iteration := iteration + 1;
-
 
18563
    LOOP
-
 
18564
        
-
 
18565
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
-
 
18566
			SELECT DISTINCT 
-
 
18567
			       sessionNum AS SESSION_NUM,
-
 
18568
			       iteration AS LEVEL_NUM,
-
 
18569
				   UP_THE_TREE AS DIRECTION, 
-
 
18570
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
-
 
18571
			  FROM (  
-
 
18572
			        SELECT dep.pv_id, pv.pkg_id, pv.v_ext, dep.dpv_id, dpv.pkg_id AS dpkg_id, dpv.v_ext AS dv_ext
-
 
18573
			          FROM package_dependencies dep,
-
 
18574
			               release_content rc,
-
 
18575
						   package_versions pv,
-
 
18576
						   package_versions dpv
-
 
18577
			         WHERE dep.pv_id = rc.pv_id
-
 
18578
			           AND rc.rtag_id = nRtag_id
-
 
18579
					   AND dep.pv_id = pv.pv_id
-
 
18580
					   AND dep.dpv_id = dpv.pv_id
-
 
18581
					) rdep,
-
 
18582
					temp_tree_browse ttb
-
 
18583
			 WHERE rdep.dpkg_id  = ttb.pkg_id
-
 
18584
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
-
 
18585
			   AND ttb.SESSION_NUM = sessionNum
-
 
18586
			   AND ttb.LEVEL_NUM = iteration - 1	
-
 
18587
			MINUS
-
 
18588
			/* Packages with all depencencies NOT matched */  
-
 
18589
			SELECT DISTINCT 
-
 
18590
			       sessionNum AS SESSION_NUM,
-
 
18591
			       iteration AS LEVEL_NUM, 
-
 
18592
				   UP_THE_TREE AS DIRECTION,
-
 
18593
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
-
 
18594
			  FROM (  
-
 
18595
			        SELECT dep.pv_id, pv.pkg_id, pv.v_ext, dep.dpv_id, dpv.pkg_id AS dpkg_id, dpv.v_ext AS dv_ext
-
 
18596
			          FROM package_dependencies dep,
-
 
18597
			               release_content rc,
-
 
18598
						   package_versions pv,
-
 
18599
						   package_versions dpv
-
 
18600
			         WHERE dep.pv_id = rc.pv_id
-
 
18601
			           AND rc.rtag_id = nRtag_id
-
 
18602
					   AND dep.pv_id = pv.pv_id
-
 
18603
					   AND dep.dpv_id = dpv.pv_id
-
 
18604
					) rdep,
-
 
18605
					(
-
 
18606
					 SELECT tb.*
-
 
18607
					   FROM temp_tree_browse tb
-
 
18608
					  WHERE tb.SESSION_NUM = sessionNum
-
 
18609
					) ttb
-
 
18610
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
-
 
18611
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
-
 
18612
			   AND ttb.SESSION_NUM IS NULL;
-
 
18613
		
-
 
18614
		rowCnt := SQL%ROWCOUNT;
-
 
18615
		IF rowCnt > 0 THEN
-
 
18616
           iteration := iteration + 1;
-
 
18617
		END IF;
-
 
18618
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
-
 
18619
    END LOOP;
-
 
18620
	
-
 
18621
	/*---------------------------------------------------------------------------------------------------------------------*/
-
 
18622
	
-
 
18623
	/*     Check for unresolved dependencies
-
 
18624
	||  
-
 
18625
	*/
-
 
18626
	/* UNRESOLVED */
-
 
18627
	 SELECT COUNT(*) INTO rowCnt
12203
	 SELECT GROUP_EMAIL_ID into GroupId
18628
	   FROM (
-
 
18629
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
-
 
18630
			  FROM release_content rc,
-
 
18631
			  	   package_versions pv
-
 
18632
			 WHERE rc.rtag_id = nRtag_id
-
 
18633
			   AND rc.pv_id = pv.pv_id	   
-
 
18634
			MINUS
-
 
18635
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
-
 
18636
			  FROM temp_tree_browse ttb
12204
	 FROM AUTOBUILD_FAILURE
18637
			 WHERE ttb.session_num = sessionNum
-
 
18638
			);
-
 
18639
				
-
 
18640
	 
-
 
18641
			  
-
 
18642
	 IF rowCnt > 0 
-
 
18643
	 THEN
-
 
18644
	 	 /*     Circular dependencies detected.
-
 
18645
		 ||     Try to resolve build order from the top now.
-
 
18646
		 ||		Start DOWN THE TREE
-
 
18647
		 */
-
 
18648
		 
-
 
18649
		iteration := 0; 
-
 
18650
		 /* Top Level packages */	
-
 
18651
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
-
 
18652
			SELECT sessionNum AS SESSION_NUM,
-
 
18653
			       iteration AS LEVEL_NUM,
-
 
18654
				   DOWN_THE_TREE AS DIRECTION,
-
 
18655
				   pv.pv_id, pv.pkg_id, pv.v_ext
-
 
18656
			  FROM (		   
-
 
18657
					/* Packages no one depends on ( Top level packages )*/
-
 
18658
					( 
-
 
18659
					/* All parents*/ 
-
 
18660
					SELECT pv.pkg_id, pv.v_ext
-
 
18661
			          FROM package_dependencies dep,
-
 
18662
			               release_content rc,
-
 
18663
						   package_versions pv
-
 
18664
			         WHERE dep.pv_id = rc.pv_id
-
 
18665
			           AND rc.rtag_id = nRtag_id
-
 
18666
					   AND dep.pv_id = pv.pv_id
-
 
18667
					 MINUS
-
 
18668
					 /* All children */
-
 
18669
					SELECT dpv.pkg_id, dpv.v_ext
-
 
18670
			          FROM package_dependencies dep,
-
 
18671
			               release_content rc,
-
 
18672
						   package_versions dpv
-
 
18673
			         WHERE dep.pv_id = rc.pv_id
-
 
18674
			           AND rc.rtag_id = nRtag_id
-
 
18675
					   AND dep.dpv_id = dpv.pv_id
-
 
18676
					 ) 
-
 
18677
					 MINUS
-
 
18678
					/* Packages with resolved dependencies from UP THE TREE */ 
-
 
18679
					SELECT ttb.pkg_id, ttb.v_ext
-
 
18680
					  FROM temp_tree_browse ttb
-
 
18681
					 WHERE ttb.session_num = sessionNum
-
 
18682
				  ) tpkg,
-
 
18683
				  package_versions pv,
-
 
18684
				  release_content rc
-
 
18685
			WHERE rc.rtag_id = nRtag_id
12205
	 WHERE PROJ_ID = nProjId
18686
			  AND rc.pv_id = pv.pv_id
12206
	 AND VIEW_ID = nViewId;
18687
			  AND tpkg.pkg_id = pv.pkg_id
-
 
18688
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
-
 
18689
		
-
 
18690
		
-
 
18691
		 /* Keep taking packages which no one depende on */			  
-
 
18692
		 iteration := iteration - 1;  
-
 
18693
		 LOOP	  
-
 
18694
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
-
 
18695
					SELECT sessionNum AS SESSION_NUM,
-
 
18696
					       iteration AS LEVEL_NUM,
-
 
18697
					       DOWN_THE_TREE AS DIRECTION,
-
 
18698
					       pv.pv_id, pv.pkg_id, pv.v_ext
-
 
18699
					  FROM (		   
-
 
18700
					 	/* All Unresolved */
-
 
18701
					 	(
-
 
18702
					 	SELECT pv.pkg_id, pv.v_ext
-
 
18703
					 	  FROM release_content rc,
-
 
18704
					 	  	   package_versions pv
-
 
18705
					 	 WHERE rc.rtag_id = nRtag_id
-
 
18706
					 	   AND rc.pv_id = pv.pv_id	   
-
 
18707
					 	MINUS
-
 
18708
					 	SELECT ttb.pkg_id, ttb.v_ext
-
 
18709
					 	  FROM temp_tree_browse ttb
-
 
18710
					 	 WHERE ttb.session_num = sessionNum
-
 
18711
					 	)
-
 
18712
					 	 MINUS
-
 
18713
					 	(  
-
 
18714
					 	 /* Children of Unresolved */  
-
 
18715
					 	SELECT dpv.pkg_id, dpv.V_EXT
-
 
18716
					 	  FROM (
-
 
18717
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
-
 
18718
					 			  FROM release_content rc,
-
 
18719
					 			  	   package_versions pv
-
 
18720
					 			 WHERE rc.rtag_id = nRtag_id
-
 
18721
					 			   AND rc.pv_id = pv.pv_id	   
-
 
18722
					 			MINUS
-
 
18723
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
-
 
18724
					 			  FROM temp_tree_browse ttb
-
 
18725
					 			 WHERE ttb.session_num = sessionNum
-
 
18726
					 		   ) unr,
-
 
18727
					 		   package_dependencies dep,
-
 
18728
					 		   package_versions dpv
-
 
18729
					 	 WHERE unr.pv_id = dep.pv_id
-
 
18730
					 	   AND dep.dpv_id = dpv.pv_id
-
 
18731
					 	 )  
-
 
18732
					   ) tpkg,
-
 
18733
					   package_versions pv,
-
 
18734
					   release_content rc
-
 
18735
					WHERE rc.rtag_id = nRtag_id
-
 
18736
					  AND rc.pv_id = pv.pv_id
-
 
18737
					  AND tpkg.pkg_id = pv.pkg_id
-
 
18738
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
-
 
18739
					  
-
 
18740
            rowCnt := SQL%ROWCOUNT;
-
 
18741
        	IF rowCnt > 0 THEN
-
 
18742
	           iteration := iteration - 1;
-
 
18743
			END IF;
-
 
18744
            EXIT WHEN (rowCnt < 1);
-
 
18745
     	END LOOP;
-
 
18746
		
-
 
18747
	 END IF;
-
 
18748
	 
-
 
18749
	 
12207
	 
18750
	/*---------------------------------------------------------------------------------------------------------------------*/
-
 
18751
	
-
 
18752
	/* 
-
 
18753
	|| 	 Save results from temp table
-
 
18754
	*/	
-
 
18755
	/* Clean up build_order table */
-
 
18756
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
-
 
18757
	
-
 
18758
	/* Save UP THE TREE */
-
 
18759
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
-
 
18760
		SELECT nRtag_id AS rtag_id,
12208
	 DELETE FROM MEMBERS_GROUP
18761
			   ttb.level_num AS step_num, 
-
 
18762
			   ttb.PV_ID
-
 
18763
		  FROM temp_tree_browse ttb
-
 
18764
		 WHERE ttb.session_num = sessionNum
12209
	 WHERE GROUP_EMAIL_ID = GroupId
18765
		   AND ttb.direction = UP_THE_TREE;	
-
 
18766
		   
-
 
18767
	/*Get last step_num */
12210
	 AND USER_ID IN (
18768
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
-
 
18769
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
12211
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
18770
	
-
 
18771
	/* UNRESOLVED */
-
 
18772
	 SELECT COUNT(*) INTO rowCnt
-
 
18773
	   FROM (
-
 
18774
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
-
 
18775
			  FROM release_content rc,
-
 
18776
			  	   package_versions pv
-
 
18777
			 WHERE rc.rtag_id = nRtag_id
-
 
18778
			   AND rc.pv_id = pv.pv_id	   
-
 
18779
			MINUS
-
 
18780
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
-
 
18781
			  FROM temp_tree_browse ttb
-
 
18782
			 WHERE ttb.session_num = sessionNum
-
 
18783
			);
12212
	 );
18784
	
-
 
18785
			
-
 
18786
	IF rowCnt > 0
-
 
18787
	THEN
-
 
18788
		/* Save unresolved packages */
-
 
18789
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
-
 
18790
		    SELECT  nRtag_id AS rtag_id,
-
 
18791
				    levelNum AS step_num, 
-
 
18792
				    upv.PV_ID,
-
 
18793
					'Y' AS UNRESOLVED
-
 
18794
			   FROM (
-
 
18795
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
-
 
18796
					  FROM release_content rc,
-
 
18797
					  	   package_versions pv
-
 
18798
					 WHERE rc.rtag_id = nRtag_id
-
 
18799
					   AND rc.pv_id = pv.pv_id	   
-
 
18800
					MINUS
-
 
18801
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
-
 
18802
					  FROM temp_tree_browse ttb
-
 
18803
					 WHERE ttb.session_num = sessionNum
-
 
18804
					) upv;
-
 
18805
	END IF;	
-
 
18806
			
-
 
18807
	/* Save DOWN THE TREE */
-
 
18808
	levelNum := 1000;
-
 
18809
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
-
 
18810
		SELECT nRtag_id AS rtag_id,
-
 
18811
			   levelNum + ttb.level_num  AS step_num, 
-
 
18812
			   ttb.PV_ID
-
 
18813
		  FROM temp_tree_browse ttb
-
 
18814
		 WHERE ttb.session_num = sessionNum
-
 
18815
		   AND ttb.direction = DOWN_THE_TREE;
-
 
18816
	
-
 
18817
	
-
 
18818
	/*---------------------------------------------------------------------------------------------------------------------*/
-
 
18819
	
-
 
18820
	/* Clean up temp table */
-
 
18821
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
-
 
18822
	
12213
	
18823
	retSessionNum := sessionNum;
-
 
18824
END Build_Tree;
-
 
18825
/
-
 
18826
--------------------------------------------------------
-
 
18827
--  DDL for Procedure CLEAR_ADVISORY_RIPPLE
-
 
18828
--------------------------------------------------------
-
 
18829
 
-
 
18830
  CREATE OR REPLACE PROCEDURE "CLEAR_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
-
 
18831
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
-
 
18832
											 nUserId IN NUMBER ) IS
-
 
18833
/* ---------------------------------------------------------------------------
-
 
18834
    Version: 4.0
-
 
18835
   --------------------------------------------------------------------------- */
-
 
18836
 
-
 
18837
BEGIN
-
 
18838
 
-
 
18839
    -- Clear Advisory Ripple Package
-
 
18840
    DELETE FROM ADVISORY_RIPPLE
-
 
18841
	WHERE PV_ID = nPvId
-
 
18842
	AND RTAG_ID = nRtagId;
-
 
18843
 
12214
 
18844
    /* LOG ACTION */
-
 
18845
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
-
 
18846
	
12215
	
18847
	/*Rebuild_Environment(nRtagId);*/
-
 
18848
 
-
 
18849
END Clear_Advisory_Ripple;
12216
END REMOVE_PROJECT_VIEW_OWNER;
18850
/
12217
/
18851
--------------------------------------------------------
12218
--------------------------------------------------------
18852
--  DDL for Procedure REMOVE_RELEASE_CONTENT
12219
--  DDL for Procedure REMOVE_RELEASE_CONTENT
18853
--------------------------------------------------------
12220
--------------------------------------------------------
18854
 
12221
 
Line 18876... Line 12243...
18876
 
12243
 
18877
 
12244
 
18878
END Remove_Release_Content;
12245
END Remove_Release_Content;
18879
/
12246
/
18880
--------------------------------------------------------
12247
--------------------------------------------------------
18881
--  DDL for Procedure UPDATE_PACKAGE_DEPENDENCY
12248
--  DDL for Procedure REMOVE_RUNTIME
18882
--------------------------------------------------------
12249
--------------------------------------------------------
18883
 
12250
 
18884
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_DEPENDENCY" ( NNpv_id IN NUMBER,
12251
  CREATE OR REPLACE PROCEDURE "REMOVE_RUNTIME" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
18885
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
-
 
18886
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
-
 
18887
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
12252
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
18888
                                                        NNuser_id IN NUMBER,
-
 
18889
                                                        NNdelete_old_dependency IN NUMBER
-
 
18890
                                                       ) IS
12253
                                             nUserId IN NUMBER ) IS
18891
/* ---------------------------------------------------------------------------
12254
/* ---------------------------------------------------------------------------
18892
    Version: 3.3
12255
    Version: 3.0
18893
   --------------------------------------------------------------------------- */
12256
   --------------------------------------------------------------------------- */
18894
 
12257
 
18895
    retPV_ID NUMBER;
-
 
18896
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
12258
   RuntimeDependency VARCHAR2(4000);
18897
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
-
 
18898
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
-
 
18899
    NNpkg_id NUMBER;
-
 
18900
    NNdpkg_id NUMBER;
-
 
18901
 
12259
 
18902
BEGIN
12260
BEGIN
18903
    --- Seed database with package_name and version if required ---
-
 
18904
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
-
 
18905
 
-
 
18906
    -- get v_ext,pkg_id of current dependency
-
 
18907
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
-
 
18908
      FROM PACKAGE_VERSIONS
-
 
18909
     WHERE pv_id = retPV_ID;
-
 
18910
 
-
 
18911
    -- get pkg_id of parent package
-
 
18912
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
-
 
18913
      FROM PACKAGE_VERSIONS
-
 
18914
     WHERE pv_id = NNpv_id;
-
 
18915
 
-
 
18916
 
12261
 
-
 
12262
	-- Get Runtime dependency
18917
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
12263
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
-
 
12264
	  FROM RUNTIME_DEPENDENCIES rtd,
-
 
12265
	  	   PACKAGES pkg,
-
 
12266
	       PACKAGE_VERSIONS pv
-
 
12267
	 WHERE rtd.PV_ID = nPvId
18918
    	( (PvIsPatch IS NOT NULL) )THEN
12268
	   AND pv.PKG_ID = pkg.PKG_ID
18919
 
-
 
18920
	    IF NNdelete_old_dependency = 1 THEN
12269
	   AND rtd.RTD_ID = pv.PV_ID
18921
	        /* Used for CUSTOM dependency add/edit */
12270
	   AND rtd.RTD_ID = nRuntimeId;
18922
 
12271
 
18923
	        --- Remove old dependency ---
-
 
18924
            IF (PvIsPatch IS NULL) THEN
-
 
18925
            	-- Do it for Packages
-
 
18926
		        DELETE FROM PACKAGE_DEPENDENCIES
-
 
18927
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
-
 
18928
		            (
-
 
18929
		            SELECT dep.*
-
 
18930
		              FROM PACKAGE_DEPENDENCIES dep,
-
 
18931
		                   PACKAGE_VERSIONS dpv,
-
 
18932
		                   PACKAGE_VERSIONS pv
-
 
18933
		             WHERE dep.dpv_id = dpv.pv_id
-
 
18934
		               AND dep.pv_id = NNpv_id
-
 
18935
		               AND pv.pv_id = retPV_ID
-
 
18936
		               AND dpv.pkg_id = pv.pkg_id
-
 
18937
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
-
 
18938
		            );
-
 
18939
            ELSE
-
 
18940
            	-- Do it for Patches
-
 
18941
                DELETE FROM PACKAGE_DEPENDENCIES
-
 
18942
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
-
 
18943
		            (
-
 
18944
		            SELECT dep.*
-
 
18945
		              FROM PACKAGE_DEPENDENCIES dep
-
 
18946
		             WHERE dep.dpv_id = retPV_ID
-
 
18947
		               AND dep.pv_id = NNpv_id
-
 
18948
		            );
-
 
18949
			END IF;
-
 
18950
 
12272
 
-
 
12273
	-- Delete Document
18951
	    END IF;
12274
    DELETE
-
 
12275
      FROM RUNTIME_DEPENDENCIES rtd
-
 
12276
     WHERE rtd.PV_ID = nPvId
-
 
12277
       AND rtd.RTD_ID = nRuntimeId;
18952
 
12278
 
18953
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
-
 
18954
 
12279
 
18955
	    --- Add new dependency ---
12280
    /* LOG ACTION */
18956
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
12281
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
18957
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
12282
   			     'Runtime package: '|| RuntimeDependency );
18958
 
12283
 
18959
	END IF;
-
 
18960
 
12284
 
18961
END Update_Package_Dependency;
12285
END Remove_Runtime;
18962
/
12286
/
18963
--------------------------------------------------------
12287
--------------------------------------------------------
18964
--  DDL for Procedure LOG_ACTION
12288
--  DDL for Procedure RENAME_PACKAGE_VERSION
18965
--------------------------------------------------------
12289
--------------------------------------------------------
18966
 
12290
 
18967
  CREATE OR REPLACE PROCEDURE "LOG_ACTION" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
12291
  CREATE OR REPLACE PROCEDURE "RENAME_PACKAGE_VERSION" ( NNpv_id IN NUMBER,
-
 
12292
                                                     SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
18968
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
12293
													 cBuildType IN CHAR,
18969
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
12294
                                                     NNuser_id IN NUMBER,
18970
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
12295
                                                     errMessage OUT VARCHAR2 ) IS
18971
/* ---------------------------------------------------------------------------
12296
/* ---------------------------------------------------------------------------
18972
    Version: 3.0
12297
    Version: 3.2
18973
   --------------------------------------------------------------------------- */
12298
   --------------------------------------------------------------------------- */
18974
 
12299
 
-
 
12300
    sPackageVersion VARCHAR2(4000);
-
 
12301
	sLabel VARCHAR2(4000) := NULL;
-
 
12302
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
-
 
12303
 
-
 
12304
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
-
 
12305
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
-
 
12306
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
-
 
12307
 
-
 
12308
    CURSOR package_versions_cur IS
18975
    ActionTypeId NUMBER;
12309
        SELECT pv_id
-
 
12310
     	  FROM package_versions
-
 
12311
     	 WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
-
 
12312
     	   AND pkg_version = SSpkg_version;
-
 
12313
    package_versions_rec package_versions_cur%ROWTYPE;
-
 
12314
 
18976
 
12315
 
18977
BEGIN
12316
BEGIN
18978
 
12317
 
18979
    -- Get Action Type FK
12318
    /* ---------------------------------------------------- */
18980
    SELECT act.ACTTYPE_ID INTO ActionTypeId
12319
    /* Find if package_version exists                       */
18981
      FROM ACTION_TYPE act
-
 
18982
     WHERE act.NAME = enumActionTypeName;
12320
    /* ---------------------------------------------------- */
18983
 
12321
 
-
 
12322
	errMessage := NULL;
18984
 
12323
 
-
 
12324
 
-
 
12325
	-- Get previous version
18985
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
12326
	SELECT pv.PKG_VERSION INTO OldPkgVersion
18986
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
12327
      FROM PACKAGE_VERSIONS pv
-
 
12328
     WHERE pv.PV_ID = NNpv_id;
18987
 
12329
 
18988
 
12330
 
18989
END Log_Action;
-
 
18990
/
-
 
18991
--------------------------------------------------------
-
 
18992
--  DDL for Procedure REMOVE_PATCH
12331
	sPackageVersion := SSpkg_version;
18993
--------------------------------------------------------
-
 
18994
 
12332
 
18995
  CREATE OR REPLACE PROCEDURE "REMOVE_PATCH" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
-
 
18996
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
-
 
18997
                                           nUserId IN NUMBER ) IS
-
 
18998
/* ---------------------------------------------------------------------------
-
 
18999
    Version: 4.0
-
 
19000
   --------------------------------------------------------------------------- */
-
 
19001
 
12333
 
19002
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
12334
	IF OldPkgVersion != sPackageVersion THEN
19003
 
12335
 
19004
CURSOR curPatch IS
-
 
19005
	SELECT pp.PV_ID,
-
 
19006
		   pp.PATCH_ID,
-
 
19007
	       ROWNUM AS NEW_INSTALL_ORDER
12336
	    OPEN package_versions_cur;
19008
	  FROM PACKAGE_PATCHES pp
12337
	    FETCH package_versions_cur INTO package_versions_rec;
19009
	 WHERE pp.PV_ID = nPvId
-
 
19010
	ORDER BY pp.INSTALL_ORDER;
-
 
19011
recPatch curPatch%ROWTYPE;
-
 
19012
 
12338
 
-
 
12339
	    IF package_versions_cur%NOTFOUND
19013
BEGIN
12340
	    THEN
19014
 
12341
 
19015
	 -- Delete Patch
12342
			-- Split current version in parts
19016
     DELETE
-
 
19017
       FROM PACKAGE_PATCHES pp
-
 
19018
      WHERE pp.PV_ID = nPvId
-
 
19019
        AND pp.PATCH_ID = nPatchId;
12343
	    	Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
19020
 
12344
 
19021
 
12345
 
19022
	-- Redo Install Order
12346
		    -- Automated built config
19023
    OPEN curPatch;
12347
			IF (cBuildType = 'A') THEN
-
 
12348
				sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;	-- Make sure that version is still unique
19024
	FETCH curPatch INTO recPatch;
12349
			END IF;
19025
 
12350
 
19026
	WHILE curPatch%FOUND
-
 
19027
	LOOP
-
 
19028
 
12351
 
-
 
12352
	        -- Packge version not found, hence rename it.
-
 
12353
	        UPDATE package_versions
-
 
12354
	           SET pkg_version = sPackageVersion,
-
 
12355
	               v_mm = SSV_MM,
-
 
12356
	               v_nmm = SSV_NMM,
19029
		UPDATE PACKAGE_PATCHES pp SET
12357
	               v_ext = SSV_EXT,
19030
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
12358
	               modified_stamp = ORA_SYSDATETIME,
-
 
12359
	               modifier_id = NNuser_id,
-
 
12360
				   build_type = cBuildType,
19031
		WHERE pp.PV_ID = nPvId
12361
				   pkg_label = NULL
19032
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
12362
	         WHERE pv_id = NNpv_id;
19033
 
12363
 
19034
		FETCH curPatch INTO recPatch;
-
 
19035
	END LOOP;
-
 
19036
 
12364
 
-
 
12365
			IF (cBuildType = 'A') THEN
-
 
12366
				sLabel := GET_AUTOMATED_LABEL( NNpv_id );
-
 
12367
				UPDATE PACKAGE_VERSIONS pv SET
-
 
12368
					pv.PKG_LABEL = sLabel
-
 
12369
		         WHERE pv_id = NNpv_id;
19037
	CLOSE curPatch;
12370
			END IF;
19038
 
12371
 
-
 
12372
			/* LOG ACTION */
-
 
12373
	      	Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version );
19039
 
12374
 
-
 
12375
	    ELSE
-
 
12376
	        -- Package version exists. Cannot proceed.
-
 
12377
	        errMessage := 'enum_MSG_VERSION_EXISTS';
19040
 
12378
 
-
 
12379
	    END IF;
19041
 
12380
 
19042
    /* LOG ACTION */
-
 
19043
    SELECT pv.PKG_VERSION INTO PatchVersion
-
 
19044
      FROM PACKAGE_VERSIONS pv
-
 
19045
     WHERE pv.PV_ID = nPatchId;
12381
	    CLOSE package_versions_cur;
19046
 
12382
 
19047
   	Log_Action ( nPvId, 'patch_remove', nUserId,
-
 
19048
   			     'Version: '|| PatchVersion );
12383
	END IF;
19049
 
12384
 
-
 
12385
 
-
 
12386
 
-
 
12387
 
19050
END Remove_Patch;
12388
END Rename_Package_Version;
19051
/
12389
/
19052
--------------------------------------------------------
12390
--------------------------------------------------------
19053
--  DDL for Procedure SET_PACKAGE_BUILD_ENV_TEMP
12391
--  DDL for Procedure RESET_IGNORE_WARNINGS
19054
--------------------------------------------------------
12392
--------------------------------------------------------
19055
 
12393
 
19056
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV_TEMP" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
12394
  CREATE OR REPLACE PROCEDURE "RESET_IGNORE_WARNINGS" ( sPvIdList IN VARCHAR2,
19057
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
-
 
19058
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
12395
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
19059
														 ) IS
-
 
19060
/* ---------------------------------------------------------------------------
12396
/* ---------------------------------------------------------------------------
19061
    Last Modified: Rupesh Solanki
-
 
19062
	Version: 3.0.1
12397
    Version: 5.0
19063
   --------------------------------------------------------------------------- */
12398
   --------------------------------------------------------------------------- */
19064
   
-
 
19065
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
-
 
19066
   BsId NUMBER;
-
 
19067
   HackBsId NUMBER;
-
 
19068
 
12399
 
-
 
12400
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
19069
 
12401
 
19070
BEGIN
12402
BEGIN
-
 
12403
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
19071
 
12404
 
19072
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
12405
    -- Remove Ignore Warnings
19073
 
-
 
19074
   -- Delete Current Build Env settings
12406
     DELETE
19075
   DELETE FROM PACKAGE_BUILD_ENV
12407
       FROM ignore_warnings
19076
   WHERE pv_id = nPvId;
12408
	  WHERE (rtag_id, pv_id, dpv_id) IN
19077
   
12409
	     (
19078
   -- Delet Current Package Build Info Settings
12410
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
19079
   DELETE FROM PACKAGE_BUILD_INFO
12411
	        FROM ignore_warnings igw,
19080
   WHERE pv_id = nPvId;
12412
	             package_versions dpv,
19081
 
-
 
19082
   -- Reset flag to N
12413
	             package_versions pv
19083
   UPDATE PACKAGE_VERSIONS SET
12414
	       WHERE igw.dpv_id = dpv.pv_id
19084
	   IS_BUILD_ENV_REQUIRED = 'N'
12415
	         AND igw.rtag_id = nRTagId
-
 
12416
	         AND dpv.pkg_id = pv.pkg_id
-
 
12417
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
-
 
12418
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
19085
   WHERE PV_ID = nPvId;
12419
         );
19086
 
12420
 
-
 
12421
END Reset_Ignore_Warnings;
-
 
12422
/
-
 
12423
--------------------------------------------------------
-
 
12424
--  DDL for Procedure RIPPLE_PACKAGE
-
 
12425
--------------------------------------------------------
19087
 
12426
 
19088
   -- Set new Build Env
12427
  CREATE OR REPLACE PROCEDURE "RIPPLE_PACKAGE" (
19089
   IF NOT sBuildEnvIdList IS NULL THEN
12428
        sPvIdList IN VARCHAR2,
19090
	FOR i IN 1..nBsCollector.COUNT
12429
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
19091
	LOOP   
-
 
19092
	
-
 
19093
	BsId := nBsCollector(i);
-
 
19094
	
-
 
19095
	IF nBuildStandard = 2 THEN
-
 
19096
	   IF BsId = 1 THEN
12430
        nUserId IN NUMBER
19097
	   	  HackBsId := 11;
-
 
19098
	   ELSE
12431
    ) IS
19099
	   	  HackBsId := 12;
-
 
19100
	   END IF;
-
 
19101
	   
-
 
19102
   	  -- Insert into PACKAGE_BUILD_ENV
-
 
19103
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
12432
/* ---------------------------------------------------------------------------
19104
	  SELECT nPvId AS PV_ID,
-
 
19105
	  		 be.BE_ID
12433
    Version: 4.1
19106
	    FROM BUILD_ENVIRONMENTS be
-
 
19107
	   WHERE be.BE_ID IN ( HackBsId );
-
 
19108
						 
-
 
19109
   	  -- Insert into PACKAGE_BUILD_INFO
-
 
19110
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
12434
   --------------------------------------------------------------------------- */
19111
	  SELECT nPvId AS PV_ID,
-
 
19112
	  		 be.BM_ID
-
 
19113
	    FROM BUILD_MACHINES be
-
 
19114
	   WHERE be.BM_ID IN ( BsId );						 
-
 
19115
 
12435
 
19116
	   -- Set flag to Y
-
 
19117
	   UPDATE PACKAGE_VERSIONS SET
-
 
19118
		   IS_BUILD_ENV_REQUIRED = 'Y'
-
 
19119
	   WHERE PV_ID = nPvId;	
-
 
19120
	
-
 
19121
	
-
 
19122
	ELSE
12436
BEGIN
19123
	
-
 
19124
   	  -- Insert into PACKAGE_BUILD_ENV
-
 
19125
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
-
 
19126
	  SELECT nPvId AS PV_ID,
-
 
19127
	  		 be.BE_ID
-
 
19128
	    FROM BUILD_ENVIRONMENTS be
-
 
19129
	   WHERE be.BE_ID IN ( BsId );
-
 
19130
						 
-
 
19131
   	  -- Insert into PACKAGE_BUILD_INFO
-
 
19132
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
-
 
19133
	  SELECT nPvId AS PV_ID,
-
 
19134
	  		 be.BM_ID
-
 
19135
	    FROM BUILD_MACHINES be
-
 
19136
	   WHERE be.BM_ID IN ( BsId );						 
-
 
19137
 
12437
 
19138
	   -- Set flag to Y
-
 
19139
	   UPDATE PACKAGE_VERSIONS SET
12438
    IF (sPvIdList IS NULL) THEN
19140
		   IS_BUILD_ENV_REQUIRED = 'Y'
12439
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
19141
	   WHERE PV_ID = nPvId;
-
 
19142
	   
-
 
19143
	END IF;  
12440
    END IF;
19144
	   
-
 
19145
	   
-
 
19146
	END LOOP;	   
-
 
19147
 
12441
 
-
 
12442
    -- Ripple Package
-
 
12443
    DELETE FROM DO_NOT_RIPPLE
-
 
12444
    WHERE RTAG_ID = nRtagId
-
 
12445
    AND PV_ID IN (
-
 
12446
        SELECT *
-
 
12447
        FROM THE (
-
 
12448
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
-
 
12449
            AS RELMGR_NUMBER_TAB_t )
-
 
12450
            FROM DUAL
-
 
12451
        )
19148
   END IF;
12452
    );
19149
 
12453
 
-
 
12454
    /* LOG ACTION */
-
 
12455
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
19150
 
12456
 
19151
END Set_Package_Build_Env_Temp;
12457
END Ripple_Package;
19152
/
12458
/
19153
--------------------------------------------------------
12459
--------------------------------------------------------
19154
--  DDL for Procedure UPDATE_RUNTIME_DEPENDENCY
12460
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS
19155
--------------------------------------------------------
12461
--------------------------------------------------------
19156
 
12462
 
19157
  CREATE OR REPLACE PROCEDURE "UPDATE_RUNTIME_DEPENDENCY" ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
12463
CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
19158
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
12464
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
19159
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
12465
                                                          NNuser_id IN NUMBER,
19160
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
12466
                                                          retPV_ID OUT NUMBER,
-
 
12467
                                                          nCloneFromPvId IN NUMBER DEFAULT NULL,
19161
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
12468
                                                          nBuildType IN CHAR DEFAULT 'M',
19162
													    NNuser_id IN NUMBER ) IS
12469
                                                          nChangeType IN CHAR DEFAULT 'F') IS
19163
/* ---------------------------------------------------------------------------
12470
/* ---------------------------------------------------------------------------
19164
    Version: 3.0.1
12471
    Version: 4.0
19165
   --------------------------------------------------------------------------- */
12472
   --------------------------------------------------------------------------- */
19166
 
12473
 
19167
    retRTD_ID	NUMBER;
12474
    parPkg_id   NUMBER;
19168
	CURSOR rtd_cur IS
12475
    parPv_id    NUMBER;
19169
	    SELECT pv.pkg_version, pkg.pkg_name
12476
    cloneFrom_pv_id NUMBER;
19170
		  FROM runtime_dependencies rtd,
12477
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
19171
		       package_versions pv,
12478
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
19172
			   packages pkg
12479
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
19173
		 WHERE rtd.rtd_id = pv.pv_id
12480
    spackageversion VARCHAR2 (4000);
-
 
12481
    
19174
		   AND pv.pkg_id = pkg.pkg_id
12482
    CURSOR packages_cur IS
19175
		   AND rtd.pv_id = NNpv_id
12483
        SELECT pkg_id FROM PACKAGES
19176
		   AND rtd.rtd_id = NNrtd_id;
12484
        WHERE pkg_name = SSpkg_name;
19177
	   rtd_rec rtd_cur%ROWTYPE;
12485
    packages_rec packages_cur%ROWTYPE;
19178
 
12486
 
19179
	CURSOR old_rtd_cur IS
-
 
19180
	    SELECT pv.pv_id
-
 
19181
		  FROM package_versions pv
12487
    CURSOR package_versions_cur IS
19182
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
-
 
19183
		 	   			 	    FROM package_versions rtdpv
12488
        SELECT pv_id FROM PACKAGE_VERSIONS
19184
							   WHERE rtdpv.pv_id = NNrtd_id )
12489
        WHERE pkg_id = parPkg_id
19185
		   AND pv.pkg_version = SSrtd_version;
12490
        AND pkg_version = SSpkg_version;
19186
	old_rtd_rec old_rtd_cur%ROWTYPE;
12491
    package_versions_rec package_versions_cur%ROWTYPE;
19187
 
12492
 
-
 
12493
    CURSOR clone_package_versions_cur IS
-
 
12494
        SELECT MAX(pv_id) AS pv_id
-
 
12495
          FROM PACKAGE_VERSIONS
-
 
12496
         WHERE pkg_id = parPkg_id
-
 
12497
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
-
 
12498
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
19188
 
12499
 
19189
BEGIN
12500
BEGIN
-
 
12501
    /* -------------------------------------------- */
-
 
12502
    /* Find if pkg_name exists and seed if required */
-
 
12503
    /* -------------------------------------------- */
-
 
12504
    OPEN packages_cur;
-
 
12505
    FETCH packages_cur INTO packages_rec;
19190
 
12506
 
19191
    -- Get current runtime dependency details
12507
    IF packages_cur%NOTFOUND
19192
	OPEN rtd_cur;
12508
    THEN
19193
    FETCH rtd_cur INTO rtd_rec;
12509
        /* INSERT into packages table */
19194
 
-
 
19195
 
-
 
19196
 
-
 
19197
 
-
 
19198
	IF rtd_rec.pkg_version != SSrtd_version THEN
-
 
19199
           -- Version has changed, hence create new runtime dependency --
12510
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
19200
	    /* NOTE: You must create new version as updating just a version will affect
-
 
19201
		        all packages using this runtime dependency and user does not expect that.
12511
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
19202
		        It is safer to create new version */
-
 
19203
		OPEN old_rtd_cur;
-
 
19204
		FETCH old_rtd_cur INTO old_rtd_rec;
-
 
19205
 
12512
 
-
 
12513
    ELSE
-
 
12514
        parPkg_id := packages_rec.pkg_id;
19206
 
12515
 
19207
		IF old_rtd_cur%NOTFOUND
-
 
19208
		THEN
12516
    END IF;
19209
			-- Version not found, hence Create New version --
-
 
19210
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
-
 
19211
 
12517
 
19212
			-- Update runtime dependency table --
-
 
19213
			UPDATE runtime_dependencies SET
-
 
19214
				   rtd_id = retRTD_ID,
-
 
19215
				   rtd_url = SSrtd_url,
-
 
19216
				   rtd_comments = SSrtd_comments
-
 
19217
			 WHERE pv_id = NNpv_id
12518
    CLOSE packages_cur;
19218
			   AND rtd_id = NNrtd_id;
-
 
19219
 
12519
 
19220
		ELSE
-
 
19221
			-- Update runtime dependency table --
-
 
19222
			UPDATE runtime_dependencies SET
-
 
19223
				   rtd_id = old_rtd_rec.pv_id,
-
 
19224
				   rtd_url = SSrtd_url,
-
 
19225
				   rtd_comments = SSrtd_comments
-
 
19226
			 WHERE pv_id = NNpv_id
-
 
19227
			   AND rtd_id = NNrtd_id;
-
 
19228
 
12520
 
-
 
12521
    /* ---------------------------------------------------- */
-
 
12522
    /* Find if package_version exists and seed if required  */
-
 
12523
    /* ---------------------------------------------------- */
19229
		END IF;
12524
    OPEN package_versions_cur;
-
 
12525
    FETCH package_versions_cur INTO package_versions_rec;
19230
 
12526
 
-
 
12527
    IF package_versions_cur%NOTFOUND
-
 
12528
    THEN
-
 
12529
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
19231
 
12530
 
-
 
12531
        /* Generate automated version Number */
-
 
12532
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
-
 
12533
        spackageversion := SSpkg_version;
-
 
12534
                
-
 
12535
        IF ( nBuildType = 'A' )
-
 
12536
        THEN
-
 
12537
            spackageversion := '(' || parPv_id || ')' || SSV_EXT;
19232
		CLOSE old_rtd_cur;
12538
        END If;
-
 
12539
        
-
 
12540
        /* LOG ACTION */
-
 
12541
        Log_Action ( parPv_id, 'new_version', NNuser_id,
-
 
12542
                     'New package version: '|| spackageversion );
19233
 
12543
 
19234
	ELSE
12544
        
19235
		--  Version has not changed, hence update everithing except	version --
12545
        /* Find similar pkg_name + ext to clone from */
19236
		UPDATE runtime_dependencies SET
12546
        OPEN clone_package_versions_cur;
19237
			   rtd_url = SSrtd_url,
-
 
19238
			   rtd_comments = SSrtd_comments
12547
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
19239
		 WHERE pv_id = NNpv_id
-
 
19240
		   AND rtd_id = NNrtd_id;
-
 
19241
 
12548
 
19242
 
12549
 
-
 
12550
        IF NOT clone_package_versions_rec.pv_id IS NULL
-
 
12551
        THEN
-
 
12552
            /* CLONE details from similar version  OR  from nCloneFromPvId */
-
 
12553
            IF ( NOT nCloneFromPvId IS NULL) THEN
-
 
12554
                cloneFrom_pv_id := nCloneFromPvId;
-
 
12555
            ELSE
-
 
12556
                cloneFrom_pv_id := clone_package_versions_rec.pv_id;
-
 
12557
            END IF;
19243
 
12558
 
-
 
12559
            -- Clone Package Version Details --
-
 
12560
            INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT,
-
 
12561
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable, ripple_field,change_type  )
-
 
12562
                SELECT parPv_id         AS pv_id,
-
 
12563
                       parPkg_id        AS pkg_id,
-
 
12564
                       spackageversion  AS pkg_version,
-
 
12565
                       'N'              AS dlocked,
-
 
12566
                       Ora_Sysdate      AS created_stamp,
-
 
12567
                       NNuser_id        AS creator_id,
-
 
12568
                       Ora_Sysdatetime  AS modified_stamp,
-
 
12569
                       NNuser_id        AS modifier_id,
-
 
12570
                       SSV_MM           AS V_MM,
-
 
12571
                       SSV_NMM          AS V_NMM,
-
 
12572
                       SSV_EXT          AS V_EXT,
-
 
12573
                       pv.src_path,
-
 
12574
                       pv.pv_description,
-
 
12575
                       pv.PV_OVERVIEW,
-
 
12576
                       cloneFrom_pv_id  AS LAST_PV_ID,
-
 
12577
                       pv.owner_id,
-
 
12578
                       nBuildType       AS BUILD_TYPE,
-
 
12579
                       pv.IS_BUILD_ENV_REQUIRED,
19244
	END IF;
12580
                       pv.BS_ID,
-
 
12581
                       pv.is_autobuildable,
-
 
12582
                       pv.IS_DEPLOYABLE, 
-
 
12583
                       pv.ripple_field,
-
 
12584
                       nChangeType       AS change_type
-
 
12585
                  FROM PACKAGE_VERSIONS pv
-
 
12586
                 WHERE pv.pv_id = cloneFrom_pv_id;
19245
 
12587
 
-
 
12588
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
19246
 
12589
 
19247
	CLOSE rtd_cur;
12590
        ELSE
-
 
12591
            /* BRAND NEW version + ext */
-
 
12592
            INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT, owner_id, LAST_PV_ID, BUILD_TYPE, ripple_field, change_type )
-
 
12593
            VALUES (
-
 
12594
                    parPv_id,
-
 
12595
                    parPkg_id,
-
 
12596
                    spackageversion,
-
 
12597
                    'N',
-
 
12598
                    Ora_Sysdate,
-
 
12599
                    NNuser_id,
-
 
12600
                    Ora_Sysdatetime,
-
 
12601
                    NNuser_id,
-
 
12602
                    SSV_MM,
-
 
12603
                    SSV_NMM,
-
 
12604
                    SSV_EXT,
-
 
12605
                    NNuser_id,
-
 
12606
                    parPv_id,
-
 
12607
                    nBuildType,
-
 
12608
                    'b',
-
 
12609
                    nChangeType
-
 
12610
                   );
19248
 
12611
 
19249
END Update_Runtime_Dependency;
-
 
19250
/
-
 
19251
--------------------------------------------------------
-
 
19252
--  DDL for Procedure SET_ADVISORY_RIPPLE
12612
        END IF;
19253
--------------------------------------------------------
-
 
19254
 
12613
 
19255
  CREATE OR REPLACE PROCEDURE "SET_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
-
 
19256
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
12614
        CLOSE clone_package_versions_cur;
19257
											 nUserId IN NUMBER ) IS
-
 
19258
/* ---------------------------------------------------------------------------
-
 
19259
    Version: 4.0
12615
        retPV_ID := parPv_id;
19260
   --------------------------------------------------------------------------- */
-
 
19261
 
12616
 
19262
BEGIN
12617
    ELSE
-
 
12618
        retPV_ID := package_versions_rec.pv_id;
19263
 
12619
 
19264
    -- Set Advisory Ripple Package
-
 
19265
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
-
 
19266
	VALUES (nRtagId, nPvId);
12620
    END IF;
19267
 
12621
 
19268
    /* LOG ACTION */
-
 
19269
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
-
 
19270
	
-
 
19271
	/*Rebuild_Environment(nRtagId);*/
12622
    CLOSE package_versions_cur;
19272
 
12623
 
19273
END Set_Advisory_Ripple;
12624
END Seed_Package_Names_Versions;
19274
/
12625
/
-
 
12626
 
19275
--------------------------------------------------------
12627
--------------------------------------------------------
19276
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS
12628
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS2
19277
--------------------------------------------------------
12629
--------------------------------------------------------
19278
 
12630
 
19279
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
12631
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS2" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
19280
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
12632
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
19281
                                                          NNuser_id IN NUMBER,
12633
                                                          NNuser_id IN NUMBER,
19282
                                                          retPV_ID OUT NUMBER,
12634
                                                          retPV_ID OUT NUMBER,
19283
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
12635
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
19284
/* ---------------------------------------------------------------------------
12636
/* ---------------------------------------------------------------------------
Line 19346... Line 12698...
19346
        Log_Action ( parPv_id, 'new_version', NNuser_id,
12698
        Log_Action ( parPv_id, 'new_version', NNuser_id,
19347
        			 'New package version: '|| SSpkg_version );
12699
        			 'New package version: '|| SSpkg_version );
19348
 
12700
 
19349
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
12701
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
19350
 
12702
 
19351
        /* Find similar pkg_name + ext to clone from */
-
 
19352
        OPEN clone_package_versions_cur;
-
 
19353
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
-
 
19354
 
12703
 
19355
 
12704
 
19356
        IF NOT clone_package_versions_rec.pv_id IS NULL
-
 
-
 
12705
 
19357
        THEN
12706
 
19358
            /* CLONE details from similar version  OR  from nCloneFromPvId */
12707
            /* CLONE details from similar version  OR  from nCloneFromPvId */
19359
			IF ( NOT nCloneFromPvId IS NULL) THEN
12708
			IF ( NOT nCloneFromPvId IS NULL) THEN
19360
            	cloneFrom_pv_id := nCloneFromPvId;
12709
            	cloneFrom_pv_id := nCloneFromPvId;
19361
			ELSE
12710
			ELSE
19362
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
12711
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
19363
			END IF;
12712
			END IF;
19364
 
12713
 
19365
            -- Clone Package Version Details --
12714
            -- Clone Package Version Details --
19366
            INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT,
12715
            INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT,
19367
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable, ripple_field  )
12716
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable, ripple_field )
19368
                SELECT parPv_id         AS pv_id,
12717
                SELECT parPv_id         AS pv_id,
19369
                       parPkg_id        AS pkg_id,
12718
                       parPkg_id        AS pkg_id,
19370
                       SSpkg_version    AS pkg_version,
12719
                       SSpkg_version    AS pkg_version,
19371
                       'N'              AS dlocked,
12720
                       'N'              AS dlocked,
19372
                       Ora_Sysdate      AS created_stamp,
12721
                       Ora_Sysdate      AS created_stamp,
Line 19381... Line 12730...
19381
                       pv.PV_OVERVIEW,
12730
                       pv.PV_OVERVIEW,
19382
                       cloneFrom_pv_id 	AS LAST_PV_ID,
12731
                       cloneFrom_pv_id 	AS LAST_PV_ID,
19383
                       pv.owner_id,
12732
                       pv.owner_id,
19384
					   pv.BUILD_TYPE,
12733
					   pv.BUILD_TYPE,
19385
					   pv.IS_BUILD_ENV_REQUIRED,
12734
					   pv.IS_BUILD_ENV_REQUIRED,
19386
					   pv.BS_ID,
12735
					   pv.bs_id,
19387
					   pv.is_autobuildable,
12736
					   pv.is_autobuildable,
19388
					   pv.IS_DEPLOYABLE, 
12737
					   pv.IS_DEPLOYABLE,
19389
					   pv.ripple_field
12738
					   pv.ripple_field
19390
                  FROM PACKAGE_VERSIONS pv
12739
                  FROM PACKAGE_VERSIONS pv
19391
                 WHERE pv.pv_id = cloneFrom_pv_id;
12740
                 WHERE pv.pv_id = cloneFrom_pv_id;
19392
 
12741
 
19393
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
12742
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
19394
 
12743
 
19395
        ELSE
-
 
19396
            /* BRAND NEW version + ext */
-
 
19397
            INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT, owner_id, LAST_PV_ID, BUILD_TYPE, ripple_field )
-
 
19398
        	VALUES (
-
 
19399
                    parPv_id,
-
 
19400
                    parPkg_id,
-
 
19401
                    SSpkg_version,
-
 
19402
                    'N',
-
 
19403
                    Ora_Sysdate,
-
 
19404
                    NNuser_id,
-
 
19405
                    Ora_Sysdatetime,
-
 
19406
                    NNuser_id,
-
 
19407
                    SSV_MM,
-
 
19408
                    SSV_NMM,
-
 
19409
                    SSV_EXT,
-
 
19410
                    NNuser_id,
-
 
19411
                    parPv_id,
-
 
19412
					'M',
-
 
19413
					'b'
-
 
19414
                   );
-
 
19415
 
-
 
19416
        END IF;
-
 
19417
 
-
 
19418
        CLOSE clone_package_versions_cur;
-
 
19419
        retPV_ID := parPv_id;
12744
        retPV_ID := parPv_id;
19420
 
12745
 
19421
    ELSE
12746
    ELSE
19422
        retPV_ID := package_versions_rec.pv_id;
12747
        retPV_ID := package_versions_rec.pv_id;
19423
 
12748
 
Line 19426... Line 12751...
19426
    CLOSE package_versions_cur;
12751
    CLOSE package_versions_cur;
19427
 
12752
 
19428
 
12753
 
19429
 
12754
 
19430
 
12755
 
19431
END Seed_Package_Names_Versions;
12756
END Seed_Package_Names_Versions2;
19432
/
12757
/
19433
--------------------------------------------------------
12758
--------------------------------------------------------
19434
--  DDL for Procedure RENAME_PACKAGE_VERSION
12759
--  DDL for Procedure SET_ADVISORY_RIPPLE
19435
--------------------------------------------------------
12760
--------------------------------------------------------
19436
 
12761
 
19437
  CREATE OR REPLACE PROCEDURE "RENAME_PACKAGE_VERSION" ( NNpv_id IN NUMBER,
12762
  CREATE OR REPLACE PROCEDURE "SET_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
19438
                                                     SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
12763
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
19439
													 cBuildType IN CHAR,
12764
											 nUserId IN NUMBER ) IS
19440
                                                     NNuser_id IN NUMBER,
-
 
19441
                                                     errMessage OUT VARCHAR2 ) IS
-
 
19442
/* ---------------------------------------------------------------------------
12765
/* ---------------------------------------------------------------------------
19443
    Version: 3.2
12766
    Version: 4.0
19444
   --------------------------------------------------------------------------- */
12767
   --------------------------------------------------------------------------- */
19445
 
12768
 
19446
    sPackageVersion VARCHAR2(4000);
-
 
19447
	sLabel VARCHAR2(4000) := NULL;
-
 
19448
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
-
 
19449
 
-
 
19450
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
-
 
19451
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
-
 
19452
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
-
 
19453
 
-
 
19454
    CURSOR package_versions_cur IS
-
 
19455
        SELECT pv_id
-
 
19456
     	  FROM package_versions
-
 
19457
     	 WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
-
 
19458
     	   AND pkg_version = SSpkg_version;
-
 
19459
    package_versions_rec package_versions_cur%ROWTYPE;
-
 
19460
 
-
 
19461
 
-
 
19462
BEGIN
12769
BEGIN
19463
 
12770
 
19464
    /* ---------------------------------------------------- */
12771
    -- Set Advisory Ripple Package
19465
    /* Find if package_version exists                       */
12772
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
19466
    /* ---------------------------------------------------- */
12773
	VALUES (nRtagId, nPvId);
19467
 
12774
 
19468
	errMessage := NULL;
12775
    /* LOG ACTION */
-
 
12776
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
-
 
12777
	
-
 
12778
	/*Rebuild_Environment(nRtagId);*/
19469
 
12779
 
-
 
12780
END Set_Advisory_Ripple;
-
 
12781
/
-
 
12782
--------------------------------------------------------
-
 
12783
--  DDL for Procedure SET_PACKAGE_BUILD_ENV
-
 
12784
--------------------------------------------------------
19470
 
12785
 
19471
	-- Get previous version
12786
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
19472
	SELECT pv.PKG_VERSION INTO OldPkgVersion
12787
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
-
 
12788
/* ---------------------------------------------------------------------------
19473
      FROM PACKAGE_VERSIONS pv
12789
    Last Modified: Rupesh Solanki
19474
     WHERE pv.PV_ID = NNpv_id;
12790
	Version: 3.0.1
-
 
12791
   --------------------------------------------------------------------------- */
19475
 
12792
 
19476
 
12793
 
19477
	sPackageVersion := SSpkg_version;
12794
BEGIN
19478
 
12795
 
-
 
12796
   -- Delete Current Build Env settings
-
 
12797
   DELETE FROM PACKAGE_BUILD_ENV
-
 
12798
   WHERE pv_id = nPvId;
-
 
12799
   
-
 
12800
   -- Delet Current Package Build Info Settings
-
 
12801
   DELETE FROM PACKAGE_BUILD_INFO
-
 
12802
   WHERE pv_id = nPvId;
19479
 
12803
 
-
 
12804
   -- Reset flag to N
19480
	IF OldPkgVersion != sPackageVersion THEN
12805
   UPDATE PACKAGE_VERSIONS SET
-
 
12806
	   IS_BUILD_ENV_REQUIRED = 'N'
-
 
12807
   WHERE PV_ID = nPvId;
19481
 
12808
 
19482
	    OPEN package_versions_cur;
-
 
19483
	    FETCH package_versions_cur INTO package_versions_rec;
-
 
19484
 
12809
 
-
 
12810
   -- Set new Build Env
-
 
12811
   IF NOT sBuildEnvIdList IS NULL THEN
19485
	    IF package_versions_cur%NOTFOUND
12812
   	  -- Insert into PACKAGE_BUILD_ENV
-
 
12813
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
-
 
12814
	  SELECT nPvId AS PV_ID,
19486
	    THEN
12815
	  		 be.BE_ID
-
 
12816
	    FROM BUILD_ENVIRONMENTS be
-
 
12817
	   WHERE be.BE_ID IN (
-
 
12818
	   		 		  	   SELECT *
-
 
12819
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
-
 
12820
	   		 		  	 );
-
 
12821
						 
-
 
12822
   	  -- Insert into PACKAGE_BUILD_INFO
-
 
12823
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
-
 
12824
	  SELECT nPvId AS PV_ID,
-
 
12825
	  		 be.BM_ID
-
 
12826
	    FROM BUILD_MACHINES be
-
 
12827
	   WHERE be.BM_ID IN (
-
 
12828
	   		 		  	   SELECT *
-
 
12829
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
-
 
12830
	   		 		  	 );						 
19487
 
12831
 
19488
			-- Split current version in parts
12832
	   -- Set flag to Y
19489
	    	Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
12833
	   UPDATE PACKAGE_VERSIONS SET
-
 
12834
		   IS_BUILD_ENV_REQUIRED = 'Y'
-
 
12835
	   WHERE PV_ID = nPvId;
19490
 
12836
 
-
 
12837
   END IF;
19491
 
12838
 
19492
		    -- Automated built config
-
 
19493
			IF (cBuildType = 'A') THEN
-
 
19494
				sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;	-- Make sure that version is still unique
-
 
19495
			END IF;
-
 
19496
 
12839
 
-
 
12840
END Set_Package_Build_Env;
-
 
12841
/
-
 
12842
--------------------------------------------------------
-
 
12843
--  DDL for Procedure SET_PACKAGE_BUILD_ENV_TEMP
-
 
12844
--------------------------------------------------------
19497
 
12845
 
19498
	        -- Packge version not found, hence rename it.
12846
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV_TEMP" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
19499
	        UPDATE package_versions
12847
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
19500
	           SET pkg_version = sPackageVersion,
12848
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
19501
	               v_mm = SSV_MM,
12849
														 ) IS
-
 
12850
/* ---------------------------------------------------------------------------
19502
	               v_nmm = SSV_NMM,
12851
    Last Modified: Rupesh Solanki
19503
	               v_ext = SSV_EXT,
12852
	Version: 3.0.1
19504
	               modified_stamp = ORA_SYSDATETIME,
12853
   --------------------------------------------------------------------------- */
-
 
12854
   
19505
	               modifier_id = NNuser_id,
12855
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
19506
				   build_type = cBuildType,
-
 
19507
				   pkg_label = NULL
12856
   BsId NUMBER;
19508
	         WHERE pv_id = NNpv_id;
12857
   HackBsId NUMBER;
19509
 
12858
 
19510
 
12859
 
19511
			IF (cBuildType = 'A') THEN
-
 
19512
				sLabel := GET_AUTOMATED_LABEL( NNpv_id );
-
 
19513
				UPDATE PACKAGE_VERSIONS pv SET
-
 
19514
					pv.PKG_LABEL = sLabel
-
 
19515
		         WHERE pv_id = NNpv_id;
-
 
19516
			END IF;
12860
BEGIN
19517
 
12861
 
19518
			/* LOG ACTION */
-
 
19519
	      	Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version );
12862
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
19520
 
12863
 
-
 
12864
   -- Delete Current Build Env settings
-
 
12865
   DELETE FROM PACKAGE_BUILD_ENV
-
 
12866
   WHERE pv_id = nPvId;
19521
	    ELSE
12867
   
19522
	        -- Package version exists. Cannot proceed.
12868
   -- Delet Current Package Build Info Settings
19523
	        errMessage := 'enum_MSG_VERSION_EXISTS';
12869
   DELETE FROM PACKAGE_BUILD_INFO
-
 
12870
   WHERE pv_id = nPvId;
19524
 
12871
 
-
 
12872
   -- Reset flag to N
-
 
12873
   UPDATE PACKAGE_VERSIONS SET
-
 
12874
	   IS_BUILD_ENV_REQUIRED = 'N'
19525
	    END IF;
12875
   WHERE PV_ID = nPvId;
19526
 
12876
 
19527
	    CLOSE package_versions_cur;
-
 
19528
 
12877
 
-
 
12878
   -- Set new Build Env
-
 
12879
   IF NOT sBuildEnvIdList IS NULL THEN
-
 
12880
	FOR i IN 1..nBsCollector.COUNT
-
 
12881
	LOOP   
-
 
12882
	
-
 
12883
	BsId := nBsCollector(i);
-
 
12884
	
-
 
12885
	IF nBuildStandard = 2 THEN
-
 
12886
	   IF BsId = 1 THEN
-
 
12887
	   	  HackBsId := 11;
-
 
12888
	   ELSE
-
 
12889
	   	  HackBsId := 12;
19529
	END IF;
12890
	   END IF;
-
 
12891
	   
-
 
12892
   	  -- Insert into PACKAGE_BUILD_ENV
-
 
12893
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
-
 
12894
	  SELECT nPvId AS PV_ID,
-
 
12895
	  		 be.BE_ID
-
 
12896
	    FROM BUILD_ENVIRONMENTS be
-
 
12897
	   WHERE be.BE_ID IN ( HackBsId );
-
 
12898
						 
-
 
12899
   	  -- Insert into PACKAGE_BUILD_INFO
-
 
12900
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
-
 
12901
	  SELECT nPvId AS PV_ID,
-
 
12902
	  		 be.BM_ID
-
 
12903
	    FROM BUILD_MACHINES be
-
 
12904
	   WHERE be.BM_ID IN ( BsId );						 
19530
 
12905
 
-
 
12906
	   -- Set flag to Y
-
 
12907
	   UPDATE PACKAGE_VERSIONS SET
-
 
12908
		   IS_BUILD_ENV_REQUIRED = 'Y'
-
 
12909
	   WHERE PV_ID = nPvId;	
-
 
12910
	
-
 
12911
	
-
 
12912
	ELSE
-
 
12913
	
-
 
12914
   	  -- Insert into PACKAGE_BUILD_ENV
-
 
12915
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
-
 
12916
	  SELECT nPvId AS PV_ID,
-
 
12917
	  		 be.BE_ID
-
 
12918
	    FROM BUILD_ENVIRONMENTS be
-
 
12919
	   WHERE be.BE_ID IN ( BsId );
-
 
12920
						 
-
 
12921
   	  -- Insert into PACKAGE_BUILD_INFO
-
 
12922
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
-
 
12923
	  SELECT nPvId AS PV_ID,
-
 
12924
	  		 be.BM_ID
-
 
12925
	    FROM BUILD_MACHINES be
-
 
12926
	   WHERE be.BM_ID IN ( BsId );						 
19531
 
12927
 
-
 
12928
	   -- Set flag to Y
-
 
12929
	   UPDATE PACKAGE_VERSIONS SET
-
 
12930
		   IS_BUILD_ENV_REQUIRED = 'Y'
-
 
12931
	   WHERE PV_ID = nPvId;
-
 
12932
	   
-
 
12933
	END IF;  
-
 
12934
	   
-
 
12935
	   
-
 
12936
	END LOOP;	   
19532
 
12937
 
-
 
12938
   END IF;
19533
 
12939
 
-
 
12940
 
19534
END Rename_Package_Version;
12941
END Set_Package_Build_Env_Temp;
19535
/
12942
/
19536
--------------------------------------------------------
12943
--------------------------------------------------------
19537
--  DDL for Procedure PAOLO_BUILD_TREE
12944
--  DDL for Procedure SET_TO_AUTOBUILDABLE
19538
--------------------------------------------------------
12945
--------------------------------------------------------
19539
 
12946
 
19540
  CREATE OR REPLACE PROCEDURE "PAOLO_BUILD_TREE" ( nRtag_id IN NUMBER ) IS
12947
  CREATE OR REPLACE PROCEDURE "SET_TO_AUTOBUILDABLE" (
-
 
12948
   nrtagid     IN   NUMBER,
-
 
12949
   spvidlist   IN   VARCHAR2
-
 
12950
)
-
 
12951
IS
-
 
12952
/******************************************************************************
-
 
12953
   NAME:       SET_TO_AUTOBUILDABLE
-
 
12954
   PURPOSE:
19541
 
12955
 
-
 
12956
   REVISIONS:
19542
    sessionNumber NUMBER := 0;
12957
   Ver        Date        Author           Description
-
 
12958
   ---------  ----------  ---------------  ------------------------------------
-
 
12959
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
-
 
12960
 
-
 
12961
   NOTES:
-
 
12962
 
19543
    iteration NUMBER := 1; 
12963
   Automatically available Auto Replace Keywords:
19544
    rowCnt NUMBER := 0;
12964
      Object Name:     SET_TO_AUTOBUILDABLE
19545
    maxIterations 	NUMBER := 50;
12965
      Sysdate:         15/12/2006
-
 
12966
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
-
 
12967
      Username:         (set in TOAD Options, Procedure Editor)
-
 
12968
      Table Name:       (set in the "New PL/SQL Object" dialog)
19546
	
12969
 
-
 
12970
******************************************************************************/
-
 
12971
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
-
 
12972
   PvId NUMBER;
19547
BEGIN
12973
BEGIN
19548
	
12974
 
-
 
12975
   npvidcollector := in_list_number2 (spvidlist);
19549
   
12976
   
19550
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
-
 
19551
    SELECT sessionNumber, iteration, rc.PV_ID
-
 
19552
      FROM RELEASE_CONTENT rc
-
 
19553
     WHERE rc.RTAG_ID = nRtag_id;
-
 
19554
     
-
 
19555
    iteration := iteration + 1;
-
 
19556
    LOOP
-
 
19557
        
-
 
19558
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
-
 
19559
		SELECT sessionNumber,     
-
 
19560
               iteration,
12977
   UPDATE package_versions
19561
               dep.DPV_ID
12978
      SET is_autobuildable = 'N'
19562
          FROM TEMP_TREE_BROWSE ttb,
12979
    WHERE pv_id IN (SELECT pv_id
19563
               PACKAGE_DEPENDENCIES dep
12980
                      FROM release_content
19564
         WHERE dep.PV_ID = ttb.PV_ID 
-
 
19565
           AND ttb.LEVEL_NUM = iteration - 1 
12981
                     WHERE rtag_id = nrtagid);
-
 
12982
 
19566
           
12983
  
19567
         MINUS  
-
 
19568
         
12984
   
19569
        SELECT sessionNumber, iteration, ttb.PV_ID
-
 
19570
          FROM TEMP_TREE_BROWSE ttb;   
12985
   	FOR i IN 1..npvidcollector.COUNT
19571
          
12986
	LOOP
19572
          
12987
		PvId := npvidcollector(i);
19573
         
-
 
19574
		
12988
 
19575
		rowCnt := SQL%ROWCOUNT;
12989
		UPDATE package_versions
19576
		IF rowCnt > 0 THEN
12990
		set is_autobuildable = 'Y'
19577
           iteration := iteration + 1;
12991
		where pv_id = PvId;
-
 
12992
 
19578
		END IF;
12993
	END LOOP;
19579
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
-
 
19580
    END LOOP; 
12994
   
19581
    
12995
   
19582
END PAOLO_Build_Tree;
12996
END set_to_autobuildable;
19583
/
12997
/
19584
--------------------------------------------------------
12998
--------------------------------------------------------
19585
--  DDL for Procedure UPDATE_UNIT_TEST_ACCEPTANCE
12999
--  DDL for Procedure SHIFT_INSTALL_ORDER
19586
--------------------------------------------------------
13000
--------------------------------------------------------
19587
 
13001
 
19588
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_ACCEPTANCE" ( pnTest_id IN NUMBER,
13002
  CREATE OR REPLACE PROCEDURE "SHIFT_INSTALL_ORDER" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
19589
														  pnPv_id IN NUMBER,
13003
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
19590
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
13004
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
19591
														  sAcceptanceDate IN VARCHAR2,
-
 
19592
														  sAcceptedBy IN NUMBER,
-
 
19593
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
-
 
19594
														  cUpdateAcceptedStateOnly IN CHAR
-
 
19595
					                                     ) IS
-
 
19596
/* ---------------------------------------------------------------------------
13005
/* ---------------------------------------------------------------------------
19597
    Version: 3.0.0
13006
    Version: 3.0
19598
   --------------------------------------------------------------------------- */
13007
   --------------------------------------------------------------------------- */
19599
 
13008
 
19600
 
-
 
-
 
13009
currInstallOrder NUMBER;
-
 
13010
FromInstallOrder NUMBER;
19601
 
13011
 
19602
BEGIN
13012
BEGIN
19603
	IF cUpdateAcceptedStateOnly = 'Y'
-
 
19604
	THEN
-
 
19605
		--- Update Accepted State Only ---
-
 
19606
		IF ( sAccepted IS NULL )
-
 
19607
		THEN
-
 
19608
			-- Clear alleptance
-
 
19609
			UPDATE UNIT_TESTS SET
-
 
19610
		           TEST_ACCEPTED = NULL,
-
 
19611
		           ACCEPTANCE_DATE = NULL,
-
 
19612
				   ACCEPTED_BY = NULL,
-
 
19613
				   REVIEW_COMMENTS = NULL
-
 
19614
		     WHERE TEST_ID = pnTest_id
-
 
19615
		       AND PV_ID = pnPv_id;
-
 
19616
 
13013
 
19617
	    ELSE
-
 
19618
			UPDATE UNIT_TESTS SET
-
 
19619
		           TEST_ACCEPTED = sAccepted,
13014
	 -- Get Current Install Order
19620
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
13015
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
19621
				   ACCEPTED_BY = sAcceptedBy
13016
       FROM PACKAGE_PATCHES pp
19622
		     WHERE TEST_ID = pnTest_id
13017
      WHERE pp.PV_ID = nPvId
19623
		       AND PV_ID = pnPv_id;
13018
        AND pp.PATCH_ID = nPatchId;
19624
 
13019
 
19625
		END IF;
-
 
19626
 
13020
 
-
 
13021
	 IF currInstallOrder > nToInstallOrder
-
 
13022
	 THEN
19627
 
13023
 
19628
	ELSE
-
 
19629
		--- Update Unit Test Acceptance ---
13024
		FromInstallOrder := nToInstallOrder;
19630
	    UPDATE UNIT_TESTS SET
-
 
19631
	           TEST_ACCEPTED = sAccepted,
-
 
19632
			   REVIEW_COMMENTS = sReviewComments,
-
 
19633
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
-
 
19634
			   ACCEPTED_BY = sAcceptedBy
-
 
19635
	     WHERE TEST_ID = pnTest_id
-
 
19636
	       AND PV_ID = pnPv_id;
-
 
19637
 
13025
 
-
 
13026
	    -- Shift others Up
-
 
13027
		UPDATE PACKAGE_PATCHES pp SET
-
 
13028
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
19638
	END IF;
13029
		 WHERE pp.PV_ID = nPvId
-
 
13030
           AND pp.PATCH_ID != nPatchId
-
 
13031
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
19639
 
13032
 
-
 
13033
 
-
 
13034
	 ELSIF currInstallOrder < nToInstallOrder
-
 
13035
	 THEN
-
 
13036
 
-
 
13037
		FromInstallOrder := currInstallOrder + 1;
-
 
13038
 
-
 
13039
		-- Shift others Down
-
 
13040
        UPDATE PACKAGE_PATCHES pp SET
-
 
13041
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
-
 
13042
		 WHERE pp.PV_ID = nPvId
-
 
13043
           AND pp.PATCH_ID != nPatchId
-
 
13044
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
-
 
13045
 
-
 
13046
	 END IF;
-
 
13047
 
-
 
13048
 
-
 
13049
	 -- Move Patch to new install order
-
 
13050
     UPDATE PACKAGE_PATCHES pp SET
-
 
13051
		    pp.INSTALL_ORDER = nToInstallOrder
-
 
13052
	  WHERE pp.PV_ID = nPvId
-
 
13053
	    AND pp.PATCH_ID = nPatchId;
-
 
13054
 
-
 
13055
 
19640
END Update_Unit_Test_Acceptance;
13056
END Shift_Install_Order;
19641
/
13057
/
19642
--------------------------------------------------------
13058
--------------------------------------------------------
19643
--  DDL for Procedure NEW_ADDITIONAL_NOTE
13059
--  DDL for Procedure SPLIT_VERSION
19644
--------------------------------------------------------
13060
--------------------------------------------------------
19645
 
13061
 
19646
  CREATE OR REPLACE PROCEDURE "NEW_ADDITIONAL_NOTE" ( pnPv_id IN NUMBER,
13062
  CREATE OR REPLACE PROCEDURE "SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
19647
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
-
 
19648
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
-
 
19649
                                                  pnUser_id IN NUMBER,
13063
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
19650
                                                  outErrCode OUT NUMBER
13064
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
19651
                                                 ) IS
13065
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
19652
/* ---------------------------------------------------------------------------
13066
/* ---------------------------------------------------------------------------
19653
    Version: 3.0.0
13067
    Version: 3.0.0
19654
   --------------------------------------------------------------------------- */
13068
   --------------------------------------------------------------------------- */
19655
 
13069
 
-
 
13070
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
19656
    newID NUMBER;
13071
        INDEX BY BINARY_INTEGER;
19657
 
13072
 
19658
	CURSOR an_duplicate_cur IS
-
 
19659
        SELECT note_id
-
 
19660
          FROM ADDITIONAL_NOTES
13073
    version_components VERSION_COMPONENTS_TYPE;
19661
         WHERE pv_id = pnPv_id
13074
    lastDot NUMBER := 0;
19662
           AND note_title = psNote_title;
13075
    currDot NUMBER := 0;
19663
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
-
 
19664
 
13076
 
19665
BEGIN
13077
BEGIN
19666
	outErrCode := -1;		-- Set default return error code to ERROR state
13078
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
19667
 
-
 
19668
	OPEN an_duplicate_cur;
-
 
19669
    FETCH an_duplicate_cur INTO an_duplicate_rec;
-
 
19670
 
13079
 
19671
    IF an_duplicate_cur%NOTFOUND
13080
    IF ( currDot > 0 )
19672
    THEN
13081
    THEN
19673
		/* No duplicate titles */
13082
        -- YES dot separator found --
19674
		-- Get new ID --
-
 
19675
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
13083
        SSV_EXT := GET_V_EXT( SSpkg_version );
19676
 
13084
 
19677
		--- Add Additional Note ---
13085
        IF NOT SSV_EXT IS NULL
-
 
13086
        THEN
19678
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
13087
            lastDot := currDot;
19679
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
13088
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
19680
		outErrCode := 0;		-- Set return to SUCCESS
-
 
19681
	END IF;
-
 
19682
 
13089
 
-
 
13090
            IF ( currDot > 0 )
-
 
13091
            THEN
-
 
13092
                -- XXXX.M.E
-
 
13093
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
-
 
13094
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
-
 
13095
            ELSE
-
 
13096
                -- XXXX.E
-
 
13097
                SSV_MM := NULL;
-
 
13098
                SSV_NMM := SSpkg_version;
-
 
13099
            END IF;
-
 
13100
 
-
 
13101
        ELSE
-
 
13102
            -- XXXX.M
-
 
13103
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
-
 
13104
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
-
 
13105
 
-
 
13106
        END IF;
-
 
13107
 
-
 
13108
    ELSE
-
 
13109
        -- NO dot separator found --
-
 
13110
        -- XXXXXX
-
 
13111
        SSV_MM  := NULL;
-
 
13112
        SSV_NMM := SSpkg_version;
19683
	CLOSE an_duplicate_cur;
13113
        SSV_EXT := NULL;
-
 
13114
 
-
 
13115
    END IF;
-
 
13116
 
19684
END New_Additional_Note;
13117
END Split_Version;
19685
/
13118
/
19686
--------------------------------------------------------
13119
--------------------------------------------------------
19687
--  DDL for Procedure INSERT_MULTIPLE_STICKY_NOTES
13120
--  DDL for Procedure SWITCH_REPRODUCIBLE_PACKAGE
19688
--------------------------------------------------------
13121
--------------------------------------------------------
19689
 
13122
 
19690
  CREATE OR REPLACE PROCEDURE "INSERT_MULTIPLE_STICKY_NOTES" IS
13123
  CREATE OR REPLACE PROCEDURE "SWITCH_REPRODUCIBLE_PACKAGE" (nPvId IN NUMBER, nUserId IN NUMBER)IS
19691
 
13124
Auto CHAR;
19692
/******************************************************************************
13125
/******************************************************************************
19693
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
13126
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
19694
   PURPOSE:    
13127
   PURPOSE:    
19695
 
13128
 
19696
   REVISIONS:
13129
   REVISIONS:
19697
   Ver        Date        Author           Description
13130
   Ver        Date        Author           Description
19698
   ---------  ----------  ---------------  ------------------------------------
13131
   ---------  ----------  ---------------  ------------------------------------
19699
   1.0        6/12/2006          1. Created this procedure.
13132
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
19700
 
13133
 
19701
   NOTES:
13134
   NOTES:
19702
 
13135
 
19703
   Automatically available Auto Replace Keywords:
13136
   Automatically available Auto Replace Keywords:
19704
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
13137
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
19705
      Sysdate:         6/12/2006
13138
      Sysdate:         14/12/2006
19706
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
13139
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
19707
      Username:         (set in TOAD Options, Procedure Editor)
13140
      Username:         (set in TOAD Options, Procedure Editor)
19708
      Table Name:       (set in the "New PL/SQL Object" dialog)
13141
      Table Name:       (set in the "New PL/SQL Object" dialog)
19709
 
13142
 
19710
******************************************************************************/
13143
******************************************************************************/
19711
 
-
 
19712
	CURSOR curInfo IS
-
 
19713
    SELECT PV_ID
-
 
19714
	FROM PACKAGE_BUILD_ENV
-
 
19715
	WHERE BE_ID IN (11, 12);
-
 
19716
    recInfo curInfo%ROWTYPE;
-
 
19717
	
-
 
19718
	
-
 
19719
BEGIN
13144
BEGIN
19720
 
13145
 
19721
	OPEN curInfo;
13146
	 SELECT IS_AUTOBUILDABLE into Auto
19722
    FETCH curInfo INTO recInfo;
13147
	 FROM PACKAGE_VERSIONS 
19723
	
-
 
19724
	WHILE curInfo%FOUND
13148
	 WHERE PV_ID = nPvId;
19725
	LOOP
-
 
19726
 
13149
 
-
 
13150
	 IF Auto = 'N' Then
-
 
13151
	 
19727
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
13152
	 	UPDATE PACKAGE_VERSIONS
-
 
13153
	 	SET IS_AUTOBUILDABLE = 'Y'
-
 
13154
	 	WHERE PV_ID = nPvId;
-
 
13155
	 
-
 
13156
	 
-
 
13157
	 	/* LOG ACTION */
19728
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
13158
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
19729
		
13159
	 
-
 
13160
	 Else
-
 
13161
	 	 
-
 
13162
		 UPDATE PACKAGE_VERSIONS
-
 
13163
		 SET IS_AUTOBUILDABLE = 'N'
19730
		FETCH curInfo INTO recInfo;
13164
		 WHERE PV_ID = nPvId;
-
 
13165
	 	 
-
 
13166
	 
-
 
13167
	 	 /* LOG ACTION */
-
 
13168
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
19731
		
13169
	 
19732
	END LOOP;
13170
	 End If;
-
 
13171
	 
-
 
13172
	 
19733
 
13173
 
19734
	CLOSE curInfo;
13174
	
19735
 
13175
 
19736
 
13176
 
19737
 
13177
 
19738
 
13178
 
19739
END INSERT_MULTIPLE_STICKY_NOTES;
13179
END SWITCH_REPRODUCIBLE_PACKAGE;
19740
/
13180
/
19741
--------------------------------------------------------
13181
--------------------------------------------------------
19742
--  DDL for Procedure TOUCH_RELEASE_BULK
13182
--  DDL for Procedure SYNC_PROJECTS_NEW_VERSION
19743
--------------------------------------------------------
13183
--------------------------------------------------------
19744
 
13184
 
19745
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE_BULK" ( nRtagIdList IN VARCHAR2 ) IS
13185
  CREATE OR REPLACE PROCEDURE "SYNC_PROJECTS_NEW_VERSION" ( nPv_id 				IN NUMBER,
-
 
13186
														  sSyncRtagsInList		IN VARCHAR2,
-
 
13187
				                                          nUser_id 				IN NUMBER ) IS
19746
/* ---------------------------------------------------------------------------
13188
/* ---------------------------------------------------------------------------
19747
    Version: 3.0
13189
    Version: 3.0.0
19748
   --------------------------------------------------------------------------- */
13190
   --------------------------------------------------------------------------- */
19749
 
13191
 
-
 
13192
	CURSOR sync_rtags_cur IS
-
 
13193
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
-
 
13194
		  FROM release_content rc,
-
 
13195
		  	   package_versions pv,
-
 
13196
		       package_versions opv
-
 
13197
		 WHERE rc.pv_id = pv.pv_id
-
 
13198
		   AND opv.pkg_id = pv.pkg_id
-
 
13199
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
-
 
13200
		   AND opv.pv_id = nPv_id
-
 
13201
		   AND rtag_id IN ( SELECT *
-
 
13202
		   	   		   	      FROM THE (
19750
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
13203
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
-
 
13204
					       		   	    FROM dual
-
 
13205
									   )
-
 
13206
						  );
-
 
13207
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
19751
 
13208
 
19752
BEGIN
13209
BEGIN
19753
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
-
 
19754
 
13210
 
19755
	 -- Touch Release for Rebuild
13211
	OPEN sync_rtags_cur;
19756
     UPDATE RELEASE_TAGS rt SET
13212
	FETCH sync_rtags_cur INTO sync_rtags_rec;
19757
     	rt.REBUILD_ENV = 'Y',
-
 
19758
        rt.REBUILD_STAMP = 0
-
 
19759
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
-
 
19760
 
13213
 
-
 
13214
	WHILE sync_rtags_cur%FOUND
-
 
13215
	LOOP
-
 
13216
		DELETE FROM RELEASE_CONTENT
-
 
13217
		 WHERE rtag_id = sync_rtags_rec.rtag_id
-
 
13218
	       AND pv_id = sync_rtags_rec.pv_id;
19761
 
13219
 
-
 
13220
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
-
 
13221
	   		   VALUES ( sync_rtags_rec.rtag_id,
-
 
13222
		       		  	nPv_id,
-
 
13223
						sync_rtags_rec.BASE_VIEW_ID,
-
 
13224
	           			Ora_Sysdate,
-
 
13225
	           			nUser_id,
-
 
13226
						0
-
 
13227
	      	   		   );
-
 
13228
 
-
 
13229
-- 		UPDATE RELEASE_CONTENT
-
 
13230
-- 	       SET pv_id = nPv_id,
-
 
13231
-- 	           insert_stamp = Ora_Sysdate,
-
 
13232
-- 	           insertor_id = nUser_id
-
 
13233
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
-
 
13234
-- 	       AND pv_id = sync_rtags_rec.pv_id;
-
 
13235
 
-
 
13236
		FETCH sync_rtags_cur INTO sync_rtags_rec;
-
 
13237
	END LOOP;
-
 
13238
 
-
 
13239
	CLOSE sync_rtags_cur;
-
 
13240
 
19762
END Touch_Release_Bulk;
13241
END Sync_Projects_New_Version;
19763
/
13242
/
19764
--------------------------------------------------------
13243
--------------------------------------------------------
19765
--  DDL for Procedure UPDATE_DEPRECATION_STATE
13244
--  DDL for Procedure TEST
19766
--------------------------------------------------------
13245
--------------------------------------------------------
19767
 
13246
 
19768
  CREATE OR REPLACE PROCEDURE "UPDATE_DEPRECATION_STATE" (nnrtag_id IN NUMBER) AS
13247
  CREATE OR REPLACE PROCEDURE "TEST" 
-
 
13248
IS
19769
 
13249
 
19770
recno NUMBER;
13250
proc_id NUMBER;
-
 
13251
/******************************************************************************
-
 
13252
   NAME:       DELETE_DO_NOT_RIPPLE
-
 
13253
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
-
 
13254
               IS RELEASED
19771
 
13255
 
19772
CURSOR deprecate_cur IS
13256
   REVISIONS:
-
 
13257
   Ver        Date        Author           Description
-
 
13258
   ---------  ----------  ---------------  ------------------------------------
-
 
13259
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
19773
 
13260
 
19774
SELECT rc.pv_id
13261
   NOTES:
19775
FROM release_content rc
-
 
19776
WHERE rtag_id = nnrtag_id
-
 
19777
 AND deprecated_state IN(7);
-
 
19778
 
13262
 
19779
deprecate_rec deprecate_cur % rowtype;
13263
   Automatically available Auto Replace Keywords:
-
 
13264
      Object Name:     DELETE_DO_NOT_RIPPLE
-
 
13265
      Sysdate:         21/04/2006
-
 
13266
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
-
 
13267
      Username:         (set in TOAD Options, Procedure Editor)
-
 
13268
      Table Name:       (set in the "New PL/SQL Object" dialog)
19780
 
13269
 
-
 
13270
******************************************************************************/
-
 
13271
   CURSOR ripple_cur
-
 
13272
   IS
-
 
13273
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
-
 
13274
 
-
 
13275
   ripple_rec   ripple_cur%ROWTYPE;
19781
BEGIN
13276
BEGIN
-
 
13277
   OPEN ripple_cur;
19782
 
13278
 
19783
  OPEN deprecate_cur;
13279
   FETCH ripple_cur
-
 
13280
    INTO ripple_rec;
19784
 
13281
 
19785
  FETCH deprecate_cur
13282
   WHILE ripple_cur%FOUND
19786
  INTO deprecate_rec;
13283
   LOOP
-
 
13284
   
-
 
13285
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
-
 
13286
   
-
 
13287
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
-
 
13288
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
19787
 
13289
 
19788
  WHILE deprecate_cur % FOUND
13290
      FETCH ripple_cur
-
 
13291
       INTO ripple_rec;
19789
  LOOP
13292
   END LOOP;
-
 
13293
END test;
-
 
13294
/
-
 
13295
--------------------------------------------------------
-
 
13296
--  DDL for Procedure TEST_MARCO
-
 
13297
--------------------------------------------------------
19790
 
13298
 
19791
    SELECT COUNT(*)
-
 
19792
    INTO recno
-
 
19793
    FROM package_dependencies pd,
13299
  CREATE OR REPLACE PROCEDURE "TEST_MARCO" IS
19794
      release_content rc
-
 
19795
    WHERE pd.pv_id = deprecate_rec.pv_id
13300
/******************************************************************************
19796
     AND rc.pv_id = pd.dpv_id
13301
   NAME:       TEST_MARCO
19797
     AND rc.rtag_id = nnrtag_id
13302
   PURPOSE:    
19798
     AND rc.deprecated_state IN(6,   7);
-
 
19799
 
13303
 
19800
    IF recno = 0 THEN
13304
   REVISIONS:
-
 
13305
   Ver        Date        Author           Description
-
 
13306
   ---------  ----------  ---------------  ------------------------------------
-
 
13307
   1.0        2/03/2007          1. Created this procedure.
19801
 
13308
 
19802
      UPDATE release_content
13309
   NOTES:
19803
      SET pkg_id = NULL, deprecated_state = NULL
-
 
19804
      WHERE pv_id = deprecate_rec.pv_id
-
 
19805
       AND rtag_id = nnrtag_id;
-
 
19806
 
13310
 
-
 
13311
   Automatically available Auto Replace Keywords:
19807
    END IF;
13312
      Object Name:     TEST_MARCO
-
 
13313
      Sysdate:         2/03/2007
-
 
13314
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
-
 
13315
      Username:         (set in TOAD Options, Procedure Editor)
-
 
13316
      Table Name:       (set in the "New PL/SQL Object" dialog)
19808
 
13317
 
19809
    FETCH deprecate_cur
-
 
19810
    INTO deprecate_rec;
13318
******************************************************************************/
19811
  END LOOP;
-
 
19812
 
13319
 
19813
END;
13320
parPv_id    NUMBER;
19814
/
13321
parPkg_id   NUMBER;
19815
--------------------------------------------------------
13322
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
19816
--  DDL for Procedure IGNORE_DEPENDENCY_WARNINGS
13323
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
19817
--------------------------------------------------------
13324
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
-
 
13325
BEGIN
19818
 
13326
 
19819
  CREATE OR REPLACE PROCEDURE "IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
-
 
19820
                                                         nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
-
 
19821
                                                         sIgnoreIdList IN VARCHAR2,
-
 
19822
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
-
 
19823
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
-
 
19824
/* ---------------------------------------------------------------------------
-
 
19825
    Updates the ignore warnings table - this is really two functions in one.
13327
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
19826
 
13328
 
19827
    1) One function updates the table based on a list of dependent PV_IDs and a parent PV_ID
-
 
19828
       and is called from the RM website's SetIgnoreWarnings() function after a user changes
-
 
19829
       the ignore warnings checkboxes and submits the form.
-
 
19830
       This can (at time of writing this) only be done within releases that are not build
-
 
19831
       daemon enabled. The ignore warnings feature is a feature we would like to see the end
-
 
19832
       of in an ideal world.
13329
        /* LOG ACTION */
19833
       The SetIgnoreWarnings() website function now calls Touch_Release so there is no need to
13330
        Log_Action ( parPv_id, 'new_version', 3764,
19834
       do so in this stored procedure, thereby making this stored procedure much more precise in
-
 
19835
       that it only updates the ignore_warnings table (action log table too although that is just
-
 
19836
       a log and doesn't affect any subsequent business rules behaviour) and it cares nothing
-
 
19837
       about website presentation layer states, etc.
13331
        			 'New package version: '|| parPv_id || '.' );
19838
 
13332
 
19839
    2) The other function updates the table for out of sync dependencies that have in fact
13333
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
-
 
13334
		
-
 
13335
     -- Clone Package Version Details --
-
 
13336
            INSERT INTO PACKAGE_VERSIONS ( pv_id, pkg_id, pkg_version, dlocked, created_stamp, creator_id, modified_stamp, modifier_id, V_MM, V_NMM, V_EXT,
-
 
13337
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
19840
       been satisfied by patches made to some other product in the release.
13338
                SELECT parPv_id         AS pv_id,
19841
       This seems to be a seldom used feature in current projects.
13339
                       pv.pkg_id        AS pkg_id,
19842
       It is probably the most often taken path through this function given that it occurs when
13340
                       parPv_id || '.'    AS pkg_version,
-
 
13341
                       'N'              AS dlocked,
19843
       this function is called from Rebuild_Environment, and that is called in many circumstances
13342
                       Ora_Sysdate      AS created_stamp,
19844
       from the RM website whenever the seems to be a possibility that the state of a package
13343
                       3764        AS creator_id,
19845
       in a release might have changed and therefore affects the state of other packages in
13344
                       Ora_Sysdatetime  AS modified_stamp,
-
 
13345
                       3764        AS modifier_id,
-
 
13346
                       SSV_MM          AS V_MM,
-
 
13347
                       SSV_NMM         AS V_NMM,
-
 
13348
                       SSV_EXT          AS V_EXT,
-
 
13349
                       pv.src_path,
-
 
13350
                       pv.pv_description,
-
 
13351
                       pv.PV_OVERVIEW,
-
 
13352
                       112982 	AS LAST_PV_ID,
-
 
13353
                       pv.owner_id,
-
 
13354
					   pv.BUILD_TYPE,
-
 
13355
					   pv.IS_BUILD_ENV_REQUIRED,
-
 
13356
					   pv.bs_id,
19846
       that same release.
13357
					   pv.is_autobuildable,
-
 
13358
					   pv.IS_DEPLOYABLE
-
 
13359
                  FROM PACKAGE_VERSIONS pv
-
 
13360
                 WHERE pv.pv_id = 112982;		
-
 
13361
		
-
 
13362
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
19847
 
13363
 
19848
    Parameter Usage:
-
 
19849
                        when called from    | when called from
-
 
19850
                        Rebuild_Environment | SetIgnoreWarnings()
-
 
19851
                        stored procedure.   | in the Website
-
 
19852
      --------------------------------------+----------------------------
-
 
19853
      nRtagId           RTAG_ID             | RTAG_ID
-
 
19854
      nPvId             NULL                | PV_ID
-
 
19855
      sIgnoreIdList     NULL                | list of dependent PV_ID's
-
 
19856
      bDoPatchIgnore    TRUE                | FALSE
-
 
19857
      nUserId           NULL                | current user ID
-
 
19858
   --------------------------------------------------------------------------- */
-
 
19859
 
13364
 
-
 
13365
END TEST_MARCO;
-
 
13366
/
19860
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
13367
--------------------------------------------------------
19861
ReleaseLocation VARCHAR2(4000);
13368
--  DDL for Procedure TOUCH_RELEASE
19862
ActionTypeId NUMBER;
13369
--------------------------------------------------------
19863
 
13370
 
-
 
13371
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE" ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
-
 
13372
/* ---------------------------------------------------------------------------
-
 
13373
    The purpose of this procedure is to flag in the database that the specified
-
 
13374
    release has changed to an extent that the procedure Rebuild_Environment
-
 
13375
    should be called at the next opportunity in order that the package state
-
 
13376
    icons are all re-evaluated.
-
 
13377
    The package state icons are controlled using the pkg_state column in the
-
 
13378
    release_content table, and Rebuild_Environment updates that column.
-
 
13379
    It will be through user action in the website that Rebuild_Environment will
-
 
13380
    be called, for example:
-
 
13381
      a) when setting/clearing ignore warnings checkboxes
-
 
13382
      b) when someone opens a page upon a rtag/pvid and rebuild_en flag is set
-
 
13383
      c) when someone opens the build order report form
-
 
13384
      d) when someone modifies dependencies of a package
-
 
13385
      + other scenarios (?)
-
 
13386
   --------------------------------------------------------------------------- */
19864
BEGIN
13387
BEGIN
-
 
13388
   -- Touch Release for Rebuild
-
 
13389
   UPDATE RELEASE_TAGS rt SET
-
 
13390
          rt.REBUILD_ENV = 'Y',
-
 
13391
          rt.REBUILD_STAMP = 0
-
 
13392
    WHERE rt.RTAG_ID = nRtagId;
19865
 
13393
 
19866
   IF (NOT bDoPatchIgnore) THEN
13394
END Touch_Release;
19867
      /* Manual Ignore Warnings - this execution path is the one taken when called from SetIgnoreWarnings() in the Website
-
 
19868
      */
13395
/
-
 
13396
--------------------------------------------------------
19869
      oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
13397
--  DDL for Procedure TOUCH_RELEASE_BULK
-
 
13398
--------------------------------------------------------
19870
 
13399
 
-
 
13400
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE_BULK" ( nRtagIdList IN VARCHAR2 ) IS
-
 
13401
/* ---------------------------------------------------------------------------
-
 
13402
    Version: 3.0
-
 
13403
   --------------------------------------------------------------------------- */
19871
 
13404
 
19872
      /* Log Action */
-
 
19873
      -- Get Release Location
-
 
19874
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
13405
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
19875
        FROM PROJECTS proj,
-
 
19876
             RELEASE_TAGS rt
-
 
19877
       WHERE rt.PROJ_ID = proj.PROJ_ID
-
 
19878
         AND rt.RTAG_ID = nRtagId;
-
 
19879
 
13406
 
19880
      -- Get Action Type Id for IGNORE_ON
-
 
19881
      SELECT act.ACTTYPE_ID INTO ActionTypeId
-
 
19882
        FROM ACTION_TYPE act
13407
BEGIN
19883
       WHERE act.NAME = 'ignore_on';
13408
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
19884
 
13409
 
19885
      -- Get Ignored (Current MINUS Old)
13410
	 -- Touch Release for Rebuild
19886
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
-
 
19887
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
-
 
19888
        FROM (
-
 
19889
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
-
 
19890
                FROM PACKAGE_VERSIONS pv
-
 
19891
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
-
 
19892
              MINUS
-
 
19893
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
-
 
19894
                FROM IGNORE_WARNINGS igw
-
 
19895
               WHERE igw.RTAG_ID = nRtagId
-
 
19896
                 AND igw.PV_ID = nPvId
-
 
19897
             ) qry,
-
 
19898
             PACKAGE_VERSIONS pv,
-
 
19899
             PACKAGES pkg,
-
 
19900
             RELEASE_CONTENT rc,
13411
     UPDATE RELEASE_TAGS rt SET
19901
             PACKAGE_VERSIONS rpv
-
 
19902
       WHERE pv.PKG_ID = pkg.PKG_ID
13412
     	rt.REBUILD_ENV = 'Y',
19903
         AND rc.RTAG_ID = nRtagId
13413
        rt.REBUILD_STAMP = 0
19904
         AND rc.PV_ID = rpv.PV_ID
-
 
19905
         AND rpv.PKG_ID = pv.PKG_ID
-
 
19906
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
13414
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
19907
         AND qry.DPV_ID = pv.PV_ID;
-
 
19908
 
13415
 
19909
 
13416
 
19910
      -- Get Action Type Id for IGNORE_OFF
13417
END Touch_Release_Bulk;
-
 
13418
/
19911
      SELECT act.ACTTYPE_ID INTO ActionTypeId
13419
--------------------------------------------------------
19912
        FROM ACTION_TYPE act
13420
--  DDL for Procedure TO_INSERT_VTREE_ID
19913
       WHERE act.NAME = 'ignore_off';
13421
--------------------------------------------------------
19914
 
13422
 
19915
      -- Get UnIgnored (Old MINUS Current)
-
 
19916
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
-
 
19917
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
-
 
19918
        FROM (
-
 
19919
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
13423
  CREATE OR REPLACE PROCEDURE "TO_INSERT_VTREE_ID" IS
19920
                FROM IGNORE_WARNINGS igw
-
 
19921
               WHERE igw.RTAG_ID = nRtagId
-
 
19922
                 AND igw.PV_ID = nPvId
-
 
19923
              MINUS
-
 
19924
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
-
 
19925
                FROM PACKAGE_VERSIONS pv
-
 
19926
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
-
 
19927
             ) qry,
-
 
19928
             PACKAGE_VERSIONS pv,
-
 
19929
             PACKAGES pkg,
-
 
19930
             RELEASE_CONTENT rc,
-
 
19931
             PACKAGE_VERSIONS rpv
-
 
19932
       WHERE pv.PKG_ID = pkg.PKG_ID
-
 
19933
         AND rc.RTAG_ID = nRtagId
-
 
19934
         AND rc.PV_ID = rpv.PV_ID
-
 
19935
         AND rpv.PKG_ID = pv.PKG_ID
-
 
19936
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
-
 
19937
         AND qry.DPV_ID = pv.PV_ID;
-
 
19938
 
13424
 
-
 
13425
/******************************************************************************
-
 
13426
   NAME:       TO_INSERT_VTREE_ID
-
 
13427
   PURPOSE:    
19939
 
13428
 
19940
      -- Delete Current Ignore Warnings
-
 
19941
      DELETE
13429
   REVISIONS:
19942
        FROM IGNORE_WARNINGS igw
13430
   Ver        Date        Author           Description
19943
       WHERE igw.RTAG_ID = nRtagId
13431
   ---------  ----------  ---------------  ------------------------------------
19944
         AND igw.PV_ID = nPvId
-
 
19945
         AND igw.IS_PATCH_IGNORE IS NULL;
13432
   1.0        2/02/2007          1. Created this procedure.
19946
 
13433
 
-
 
13434
   NOTES:
19947
 
13435
 
19948
      IF (oIgnoreIdCollector.COUNT > 0) THEN
13436
   Automatically available Auto Replace Keywords:
19949
         -- Insert Ignore Warnings
13437
      Object Name:     TO_INSERT_VTREE_ID
19950
         INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
-
 
19951
         SELECT nRtagId,
-
 
19952
                nPvId,
13438
      Sysdate:         2/02/2007
19953
                pv.PV_ID AS DPV_ID
13439
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
19954
           FROM PACKAGE_VERSIONS pv
13440
      Username:         (set in TOAD Options, Procedure Editor)
19955
          WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
13441
      Table Name:       (set in the "New PL/SQL Object" dialog)
19956
      END IF;
-
 
19957
 
13442
 
19958
   ELSE
-
 
19959
      /* Patch Ignore Warnings - this execution path is the one taken when called from the Rebuild_Environment stored procedure */
13443
******************************************************************************/
-
 
13444
VTreeId NUMBER;																			  																	   
19960
 
13445
 
19961
      -- Delete Current Patch Ignore Warnings
-
 
19962
      DELETE
-
 
19963
        FROM IGNORE_WARNINGS igw
-
 
19964
       WHERE igw.RTAG_ID = nRtagId
-
 
19965
         AND igw.IS_PATCH_IGNORE = 'Y';
-
 
19966
 
13446
 
-
 
13447
	CURSOR curInfo IS
-
 
13448
    SELECT RTAG_ID
-
 
13449
	FROM RELEASE_TAGS
-
 
13450
	WHERE VTREE_ID IS NULL;
-
 
13451
    recInfo curInfo%ROWTYPE;
-
 
13452
	
-
 
13453
	
-
 
13454
BEGIN
19967
 
13455
 
19968
      -- Delete Manual Ignores that need to be Patch Ignores
-
 
19969
      DELETE
-
 
19970
        FROM IGNORE_WARNINGS igw
-
 
19971
       WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
-
 
19972
             (
13456
	OPEN curInfo;
19973
              SELECT DISTINCT
-
 
19974
                     nRtagId,
-
 
19975
                     err.PV_ID,
13457
    FETCH curInfo INTO recInfo;
19976
                     err.ERR_DPV AS DPV_ID
-
 
-
 
13458
	
19977
               FROM  (
13459
	WHILE curInfo%FOUND
19978
                      /* Full Release Contents used for reference*/
-
 
19979
                      SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
-
 
19980
                        FROM release_content rel, package_versions rpv
-
 
19981
                       WHERE rel.pv_id = rpv.pv_id
-
 
19982
                         AND rtag_id = nRtagId
-
 
19983
                     ) frc,
-
 
19984
                     (
-
 
19985
                      /* DPV_IDs not fount in release*/
-
 
19986
                      SELECT dep.pv_id, dep.dpv_id AS err_dpv
-
 
19987
                        FROM package_dependencies dep
-
 
19988
                       WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
-
 
19989
                         AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
-
 
19990
                     ) err,
-
 
19991
                     (
13460
	LOOP
19992
                      SELECT DISTINCT pp.PV_ID, dep.DPV_ID
13461
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
19993
                        FROM PACKAGE_PATCHES pp,
-
 
19994
                             PACKAGE_DEPENDENCIES dep,
-
 
19995
                             RELEASE_CONTENT rc
-
 
19996
                       WHERE rc.RTAG_ID = nRtagId
-
 
19997
                         AND rc.PV_ID = pp.PV_ID
-
 
19998
                         AND dep.PV_ID = pp.PATCH_ID
-
 
19999
                     ) pp,
-
 
20000
                     package_versions errpkg,
-
 
20001
                     package_versions errpv
-
 
20002
               WHERE err.err_dpv = errpv.pv_id
-
 
20003
                 AND errpv.pkg_id = frc.pkg_id(+)
-
 
20004
                 AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
-
 
20005
                 AND err.pv_id = errpkg.pv_id
-
 
20006
                 AND err.PV_ID = pp.PV_ID
-
 
20007
                 AND frc.PV_ID = pp.DPV_ID
-
 
20008
             );
-
 
20009
 
13462
 
20010
      /*
13463
		UPDATE RELEASE_TAGS
20011
      ---------------------------------------------------
13464
		SET VTREE_ID = VTreeId
20012
      --  Make sure that select statement above and below are same
13465
		WHERE RTAG_ID = recInfo.RTAG_ID;
20013
      ---------------------------------------------------
-
 
20014
      */
-
 
20015
 
13466
 
20016
      -- Insert Patch Ignores
13467
		FETCH curInfo INTO recInfo;
20017
      INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
-
 
20018
      SELECT DISTINCT
-
 
20019
             nRtagId,
-
 
20020
             err.PV_ID,
-
 
20021
             err.ERR_DPV AS DPV_ID,
-
 
20022
             'Y'
-
 
20023
        FROM (
13468
	END LOOP;
20024
              /* Full Release Contents used for reference*/
-
 
20025
              SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
-
 
20026
                FROM release_content rel, package_versions rpv
-
 
20027
               WHERE rel.pv_id = rpv.pv_id
-
 
20028
                 AND rtag_id = nRtagId
-
 
20029
             ) frc,
-
 
20030
             (
-
 
20031
               /* DPV_IDs not fount in release*/
-
 
20032
               SELECT dep.pv_id, dep.dpv_id AS err_dpv
-
 
20033
                 FROM package_dependencies dep
-
 
20034
                WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
-
 
20035
                  AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
-
 
20036
             ) err,
-
 
20037
             (
-
 
20038
              SELECT DISTINCT pp.PV_ID, dep.DPV_ID
-
 
20039
                FROM PACKAGE_PATCHES pp,
-
 
20040
                     PACKAGE_DEPENDENCIES dep,
-
 
20041
                     RELEASE_CONTENT rc
-
 
20042
               WHERE rc.RTAG_ID = nRtagId
-
 
20043
                 AND rc.PV_ID = pp.PV_ID
-
 
20044
                 AND dep.PV_ID = pp.PATCH_ID
-
 
20045
             ) pp,
-
 
20046
             package_versions errpkg,
-
 
20047
             package_versions errpv
-
 
20048
       WHERE err.err_dpv = errpv.pv_id
-
 
20049
         AND errpv.pkg_id = frc.pkg_id(+)
-
 
20050
         AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
-
 
20051
         AND err.pv_id = errpkg.pv_id
-
 
20052
         AND err.PV_ID = pp.PV_ID
-
 
20053
         AND frc.PV_ID = pp.DPV_ID;
-
 
20054
 
13469
 
20055
    END IF;
13470
	CLOSE curInfo;
20056
 
13471
 
20057
END Ignore_Dependency_Warnings;
13472
END TO_INSERT_VTREE_ID;
20058
/
13473
/
20059
--------------------------------------------------------
13474
--------------------------------------------------------
20060
--  DDL for Procedure UNDEPRECATE_PACKAGE
13475
--  DDL for Procedure UNDEPRECATE_PACKAGE
20061
--------------------------------------------------------
13476
--------------------------------------------------------
20062
 
13477
 
Line 20181... Line 13596...
20181
				 									 
13596
				 									 
20182
 
13597
 
20183
END Undeprecate_Package;
13598
END Undeprecate_Package;
20184
/
13599
/
20185
--------------------------------------------------------
13600
--------------------------------------------------------
20186
--  DDL for Procedure REMOVE_PACKAGE_INTEREST
13601
--  DDL for Procedure UNLOCK_PACKAGE
20187
--------------------------------------------------------
13602
--------------------------------------------------------
20188
 
13603
 
20189
  CREATE OR REPLACE PROCEDURE "REMOVE_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
13604
  CREATE OR REPLACE PROCEDURE "UNLOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
-
 
13605
											 nUserId IN NUMBER ) IS
-
 
13606
/* ---------------------------------------------------------------------------
-
 
13607
    Author: Rupesh Solanki
-
 
13608
	
-
 
13609
	Version: 4.0
-
 
13610
   --------------------------------------------------------------------------- */
-
 
13611
   STATE CHAR;
-
 
13612
   
-
 
13613
BEGIN
-
 
13614
	 
-
 
13615
	SELECT DLOCKED INTO STATE
-
 
13616
	FROM PACKAGE_VERSIONS
-
 
13617
	WHERE PV_ID = nPvId; 
-
 
13618
 
-
 
13619
	IF STATE = 'A' THEN --It was made official for autobuilds
-
 
13620
		-- Unlock Package
-
 
13621
		UPDATE PACKAGE_VERSIONS pv SET
-
 
13622
		pv.DLOCKED = 'P'
-
 
13623
		WHERE pv.PV_ID = nPvId;	
-
 
13624
	ELSE
-
 
13625
		-- Unlock Package
-
 
13626
		UPDATE PACKAGE_VERSIONS pv SET
-
 
13627
		pv.DLOCKED = 'N'
-
 
13628
		WHERE pv.PV_ID = nPvId;	
-
 
13629
	
-
 
13630
	END IF;	   
-
 
13631
 
-
 
13632
    /* LOG ACTION */
-
 
13633
   	Log_Action ( nPvId, 'unlock_package', nUserId );
-
 
13634
 
-
 
13635
END Unlock_Package;
-
 
13636
/
-
 
13637
--------------------------------------------------------
-
 
13638
--  DDL for Procedure UNRIPPLE_PACKAGE
-
 
13639
--------------------------------------------------------
-
 
13640
 
-
 
13641
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE" (
-
 
13642
        sPvIdList IN VARCHAR2,
20190
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
13643
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
-
 
13644
        nUserId IN NUMBER
-
 
13645
    ) IS
-
 
13646
/* ---------------------------------------------------------------------------
-
 
13647
    Version: 4.1
-
 
13648
   --------------------------------------------------------------------------- */
-
 
13649
 
-
 
13650
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
-
 
13651
 
-
 
13652
BEGIN
-
 
13653
 
-
 
13654
    IF (sPvIdList IS NULL) THEN
-
 
13655
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
-
 
13656
    END IF;
-
 
13657
 
-
 
13658
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
-
 
13659
 
-
 
13660
    -- UnRipple Package
-
 
13661
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
-
 
13662
    SELECT nRtagId, pv.PV_ID
-
 
13663
    FROM PACKAGE_VERSIONS pv
-
 
13664
    WHERE pv.PV_ID IN (
-
 
13665
        SELECT *
-
 
13666
        FROM TABLE (
-
 
13667
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
-
 
13668
        )
-
 
13669
    );
-
 
13670
    
-
 
13671
    /* LOG ACTION */
-
 
13672
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
-
 
13673
 
-
 
13674
END UnRipple_Package;
-
 
13675
/
-
 
13676
--------------------------------------------------------
-
 
13677
--  DDL for Procedure UNRIPPLE_PACKAGE_INDIRECT
-
 
13678
--------------------------------------------------------
-
 
13679
 
-
 
13680
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE_INDIRECT" (
-
 
13681
        nPvId IN NUMBER,
-
 
13682
        nRtagId IN NUMBER,
-
 
13683
        nUserId IN NUMBER,
-
 
13684
        nrootCausePvId IN NUMBER,
-
 
13685
        srootCause IN VARCHAR2,
-
 
13686
        srootFile IN VARCHAR2
-
 
13687
    ) IS
-
 
13688
    ReleaseLocation VARCHAR2(4000);
-
 
13689
BEGIN
-
 
13690
 
-
 
13691
    -- UnRipple Package
-
 
13692
    delete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;
-
 
13693
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);
-
 
13694
 
-
 
13695
    /* LOG ACTION */
-
 
13696
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
-
 
13697
              FROM PROJECTS proj,
-
 
13698
                   RELEASE_TAGS rt
-
 
13699
             WHERE rt.RTAG_ID = nRtagId
-
 
13700
               AND rt.PROJ_ID = proj.PROJ_ID;
-
 
13701
 
-
 
13702
    /* LOG ACTION */
-
 
13703
    Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );
-
 
13704
 
-
 
13705
END UnRipple_Package_Indirect;
-
 
13706
/
-
 
13707
--------------------------------------------------------
-
 
13708
--  DDL for Procedure UPDATE_ADDITIONAL_NOTE
-
 
13709
--------------------------------------------------------
-
 
13710
 
-
 
13711
  CREATE OR REPLACE PROCEDURE "UPDATE_ADDITIONAL_NOTE" ( pnNote_id IN NUMBER,
20191
												  	nUserId IN NUMBER
13712
													 pnPv_id IN NUMBER,
-
 
13713
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
-
 
13714
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
-
 
13715
                                                     pnUser_id IN NUMBER,
-
 
13716
                                                     outErrCode OUT NUMBER
-
 
13717
                                                    ) IS
-
 
13718
/* ---------------------------------------------------------------------------
-
 
13719
    Version: 3.0.1
-
 
13720
   --------------------------------------------------------------------------- */
-
 
13721
 
-
 
13722
    newID NUMBER;
-
 
13723
 
-
 
13724
    /* Disallow duplicate Note Titles */
-
 
13725
	CURSOR an_duplicate_cur IS
-
 
13726
        SELECT COUNT(*) AS cnt_note
-
 
13727
          FROM ADDITIONAL_NOTES
-
 
13728
         WHERE pv_id = pnPv_id
-
 
13729
           AND note_id != pnNote_id
-
 
13730
           AND note_title = psNote_title;
-
 
13731
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
-
 
13732
 
-
 
13733
BEGIN
-
 
13734
	outErrCode := -1;		-- Set default return error code to ERROR state
-
 
13735
 
-
 
13736
	OPEN an_duplicate_cur;
-
 
13737
    FETCH an_duplicate_cur INTO an_duplicate_rec;
-
 
13738
 
-
 
13739
    IF an_duplicate_rec.cnt_note < 1
-
 
13740
    THEN
-
 
13741
		--- Update Additional Note ---
-
 
13742
	    UPDATE ADDITIONAL_NOTES SET
-
 
13743
		       note_title = psNote_title,
-
 
13744
		       note_body = psNote_body,
-
 
13745
		       mod_date = Ora_Sysdate,
-
 
13746
		       mod_user = pnUser_id
-
 
13747
         WHERE note_id = pnNote_id
-
 
13748
           AND pv_id = pnPv_id;
-
 
13749
		outErrCode := 0;		-- Set return to SUCCESS
-
 
13750
	END IF;
-
 
13751
 
-
 
13752
	CLOSE an_duplicate_cur;
-
 
13753
END Update_Additional_Note;
-
 
13754
/
-
 
13755
--------------------------------------------------------
-
 
13756
--  DDL for Procedure UPDATE_DEPRECATION_STATE
-
 
13757
--------------------------------------------------------
-
 
13758
 
-
 
13759
  CREATE OR REPLACE PROCEDURE "UPDATE_DEPRECATION_STATE" (nnrtag_id IN NUMBER) AS
-
 
13760
 
-
 
13761
recno NUMBER;
-
 
13762
 
-
 
13763
CURSOR deprecate_cur IS
-
 
13764
 
-
 
13765
SELECT rc.pv_id
-
 
13766
FROM release_content rc
-
 
13767
WHERE rtag_id = nnrtag_id
-
 
13768
 AND deprecated_state IN(7);
-
 
13769
 
-
 
13770
deprecate_rec deprecate_cur % rowtype;
-
 
13771
 
-
 
13772
BEGIN
-
 
13773
 
-
 
13774
  OPEN deprecate_cur;
-
 
13775
 
-
 
13776
  FETCH deprecate_cur
-
 
13777
  INTO deprecate_rec;
-
 
13778
 
-
 
13779
  WHILE deprecate_cur % FOUND
-
 
13780
  LOOP
-
 
13781
 
-
 
13782
    SELECT COUNT(*)
-
 
13783
    INTO recno
-
 
13784
    FROM package_dependencies pd,
20192
	   	  		  									) IS
13785
      release_content rc
-
 
13786
    WHERE pd.pv_id = deprecate_rec.pv_id
-
 
13787
     AND rc.pv_id = pd.dpv_id
-
 
13788
     AND rc.rtag_id = nnrtag_id
-
 
13789
     AND rc.deprecated_state IN(6,   7);
-
 
13790
 
-
 
13791
    IF recno = 0 THEN
-
 
13792
 
-
 
13793
      UPDATE release_content
-
 
13794
      SET pkg_id = NULL, deprecated_state = NULL
-
 
13795
      WHERE pv_id = deprecate_rec.pv_id
-
 
13796
       AND rtag_id = nnrtag_id;
-
 
13797
 
-
 
13798
    END IF;
-
 
13799
 
-
 
13800
    FETCH deprecate_cur
-
 
13801
    INTO deprecate_rec;
-
 
13802
  END LOOP;
-
 
13803
 
-
 
13804
END;
-
 
13805
/
-
 
13806
--------------------------------------------------------
-
 
13807
--  DDL for Procedure UPDATE_MISC_VIEW
-
 
13808
--------------------------------------------------------
20193
 
13809
 
-
 
13810
  CREATE OR REPLACE PROCEDURE "UPDATE_MISC_VIEW" IS
20194
/******************************************************************************
13811
/******************************************************************************
20195
   NAME:       REMOVE_PACKAGE_INTEREST
13812
   NAME:       UPDATE_MISC_VIEW
20196
   PURPOSE:    To remove interest in a given package per project
13813
   PURPOSE:    
20197
 
13814
 
20198
   REVISIONS:
13815
   REVISIONS:
20199
   Ver        Date        Author           Description
13816
   Ver        Date        Author           Description
20200
   ---------  ----------  ---------------  ------------------------------------
13817
   ---------  ----------  ---------------  ------------------------------------
20201
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
13818
   1.0        16/03/2007          1. Created this procedure.
20202
 
13819
 
20203
   NOTES:
13820
   NOTES:
20204
 
13821
 
20205
   Automatically available Auto Replace Keywords:
13822
   Automatically available Auto Replace Keywords:
20206
      Object Name:     REMOVE_PACKAGE_INTEREST
13823
      Object Name:     UPDATE_MISC_VIEW
20207
      Sysdate:         12/05/2006
13824
      Sysdate:         16/03/2007
20208
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
13825
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
20209
      Username:         (set in TOAD Options, Procedure Editor)
13826
      Username:         (set in TOAD Options, Procedure Editor)
20210
      Table Name:       (set in the "New PL/SQL Object" dialog)
13827
      Table Name:       (set in the "New PL/SQL Object" dialog)
20211
 
13828
 
20212
******************************************************************************/
13829
******************************************************************************/
-
 
13830
   CURSOR view_cur /*Create a record set to store the ripple data*/
-
 
13831
   IS
-
 
13832
   	 SELECT pkg.pkg_id, rc.base_view_id 
-
 
13833
	 FROM package_versions pv, packages pkg, release_content rc
-
 
13834
	 where rc.rtag_id = 2362
-
 
13835
	 and rc.pv_id = pv.pv_id
-
 
13836
	 and pv.pkg_id = pkg.pkg_id;
-
 
13837
   view_rec   view_cur%ROWTYPE;
-
 
13838
 
-
 
13839
 
-
 
13840
 
20213
BEGIN
13841
BEGIN
-
 
13842
   OPEN view_cur;
20214
 
13843
 
20215
	 --Delete from PACKAGE_INTEREST
-
 
20216
	 DELETE FROM PACKAGE_INTEREST
-
 
20217
	 WHERE PROJ_ID = nProjId
-
 
20218
	 AND PKG_ID = nPkgId
13844
   FETCH view_cur
20219
	 AND USER_ID = nUserId;
13845
    INTO view_rec;
20220
	 
-
 
20221
END REMOVE_PACKAGE_INTEREST;
-
 
20222
/
-
 
20223
--------------------------------------------------------
-
 
20224
--  DDL for Procedure RELEASE_MANAGER_MAILOUT
-
 
20225
--------------------------------------------------------
-
 
20226
 
13846
 
20227
  CREATE OR REPLACE PROCEDURE "RELEASE_MANAGER_MAILOUT" (
-
 
20228
  sender      IN VARCHAR2,
-
 
20229
  recipient   IN VARCHAR2,
-
 
20230
  ccrecipient IN VARCHAR2,
-
 
20231
  subject     IN VARCHAR2,
-
 
20232
  message     IN VARCHAR2
13847
   WHILE view_cur%FOUND
20233
  ) IS
13848
   LOOP
20234
 
13849
 
-
 
13850
	   
-
 
13851
	   update release_content
20235
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
13852
	   set base_view_id = view_rec.base_view_id
20236
  connection utl_smtp.connection;
13853
	   where rtag_id = 8027
-
 
13854
	   and pv_id IN 
-
 
13855
	   (
20237
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
13856
	   	select pv.pv_id from release_content rc, package_versions pv
20238
  header VARCHAR2(1000);
13857
		where rc.rtag_id = 8027
-
 
13858
		and pv.pv_id = rc.pv_id
-
 
13859
		and pv.pkg_id = view_rec.pkg_id 
-
 
13860
	  
-
 
13861
	   );
-
 
13862
	  
-
 
13863
	   
20239
 
13864
 
-
 
13865
	   
-
 
13866
	   
-
 
13867
	   
20240
BEGIN
13868
	   
-
 
13869
   	   
20241
 
13870
 
20242
  --
13871
   FETCH view_cur
20243
  -- Start the connection.
13872
   		 INTO view_rec;
20244
  --
13873
   END LOOP;	 
20245
  connection := utl_smtp.open_connection(mailhost,25);
-
 
20246
 
13874
 
20247
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
-
 
20248
     'From: '||sender||''||crlf||
-
 
20249
  'Subject: '||subject||crlf||
-
 
20250
       'To: '||recipient||crlf||
-
 
20251
       'CC: '||ccrecipient;
-
 
20252
 
13875
 
20253
  --
-
 
20254
  -- Handshake with the SMTP server
-
 
20255
  --
-
 
20256
  utl_smtp.helo(connection, mailhost);
-
 
20257
  utl_smtp.mail(connection, sender);
-
 
20258
  utl_smtp.rcpt(connection, recipient);
-
 
20259
  utl_smtp.rcpt(connection, ccrecipient);
-
 
20260
  utl_smtp.open_data(connection);
-
 
20261
  --
-
 
20262
  -- Write the header
-
 
20263
  --
-
 
20264
  utl_smtp.write_data(connection, header);
-
 
20265
  --
-
 
20266
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
-
 
20267
  --
-
 
20268
  utl_smtp.write_data(connection, crlf ||message);
-
 
20269
  utl_smtp.close_data(connection);
-
 
20270
  utl_smtp.quit(connection);
-
 
20271
 
13876
 
20272
EXCEPTION
-
 
20273
  WHEN UTL_SMTP.INVALID_OPERATION THEN
-
 
20274
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
-
 
20275
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
-
 
20276
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
-
 
20277
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
-
 
20278
    dbms_output.put_line(' Errors in code for SMTP transaction.');
-
 
20279
 
13877
 
-
 
13878
 
20280
END RELEASE_MANAGER_MAILOUT;
13879
END UPDATE_MISC_VIEW; 
20281
/
13880
/
20282
--------------------------------------------------------
13881
--------------------------------------------------------
20283
--  DDL for Procedure SET_PACKAGE_BUILD_ENV
13882
--  DDL for Procedure UPDATE_PACKAGE_DEPENDENCY
20284
--------------------------------------------------------
13883
--------------------------------------------------------
20285
 
13884
 
20286
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
13885
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_DEPENDENCY" ( NNpv_id IN NUMBER,
-
 
13886
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
-
 
13887
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
-
 
13888
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
-
 
13889
                                                        NNuser_id IN NUMBER,
-
 
13890
                                                        NNdelete_old_dependency IN NUMBER
20287
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
13891
                                                       ) IS
20288
/* ---------------------------------------------------------------------------
13892
/* ---------------------------------------------------------------------------
20289
    Last Modified: Rupesh Solanki
-
 
20290
	Version: 3.0.1
13893
    Version: 3.3
20291
   --------------------------------------------------------------------------- */
13894
   --------------------------------------------------------------------------- */
20292
 
13895
 
-
 
13896
    retPV_ID NUMBER;
-
 
13897
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
-
 
13898
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
-
 
13899
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
-
 
13900
    NNpkg_id NUMBER;
-
 
13901
    NNdpkg_id NUMBER;
20293
 
13902
 
20294
BEGIN
13903
BEGIN
-
 
13904
    --- Seed database with package_name and version if required ---
-
 
13905
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
20295
 
13906
 
20296
   -- Delete Current Build Env settings
13907
    -- get v_ext,pkg_id of current dependency
20297
   DELETE FROM PACKAGE_BUILD_ENV
-
 
20298
   WHERE pv_id = nPvId;
-
 
20299
   
-
 
20300
   -- Delet Current Package Build Info Settings
13908
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
20301
   DELETE FROM PACKAGE_BUILD_INFO
13909
      FROM PACKAGE_VERSIONS
20302
   WHERE pv_id = nPvId;
13910
     WHERE pv_id = retPV_ID;
20303
 
13911
 
20304
   -- Reset flag to N
13912
    -- get pkg_id of parent package
20305
   UPDATE PACKAGE_VERSIONS SET
13913
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
20306
	   IS_BUILD_ENV_REQUIRED = 'N'
13914
      FROM PACKAGE_VERSIONS
20307
   WHERE PV_ID = nPvId;
13915
     WHERE pv_id = NNpv_id;
20308
 
13916
 
20309
 
13917
 
20310
   -- Set new Build Env
-
 
20311
   IF NOT sBuildEnvIdList IS NULL THEN
13918
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
20312
   	  -- Insert into PACKAGE_BUILD_ENV
13919
    	( (PvIsPatch IS NOT NULL) )THEN
20313
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
-
 
20314
	  SELECT nPvId AS PV_ID,
-
 
20315
	  		 be.BE_ID
-
 
20316
	    FROM BUILD_ENVIRONMENTS be
-
 
20317
	   WHERE be.BE_ID IN (
-
 
20318
	   		 		  	   SELECT *
-
 
20319
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
-
 
20320
	   		 		  	 );
-
 
20321
						 
-
 
20322
   	  -- Insert into PACKAGE_BUILD_INFO
-
 
20323
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
-
 
20324
	  SELECT nPvId AS PV_ID,
-
 
20325
	  		 be.BM_ID
-
 
20326
	    FROM BUILD_MACHINES be
-
 
20327
	   WHERE be.BM_ID IN (
-
 
20328
	   		 		  	   SELECT *
-
 
20329
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
-
 
20330
	   		 		  	 );						 
-
 
20331
 
13920
 
20332
	   -- Set flag to Y
-
 
20333
	   UPDATE PACKAGE_VERSIONS SET
-
 
20334
		   IS_BUILD_ENV_REQUIRED = 'Y'
13921
	    IF NNdelete_old_dependency = 1 THEN
20335
	   WHERE PV_ID = nPvId;
13922
	        /* Used for CUSTOM dependency add/edit */
20336
 
13923
 
-
 
13924
	        --- Remove old dependency ---
-
 
13925
            IF (PvIsPatch IS NULL) THEN
-
 
13926
            	-- Do it for Packages
-
 
13927
		        DELETE FROM PACKAGE_DEPENDENCIES
-
 
13928
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
-
 
13929
		            (
-
 
13930
		            SELECT dep.*
-
 
13931
		              FROM PACKAGE_DEPENDENCIES dep,
-
 
13932
		                   PACKAGE_VERSIONS dpv,
-
 
13933
		                   PACKAGE_VERSIONS pv
-
 
13934
		             WHERE dep.dpv_id = dpv.pv_id
-
 
13935
		               AND dep.pv_id = NNpv_id
-
 
13936
		               AND pv.pv_id = retPV_ID
-
 
13937
		               AND dpv.pkg_id = pv.pkg_id
-
 
13938
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
-
 
13939
		            );
-
 
13940
            ELSE
-
 
13941
            	-- Do it for Patches
-
 
13942
                DELETE FROM PACKAGE_DEPENDENCIES
-
 
13943
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
-
 
13944
		            (
-
 
13945
		            SELECT dep.*
-
 
13946
		              FROM PACKAGE_DEPENDENCIES dep
-
 
13947
		             WHERE dep.dpv_id = retPV_ID
-
 
13948
		               AND dep.pv_id = NNpv_id
-
 
13949
		            );
20337
   END IF;
13950
			END IF;
20338
 
13951
 
-
 
13952
	    END IF;
20339
 
13953
 
-
 
13954
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
-
 
13955
 
-
 
13956
	    --- Add new dependency ---
-
 
13957
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
-
 
13958
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
-
 
13959
 
-
 
13960
	END IF;
-
 
13961
 
20340
END Set_Package_Build_Env;
13962
END Update_Package_Dependency;
20341
/
13963
/
20342
--------------------------------------------------------
13964
--------------------------------------------------------
20343
--  DDL for Procedure SHIFT_INSTALL_ORDER
13965
--  DDL for Procedure UPDATE_PACKAGE_STATES
20344
--------------------------------------------------------
13966
--------------------------------------------------------
20345
 
13967
 
20346
  CREATE OR REPLACE PROCEDURE "SHIFT_INSTALL_ORDER" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
13968
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_STATES" ( NNrtag_id IN NUMBER,
-
 
13969
                                                    NNsession_num IN NUMBER ) IS
-
 
13970
/* =============  STATE RULES =================== */
-
 
13971
/*
-
 
13972
   MNR   MRR   MN   MR    |   pkg_state
-
 
13973
   ------------------------------------
-
 
13974
    0     0     0     0   |      OK
-
 
13975
    0     0     0     1   |      MAJOR
-
 
13976
    0     0     1     0   |      MINOR
-
 
13977
    0     0     1     1   |      MAJOR
-
 
13978
   ------------------------------------
20347
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
13979
    0     1     0     0   |      MAJOR_READY
-
 
13980
    0     1     0     1   |      MAJOR
-
 
13981
    0     1     1     0   |      MAJOR
-
 
13982
    0     1     1     1   |      MAJOR
-
 
13983
   ------------------------------------
20348
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
13984
    1     0     0     0   |      MINOR_READY
-
 
13985
    1     0     0     1   |      MAJOR
-
 
13986
    1     0     1     0   |      MINOR
-
 
13987
    1     0     1     1   |      MAJOR
-
 
13988
   ------------------------------------
-
 
13989
    1     1     0     0   |      MAJOR_READY
-
 
13990
    1     1     0     1   |      MAJOR
-
 
13991
    1     1     1     0   |      MAJOR
-
 
13992
    1     1     1     1   |      MAJOR
-
 
13993
   ------------------------------------
-
 
13994
*/
-
 
13995
BEGIN
20349
/* ---------------------------------------------------------------------------
13996
    /*----------------------------------------------
20350
    Version: 3.0
13997
    ||              MINOR READY
20351
   --------------------------------------------------------------------------- */
13998
    */----------------------------------------------
20352
 
13999
 
-
 
14000
    UPDATE release_content
20353
currInstallOrder NUMBER;
14001
       SET pkg_state = 4
20354
FromInstallOrder NUMBER;
14002
     WHERE rtag_id = NNrtag_id
-
 
14003
       AND pv_id IN
-
 
14004
           (
-
 
14005
           SELECT DISTINCT pv_id
-
 
14006
           FROM temp_env_states
-
 
14007
           WHERE session_num = NNsession_num
-
 
14008
             AND level_num = 1
-
 
14009
             AND tes_state = 2
-
 
14010
           );
20355
 
14011
 
-
 
14012
    /*----------------------------------------------
-
 
14013
    ||              MAJOR READY
-
 
14014
    */----------------------------------------------
-
 
14015
    UPDATE release_content
-
 
14016
       SET pkg_state = 3
-
 
14017
     WHERE rtag_id = NNrtag_id
-
 
14018
       AND pv_id IN
20356
BEGIN
14019
           (
-
 
14020
           SELECT DISTINCT pv_id
-
 
14021
           FROM temp_env_states
-
 
14022
           WHERE session_num = NNsession_num
-
 
14023
             AND level_num = 1
-
 
14024
             AND tes_state IN (0,1)
-
 
14025
           );
20357
 
14026
 
-
 
14027
    /*----------------------------------------------
20358
	 -- Get Current Install Order
14028
    ||                MINOR
20359
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
14029
    */----------------------------------------------
-
 
14030
    UPDATE release_content
20360
       FROM PACKAGE_PATCHES pp
14031
       SET pkg_state = 2
20361
      WHERE pp.PV_ID = nPvId
14032
     WHERE rtag_id = NNrtag_id
-
 
14033
       AND pv_id IN
-
 
14034
           (
-
 
14035
           SELECT DISTINCT pv_id
-
 
14036
            FROM temp_env_states
-
 
14037
            WHERE session_num = NNsession_num
-
 
14038
              AND level_num >= 2
-
 
14039
              AND tes_state = 2
-
 
14040
            MINUS
-
 
14041
           SELECT pv_id
-
 
14042
             FROM release_content
20362
        AND pp.PATCH_ID = nPatchId;
14043
            WHERE rtag_id = NNrtag_id
-
 
14044
              AND pkg_state = 3
-
 
14045
           );
20363
 
14046
 
-
 
14047
    /*----------------------------------------------
-
 
14048
    ||                MAJOR
-
 
14049
    */----------------------------------------------
-
 
14050
    UPDATE release_content
-
 
14051
       SET pkg_state = 1
-
 
14052
     WHERE rtag_id = NNrtag_id
-
 
14053
       AND pv_id IN
-
 
14054
           (
-
 
14055
           SELECT DISTINCT pv_id
-
 
14056
           FROM temp_env_states
-
 
14057
           WHERE session_num = NNsession_num
-
 
14058
             AND level_num >= 2
-
 
14059
             AND tes_state IN (0,1)
-
 
14060
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
-
 
14061
           UNION
-
 
14062
           SELECT DISTINCT tes.pv_id
-
 
14063
           FROM temp_env_states tes,
-
 
14064
                release_content rc
-
 
14065
           WHERE tes.session_num = NNsession_num
-
 
14066
             AND tes.level_num >= 2
-
 
14067
             AND tes.tes_state = 2
-
 
14068
             AND rtag_id = NNrtag_id
-
 
14069
             AND rc.pv_id = tes.pv_id
-
 
14070
             AND rc.pkg_state = 3
-
 
14071
           );
20364
 
14072
 
-
 
14073
    /*----------------------------------------------
-
 
14074
    ||                 OK
-
 
14075
    */----------------------------------------------
-
 
14076
    UPDATE release_content
-
 
14077
       SET pkg_state = 0
20365
	 IF currInstallOrder > nToInstallOrder
14078
     WHERE rtag_id = NNrtag_id
-
 
14079
       AND pv_id IN
20366
	 THEN
14080
           (
-
 
14081
           SELECT rc.pv_id
-
 
14082
             FROM release_content rc
-
 
14083
            WHERE rc.rtag_id = NNrtag_id
-
 
14084
              AND NOT rc.pv_id IN
-
 
14085
                    (
-
 
14086
                     SELECT DISTINCT pv_id
-
 
14087
                     FROM temp_env_states WHERE session_num = NNsession_num
-
 
14088
                    )
-
 
14089
           );
20367
 
14090
 
20368
		FromInstallOrder := nToInstallOrder;
14091
      Update_Deprecation_State (NNrtag_id);
20369
 
14092
 
-
 
14093
    /*----------------------------------------------
-
 
14094
    ||              PEGGED VERSIONS DEPENDENT
-
 
14095
    */----------------------------------------------
-
 
14096
    UPDATE release_content
20370
	    -- Shift others Up
14097
       SET pkg_state = 10
20371
		UPDATE PACKAGE_PATCHES pp SET
14098
     WHERE rtag_id = NNrtag_id
20372
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
14099
       AND pv_id IN
-
 
14100
           (
20373
		 WHERE pp.PV_ID = nPvId
14101
           SELECT DISTINCT pv_id
20374
           AND pp.PATCH_ID != nPatchId
14102
           FROM pegged_versions pegv
20375
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
14103
           WHERE pegv.rtag_id = NNrtag_id
-
 
14104
           );
20376
 
14105
 
-
 
14106
    /*----------------------------------------------
-
 
14107
    ||              ADVISORY RIPPLE
-
 
14108
    */----------------------------------------------
-
 
14109
    UPDATE release_content
-
 
14110
       SET pkg_state = 8
-
 
14111
     WHERE rtag_id = NNrtag_id
-
 
14112
       AND pv_id IN
-
 
14113
           (
-
 
14114
           SELECT DISTINCT pv_id
-
 
14115
           FROM advisory_ripple ar
-
 
14116
           WHERE ar.rtag_id = NNrtag_id
-
 
14117
           )
-
 
14118
       AND pv_id IN
-
 
14119
           (
-
 
14120
           SELECT DISTINCT pv_id
-
 
14121
           FROM release_content rc
-
 
14122
           WHERE rc.rtag_id = NNrtag_id
-
 
14123
           );
20377
 
14124
 
20378
	 ELSIF currInstallOrder < nToInstallOrder
14125
END Update_Package_States;
20379
	 THEN
14126
/
-
 
14127
--------------------------------------------------------
-
 
14128
--  DDL for Procedure UPDATE_PROCESSES
-
 
14129
--------------------------------------------------------
20380
 
14130
 
20381
		FromInstallOrder := currInstallOrder + 1;
14131
  CREATE OR REPLACE PROCEDURE "UPDATE_PROCESSES" 
-
 
14132
IS
20382
 
14133
 
20383
		-- Shift others Down
14134
proc_id NUMBER;
-
 
14135
/******************************************************************************
20384
        UPDATE PACKAGE_PATCHES pp SET
14136
   NAME:       DELETE_DO_NOT_RIPPLE
20385
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
14137
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
20386
		 WHERE pp.PV_ID = nPvId
-
 
20387
           AND pp.PATCH_ID != nPatchId
14138
               IS RELEASED
20388
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
-
 
20389
 
14139
 
20390
	 END IF;
14140
   REVISIONS:
-
 
14141
   Ver        Date        Author           Description
-
 
14142
   ---------  ----------  ---------------  ------------------------------------
-
 
14143
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
20391
 
14144
 
-
 
14145
   NOTES:
20392
 
14146
 
20393
	 -- Move Patch to new install order
14147
   Automatically available Auto Replace Keywords:
20394
     UPDATE PACKAGE_PATCHES pp SET
14148
      Object Name:     DELETE_DO_NOT_RIPPLE
20395
		    pp.INSTALL_ORDER = nToInstallOrder
14149
      Sysdate:         21/04/2006
-
 
14150
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
20396
	  WHERE pp.PV_ID = nPvId
14151
      Username:         (set in TOAD Options, Procedure Editor)
20397
	    AND pp.PATCH_ID = nPatchId;
14152
      Table Name:       (set in the "New PL/SQL Object" dialog)
20398
 
14153
 
-
 
14154
******************************************************************************/
-
 
14155
   CURSOR ripple_cur
-
 
14156
   IS
-
 
14157
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
20399
 
14158
 
-
 
14159
   ripple_rec   ripple_cur%ROWTYPE;
-
 
14160
BEGIN
-
 
14161
   OPEN ripple_cur;
-
 
14162
 
-
 
14163
   FETCH ripple_cur
-
 
14164
    INTO ripple_rec;
-
 
14165
 
-
 
14166
   WHILE ripple_cur%FOUND
-
 
14167
   LOOP
-
 
14168
   
-
 
14169
 
-
 
14170
update deployment_manager.processes_config 
-
 
14171
set proc_id = ripple_rec.proc_id
-
 
14172
where pkg_health_tag = ripple_rec.proc_name
-
 
14173
and cmd_interface IS NULL
-
 
14174
and pkg_owner IS NULL
-
 
14175
and is_interface IS NULL; 
-
 
14176
   
-
 
14177
 
-
 
14178
      FETCH ripple_cur
20400
END Shift_Install_Order;
14179
       INTO ripple_rec;
-
 
14180
   END LOOP;
-
 
14181
END UPDATE_PROCESSES;
20401
/
14182
/
20402
--------------------------------------------------------
14183
--------------------------------------------------------
20403
--  DDL for Procedure NEW_PACKAGE_NAME
14184
--  DDL for Procedure UPDATE_RUNTIME_DEPENDENCY
20404
--------------------------------------------------------
14185
--------------------------------------------------------
20405
 
14186
 
20406
  CREATE OR REPLACE PROCEDURE "NEW_PACKAGE_NAME" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
14187
  CREATE OR REPLACE PROCEDURE "UPDATE_RUNTIME_DEPENDENCY" ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
20407
                                               retPKG_ID OUT NUMBER ) IS
14188
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
-
 
14189
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
-
 
14190
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
-
 
14191
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
-
 
14192
													    NNuser_id IN NUMBER ) IS
20408
/* ---------------------------------------------------------------------------
14193
/* ---------------------------------------------------------------------------
20409
    Version: 3.0.0
14194
    Version: 3.0.1
20410
   --------------------------------------------------------------------------- */
14195
   --------------------------------------------------------------------------- */
20411
 
14196
 
-
 
14197
    retRTD_ID	NUMBER;
-
 
14198
	CURSOR rtd_cur IS
-
 
14199
	    SELECT pv.pkg_version, pkg.pkg_name
-
 
14200
		  FROM runtime_dependencies rtd,
-
 
14201
		       package_versions pv,
-
 
14202
			   packages pkg
-
 
14203
		 WHERE rtd.rtd_id = pv.pv_id
-
 
14204
		   AND pv.pkg_id = pkg.pkg_id
-
 
14205
		   AND rtd.pv_id = NNpv_id
-
 
14206
		   AND rtd.rtd_id = NNrtd_id;
-
 
14207
	   rtd_rec rtd_cur%ROWTYPE;
-
 
14208
 
20412
    CURSOR packages_cur IS
14209
	CURSOR old_rtd_cur IS
20413
        SELECT pkg.pkg_id
14210
	    SELECT pv.pv_id
-
 
14211
		  FROM package_versions pv
-
 
14212
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
20414
          FROM packages pkg
14213
		 	   			 	    FROM package_versions rtdpv
20415
         WHERE pkg.pkg_name = SSpkg_name;
14214
							   WHERE rtdpv.pv_id = NNrtd_id )
-
 
14215
		   AND pv.pkg_version = SSrtd_version;
20416
    packages_rec packages_cur%ROWTYPE;
14216
	old_rtd_rec old_rtd_cur%ROWTYPE;
20417
 
14217
 
20418
 
14218
 
20419
BEGIN
14219
BEGIN
20420
 
14220
 
20421
    /* ---------------------------------------------------- */
-
 
20422
    /* Find if package name exists                          */
14221
    -- Get current runtime dependency details
-
 
14222
	OPEN rtd_cur;
20423
    /* ---------------------------------------------------- */
14223
    FETCH rtd_cur INTO rtd_rec;
20424
 
14224
 
20425
    OPEN packages_cur;
-
 
20426
    FETCH packages_cur INTO packages_rec;
-
 
20427
 
14225
 
20428
    IF packages_cur%NOTFOUND
-
 
20429
    THEN
-
 
20430
        -- Create new pkg_name --
-
 
20431
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
-
 
20432
 
14226
 
20433
        INSERT INTO packages ( pkg_id, pkg_name )
-
 
20434
        VALUES ( retPKG_ID, SSpkg_name );
-
 
20435
 
14227
 
-
 
14228
	IF rtd_rec.pkg_version != SSrtd_version THEN
-
 
14229
           -- Version has changed, hence create new runtime dependency --
-
 
14230
	    /* NOTE: You must create new version as updating just a version will affect
-
 
14231
		        all packages using this runtime dependency and user does not expect that.
-
 
14232
		        It is safer to create new version */
20436
    ELSE
14233
		OPEN old_rtd_cur;
20437
        retPKG_ID := packages_rec.pkg_id;
14234
		FETCH old_rtd_cur INTO old_rtd_rec;
20438
 
14235
 
20439
    END IF;
-
 
20440
 
14236
 
-
 
14237
		IF old_rtd_cur%NOTFOUND
-
 
14238
		THEN
-
 
14239
			-- Version not found, hence Create New version --
-
 
14240
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
20441
 
14241
 
-
 
14242
			-- Update runtime dependency table --
-
 
14243
			UPDATE runtime_dependencies SET
-
 
14244
				   rtd_id = retRTD_ID,
-
 
14245
				   rtd_url = SSrtd_url,
-
 
14246
				   rtd_comments = SSrtd_comments
20442
    CLOSE packages_cur;
14247
			 WHERE pv_id = NNpv_id
-
 
14248
			   AND rtd_id = NNrtd_id;
20443
 
14249
 
-
 
14250
		ELSE
-
 
14251
			-- Update runtime dependency table --
-
 
14252
			UPDATE runtime_dependencies SET
-
 
14253
				   rtd_id = old_rtd_rec.pv_id,
-
 
14254
				   rtd_url = SSrtd_url,
-
 
14255
				   rtd_comments = SSrtd_comments
-
 
14256
			 WHERE pv_id = NNpv_id
-
 
14257
			   AND rtd_id = NNrtd_id;
-
 
14258
 
-
 
14259
		END IF;
-
 
14260
 
-
 
14261
 
-
 
14262
		CLOSE old_rtd_cur;
-
 
14263
 
-
 
14264
	ELSE
-
 
14265
		--  Version has not changed, hence update everithing except	version --
-
 
14266
		UPDATE runtime_dependencies SET
-
 
14267
			   rtd_url = SSrtd_url,
-
 
14268
			   rtd_comments = SSrtd_comments
-
 
14269
		 WHERE pv_id = NNpv_id
-
 
14270
		   AND rtd_id = NNrtd_id;
-
 
14271
 
-
 
14272
 
-
 
14273
 
-
 
14274
	END IF;
-
 
14275
 
-
 
14276
 
-
 
14277
	CLOSE rtd_cur;
-
 
14278
 
20444
END New_Package_Name;
14279
END Update_Runtime_Dependency;
20445
/
14280
/
20446
--------------------------------------------------------
14281
--------------------------------------------------------
20447
--  DDL for Procedure REMOVE_RUNTIME
14282
--  DDL for Procedure UPDATE_UNIT_TEST
20448
--------------------------------------------------------
14283
--------------------------------------------------------
20449
 
14284
 
20450
  CREATE OR REPLACE PROCEDURE "REMOVE_RUNTIME" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14285
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST" ( nTest_id IN NUMBER,
-
 
14286
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
-
 
14287
											   nPv_id IN NUMBER,
-
 
14288
											   nUserId IN NUMBER,
-
 
14289
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
20451
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
14290
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
-
 
14291
	                                           sCompletion_date IN VARCHAR2,
-
 
14292
											   sDpkg_path IN VARCHAR2,
-
 
14293
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
-
 
14294
											   sResults IN VARCHAR2,
-
 
14295
											   outFileName OUT VARCHAR2
20452
                                             nUserId IN NUMBER ) IS
14296
                                              ) IS
20453
/* ---------------------------------------------------------------------------
14297
/* ---------------------------------------------------------------------------
20454
    Version: 3.0
14298
    Version: 3.1.0
20455
   --------------------------------------------------------------------------- */
14299
   --------------------------------------------------------------------------- */
-
 
14300
   
-
 
14301
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
-
 
14302
 
-
 
14303
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
-
 
14304
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
20456
 
14305
 
20457
   RuntimeDependency VARCHAR2(4000);
-
 
20458
 
14306
 
20459
BEGIN
14307
BEGIN
20460
 
14308
 
-
 
14309
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
20461
	-- Get Runtime dependency
14310
       	ResultsURL := sResults;
-
 
14311
       ELSE
-
 
14312
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
-
 
14313
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
20462
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
14314
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
20463
	  FROM RUNTIME_DEPENDENCIES rtd,
14315
           END IF;
20464
	  	   PACKAGES pkg,
14316
       END IF;
-
 
14317
 
-
 
14318
	--- Update Unit Test ---
20465
	       PACKAGE_VERSIONS pv
14319
    UPDATE UNIT_TESTS SET
-
 
14320
           TEST_SUMMARY = sTest_summary,
-
 
14321
		   NUMOF_TEST = sNumof_test,
-
 
14322
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
20466
	 WHERE rtd.PV_ID = nPvId
14323
		   COMPLETED_BY = nUserId,
20467
	   AND pv.PKG_ID = pkg.PKG_ID
14324
		   RESULTS_URL = ResultsURL,
-
 
14325
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
20468
	   AND rtd.RTD_ID = pv.PV_ID
14326
     WHERE TEST_ID = nTest_id
20469
	   AND rtd.RTD_ID = nRuntimeId;
14327
       AND PV_ID = nPv_id;
20470
 
14328
 
-
 
14329
END Update_Unit_Test;
-
 
14330
/
-
 
14331
--------------------------------------------------------
-
 
14332
--  DDL for Procedure UPDATE_UNIT_TEST_ACCEPTANCE
-
 
14333
--------------------------------------------------------
20471
 
14334
 
-
 
14335
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_ACCEPTANCE" ( pnTest_id IN NUMBER,
20472
	-- Delete Document
14336
														  pnPv_id IN NUMBER,
-
 
14337
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
20473
    DELETE
14338
														  sAcceptanceDate IN VARCHAR2,
20474
      FROM RUNTIME_DEPENDENCIES rtd
14339
														  sAcceptedBy IN NUMBER,
-
 
14340
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
20475
     WHERE rtd.PV_ID = nPvId
14341
														  cUpdateAcceptedStateOnly IN CHAR
20476
       AND rtd.RTD_ID = nRuntimeId;
14342
					                                     ) IS
-
 
14343
/* ---------------------------------------------------------------------------
-
 
14344
    Version: 3.0.0
-
 
14345
   --------------------------------------------------------------------------- */
20477
 
14346
 
20478
 
14347
 
20479
    /* LOG ACTION */
-
 
20480
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
-
 
20481
   			     'Runtime package: '|| RuntimeDependency );
-
 
20482
 
14348
 
-
 
14349
BEGIN
-
 
14350
	IF cUpdateAcceptedStateOnly = 'Y'
-
 
14351
	THEN
-
 
14352
		--- Update Accepted State Only ---
-
 
14353
		IF ( sAccepted IS NULL )
-
 
14354
		THEN
-
 
14355
			-- Clear alleptance
-
 
14356
			UPDATE UNIT_TESTS SET
-
 
14357
		           TEST_ACCEPTED = NULL,
-
 
14358
		           ACCEPTANCE_DATE = NULL,
-
 
14359
				   ACCEPTED_BY = NULL,
-
 
14360
				   REVIEW_COMMENTS = NULL
-
 
14361
		     WHERE TEST_ID = pnTest_id
-
 
14362
		       AND PV_ID = pnPv_id;
20483
 
14363
 
-
 
14364
	    ELSE
-
 
14365
			UPDATE UNIT_TESTS SET
-
 
14366
		           TEST_ACCEPTED = sAccepted,
-
 
14367
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
-
 
14368
				   ACCEPTED_BY = sAcceptedBy
-
 
14369
		     WHERE TEST_ID = pnTest_id
-
 
14370
		       AND PV_ID = pnPv_id;
-
 
14371
 
-
 
14372
		END IF;
-
 
14373
 
-
 
14374
 
-
 
14375
	ELSE
-
 
14376
		--- Update Unit Test Acceptance ---
-
 
14377
	    UPDATE UNIT_TESTS SET
-
 
14378
	           TEST_ACCEPTED = sAccepted,
-
 
14379
			   REVIEW_COMMENTS = sReviewComments,
-
 
14380
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
-
 
14381
			   ACCEPTED_BY = sAcceptedBy
-
 
14382
	     WHERE TEST_ID = pnTest_id
-
 
14383
	       AND PV_ID = pnPv_id;
-
 
14384
 
-
 
14385
	END IF;
-
 
14386
 
20484
END Remove_Runtime;
14387
END Update_Unit_Test_Acceptance;
20485
/
14388
/
20486
--------------------------------------------------------
14389
--------------------------------------------------------
20487
--  DDL for Procedure CHANGE_PACKAGE_STATE
14390
--  DDL for Procedure UPDATE_UNIT_TEST_TEST
20488
--------------------------------------------------------
14391
--------------------------------------------------------
20489
 
14392
 
20490
  CREATE OR REPLACE PROCEDURE "CHANGE_PACKAGE_STATE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14393
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_TEST" ( nTest_id IN NUMBER,
20491
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
14394
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
-
 
14395
											   nPv_id IN NUMBER,
-
 
14396
											   nUserId IN NUMBER,
-
 
14397
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
-
 
14398
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
-
 
14399
	                                           sCompletion_date IN VARCHAR2,
-
 
14400
											   sDpkg_path IN VARCHAR2,
-
 
14401
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
-
 
14402
											   sResults IN VARCHAR2,
-
 
14403
											   outFileName OUT VARCHAR2
-
 
14404
                                              ) IS
20492
/* ---------------------------------------------------------------------------
14405
/* ---------------------------------------------------------------------------
20493
    Version: 4.0
14406
    Version: 3.1.0
20494
   --------------------------------------------------------------------------- */
14407
   --------------------------------------------------------------------------- */
-
 
14408
   
-
 
14409
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
-
 
14410
 
-
 
14411
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
-
 
14412
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
-
 
14413
 
20495
 
14414
 
20496
BEGIN
14415
BEGIN
20497
 
14416
 
20498
    -- Unlock Package
14417
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
20499
    UPDATE RELEASE_CONTENT rc SET
14418
       	ResultsURL := sResults;
20500
    	rc.PKG_STATE = 0
14419
       ELSE
-
 
14420
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
-
 
14421
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
-
 
14422
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
20501
    WHERE rc.PV_ID = nPvId
14423
           END IF;
20502
	AND rc.RTAG_ID = nRtagId;
14424
       END IF;
20503
 
14425
 
-
 
14426
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
-
 
14427
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
-
 
14428
    		sResults_url:= 'doc' || '/' || 
-
 
14429
			;
20504
    /* LOG ACTION */
14430
        END IF;*/
-
 
14431
	--- Update Unit Test ---
-
 
14432
    UPDATE UNIT_TESTS SET
-
 
14433
           TEST_SUMMARY = sTest_summary,
-
 
14434
		   NUMOF_TEST = sNumof_test,
20505
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
14435
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
-
 
14436
		   COMPLETED_BY = nUserId,
-
 
14437
		   RESULTS_URL = ResultsURL,
-
 
14438
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
-
 
14439
     WHERE TEST_ID = nTest_id
-
 
14440
       AND PV_ID = nPv_id;
20506
 
14441
 
20507
END Change_Package_State;
14442
END Update_Unit_Test_Test;
20508
/
14443
/
20509
14444