Subversion Repositories DevTools

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1374 dpurdie 1
--------------------------------------------------------
4553 dpurdie 2
--  File created - Monday-September-22-2014   
1374 dpurdie 3
--------------------------------------------------------
4040 dpurdie 4
--------------------------------------------------------
5
--  DDL for Type RELMGR_NUMBER_TAB_T
6
--------------------------------------------------------
1373 dpurdie 7
 
4040 dpurdie 8
  CREATE OR REPLACE TYPE "RELMGR_NUMBER_TAB_T" as TABLE of NUMBER
1373 dpurdie 9
 
4040 dpurdie 10
/
11
 
12
/
13
--------------------------------------------------------
14
--  DDL for Type RELMGR_VARCHAR2_TAB_T
15
--------------------------------------------------------
16
 
17
  CREATE OR REPLACE TYPE "RELMGR_VARCHAR2_TAB_T" 
18
as TABLE of VARCHAR2(4000)
19
 
20
/
21
 
22
/
23
--------------------------------------------------------
24
--  DDL for Type TDICTIONARY
25
--------------------------------------------------------
26
 
27
  CREATE OR REPLACE TYPE "TDICTIONARY" AS TABLE OF VARCHAR2(4000) INDEX BY VARCHAR2(4000)
28
 
29
/
30
 
31
/
32
--------------------------------------------------------
33
--  DDL for Sequence MICROSOFTSEQDTPROPERTIES
34
--------------------------------------------------------
35
 
36
   CREATE SEQUENCE  "MICROSOFTSEQDTPROPERTIES"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 50 NOORDER  NOCYCLE ;
37
/
38
--------------------------------------------------------
39
--  DDL for Sequence SEQ_ADDITIONAL_NOTES
40
--------------------------------------------------------
41
 
4553 dpurdie 42
   CREATE SEQUENCE  "SEQ_ADDITIONAL_NOTES"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 35629 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 43
/
44
--------------------------------------------------------
45
--  DDL for Sequence SEQ_BMCON_ID
46
--------------------------------------------------------
47
 
4308 dpurdie 48
   CREATE SEQUENCE  "SEQ_BMCON_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 141 CACHE 20 NOORDER  NOCYCLE ;
4040 dpurdie 49
/
50
--------------------------------------------------------
51
--  DDL for Sequence SEQ_BM_ID
52
--------------------------------------------------------
53
 
54
   CREATE SEQUENCE  "SEQ_BM_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 5 NOCACHE  ORDER  NOCYCLE ;
55
/
56
--------------------------------------------------------
57
--  DDL for Sequence SEQ_CR_ID
58
--------------------------------------------------------
59
 
4553 dpurdie 60
   CREATE SEQUENCE  "SEQ_CR_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 87961 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 61
/
62
--------------------------------------------------------
63
--  DDL for Sequence SEQ_DAEMON_INSTRUCTION_ID
64
--------------------------------------------------------
65
 
4553 dpurdie 66
   CREATE SEQUENCE  "SEQ_DAEMON_INSTRUCTION_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 153807 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 67
/
68
--------------------------------------------------------
69
--  DDL for Sequence SEQ_GBE_ID
70
--------------------------------------------------------
71
 
4211 dpurdie 72
   CREATE SEQUENCE  "SEQ_GBE_ID"  MINVALUE 40 MAXVALUE 9999999999999999999999990 INCREMENT BY 1 START WITH 1231 NOCACHE  ORDER  NOCYCLE ;
4040 dpurdie 73
/
74
--------------------------------------------------------
75
--  DDL for Sequence SEQ_GROUP_EMAIL_ID
76
--------------------------------------------------------
77
 
4211 dpurdie 78
   CREATE SEQUENCE  "SEQ_GROUP_EMAIL_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999 INCREMENT BY 1 START WITH 1166 CACHE 20 NOORDER  NOCYCLE ;
4040 dpurdie 79
/
80
--------------------------------------------------------
81
--  DDL for Sequence SEQ_MSG_ID
82
--------------------------------------------------------
83
 
84
   CREATE SEQUENCE  "SEQ_MSG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 562 CACHE 20 ORDER  NOCYCLE ;
85
/
86
--------------------------------------------------------
87
--  DDL for Sequence SEQ_PKG_ID
88
--------------------------------------------------------
89
 
4553 dpurdie 90
   CREATE SEQUENCE  "SEQ_PKG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 60626 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 91
/
92
--------------------------------------------------------
93
--  DDL for Sequence SEQ_PROJ_ID
94
--------------------------------------------------------
95
 
4553 dpurdie 96
   CREATE SEQUENCE  "SEQ_PROJ_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 801 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 97
/
98
--------------------------------------------------------
99
--  DDL for Sequence SEQ_PV_ID
100
--------------------------------------------------------
101
 
4553 dpurdie 102
   CREATE SEQUENCE  "SEQ_PV_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1000851 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 103
/
104
--------------------------------------------------------
105
--  DDL for Sequence SEQ_RCON_ID
106
--------------------------------------------------------
107
 
4553 dpurdie 108
   CREATE SEQUENCE  "SEQ_RCON_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 25983 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 109
/
110
--------------------------------------------------------
111
--  DDL for Sequence SEQ_RTAG_ID
112
--------------------------------------------------------
113
 
4553 dpurdie 114
   CREATE SEQUENCE  "SEQ_RTAG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 30783 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 115
/
116
--------------------------------------------------------
117
--  DDL for Sequence SEQ_SCHEDULED_ID
118
--------------------------------------------------------
119
 
4553 dpurdie 120
   CREATE SEQUENCE  "SEQ_SCHEDULED_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 26981 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 121
/
122
--------------------------------------------------------
123
--  DDL for Sequence SEQ_SESSION_NUM
124
--------------------------------------------------------
125
 
4553 dpurdie 126
   CREATE SEQUENCE  "SEQ_SESSION_NUM"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1013446 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 127
/
128
--------------------------------------------------------
129
--  DDL for Sequence SEQ_UNIT_TESTS
130
--------------------------------------------------------
131
 
4553 dpurdie 132
   CREATE SEQUENCE  "SEQ_UNIT_TESTS"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 353625 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 133
/
134
--------------------------------------------------------
135
--  DDL for Sequence SEQ_USER_ID
136
--------------------------------------------------------
137
 
138
   CREATE SEQUENCE  "SEQ_USER_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 3961 CACHE 20 ORDER  NOCYCLE ;
139
/
140
--------------------------------------------------------
141
--  DDL for Sequence SEQ_VCS_TYPE
142
--------------------------------------------------------
143
 
144
   CREATE SEQUENCE  "SEQ_VCS_TYPE"  MINVALUE 1 MAXVALUE 255 INCREMENT BY 1 START WITH 43 CACHE 20 ORDER  NOCYCLE ;
145
/
146
--------------------------------------------------------
147
--  DDL for Sequence SEQ_VIEW_ID
148
--------------------------------------------------------
149
 
4553 dpurdie 150
   CREATE SEQUENCE  "SEQ_VIEW_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 5401 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 151
/
152
--------------------------------------------------------
153
--  DDL for Sequence SEQ_VTREE_ID
154
--------------------------------------------------------
155
 
4553 dpurdie 156
   CREATE SEQUENCE  "SEQ_VTREE_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 27602 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 157
/
158
--------------------------------------------------------
159
--  DDL for Table ABT_ACTION_LOG
160
--------------------------------------------------------
161
 
162
  CREATE TABLE "ABT_ACTION_LOG" 
163
   (	"RCON_ID" NUMBER, 
164
	"ACTION_DATETIME" DATE, 
165
	"ACTION" VARCHAR2(4000)
166
   ) ;
167
/
168
--------------------------------------------------------
169
--  DDL for Table ACTION_LOG
170
--------------------------------------------------------
171
 
172
  CREATE TABLE "ACTION_LOG" 
173
   (	"USER_ID" NUMBER, 
174
	"ACTION_DATETIME" DATE, 
175
	"PV_ID" NUMBER, 
176
	"DESCRIPTION" VARCHAR2(4000), 
177
	"ACTTYPE_ID" NUMBER
178
   ) ;
179
/
180
--------------------------------------------------------
181
--  DDL for Table ACTION_TYPE
182
--------------------------------------------------------
183
 
184
  CREATE TABLE "ACTION_TYPE" 
185
   (	"ACTTYPE_ID" NUMBER, 
186
	"NAME" VARCHAR2(255), 
187
	"DESCRIPTION" VARCHAR2(4000)
188
   ) ;
189
/
190
--------------------------------------------------------
191
--  DDL for Table ADDITIONAL_NOTES
192
--------------------------------------------------------
193
 
194
  CREATE TABLE "ADDITIONAL_NOTES" 
195
   (	"NOTE_ID" NUMBER, 
196
	"PV_ID" NUMBER, 
197
	"NOTE_TITLE" VARCHAR2(2000), 
198
	"NOTE_BODY" VARCHAR2(4000), 
199
	"MOD_DATE" DATE, 
200
	"MOD_USER" NUMBER
201
   ) ;
202
/
203
--------------------------------------------------------
204
--  DDL for Table ADVISORY_RIPPLE
205
--------------------------------------------------------
206
 
207
  CREATE TABLE "ADVISORY_RIPPLE" 
208
   (	"RTAG_ID" NUMBER, 
209
	"PV_ID" NUMBER
210
   ) ;
211
/
212
--------------------------------------------------------
213
--  DDL for Table ARCHIVE_ACTION_LOG
214
--------------------------------------------------------
215
 
216
  CREATE TABLE "ARCHIVE_ACTION_LOG" 
217
   (	"USER_ID" NUMBER, 
218
	"DATE_TIME_STAMP" DATE, 
219
	"RTAG_ID" NUMBER, 
220
	"DESCRIPTION" VARCHAR2(4000)
221
   ) ;
222
/
223
--------------------------------------------------------
224
--  DDL for Table ARCHIVE_DATA
225
--------------------------------------------------------
226
 
227
  CREATE TABLE "ARCHIVE_DATA" 
228
   (	"RTAG_ID" NUMBER(*,0), 
229
	"PV_ID" NUMBER(*,0)
230
   ) ;
231
/
232
--------------------------------------------------------
233
--  DDL for Table AUTOBUILD_FAILURE
234
--------------------------------------------------------
235
 
236
  CREATE TABLE "AUTOBUILD_FAILURE" 
237
   (	"GROUP_EMAIL_ID" NUMBER, 
238
	"PROJ_ID" NUMBER, 
239
	"VIEW_ID" NUMBER
240
   ) ;
241
/
242
--------------------------------------------------------
243
--  DDL for Table BUILD_ENVIRONMENTS
244
--------------------------------------------------------
245
 
246
  CREATE TABLE "BUILD_ENVIRONMENTS" 
247
   (	"BE_ID" NUMBER, 
248
	"BE_NAME" VARCHAR2(255)
249
   ) ;
250
/
251
--------------------------------------------------------
252
--  DDL for Table BUILD_ENV_DOCUMENTS
253
--------------------------------------------------------
254
 
255
  CREATE TABLE "BUILD_ENV_DOCUMENTS" 
256
   (	"BE_ID" NUMBER, 
257
	"DOC_NUM" VARCHAR2(255)
258
   ) ;
259
/
260
--------------------------------------------------------
261
--  DDL for Table BUILD_MACHINES
262
--------------------------------------------------------
263
 
264
  CREATE TABLE "BUILD_MACHINES" 
265
   (	"BM_ID" NUMBER, 
266
	"BM_NAME" VARCHAR2(20)
267
   ) ;
268
/
269
--------------------------------------------------------
270
--  DDL for Table BUILD_MACHINE_CONFIG
271
--------------------------------------------------------
272
 
273
  CREATE TABLE "BUILD_MACHINE_CONFIG" 
274
   (	"BMCON_ID" NUMBER, 
275
	"DISPLAY_NAME" VARCHAR2(50), 
276
	"MACHINE_HOSTNAME" VARCHAR2(50), 
277
	"DESCRIPTION" VARCHAR2(512), 
278
	"GBE_ID" NUMBER
279
   ) ;
280
/
281
--------------------------------------------------------
282
--  DDL for Table BUILD_ORDER
283
--------------------------------------------------------
284
 
285
  CREATE TABLE "BUILD_ORDER" 
286
   (	"RTAG_ID" NUMBER, 
287
	"STEP_NUM" NUMBER, 
288
	"PV_ID" NUMBER, 
289
	"UNRESOLVED" CHAR(1)
290
   ) ;
291
/
292
--------------------------------------------------------
293
--  DDL for Table BUILD_SERVICE_CONFIG
294
--------------------------------------------------------
295
 
296
  CREATE TABLE "BUILD_SERVICE_CONFIG" 
297
   (	"SERVICE" VARCHAR2(50), 
298
	"CONFIG" VARCHAR2(2000)
299
   ) ;
300
/
301
--------------------------------------------------------
302
--  DDL for Table BUILD_STANDARDS
303
--------------------------------------------------------
304
 
305
  CREATE TABLE "BUILD_STANDARDS" 
306
   (	"BS_ID" NUMBER, 
307
	"BS_NAME" VARCHAR2(20)
308
   ) ;
309
/
310
--------------------------------------------------------
311
--  DDL for Table BUILD_STANDARDS_ADDENDUM
312
--------------------------------------------------------
313
 
314
  CREATE TABLE "BUILD_STANDARDS_ADDENDUM" 
315
   (	"BSA_ID" NUMBER, 
316
	"BSA_NAME" VARCHAR2(4000), 
317
	"BS_ID" NUMBER
318
   ) ;
319
/
320
--------------------------------------------------------
321
--  DDL for Table CODE_REVIEWS
322
--------------------------------------------------------
323
 
324
  CREATE TABLE "CODE_REVIEWS" 
325
   (	"PV_ID" NUMBER, 
326
	"DATE_OF_REVIEW" DATE, 
327
	"TIME_SPENT" FLOAT(126), 
328
	"REVIEW_REASON" VARCHAR2(4000), 
329
	"RTEAM_DOMAIN_EXPERT" VARCHAR2(4000), 
330
	"RTEAM_LANGUAGE_EXPERT" VARCHAR2(4000), 
331
	"RTEAM_PEER_DEVELOPER" VARCHAR2(4000), 
332
	"RTEAM_AUTHOR" VARCHAR2(4000), 
333
	"FILES_REVIEWED" VARCHAR2(4000), 
334
	"REVIEW_RESULTS" NUMBER, 
335
	"ISSUES_RAISED" VARCHAR2(4000), 
336
	"REVIEW_COMMENTS" VARCHAR2(4000), 
337
	"FNC_S_MEETS_FUNCTIONALITY" CHAR(1), 
338
	"FNC_C_MEETS_FUNCTIONALITY" VARCHAR2(4000), 
339
	"RBS_S_BOUND_COND_HANDLED" CHAR(1), 
340
	"RBS_C_BOUND_COND_HANDLED" VARCHAR2(4000), 
341
	"RBS_S_CLASS_INTERF_PRECOND" CHAR(1), 
342
	"RBS_C_CLASS_INTERF_PRECOND" VARCHAR2(4000), 
343
	"RBS_S_NO_UNITIALISED_DATE" CHAR(1), 
344
	"RBS_C_NO_UNITIALISED_DATE" VARCHAR2(4000), 
345
	"RBS_S_EXCEP_HANDING" CHAR(1), 
346
	"RBS_C_EXCEP_HANDING" VARCHAR2(4000), 
347
	"RBS_S_RESOURCE_MNG" CHAR(1), 
348
	"RBS_C_RESOURCE_MNG" VARCHAR2(4000), 
349
	"RBS_S_TRANS_COMPLET" CHAR(1), 
350
	"RBS_C_TRANS_COMPLET" VARCHAR2(4000), 
351
	"RBS_S_THREADSAFETY" CHAR(1), 
352
	"RBS_C_THREADSAFETY" VARCHAR2(4000), 
353
	"RBS_S_RET_VALS" CHAR(1), 
354
	"RBS_C_RET_VALS" VARCHAR2(4000), 
355
	"RBS_S_CORR_ERR_HANDLING" CHAR(1), 
356
	"RBS_C_CORR_ERR_HANDLING" VARCHAR2(4000), 
357
	"RBS_S_SQL_STD" CHAR(1), 
358
	"RBS_C_SQL_STD" VARCHAR2(4000), 
359
	"MNT_S_EXT_REF" CHAR(1), 
360
	"MNT_C_EXT_REF" VARCHAR2(4000), 
361
	"MNT_S_CLASS_SIZE" CHAR(1), 
362
	"MNT_C_CLASS_SIZE" VARCHAR2(4000), 
363
	"MNT_S_METHOD_SIZE" CHAR(1), 
364
	"MNT_C_METHOD_SIZE" VARCHAR2(4000), 
365
	"MNT_S_APPROP_COMM" CHAR(1), 
366
	"MNT_C_APPROP_COMM" VARCHAR2(4000), 
367
	"MNT_S_IDENT_NAME_STD" CHAR(1), 
368
	"MNT_C_IDENT_NAME_STD" VARCHAR2(4000), 
369
	"MNT_S_SWITCH_HAVE_DEFAULTS" CHAR(1), 
370
	"MNT_C_SWITCH_HAVE_DEFAULTS" VARCHAR2(4000), 
371
	"MNT_S_NO_LIT_NUM" CHAR(1), 
372
	"MNT_C_NO_LIT_NUM" VARCHAR2(4000), 
373
	"MNT_S_NO_DEAD_CODE" CHAR(1), 
374
	"MNT_C_NO_DEAD_CODE" VARCHAR2(4000), 
375
	"DEI_S_STD_DES_PATT" CHAR(1), 
376
	"DEI_C_STD_DES_PATT" VARCHAR2(4000), 
377
	"DEI_S_APPROP_ALGOR" CHAR(1), 
378
	"DEI_C_APPROP_ALGOR" VARCHAR2(4000), 
379
	"DEI_S_APPROP_OBJ" CHAR(1), 
380
	"DEI_C_APPROP_OBJ" VARCHAR2(4000), 
381
	"DEI_S_APPROP_ERR_MSG" CHAR(1), 
382
	"DEI_C_APPROP_ERR_MSG" VARCHAR2(4000), 
383
	"DEI_S_STD_FRAMEW_COMP" CHAR(1), 
384
	"DEI_C_STD_FRAMEW_COMP" VARCHAR2(4000), 
385
	"DEI_S_APPROP_LOGGING" CHAR(1), 
386
	"DEI_C_APPROP_LOGGING" VARCHAR2(4000)
387
   ) ;
388
/
389
--------------------------------------------------------
390
--  DDL for Table CODE_REVIEW_URL
391
--------------------------------------------------------
392
 
393
  CREATE TABLE "CODE_REVIEW_URL" 
394
   (	"CR_ID" NUMBER, 
395
	"PV_ID" NUMBER, 
396
	"PROJ_ID" NUMBER, 
397
	"URL" VARCHAR2(4000), 
398
	"REASON" VARCHAR2(4000), 
399
	"DATE_OF_REVIEW" DATE, 
400
	"LAST_MODIFIED" DATE
401
   ) ;
402
/
403
--------------------------------------------------------
404
--  DDL for Table CQ_ISSUES
405
--------------------------------------------------------
406
 
407
  CREATE TABLE "CQ_ISSUES" 
408
   (	"PV_ID" NUMBER, 
409
	"ISS_DB" NUMBER, 
410
	"ISS_ID" NUMBER, 
411
	"ISS_STATE" NUMBER, 
412
	"MOD_DATE" DATE, 
413
	"NOTES" VARCHAR2(255)
414
   ) ;
415
/
416
--------------------------------------------------------
417
--  DDL for Table DAEMON_ACTION_LOG
418
--------------------------------------------------------
419
 
420
  CREATE TABLE "DAEMON_ACTION_LOG" 
421
   (	"USER_ID" NUMBER, 
422
	"ACTION_DATETIME" DATE, 
423
	"RCON_ID" NUMBER, 
424
	"DESCRIPTION" VARCHAR2(4000), 
425
	"ACTTYPE_ID" NUMBER
426
   ) ;
427
/
428
--------------------------------------------------------
429
--  DDL for Table DAEMON_INSTRUCTIONS
430
--------------------------------------------------------
431
 
432
  CREATE TABLE "DAEMON_INSTRUCTIONS" 
433
   (	"DAEMON_INSTRUCTIONS_ID" NUMBER, 
434
	"OP_CODE" NUMBER(*,0), 
435
	"RTAG_ID" NUMBER, 
436
	"PV_ID" NUMBER, 
437
	"SCHEDULED_DATETIME" DATE, 
438
	"REPEAT_SECS" NUMBER(*,0), 
439
	"ADDED_DATETIME" DATE, 
440
	"USER_ID" NUMBER, 
441
	"IN_PROGRESS" CHAR(1)
442
   ) ;
443
 
444
   COMMENT ON COLUMN "DAEMON_INSTRUCTIONS"."OP_CODE" IS 'The instruction op-code';
445
   COMMENT ON COLUMN "DAEMON_INSTRUCTIONS"."SCHEDULED_DATETIME" IS 'The datetime after which the instruction can be carried out.';
446
   COMMENT ON COLUMN "DAEMON_INSTRUCTIONS"."REPEAT_SECS" IS 'The number of seconds to add to scheduled_datetime when instruction is repeating';
447
   COMMENT ON COLUMN "DAEMON_INSTRUCTIONS"."ADDED_DATETIME" IS 'The datetime the instruction was added to the table - informational only';
448
   COMMENT ON COLUMN "DAEMON_INSTRUCTIONS"."USER_ID" IS 'The user who added the instruction to the table  - informational only';
449
/
450
--------------------------------------------------------
451
--  DDL for Table DASH_BOARD
452
--------------------------------------------------------
453
 
454
  CREATE TABLE "DASH_BOARD" 
455
   (	"PROJ_ID" NUMBER, 
456
	"RTAG_ID" NUMBER, 
457
	"LAST_BUILD_TIME" DATE, 
458
	"AUTOMATED_PACKAGES" NUMBER, 
459
	"TOTAL_PACKAGES" NUMBER
460
   ) ;
461
/
462
--------------------------------------------------------
463
--  DDL for Table DEPRECATED_PACKAGES
464
--------------------------------------------------------
465
 
466
  CREATE TABLE "DEPRECATED_PACKAGES" 
467
   (	"RTAG_ID" NUMBER, 
468
	"PKG_ID" NUMBER, 
469
	"COMMENTS" VARCHAR2(4000), 
470
	"V_EXT" VARCHAR2(50)
471
   ) ;
472
/
473
--------------------------------------------------------
474
--  DDL for Table DO_NOT_RIPPLE
475
--------------------------------------------------------
476
 
477
  CREATE TABLE "DO_NOT_RIPPLE" 
478
   (	"RTAG_ID" NUMBER, 
479
	"PV_ID" NUMBER, 
480
	"ROOT_PV_ID" NUMBER, 
481
	"ROOT_CAUSE" VARCHAR2(50), 
482
	"ROOT_FILE" VARCHAR2(100)
483
   ) ;
484
/
485
--------------------------------------------------------
486
--  DDL for Table GBE_MACHTYPE
487
--------------------------------------------------------
488
 
489
  CREATE TABLE "GBE_MACHTYPE" 
490
   (	"GBE_ID" NUMBER, 
491
	"GBE_VALUE" VARCHAR2(20), 
492
	"BM_ID" NUMBER
493
   ) ;
494
/
495
--------------------------------------------------------
496
--  DDL for Table IGNORE_WARNINGS
497
--------------------------------------------------------
498
 
499
  CREATE TABLE "IGNORE_WARNINGS" 
500
   (	"RTAG_ID" NUMBER, 
501
	"PV_ID" NUMBER, 
502
	"DPV_ID" NUMBER, 
503
	"IS_PATCH_IGNORE" CHAR(1)
504
   ) ;
505
/
506
--------------------------------------------------------
507
--  DDL for Table JIRA_ISSUES
508
--------------------------------------------------------
509
 
510
  CREATE TABLE "JIRA_ISSUES" 
511
   (	"PV_ID" NUMBER, 
512
	"ISS_KEY" VARCHAR2(4000), 
513
	"DATE_TIME_STAMP" DATE
514
   ) ;
515
/
516
--------------------------------------------------------
517
--  DDL for Table LICENCES
518
--------------------------------------------------------
519
 
520
  CREATE TABLE "LICENCES" 
521
   (	"LICENCE" NUMBER, 
522
	"NAME" VARCHAR2(50)
523
   ) ;
524
/
525
--------------------------------------------------------
526
--  DDL for Table LICENCING
527
--------------------------------------------------------
528
 
529
  CREATE TABLE "LICENCING" 
530
   (	"PV_ID" NUMBER, 
531
	"LICENCE" NUMBER
532
   ) ;
533
/
534
--------------------------------------------------------
535
--  DDL for Table MEMBERS_GROUP
536
--------------------------------------------------------
537
 
538
  CREATE TABLE "MEMBERS_GROUP" 
539
   (	"GROUP_EMAIL_ID" NUMBER, 
540
	"USER_ID" NUMBER
541
   ) ;
542
/
543
--------------------------------------------------------
544
--  DDL for Table MESSAGE_BOARD
545
--------------------------------------------------------
546
 
547
  CREATE TABLE "MESSAGE_BOARD" 
548
   (	"MSG_ID" NUMBER, 
549
	"MSG_DETAILS" VARCHAR2(2000), 
550
	"SUBMITION_DATE" DATE, 
551
	"EXPIRY_DATE" DATE, 
552
	"DUE_DATE" DATE
553
   ) ;
554
/
555
--------------------------------------------------------
556
--  DDL for Table MICROSOFTDTPROPERTIES
557
--------------------------------------------------------
558
 
559
  CREATE TABLE "MICROSOFTDTPROPERTIES" 
560
   (	"ID" NUMBER, 
561
	"OBJECTID" NUMBER, 
562
	"PROPERTY" VARCHAR2(64), 
563
	"VALUE" VARCHAR2(255), 
564
	"LVALUE" LONG RAW, 
565
	"VERSION" NUMBER DEFAULT (0)
566
   ) ;
567
/
568
--------------------------------------------------------
569
--  DDL for Table NOTE_MANAGER
570
--------------------------------------------------------
571
 
572
  CREATE TABLE "NOTE_MANAGER" 
573
   (	"NID" VARCHAR2(30), 
574
	"LAST_USER" VARCHAR2(20), 
575
	"LAST_DATE" DATE, 
576
	"DESCRIPTION" VARCHAR2(4000)
577
   ) ;
578
/
579
--------------------------------------------------------
580
--  DDL for Table NOTIFICATION_HISTORY
581
--------------------------------------------------------
582
 
583
  CREATE TABLE "NOTIFICATION_HISTORY" 
584
   (	"RTAG_ID" NUMBER, 
585
	"PV_ID" NUMBER, 
586
	"USER_ID" NUMBER, 
587
	"DATE_TIME_STAMP" DATE
588
   ) ;
589
/
590
--------------------------------------------------------
591
--  DDL for Table PACKAGES
592
--------------------------------------------------------
593
 
594
  CREATE TABLE "PACKAGES" 
595
   (	"PKG_ID" NUMBER, 
596
	"PKG_NAME" VARCHAR2(255), 
597
	"SUNOS_ELECTRONIC_NAME" VARCHAR2(255), 
598
	"WIN_ELECTRONIC_NAME" VARCHAR2(255)
599
   ) ;
600
/
601
--------------------------------------------------------
602
--  DDL for Table PACKAGE_BUILD_ENV
603
--------------------------------------------------------
604
 
605
  CREATE TABLE "PACKAGE_BUILD_ENV" 
606
   (	"PV_ID" NUMBER, 
607
	"BE_ID" NUMBER, 
608
	"BUILD_TYPE" NUMBER
609
   ) ;
610
/
611
--------------------------------------------------------
612
--  DDL for Table PACKAGE_BUILD_INFO
613
--------------------------------------------------------
614
 
615
  CREATE TABLE "PACKAGE_BUILD_INFO" 
616
   (	"PV_ID" NUMBER, 
617
	"BM_ID" NUMBER, 
618
	"BSA_ID" NUMBER
619
   ) ;
620
/
621
--------------------------------------------------------
622
--  DDL for Table PACKAGE_DEPENDENCIES
623
--------------------------------------------------------
624
 
625
  CREATE TABLE "PACKAGE_DEPENDENCIES" 
626
   (	"PV_ID" NUMBER, 
627
	"DPV_ID" NUMBER, 
628
	"PKG_ID" NUMBER, 
629
	"DPKG_ID" NUMBER, 
630
	"BUILD_TYPE" CHAR(1), 
631
	"DISPLAY_ORDER" NUMBER
632
   ) ;
633
/
634
--------------------------------------------------------
635
--  DDL for Table PACKAGE_DOCUMENTS
636
--------------------------------------------------------
637
 
638
  CREATE TABLE "PACKAGE_DOCUMENTS" 
639
   (	"PV_ID" NUMBER, 
640
	"TEST_ID" NUMBER, 
641
	"DOC_ID" NUMBER, 
642
	"DOC_NUM" VARCHAR2(50), 
643
	"IS_LATEST" CHAR(1)
644
   ) ;
645
/
646
--------------------------------------------------------
647
--  DDL for Table PACKAGE_INTEREST
648
--------------------------------------------------------
649
 
650
  CREATE TABLE "PACKAGE_INTEREST" 
651
   (	"PKG_ID" NUMBER, 
652
	"PROJ_ID" NUMBER, 
653
	"USER_ID" NUMBER
654
   ) ;
655
/
656
--------------------------------------------------------
657
--  DDL for Table PACKAGE_METRICS
658
--------------------------------------------------------
659
 
660
  CREATE TABLE "PACKAGE_METRICS" 
661
   (	"PV_ID" NUMBER, 
662
	"BRANCHES" NUMBER, 
663
	"BRANCH_LIST" VARCHAR2(4000), 
664
	"CODE_FILES" NUMBER, 
665
	"IGNORED_FILES" NUMBER, 
666
	"DIRECTORIES" NUMBER, 
667
	"DIRECTORY_DEPTH" NUMBER, 
668
	"TOTAL_FILES" NUMBER, 
669
	"MAKEFILES" NUMBER, 
670
	"BLANK_LINES" NUMBER, 
671
	"CODE_LINES" NUMBER, 
672
	"COMMENT_LINES" NUMBER, 
673
	"CREATED_STAMP" DATE
674
   ) ;
675
/
676
--------------------------------------------------------
677
--  DDL for Table PACKAGE_PATCHES
678
--------------------------------------------------------
679
 
680
  CREATE TABLE "PACKAGE_PATCHES" 
681
   (	"PV_ID" NUMBER, 
682
	"PATCH_ID" NUMBER, 
683
	"INSTALL_ORDER" NUMBER, 
684
	"PATCH_OBSOLETED_BY" NUMBER
685
   ) ;
686
/
687
--------------------------------------------------------
688
--  DDL for Table PACKAGE_PROCESSES
689
--------------------------------------------------------
690
 
691
  CREATE TABLE "PACKAGE_PROCESSES" 
692
   (	"PV_ID" NUMBER, 
693
	"PROC_ID" NUMBER
694
   ) ;
695
/
696
--------------------------------------------------------
697
--  DDL for Table PACKAGE_VERSIONS
698
--------------------------------------------------------
699
 
700
  CREATE TABLE "PACKAGE_VERSIONS" 
701
   (	"PV_ID" NUMBER, 
702
	"PKG_ID" NUMBER, 
703
	"PKG_VERSION" VARCHAR2(50), 
704
	"DLOCKED" CHAR(1), 
705
	"RELEASED_AT" NUMBER, 
706
	"MODIFIED_STAMP" DATE, 
707
	"MODIFIER_ID" NUMBER, 
708
	"CREATED_STAMP" DATE, 
709
	"CREATOR_ID" NUMBER, 
710
	"COMMENTS" VARCHAR2(4000), 
711
	"V_MM" VARCHAR2(50), 
712
	"V_NMM" VARCHAR2(50), 
713
	"V_EXT" VARCHAR2(50), 
714
	"PKG_LABEL" VARCHAR2(60), 
715
	"SRC_PATH" VARCHAR2(2000), 
716
	"PV_DESCRIPTION" VARCHAR2(4000), 
717
	"OWNER_ID" NUMBER, 
718
	"PV_OVERVIEW" VARCHAR2(4000), 
719
	"IS_PATCH" CHAR(1), 
720
	"LAST_PV_ID" NUMBER, 
721
	"RELEASE_NOTES_INFO" VARCHAR2(1000), 
722
	"IS_DEPLOYABLE" CHAR(1), 
723
	"IS_BUILD_ENV_REQUIRED" CHAR(1), 
724
	"IS_OBSOLETE" CHAR(1), 
725
	"OBSOLETE_COMMENTS" VARCHAR2(4000), 
726
	"BUILD_TYPE" CHAR(1), 
727
	"CHANGE_TYPE" CHAR(1), 
728
	"LINK" VARCHAR2(4000), 
729
	"PATCH_ELECTRONIC_NAME" VARCHAR2(4000), 
730
	"BS_ID" NUMBER, 
731
	"IS_AUTOBUILDABLE" CHAR(1), 
732
	"SBOM_PRIORITY" CHAR(1), 
733
	"RIPPLE_FIELD" CHAR(1 CHAR), 
734
	"MAXIMUM_BUILD_TIME" NUMBER, 
735
	"ESTIMATED_COMPLETION_TIME" DATE, 
736
	"MAJOR_LIMIT" NUMBER(10,0), 
737
	"MINOR_LIMIT" NUMBER(10,0), 
738
	"PATCH_LIMIT" NUMBER(10,0), 
739
	"BUILD_NUMBER_LIMIT" NUMBER(10,0), 
740
	"VCS_TYPE_ID" NUMBER
741
   ) ;
742
/
743
--------------------------------------------------------
744
--  DDL for Table PEGGED_VERSIONS
745
--------------------------------------------------------
746
 
747
  CREATE TABLE "PEGGED_VERSIONS" 
748
   (	"RTAG_ID" NUMBER, 
749
	"PV_ID" NUMBER
750
   ) ;
751
/
752
--------------------------------------------------------
753
--  DDL for Table PLANNED
754
--------------------------------------------------------
755
 
756
  CREATE TABLE "PLANNED" 
757
   (	"RTAG_ID" NUMBER, 
758
	"PV_ID" NUMBER, 
759
	"VIEW_ID" NUMBER, 
760
	"OPERATION" CHAR(1)
761
   ) ;
762
/
763
--------------------------------------------------------
764
--  DDL for Table PLANNED_VERSIONS
765
--------------------------------------------------------
766
 
767
  CREATE TABLE "PLANNED_VERSIONS" 
768
   (	"PKG_ID" NUMBER, 
769
	"PKG_VERSION" VARCHAR2(50), 
770
	"PLANNED_TIME" DATE
771
   ) ;
772
/
773
--------------------------------------------------------
774
--  DDL for Table PLATFORMS
775
--------------------------------------------------------
776
 
777
  CREATE TABLE "PLATFORMS" 
778
   (	"CODE" NUMBER, 
779
	"NAME" VARCHAR2(255)
780
   ) ;
781
/
782
--------------------------------------------------------
783
--  DDL for Table PROCESSES
784
--------------------------------------------------------
785
 
786
  CREATE TABLE "PROCESSES" 
787
   (	"PROC_ID" NUMBER, 
788
	"PROC_NAME" VARCHAR2(255), 
789
	"PROC_DESCRIPTION" VARCHAR2(255), 
790
	"RUN_AS" VARCHAR2(255), 
791
	"PKG_OWNER" VARCHAR2(4000), 
792
	"IS_INTERFACE" CHAR(1)
793
   ) ;
794
/
795
--------------------------------------------------------
796
--  DDL for Table PRODUCT_COMPONENTS
797
--------------------------------------------------------
798
 
799
  CREATE TABLE "PRODUCT_COMPONENTS" 
800
   (	"PV_ID" NUMBER, 
801
	"OS_ID" NUMBER, 
802
	"FILE_PATH" VARCHAR2(4000), 
803
	"FILE_NAME" VARCHAR2(4000), 
804
	"DESTINATION_PATH" VARCHAR2(4000), 
805
	"BYTE_SIZE" NUMBER, 
806
	"CRC_CKSUM" VARCHAR2(2000)
807
   ) ;
808
/
809
--------------------------------------------------------
810
--  DDL for Table PRODUCT_STATES
811
--------------------------------------------------------
812
 
813
  CREATE TABLE "PRODUCT_STATES" 
814
   (	"STATE_ID" NUMBER, 
815
	"STATE" VARCHAR2(4000)
816
   ) ;
817
/
818
--------------------------------------------------------
819
--  DDL for Table PROJECTS
820
--------------------------------------------------------
821
 
822
  CREATE TABLE "PROJECTS" 
823
   (	"PROJ_ID" NUMBER, 
824
	"PROJ_NAME" VARCHAR2(50), 
825
	"BASE_URL" VARCHAR2(4000), 
826
	"JIRA_KEY" VARCHAR2(16)
827
   ) ;
828
/
829
--------------------------------------------------------
830
--  DDL for Table PROJECT_ACTION_LOG
831
--------------------------------------------------------
832
 
833
  CREATE TABLE "PROJECT_ACTION_LOG" 
834
   (	"USER_ID" NUMBER, 
835
	"ACTION_DATETIME" DATE, 
836
	"PROJ_ID" NUMBER, 
837
	"DESCRIPTION" VARCHAR2(4000), 
838
	"ACTTYPE_ID" NUMBER, 
839
	"RTAG_ID" NUMBER
840
   ) ;
841
/
842
--------------------------------------------------------
843
--  DDL for Table PROJECT_EXTENTIONS
844
--------------------------------------------------------
845
 
846
  CREATE TABLE "PROJECT_EXTENTIONS" 
847
   (	"PROJ_ID" NUMBER, 
848
	"EXT_NAME" VARCHAR2(10), 
849
	"UCOMMENT" VARCHAR2(120), 
850
	"IS_VISIBLE" CHAR(1) DEFAULT 'Y', 
851
	"IS_COTS" CHAR(1) DEFAULT 'N'
852
   ) ;
853
/
854
--------------------------------------------------------
855
--  DDL for Table RELEASE_COMPONENTS
856
--------------------------------------------------------
857
 
858
  CREATE TABLE "RELEASE_COMPONENTS" 
859
   (	"PV_ID" NUMBER, 
860
	"FILE_NAME" VARCHAR2(255), 
861
	"FILE_PATH" VARCHAR2(2000), 
862
	"BYTE_SIZE" NUMBER, 
863
	"CRC_CKSUM" VARCHAR2(50), 
864
	"CRC_MODCRC" VARCHAR2(50)
865
   ) ;
866
/
867
--------------------------------------------------------
868
--  DDL for Table RELEASE_CONFIG
869
--------------------------------------------------------
870
 
871
  CREATE TABLE "RELEASE_CONFIG" 
872
   (	"RCON_ID" NUMBER, 
873
	"RTAG_ID" NUMBER, 
874
	"GBE_ID" NUMBER, 
875
	"DAEMON_HOSTNAME" VARCHAR2(50), 
876
	"DAEMON_MODE" CHAR(1 CHAR), 
4308 dpurdie 877
	"GBE_BUILDFILTER" VARCHAR2(255), 
878
	"BMCON_ID" NUMBER
879
   ) ;
880
 
881
   COMMENT ON COLUMN "RELEASE_CONFIG"."GBE_ID" IS 'Do not use. Data should come from build_machine_config';
882
   COMMENT ON COLUMN "RELEASE_CONFIG"."DAEMON_HOSTNAME" IS 'Do not use. Data should come from build_machine_config';
883
   COMMENT ON COLUMN "RELEASE_CONFIG"."BMCON_ID" IS 'Link to the build_machine_config table';
4040 dpurdie 884
/
885
--------------------------------------------------------
886
--  DDL for Table RELEASE_CONTENT
887
--------------------------------------------------------
888
 
889
  CREATE TABLE "RELEASE_CONTENT" 
890
   (	"RTAG_ID" NUMBER, 
891
	"PV_ID" NUMBER, 
892
	"BASE_VIEW_ID" NUMBER, 
893
	"INSERT_STAMP" DATE, 
894
	"INSERTOR_ID" NUMBER, 
895
	"PKG_STATE" NUMBER, 
896
	"PKG_ID" NUMBER, 
897
	"DEPRECATED_STATE" NUMBER, 
898
	"PRODUCT_STATE" NUMBER
899
   ) ;
900
/
901
--------------------------------------------------------
902
--  DDL for Table RELEASE_LINKS
903
--------------------------------------------------------
904
 
905
  CREATE TABLE "RELEASE_LINKS" 
906
   (	"RTAG_ID" NUMBER, 
907
	"REF_RTAG_ID" NUMBER
908
   ) ;
909
/
910
--------------------------------------------------------
911
--  DDL for Table RELEASE_METRICS
912
--------------------------------------------------------
913
 
914
  CREATE TABLE "RELEASE_METRICS" 
915
   (	"RTAG_ID" NUMBER, 
916
	"TOTAL_PACKAGES" NUMBER, 
917
	"AUTOBUILT" NUMBER, 
918
	"LINES_OF_CODE" NUMBER, 
919
	"UNIT_TESTED" NUMBER, 
920
	"AUTOTESTED" NUMBER, 
921
	"BRANCHES" NUMBER, 
922
	"LAST_BUILD_TIME" DATE
923
   ) ;
924
/
925
--------------------------------------------------------
926
--  DDL for Table RELEASE_TAGS
927
--------------------------------------------------------
928
 
929
  CREATE TABLE "RELEASE_TAGS" 
930
   (	"RTAG_ID" NUMBER, 
931
	"VTREE_ID" NUMBER, 
932
	"RTAG_NAME" VARCHAR2(50), 
933
	"DESCRIPTION" VARCHAR2(4000), 
934
	"CREATED_STAMP" DATE, 
935
	"CREATOR_ID" NUMBER, 
936
	"OFFICIAL_STAMP" DATE, 
937
	"RELEASOR_ID" NUMBER, 
938
	"OFFICIAL" CHAR(1), 
939
	"REBUILD_ENV" CHAR(1), 
940
	"REBUILD_STAMP" NUMBER, 
941
	"RTAG_VERSION" VARCHAR2(4000), 
942
	"RTAG_LIFE_CYCLE" NUMBER, 
943
	"PARENT_RTAG_ID" NUMBER, 
944
	"PROJ_ID" NUMBER, 
945
	"DISPLAY_ORDER" NUMBER, 
946
	"OWNER_EMAIL" VARCHAR2(1000), 
947
	"ASSOC_MASS_REF" NUMBER, 
948
	"OWNER_PERSONAL_EMAIL" VARCHAR2(1000), 
949
	"CONFIG_SPEC_BRANCH" VARCHAR2(4000), 
4211 dpurdie 950
	"PRODUCT_STATE_USED" CHAR(1), 
951
	"OFFICIAL_ID" NUMBER
4040 dpurdie 952
   ) ;
953
/
954
--------------------------------------------------------
955
--  DDL for Table REPEAT_SCHEDULE
956
--------------------------------------------------------
957
 
958
  CREATE TABLE "REPEAT_SCHEDULE" 
959
   (	"RPT_ID" NUMBER, 
960
	"REPEAT" CHAR(1)
961
   ) ;
962
/
963
--------------------------------------------------------
964
--  DDL for Table RIPPLE_FIELD_STATES
965
--------------------------------------------------------
966
 
967
  CREATE TABLE "RIPPLE_FIELD_STATES" 
968
   (	"STATE_ID" NUMBER, 
969
	"STATE_ACRONYM" CHAR(1), 
970
	"STATE_NAME" VARCHAR2(50)
971
   ) ;
972
/
973
--------------------------------------------------------
974
--  DDL for Table RM_PACKAGE_ISSUES
975
--------------------------------------------------------
976
 
977
  CREATE TABLE "RM_PACKAGE_ISSUES" 
978
   (	"PKG_ID" NUMBER, 
979
	"PKG_NAME" VARCHAR2(50), 
980
	"PV_ID" NUMBER, 
981
	"PKG_VERSION" VARCHAR2(50), 
982
	"DPV_ID" NUMBER, 
983
	"DPKG_NAME" VARCHAR2(50), 
984
	"DPKG_VERSION" VARCHAR2(50), 
985
	"ISS_DB" NUMBER, 
986
	"ISS_ID" NUMBER
987
   ) ;
988
/
989
--------------------------------------------------------
990
--  DDL for Table RM_PKG_ISSUES
991
--------------------------------------------------------
992
 
993
  CREATE GLOBAL TEMPORARY TABLE "RM_PKG_ISSUES" 
994
   (	"PKG_ID" NUMBER, 
995
	"PKG_NAME" VARCHAR2(50), 
996
	"PV_ID" NUMBER, 
997
	"PKG_VERSION" VARCHAR2(50), 
998
	"DPV_ID" NUMBER, 
999
	"DPKG_NAME" VARCHAR2(50), 
1000
	"DPKG_VERSION" VARCHAR2(50), 
1001
	"ISS_DB" NUMBER, 
1002
	"ISS_ID" NUMBER
1003
   ) ON COMMIT PRESERVE ROWS ;
1004
/
1005
--------------------------------------------------------
1006
--  DDL for Table RUNTIME_DEPENDENCIES
1007
--------------------------------------------------------
1008
 
1009
  CREATE TABLE "RUNTIME_DEPENDENCIES" 
1010
   (	"PV_ID" NUMBER, 
1011
	"RTD_ID" NUMBER, 
1012
	"RTD_COMMENTS" VARCHAR2(2000), 
1013
	"RTD_URL" VARCHAR2(2000), 
1014
	"MOD_DATE" DATE, 
1015
	"MOD_USER" NUMBER
1016
   ) ;
1017
/
1018
--------------------------------------------------------
1019
--  DDL for Table RUN_LEVEL
1020
--------------------------------------------------------
1021
 
1022
  CREATE TABLE "RUN_LEVEL" 
1023
   (	"RCON_ID" NUMBER, 
1024
	"CURRENT_BUILD_FILES" CLOB, 
1025
	"CURRENT_RUN_LEVEL" NUMBER, 
1026
	"PAUSE" NUMBER, 
1027
	"CURRENT_PKG_ID_BEING_BUILT" NUMBER, 
4553 dpurdie 1028
	"KEEP_ALIVE" DATE, 
1029
	"CURRENT_PV_ID" NUMBER, 
1030
	"LAST_BUILD" DATE DEFAULT sysdate
4040 dpurdie 1031
   ) ;
4553 dpurdie 1032
 
1033
   COMMENT ON COLUMN "RUN_LEVEL"."RCON_ID" IS 'Link to the Release_config table';
1034
   COMMENT ON COLUMN "RUN_LEVEL"."CURRENT_BUILD_FILES" IS 'The current build file. Set by the Master, consumed by the Slaves.';
1035
   COMMENT ON COLUMN "RUN_LEVEL"."CURRENT_RUN_LEVEL" IS 'Daemon indiactes its current state';
1036
   COMMENT ON COLUMN "RUN_LEVEL"."PAUSE" IS 'The daemon should pause at the end of the current build';
1037
   COMMENT ON COLUMN "RUN_LEVEL"."CURRENT_PKG_ID_BEING_BUILT" IS 'pkg_id of the package currently being built';
1038
   COMMENT ON COLUMN "RUN_LEVEL"."KEEP_ALIVE" IS 'DateTime of the last database enquiry made by the daemon. Used to locate dead daemons.';
1039
   COMMENT ON COLUMN "RUN_LEVEL"."CURRENT_PV_ID" IS 'The PV_ID of the package currently being built.
1040
Added 29-Jul-14 for future use within the build system.';
1041
   COMMENT ON COLUMN "RUN_LEVEL"."LAST_BUILD" IS 'The DateTime that the last build started. This does not include dummy builds. Used to determine unused daemons.';
4040 dpurdie 1042
/
1043
--------------------------------------------------------
1044
--  DDL for Table RUN_LEVEL_SCHEDULE
1045
--------------------------------------------------------
1046
 
1047
  CREATE TABLE "RUN_LEVEL_SCHEDULE" 
1048
   (	"SCHEDULED_ID" NUMBER, 
1049
	"SCHEDULED_PAUSE" DATE, 
1050
	"SCHEDULED_RESUME" DATE, 
1051
	"REPEAT" CHAR(1), 
1052
	"INDEFINITE_PAUSE" CHAR(1)
1053
   ) ;
1054
/
1055
--------------------------------------------------------
1056
--  DDL for Table TEMP_ENV_STATES
1057
--------------------------------------------------------
1058
 
1059
  CREATE TABLE "TEMP_ENV_STATES" 
1060
   (	"SESSION_NUM" NUMBER, 
1061
	"LEVEL_NUM" NUMBER, 
1062
	"PV_ID" NUMBER, 
1063
	"PKG_ID" NUMBER, 
1064
	"V_EXT" VARCHAR2(50), 
1065
	"TES_STATE" NUMBER
1066
   ) ;
1067
/
1068
--------------------------------------------------------
1069
--  DDL for Table TEMP_SASH
1070
--------------------------------------------------------
1071
 
1072
  CREATE TABLE "TEMP_SASH" 
1073
   (	"RTAG_ID" NUMBER, 
1074
	"PROJ_ID" NUMBER
1075
   ) ;
1076
/
1077
--------------------------------------------------------
1078
--  DDL for Table TEMP_TREE_BROWSE
1079
--------------------------------------------------------
1080
 
1081
  CREATE TABLE "TEMP_TREE_BROWSE" 
1082
   (	"SESSION_NUM" NUMBER, 
1083
	"LEVEL_NUM" NUMBER, 
1084
	"PV_ID" NUMBER, 
1085
	"PKG_ID" NUMBER, 
1086
	"V_EXT" VARCHAR2(50), 
1087
	"DIRECTION" NUMBER
1088
   ) ;
1089
/
1090
--------------------------------------------------------
1091
--  DDL for Table TEST_TYPES
1092
--------------------------------------------------------
1093
 
1094
  CREATE TABLE "TEST_TYPES" 
1095
   (	"TEST_TYPE_ID" NUMBER, 
1096
	"TEST_TYPE_NAME" VARCHAR2(50), 
1097
	"DISPLAY_ORDER" NUMBER
1098
   ) ;
1099
/
1100
--------------------------------------------------------
1101
--  DDL for Table UNIT_TESTS
1102
--------------------------------------------------------
1103
 
1104
  CREATE TABLE "UNIT_TESTS" 
1105
   (	"TEST_ID" NUMBER, 
1106
	"PV_ID" NUMBER, 
1107
	"TEST_TYPES_FK" NUMBER, 
1108
	"TEST_SUMMARY" VARCHAR2(4000), 
1109
	"COMPLETION_DATE" DATE, 
1110
	"COMPLETED_BY" NUMBER, 
1111
	"RESULTS_URL" VARCHAR2(2000), 
1112
	"RESULTS_ATTACHMENT_NAME" VARCHAR2(2000), 
1113
	"TEST_ACCEPTED" CHAR(1), 
1114
	"ACCEPTANCE_DATE" DATE, 
1115
	"ACCEPTED_BY" NUMBER, 
1116
	"REVIEW_COMMENTS" VARCHAR2(4000), 
1117
	"NUMOF_TEST" VARCHAR2(50)
1118
   ) ;
1119
/
1120
--------------------------------------------------------
1121
--  DDL for Table VALIDATION_RULES
1122
--------------------------------------------------------
1123
 
1124
  CREATE TABLE "VALIDATION_RULES" 
1125
   (	"FIELD_NAME" VARCHAR2(1000), 
1126
	"IS_REQUIRED" CHAR(1), 
1127
	"IS_NUMERIC" CHAR(1), 
1128
	"MIN_NUMERIC_VALUE" NUMBER, 
1129
	"MAX_NUMERIC_VALUE" NUMBER, 
1130
	"IS_DATE" CHAR(1), 
1131
	"START_DATE" DATE, 
1132
	"END_DATE" DATE, 
1133
	"MIN_STRING_LENGTH" NUMBER, 
1134
	"MAX_STRING_LENGTH" NUMBER, 
1135
	"REGEXP" VARCHAR2(4000), 
1136
	"REGEXP_DESCRIPTION" VARCHAR2(50)
1137
   ) ;
1138
/
1139
--------------------------------------------------------
1140
--  DDL for Table VCS_TYPE
1141
--------------------------------------------------------
1142
 
1143
  CREATE TABLE "VCS_TYPE" 
1144
   (	"VCS_TYPE_ID" NUMBER, 
1145
	"NAME" VARCHAR2(128), 
1146
	"TAG" VARCHAR2(32)
1147
   ) ;
1148
/
1149
--------------------------------------------------------
1150
--  DDL for Table VIEWS
1151
--------------------------------------------------------
1152
 
1153
  CREATE TABLE "VIEWS" 
1154
   (	"VIEW_ID" NUMBER, 
1155
	"VIEW_NAME" VARCHAR2(30), 
1156
	"OWNER_ID" NUMBER, 
1157
	"BASE_VIEW" CHAR(1), 
1158
	"PUBLIC_READ" CHAR(1)
1159
   ) ;
1160
/
1161
--------------------------------------------------------
1162
--  DDL for Table VIEW_DEF
1163
--------------------------------------------------------
1164
 
1165
  CREATE TABLE "VIEW_DEF" 
1166
   (	"VIEW_ID" NUMBER, 
1167
	"PKG_ID" NUMBER
1168
   ) ;
1169
/
1170
--------------------------------------------------------
1171
--  DDL for Table VIEW_SETTINGS
1172
--------------------------------------------------------
1173
 
1174
  CREATE TABLE "VIEW_SETTINGS" 
1175
   (	"USER_ID" NUMBER, 
1176
	"VIEW_ID" NUMBER
1177
   ) ;
1178
/
1179
--------------------------------------------------------
1180
--  DDL for Table VTREES
1181
--------------------------------------------------------
1182
 
1183
  CREATE TABLE "VTREES" 
1184
   (	"VTREE_ID" NUMBER, 
1185
	"PROJ_ID" NUMBER, 
1186
	"VTREE_NAME" VARCHAR2(50), 
1187
	"HIDE" CHAR(1)
1188
   ) ;
1189
/
1190
--------------------------------------------------------
1191
--  DDL for Table VTREES_WORLD
1192
--------------------------------------------------------
1193
 
1194
  CREATE TABLE "VTREES_WORLD" 
1195
   (	"WORLD_ID" NUMBER, 
1196
	"VTREE_ID" NUMBER
1197
   ) ;
1198
/
1199
--------------------------------------------------------
1200
--  DDL for Table WORK_IN_PROGRESS
1201
--------------------------------------------------------
1202
 
1203
  CREATE TABLE "WORK_IN_PROGRESS" 
1204
   (	"RTAG_ID" NUMBER, 
1205
	"PV_ID" NUMBER, 
1206
	"VIEW_ID" NUMBER
1207
   ) ;
1208
/
1209
--------------------------------------------------------
1210
--  DDL for Table WORLDS
1211
--------------------------------------------------------
1212
 
1213
  CREATE TABLE "WORLDS" 
1214
   (	"WORLD_ID" NUMBER, 
1215
	"WORLD_NAME" VARCHAR2(30), 
1216
	"WORLD_DESC" VARCHAR2(255)
1217
   ) ;
1218
/
1219
--------------------------------------------------------
1220
--  DDL for View ENVIRONMENT_VIEW
1221
--------------------------------------------------------
1222
 
1223
  CREATE OR REPLACE VIEW "ENVIRONMENT_VIEW" ("ENV_AREA", "PV_ID", "RTAG_ID", "VIEW_ID", "PKG_STATE", "DEPRECATED_STATE", "INSERTOR_ID", "INSERT_STAMP", "OPERATION") AS 
1224
  SELECT 2 AS ENV_AREA,
1225
    rc.PV_ID,
1226
    rc.RTAG_ID,
1227
    rc.BASE_VIEW_ID AS VIEW_ID,
1228
    rc.PKG_STATE,
1229
 rc.DEPRECATED_STATE,
1230
    rc.INSERTOR_ID,
1231
    rc.INSERT_STAMP,
1232
    ' ' AS OPERATION
1233
  FROM RELEASE_CONTENT rc
1234
UNION
1235
SELECT 0 AS ENV_AREA,
1236
    wip.PV_ID,
1237
    wip.RTAG_ID,
1238
    wip.VIEW_ID,
1239
    NULL AS PKG_STATE,
1240
 NULL AS DEPRECATED_STATE,
1241
    NULL AS INSERTOR_ID,
1242
    NULL AS INSERT_STAMP,
1243
    ' ' AS OPERATION
1244
  FROM WORK_IN_PROGRESS wip
1245
UNION
1246
SELECT 1 AS ENV_AREA,
1247
    pl.PV_ID,
1248
    pl.RTAG_ID,
1249
    pl.VIEW_ID,
1250
    NULL AS PKG_STATE,
1251
 NULL AS DEPRECATED_STATE,
1252
    NULL AS INSERTOR_ID,
1253
    NULL AS INSERT_STAMP,
1254
    pl.operation
1255
FROM PLANNED pl;
1256
/
1257
--------------------------------------------------------
1258
--  DDL for View RM_PKG_ISSUES_ID
1259
--------------------------------------------------------
1260
 
1261
  CREATE OR REPLACE VIEW "RM_PKG_ISSUES_ID" ("ISS_ID", "PKG_VERSION") AS 
1262
  SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PACKAGE_ISSUES WHERE ISS_ID IS NOT NULL
1263
 
1264
;
1265
/
1266
--------------------------------------------------------
4211 dpurdie 1267
--  DDL for Index PK_LICENCES
4040 dpurdie 1268
--------------------------------------------------------
1269
 
4211 dpurdie 1270
  CREATE UNIQUE INDEX "PK_LICENCES" ON "LICENCES" ("LICENCE") 
4040 dpurdie 1271
  ;
1272
/
1273
--------------------------------------------------------
4211 dpurdie 1274
--  DDL for Index UNQ_PKG_BUILD_ENV
4040 dpurdie 1275
--------------------------------------------------------
1276
 
4211 dpurdie 1277
  CREATE UNIQUE INDEX "UNQ_PKG_BUILD_ENV" ON "PACKAGE_BUILD_ENV" ("PV_ID", "BE_ID") 
4040 dpurdie 1278
  ;
1279
/
1280
--------------------------------------------------------
4211 dpurdie 1281
--  DDL for Index UNQ_PACKAGES
4040 dpurdie 1282
--------------------------------------------------------
1283
 
4211 dpurdie 1284
  CREATE UNIQUE INDEX "UNQ_PACKAGES" ON "PACKAGES" ("PKG_NAME") 
4040 dpurdie 1285
  ;
1286
/
1287
--------------------------------------------------------
1288
--  DDL for Index CODE_REVIEW_URL_PK
1289
--------------------------------------------------------
1290
 
1291
  CREATE UNIQUE INDEX "CODE_REVIEW_URL_PK" ON "CODE_REVIEW_URL" ("CR_ID") 
1292
  ;
1293
/
1294
--------------------------------------------------------
4211 dpurdie 1295
--  DDL for Index INX_UT_COMPLETED
4040 dpurdie 1296
--------------------------------------------------------
1297
 
4211 dpurdie 1298
  CREATE INDEX "INX_UT_COMPLETED" ON "UNIT_TESTS" ("COMPLETION_DATE", "COMPLETED_BY") 
4040 dpurdie 1299
  ;
1300
/
1301
--------------------------------------------------------
4308 dpurdie 1302
--  DDL for Index INX_PV_ID_PKGDOC
1303
--------------------------------------------------------
4040 dpurdie 1304
 
4211 dpurdie 1305
  CREATE INDEX "INX_PV_ID_PKGDOC" ON "PACKAGE_DOCUMENTS" ("PV_ID") 
4040 dpurdie 1306
  ;
1307
/
4308 dpurdie 1308
--------------------------------------------------------
1309
--  DDL for Index UNQ_VIEW_SETTINGS
1310
--------------------------------------------------------
4040 dpurdie 1311
 
4211 dpurdie 1312
  CREATE UNIQUE INDEX "UNQ_VIEW_SETTINGS" ON "VIEW_SETTINGS" ("USER_ID", "VIEW_ID") 
4040 dpurdie 1313
  ;
1314
/
4308 dpurdie 1315
--------------------------------------------------------
1316
--  DDL for Index INX_PP_PV_ID
1317
--------------------------------------------------------
4040 dpurdie 1318
 
4211 dpurdie 1319
  CREATE INDEX "INX_PP_PV_ID" ON "PACKAGE_PATCHES" ("PV_ID") 
4040 dpurdie 1320
  ;
1321
/
4308 dpurdie 1322
--------------------------------------------------------
1323
--  DDL for Index PK_VIEWS
1324
--------------------------------------------------------
4040 dpurdie 1325
 
4211 dpurdie 1326
  CREATE UNIQUE INDEX "PK_VIEWS" ON "VIEWS" ("VIEW_ID") 
4040 dpurdie 1327
  ;
1328
/
4308 dpurdie 1329
--------------------------------------------------------
1330
--  DDL for Index PK_PACKAGES
1331
--------------------------------------------------------
4040 dpurdie 1332
 
4211 dpurdie 1333
  CREATE UNIQUE INDEX "PK_PACKAGES" ON "PACKAGES" ("PKG_ID") 
4040 dpurdie 1334
  ;
1335
/
4308 dpurdie 1336
--------------------------------------------------------
1337
--  DDL for Index PK_TEST_TYPES
1338
--------------------------------------------------------
4040 dpurdie 1339
 
4211 dpurdie 1340
  CREATE UNIQUE INDEX "PK_TEST_TYPES" ON "TEST_TYPES" ("TEST_TYPE_ID") 
4040 dpurdie 1341
  ;
1342
/
4308 dpurdie 1343
--------------------------------------------------------
1344
--  DDL for Index UNQ_ACTTYPE_ID
1345
--------------------------------------------------------
4040 dpurdie 1346
 
4211 dpurdie 1347
  CREATE UNIQUE INDEX "UNQ_ACTTYPE_ID" ON "ACTION_TYPE" ("ACTTYPE_ID") 
4040 dpurdie 1348
  ;
1349
/
4308 dpurdie 1350
--------------------------------------------------------
1351
--  DDL for Index INX_PROJ_ACTION_DATE_TIME
1352
--------------------------------------------------------
4040 dpurdie 1353
 
4211 dpurdie 1354
  CREATE INDEX "INX_PROJ_ACTION_DATE_TIME" ON "PROJECT_ACTION_LOG" ("ACTION_DATETIME") 
4040 dpurdie 1355
  ;
1356
/
4308 dpurdie 1357
--------------------------------------------------------
1358
--  DDL for Index INX_RC_PKG_STATE
1359
--------------------------------------------------------
4040 dpurdie 1360
 
4211 dpurdie 1361
  CREATE INDEX "INX_RC_PKG_STATE" ON "RELEASE_CONTENT" ("PKG_STATE") 
4040 dpurdie 1362
  ;
1363
/
4308 dpurdie 1364
--------------------------------------------------------
1365
--  DDL for Index PROCESSES_PK
1366
--------------------------------------------------------
4040 dpurdie 1367
 
4211 dpurdie 1368
  CREATE UNIQUE INDEX "PROCESSES_PK" ON "PROCESSES" ("PROC_ID") 
4040 dpurdie 1369
  ;
1370
/
4308 dpurdie 1371
--------------------------------------------------------
1372
--  DDL for Index INX_PACKAGE_DEPS_DPV_ID
1373
--------------------------------------------------------
4040 dpurdie 1374
 
4211 dpurdie 1375
  CREATE INDEX "INX_PACKAGE_DEPS_DPV_ID" ON "PACKAGE_DEPENDENCIES" ("DPV_ID") 
4040 dpurdie 1376
  ;
1377
/
4308 dpurdie 1378
--------------------------------------------------------
1379
--  DDL for Index INX_PACKAGES_PKG_VERSION
1380
--------------------------------------------------------
4040 dpurdie 1381
 
4211 dpurdie 1382
  CREATE INDEX "INX_PACKAGES_PKG_VERSION" ON "PACKAGE_VERSIONS" ("PKG_VERSION") 
4040 dpurdie 1383
  ;
1384
/
4308 dpurdie 1385
--------------------------------------------------------
1386
--  DDL for Index UNQ_PACKAGE_METRICS
1387
--------------------------------------------------------
4040 dpurdie 1388
 
4211 dpurdie 1389
  CREATE UNIQUE INDEX "UNQ_PACKAGE_METRICS" ON "PACKAGE_METRICS" ("PV_ID") 
4040 dpurdie 1390
  ;
1391
/
4308 dpurdie 1392
--------------------------------------------------------
1393
--  DDL for Index UNQ_PLATFORM
1394
--------------------------------------------------------
4040 dpurdie 1395
 
4211 dpurdie 1396
  CREATE UNIQUE INDEX "UNQ_PLATFORM" ON "PLATFORMS" ("NAME") 
4040 dpurdie 1397
  ;
1398
/
4308 dpurdie 1399
--------------------------------------------------------
1400
--  DDL for Index UNQ_VIEWS
1401
--------------------------------------------------------
4040 dpurdie 1402
 
4211 dpurdie 1403
  CREATE UNIQUE INDEX "UNQ_VIEWS" ON "VIEWS" ("VIEW_NAME", "OWNER_ID") 
4040 dpurdie 1404
  ;
1405
/
4308 dpurdie 1406
--------------------------------------------------------
4211 dpurdie 1407
--  DDL for Index PRODUCT_STATES_PK
4040 dpurdie 1408
--------------------------------------------------------
1409
 
4211 dpurdie 1410
  CREATE UNIQUE INDEX "PRODUCT_STATES_PK" ON "PRODUCT_STATES" ("STATE_ID") 
4040 dpurdie 1411
  ;
1412
/
1413
--------------------------------------------------------
4211 dpurdie 1414
--  DDL for Index PK_MESSAGE_BOARD
4040 dpurdie 1415
--------------------------------------------------------
1416
 
4211 dpurdie 1417
  CREATE UNIQUE INDEX "PK_MESSAGE_BOARD" ON "MESSAGE_BOARD" ("MSG_ID") 
4040 dpurdie 1418
  ;
1419
/
4308 dpurdie 1420
--------------------------------------------------------
1421
--  DDL for Index PK_BUILD_MACHINE_CONFIG
1422
--------------------------------------------------------
4040 dpurdie 1423
 
4211 dpurdie 1424
  CREATE UNIQUE INDEX "PK_BUILD_MACHINE_CONFIG" ON "BUILD_MACHINE_CONFIG" ("BMCON_ID") 
4040 dpurdie 1425
  ;
1426
/
4308 dpurdie 1427
--------------------------------------------------------
1428
--  DDL for Index INX_MSGBOARD
1429
--------------------------------------------------------
4040 dpurdie 1430
 
4211 dpurdie 1431
  CREATE INDEX "INX_MSGBOARD" ON "MESSAGE_BOARD" ("EXPIRY_DATE", "DUE_DATE") 
4040 dpurdie 1432
  ;
1433
/
4308 dpurdie 1434
--------------------------------------------------------
1435
--  DDL for Index PK_VTREES
1436
--------------------------------------------------------
4040 dpurdie 1437
 
4211 dpurdie 1438
  CREATE UNIQUE INDEX "PK_VTREES" ON "VTREES" ("VTREE_ID") 
4040 dpurdie 1439
  ;
1440
/
4308 dpurdie 1441
--------------------------------------------------------
1442
--  DDL for Index UNQ_UT_PART1
1443
--------------------------------------------------------
4040 dpurdie 1444
 
4211 dpurdie 1445
  CREATE UNIQUE INDEX "UNQ_UT_PART1" ON "UNIT_TESTS" ("PV_ID", "TEST_ID") 
4040 dpurdie 1446
  ;
1447
/
4308 dpurdie 1448
--------------------------------------------------------
1449
--  DDL for Index UNQ_BUILD_ENV
1450
--------------------------------------------------------
4040 dpurdie 1451
 
4211 dpurdie 1452
  CREATE UNIQUE INDEX "UNQ_BUILD_ENV" ON "BUILD_ENVIRONMENTS" ("BE_NAME") 
4040 dpurdie 1453
  ;
1454
/
1455
--------------------------------------------------------
4211 dpurdie 1456
--  DDL for Index INX_ACTION_DATE_TIME
4040 dpurdie 1457
--------------------------------------------------------
1458
 
4211 dpurdie 1459
  CREATE INDEX "INX_ACTION_DATE_TIME" ON "ACTION_LOG" ("ACTION_DATETIME") 
4040 dpurdie 1460
  ;
1461
/
1462
--------------------------------------------------------
4308 dpurdie 1463
--  DDL for Index UNQ_BUILD_MACHINE_CONFIG02
1464
--------------------------------------------------------
4040 dpurdie 1465
 
4211 dpurdie 1466
  CREATE UNIQUE INDEX "UNQ_BUILD_MACHINE_CONFIG02" ON "BUILD_MACHINE_CONFIG" ("MACHINE_HOSTNAME") 
4040 dpurdie 1467
  ;
1468
/
4308 dpurdie 1469
--------------------------------------------------------
1470
--  DDL for Index BUILD_MACHINES_PK
1471
--------------------------------------------------------
4040 dpurdie 1472
 
4211 dpurdie 1473
  CREATE UNIQUE INDEX "BUILD_MACHINES_PK" ON "BUILD_MACHINES" ("BM_ID") 
4040 dpurdie 1474
  ;
1475
/
4308 dpurdie 1476
--------------------------------------------------------
1477
--  DDL for Index INX_TTB_SESSION
1478
--------------------------------------------------------
4040 dpurdie 1479
 
4211 dpurdie 1480
  CREATE INDEX "INX_TTB_SESSION" ON "TEMP_TREE_BROWSE" ("SESSION_NUM") 
4040 dpurdie 1481
  ;
1482
/
4308 dpurdie 1483
--------------------------------------------------------
1484
--  DDL for Index UNQ_RTD
1485
--------------------------------------------------------
4040 dpurdie 1486
 
4211 dpurdie 1487
  CREATE INDEX "UNQ_RTD" ON "RUNTIME_DEPENDENCIES" ("PV_ID", "RTD_ID") 
4040 dpurdie 1488
  ;
1489
/
4308 dpurdie 1490
--------------------------------------------------------
4211 dpurdie 1491
--  DDL for Index INX_RL_RTAG_ID
4040 dpurdie 1492
--------------------------------------------------------
1493
 
4211 dpurdie 1494
  CREATE INDEX "INX_RL_RTAG_ID" ON "RELEASE_LINKS" ("RTAG_ID") 
4040 dpurdie 1495
  ;
1496
/
1497
--------------------------------------------------------
4211 dpurdie 1498
--  DDL for Index UNQ_VIEW_DEF
4040 dpurdie 1499
--------------------------------------------------------
1500
 
4211 dpurdie 1501
  CREATE UNIQUE INDEX "UNQ_VIEW_DEF" ON "VIEW_DEF" ("VIEW_ID", "PKG_ID") 
4040 dpurdie 1502
  ;
1503
/
1504
--------------------------------------------------------
4211 dpurdie 1505
--  DDL for Index INX_PACKAGES_PKG_NAME
4040 dpurdie 1506
--------------------------------------------------------
1507
 
4211 dpurdie 1508
  CREATE INDEX "INX_PACKAGES_PKG_NAME" ON "PACKAGE_VERSIONS" ("PKG_ID") 
4040 dpurdie 1509
  ;
1510
/
1511
--------------------------------------------------------
4211 dpurdie 1512
--  DDL for Index INX_PCOMP_FK_PV_ID
4040 dpurdie 1513
--------------------------------------------------------
1514
 
4211 dpurdie 1515
  CREATE INDEX "INX_PCOMP_FK_PV_ID" ON "PRODUCT_COMPONENTS" ("PV_ID") 
4040 dpurdie 1516
  ;
1517
/
1518
--------------------------------------------------------
4211 dpurdie 1519
--  DDL for Index DAEMON_INSTRUCTIONS_UK1
4040 dpurdie 1520
--------------------------------------------------------
1521
 
4211 dpurdie 1522
  CREATE UNIQUE INDEX "DAEMON_INSTRUCTIONS_UK1" ON "DAEMON_INSTRUCTIONS" ("OP_CODE", "RTAG_ID", "PV_ID") 
4040 dpurdie 1523
  ;
1524
/
1525
--------------------------------------------------------
4211 dpurdie 1526
--  DDL for Index INX_FILE_NAME
4040 dpurdie 1527
--------------------------------------------------------
1528
 
4211 dpurdie 1529
  CREATE INDEX "INX_FILE_NAME" ON "RELEASE_COMPONENTS" (UPPER("FILE_NAME")) 
4040 dpurdie 1530
  ;
1531
/
1532
--------------------------------------------------------
4211 dpurdie 1533
--  DDL for Index INX_IS_PATCH_IGNORE
4040 dpurdie 1534
--------------------------------------------------------
1535
 
4211 dpurdie 1536
  CREATE INDEX "INX_IS_PATCH_IGNORE" ON "IGNORE_WARNINGS" ("IS_PATCH_IGNORE") 
4040 dpurdie 1537
  ;
1538
/
1539
--------------------------------------------------------
4211 dpurdie 1540
--  DDL for Index UNQ_BUILD_ENV_DOCS
4040 dpurdie 1541
--------------------------------------------------------
1542
 
4211 dpurdie 1543
  CREATE UNIQUE INDEX "UNQ_BUILD_ENV_DOCS" ON "BUILD_ENV_DOCUMENTS" ("BE_ID", "DOC_NUM") 
4040 dpurdie 1544
  ;
1545
/
1546
--------------------------------------------------------
4211 dpurdie 1547
--  DDL for Index INX_PROJ_ACTION_LOG_PROJ
4040 dpurdie 1548
--------------------------------------------------------
1549
 
4211 dpurdie 1550
  CREATE INDEX "INX_PROJ_ACTION_LOG_PROJ" ON "PROJECT_ACTION_LOG" ("PROJ_ID") 
4040 dpurdie 1551
  ;
1552
/
1553
--------------------------------------------------------
1554
--  DDL for Index INX_TTB_LEVEL_NUM
1555
--------------------------------------------------------
1556
 
1557
  CREATE INDEX "INX_TTB_LEVEL_NUM" ON "TEMP_TREE_BROWSE" ("LEVEL_NUM") 
1558
  ;
1559
/
1560
--------------------------------------------------------
4211 dpurdie 1561
--  DDL for Index UNQ_WORK_IN_PROGRESS
4040 dpurdie 1562
--------------------------------------------------------
1563
 
4211 dpurdie 1564
  CREATE UNIQUE INDEX "UNQ_WORK_IN_PROGRESS" ON "WORK_IN_PROGRESS" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1565
  ;
1566
/
1567
--------------------------------------------------------
4211 dpurdie 1568
--  DDL for Index INX_PACKAGES_V_NMM
4040 dpurdie 1569
--------------------------------------------------------
1570
 
4211 dpurdie 1571
  CREATE INDEX "INX_PACKAGES_V_NMM" ON "PACKAGE_VERSIONS" ("V_NMM") 
4040 dpurdie 1572
  ;
1573
/
1574
--------------------------------------------------------
4211 dpurdie 1575
--  DDL for Index UNQ_PLANNED
4040 dpurdie 1576
--------------------------------------------------------
1577
 
4211 dpurdie 1578
  CREATE INDEX "UNQ_PLANNED" ON "PLANNED" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1579
  ;
1580
/
1581
--------------------------------------------------------
4211 dpurdie 1582
--  DDL for Index INX_TES_PKGEXT
4040 dpurdie 1583
--------------------------------------------------------
1584
 
4211 dpurdie 1585
  CREATE INDEX "INX_TES_PKGEXT" ON "TEMP_ENV_STATES" ("PKG_ID", "V_EXT") 
4040 dpurdie 1586
  ;
1587
/
4308 dpurdie 1588
--------------------------------------------------------
1589
--  DDL for Index UNQ_BUILD_MACHINE_CONFIG01
1590
--------------------------------------------------------
4040 dpurdie 1591
 
4211 dpurdie 1592
  CREATE UNIQUE INDEX "UNQ_BUILD_MACHINE_CONFIG01" ON "BUILD_MACHINE_CONFIG" (LOWER("DISPLAY_NAME")) 
4040 dpurdie 1593
  ;
1594
/
1595
--------------------------------------------------------
4211 dpurdie 1596
--  DDL for Index UNQ_RELEASE_LINKS
4040 dpurdie 1597
--------------------------------------------------------
1598
 
4211 dpurdie 1599
  CREATE UNIQUE INDEX "UNQ_RELEASE_LINKS" ON "RELEASE_LINKS" ("RTAG_ID", "REF_RTAG_ID") 
4040 dpurdie 1600
  ;
1601
/
4308 dpurdie 1602
--------------------------------------------------------
1603
--  DDL for Index UNQ_PKG_DOC
1604
--------------------------------------------------------
4040 dpurdie 1605
 
4211 dpurdie 1606
  CREATE UNIQUE INDEX "UNQ_PKG_DOC" ON "PACKAGE_DOCUMENTS" ("PV_ID", "DOC_NUM") 
4040 dpurdie 1607
  ;
1608
/
1609
--------------------------------------------------------
4211 dpurdie 1610
--  DDL for Index DAEMON_INSTRUCTIONS_PK
4040 dpurdie 1611
--------------------------------------------------------
1612
 
4211 dpurdie 1613
  CREATE UNIQUE INDEX "DAEMON_INSTRUCTIONS_PK" ON "DAEMON_INSTRUCTIONS" ("DAEMON_INSTRUCTIONS_ID") 
4040 dpurdie 1614
  ;
1615
/
4308 dpurdie 1616
--------------------------------------------------------
1617
--  DDL for Index INX_DAEMON_INST_SCHED_DATETIME
1618
--------------------------------------------------------
4040 dpurdie 1619
 
4211 dpurdie 1620
  CREATE INDEX "INX_DAEMON_INST_SCHED_DATETIME" ON "DAEMON_INSTRUCTIONS" ("SCHEDULED_DATETIME") 
4040 dpurdie 1621
  ;
1622
/
1623
--------------------------------------------------------
4211 dpurdie 1624
--  DDL for Index INX_TTB_PKG
4040 dpurdie 1625
--------------------------------------------------------
1626
 
4211 dpurdie 1627
  CREATE INDEX "INX_TTB_PKG" ON "TEMP_TREE_BROWSE" ("PKG_ID", "V_EXT") 
4040 dpurdie 1628
  ;
1629
/
1630
--------------------------------------------------------
4211 dpurdie 1631
--  DDL for Index UNQ_VALIDATION_RULES
4040 dpurdie 1632
--------------------------------------------------------
1633
 
4211 dpurdie 1634
  CREATE UNIQUE INDEX "UNQ_VALIDATION_RULES" ON "VALIDATION_RULES" ("FIELD_NAME") 
4040 dpurdie 1635
  ;
1636
/
4308 dpurdie 1637
--------------------------------------------------------
1638
--  DDL for Index BUILD_STANDARDS_ADDENDUM_PK
1639
--------------------------------------------------------
4040 dpurdie 1640
 
4211 dpurdie 1641
  CREATE UNIQUE INDEX "BUILD_STANDARDS_ADDENDUM_PK" ON "BUILD_STANDARDS_ADDENDUM" ("BSA_ID") 
4040 dpurdie 1642
  ;
1643
/
1644
--------------------------------------------------------
4211 dpurdie 1645
--  DDL for Index INX_PV_OWNER_ID
4040 dpurdie 1646
--------------------------------------------------------
1647
 
4211 dpurdie 1648
  CREATE INDEX "INX_PV_OWNER_ID" ON "PACKAGE_VERSIONS" ("OWNER_ID") 
4040 dpurdie 1649
  ;
1650
/
1651
--------------------------------------------------------
4211 dpurdie 1652
--  DDL for Index INX_TES_TES_STATE
4040 dpurdie 1653
--------------------------------------------------------
1654
 
4211 dpurdie 1655
  CREATE INDEX "INX_TES_TES_STATE" ON "TEMP_ENV_STATES" ("TES_STATE") 
4040 dpurdie 1656
  ;
1657
/
1658
--------------------------------------------------------
4308 dpurdie 1659
--  DDL for Index UNQ_AN_PART1
1660
--------------------------------------------------------
4040 dpurdie 1661
 
4211 dpurdie 1662
  CREATE UNIQUE INDEX "UNQ_AN_PART1" ON "ADDITIONAL_NOTES" ("PV_ID", "NOTE_ID") 
4040 dpurdie 1663
  ;
1664
/
4308 dpurdie 1665
--------------------------------------------------------
4211 dpurdie 1666
--  DDL for Index UNQ_RELEASE_CONTENTS
4040 dpurdie 1667
--------------------------------------------------------
1668
 
4211 dpurdie 1669
  CREATE UNIQUE INDEX "UNQ_RELEASE_CONTENTS" ON "RELEASE_CONTENT" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1670
  ;
1671
/
4308 dpurdie 1672
--------------------------------------------------------
1673
--  DDL for Index INX_ACTION_LOG_PV_ID
1674
--------------------------------------------------------
4040 dpurdie 1675
 
4211 dpurdie 1676
  CREATE INDEX "INX_ACTION_LOG_PV_ID" ON "ACTION_LOG" ("PV_ID") 
4040 dpurdie 1677
  ;
1678
/
1679
--------------------------------------------------------
4211 dpurdie 1680
--  DDL for Index UNQ_TEST_TYPE_NAME
4040 dpurdie 1681
--------------------------------------------------------
1682
 
4211 dpurdie 1683
  CREATE UNIQUE INDEX "UNQ_TEST_TYPE_NAME" ON "TEST_TYPES" ("TEST_TYPE_NAME") 
4040 dpurdie 1684
  ;
1685
/
1686
--------------------------------------------------------
4308 dpurdie 1687
--  DDL for Index PKNOTE_MANAGER1
1688
--------------------------------------------------------
4040 dpurdie 1689
 
4211 dpurdie 1690
  CREATE UNIQUE INDEX "PKNOTE_MANAGER1" ON "NOTE_MANAGER" ("NID") 
4040 dpurdie 1691
  ;
1692
/
4308 dpurdie 1693
--------------------------------------------------------
1694
--  DDL for Index INX_PACKAGES_V_MM
1695
--------------------------------------------------------
4040 dpurdie 1696
 
4211 dpurdie 1697
  CREATE INDEX "INX_PACKAGES_V_MM" ON "PACKAGE_VERSIONS" ("V_MM") 
4040 dpurdie 1698
  ;
1699
/
4308 dpurdie 1700
--------------------------------------------------------
1701
--  DDL for Index INX_CODE_REVIEW
1702
--------------------------------------------------------
4040 dpurdie 1703
 
4211 dpurdie 1704
  CREATE UNIQUE INDEX "INX_CODE_REVIEW" ON "CODE_REVIEWS" ("PV_ID") 
4040 dpurdie 1705
  ;
1706
/
4308 dpurdie 1707
--------------------------------------------------------
4211 dpurdie 1708
--  DDL for Index UNQ_VTREES
4040 dpurdie 1709
--------------------------------------------------------
1710
 
4211 dpurdie 1711
  CREATE UNIQUE INDEX "UNQ_VTREES" ON "VTREES" ("PROJ_ID", "VTREE_NAME") 
4040 dpurdie 1712
  ;
1713
/
4308 dpurdie 1714
--------------------------------------------------------
1715
--  DDL for Index INX_PACKAGE_DEPS_PKG_ID
1716
--------------------------------------------------------
4040 dpurdie 1717
 
4211 dpurdie 1718
  CREATE INDEX "INX_PACKAGE_DEPS_PKG_ID" ON "PACKAGE_DEPENDENCIES" ("PKG_ID") 
4040 dpurdie 1719
  ;
1720
/
1721
--------------------------------------------------------
4211 dpurdie 1722
--  DDL for Index UNQ_PROJECTS
4040 dpurdie 1723
--------------------------------------------------------
1724
 
4211 dpurdie 1725
  CREATE UNIQUE INDEX "UNQ_PROJECTS" ON "PROJECTS" ("PROJ_NAME") 
4040 dpurdie 1726
  ;
1727
/
4308 dpurdie 1728
--------------------------------------------------------
1729
--  DDL for Index INX_PACKAGES_V_EXT
1730
--------------------------------------------------------
4040 dpurdie 1731
 
4211 dpurdie 1732
  CREATE INDEX "INX_PACKAGES_V_EXT" ON "PACKAGE_VERSIONS" ("V_EXT") 
4040 dpurdie 1733
  ;
1734
/
1735
--------------------------------------------------------
4211 dpurdie 1736
--  DDL for Index PK_PROJECTS
4040 dpurdie 1737
--------------------------------------------------------
1738
 
4211 dpurdie 1739
  CREATE UNIQUE INDEX "PK_PROJECTS" ON "PROJECTS" ("PROJ_ID") 
4040 dpurdie 1740
  ;
1741
/
4308 dpurdie 1742
--------------------------------------------------------
1743
--  DDL for Index INX_TES_PV
1744
--------------------------------------------------------
4040 dpurdie 1745
 
4211 dpurdie 1746
  CREATE INDEX "INX_TES_PV" ON "TEMP_ENV_STATES" ("PV_ID") 
4040 dpurdie 1747
  ;
1748
/
1749
--------------------------------------------------------
4211 dpurdie 1750
--  DDL for Index UNQ_VTREE_WORLD
4040 dpurdie 1751
--------------------------------------------------------
1752
 
4211 dpurdie 1753
  CREATE UNIQUE INDEX "UNQ_VTREE_WORLD" ON "VTREES_WORLD" ("WORLD_ID", "VTREE_ID") 
4040 dpurdie 1754
  ;
1755
/
1756
--------------------------------------------------------
4308 dpurdie 1757
--  DDL for Index UNQ_IGW
1758
--------------------------------------------------------
4040 dpurdie 1759
 
4211 dpurdie 1760
  CREATE UNIQUE INDEX "UNQ_IGW" ON "IGNORE_WARNINGS" ("RTAG_ID", "PV_ID", "DPV_ID") 
4040 dpurdie 1761
  ;
1762
/
4308 dpurdie 1763
--------------------------------------------------------
1764
--  DDL for Index INX_DAEMON_INST_RTAG_ID
1765
--------------------------------------------------------
4040 dpurdie 1766
 
4211 dpurdie 1767
  CREATE INDEX "INX_DAEMON_INST_RTAG_ID" ON "DAEMON_INSTRUCTIONS" ("RTAG_ID") 
4040 dpurdie 1768
  ;
1769
/
4308 dpurdie 1770
--------------------------------------------------------
1771
--  DDL for Index PK_NOTIFICATION_HISTORY
1772
--------------------------------------------------------
4040 dpurdie 1773
 
4211 dpurdie 1774
  CREATE UNIQUE INDEX "PK_NOTIFICATION_HISTORY" ON "NOTIFICATION_HISTORY" ("RTAG_ID", "PV_ID", "USER_ID") 
4040 dpurdie 1775
  ;
1776
/
4308 dpurdie 1777
--------------------------------------------------------
1778
--  DDL for Index UNQ_PACKAGE_DEPENDENCIES
1779
--------------------------------------------------------
4040 dpurdie 1780
 
4211 dpurdie 1781
  CREATE UNIQUE INDEX "UNQ_PACKAGE_DEPENDENCIES" ON "PACKAGE_DEPENDENCIES" ("PV_ID", "DPV_ID") 
4040 dpurdie 1782
  ;
1783
/
4308 dpurdie 1784
--------------------------------------------------------
1785
--  DDL for Index INX_PACKAGE_DEPS_PV_ID
1786
--------------------------------------------------------
4040 dpurdie 1787
 
4211 dpurdie 1788
  CREATE INDEX "INX_PACKAGE_DEPS_PV_ID" ON "PACKAGE_DEPENDENCIES" ("PV_ID") 
4040 dpurdie 1789
  ;
1790
/
4308 dpurdie 1791
--------------------------------------------------------
4211 dpurdie 1792
--  DDL for Index BUILD_STANDARDS_PK
4040 dpurdie 1793
--------------------------------------------------------
1794
 
4211 dpurdie 1795
  CREATE UNIQUE INDEX "BUILD_STANDARDS_PK" ON "BUILD_STANDARDS" ("BS_ID") 
4040 dpurdie 1796
  ;
1797
/
4308 dpurdie 1798
--------------------------------------------------------
1799
--  DDL for Index UNQ_CQ
1800
--------------------------------------------------------
4040 dpurdie 1801
 
1802
  CREATE UNIQUE INDEX "UNQ_CQ" ON "CQ_ISSUES" ("PV_ID", "ISS_ID", "ISS_DB") 
1803
  ;
1804
/
1805
--------------------------------------------------------
4211 dpurdie 1806
--  DDL for Index UNQ_PACKAGE_VERSIONS
4040 dpurdie 1807
--------------------------------------------------------
1808
 
4211 dpurdie 1809
  CREATE UNIQUE INDEX "UNQ_PACKAGE_VERSIONS" ON "PACKAGE_VERSIONS" ("PKG_ID", "PKG_VERSION") 
4040 dpurdie 1810
  ;
1811
/
4308 dpurdie 1812
--------------------------------------------------------
1813
--  DDL for Index INX_PV_ID_TEST_ID_PKGDOC
1814
--------------------------------------------------------
4040 dpurdie 1815
 
4211 dpurdie 1816
  CREATE INDEX "INX_PV_ID_TEST_ID_PKGDOC" ON "PACKAGE_DOCUMENTS" ("PV_ID", "TEST_ID") 
4040 dpurdie 1817
  ;
1818
/
1819
--------------------------------------------------------
4211 dpurdie 1820
--  DDL for Index UNQ_PACKAGE_PATCHES
4040 dpurdie 1821
--------------------------------------------------------
1822
 
4211 dpurdie 1823
  CREATE UNIQUE INDEX "UNQ_PACKAGE_PATCHES" ON "PACKAGE_PATCHES" ("PATCH_ID") 
4040 dpurdie 1824
  ;
1825
/
1826
--------------------------------------------------------
4308 dpurdie 1827
--  DDL for Index UNQ_REL_COMPONENTS
1828
--------------------------------------------------------
4040 dpurdie 1829
 
4211 dpurdie 1830
  CREATE UNIQUE INDEX "UNQ_REL_COMPONENTS" ON "RELEASE_COMPONENTS" ("PV_ID", "FILE_NAME", "FILE_PATH") 
4040 dpurdie 1831
  ;
1832
/
4308 dpurdie 1833
--------------------------------------------------------
1834
--  DDL for Index PK_PACKAGE_VERSIONS
1835
--------------------------------------------------------
4040 dpurdie 1836
 
4211 dpurdie 1837
  CREATE UNIQUE INDEX "PK_PACKAGE_VERSIONS" ON "PACKAGE_VERSIONS" ("PV_ID") 
4040 dpurdie 1838
  ;
1839
/
4308 dpurdie 1840
--------------------------------------------------------
1841
--  DDL for Index UNQ_RELEASE_METRICS
1842
--------------------------------------------------------
4040 dpurdie 1843
 
4211 dpurdie 1844
  CREATE UNIQUE INDEX "UNQ_RELEASE_METRICS" ON "RELEASE_METRICS" ("RTAG_ID") 
4040 dpurdie 1845
  ;
1846
/
4308 dpurdie 1847
--------------------------------------------------------
1848
--  DDL for Index UNQ_BUILD_ORDER
1849
--------------------------------------------------------
4040 dpurdie 1850
 
4211 dpurdie 1851
  CREATE UNIQUE INDEX "UNQ_BUILD_ORDER" ON "BUILD_ORDER" ("RTAG_ID", "PV_ID", "STEP_NUM") 
4040 dpurdie 1852
  ;
1853
/
4308 dpurdie 1854
--------------------------------------------------------
1855
--  DDL for Index PK_BUILD_ENVIRONMENTS
1856
--------------------------------------------------------
4040 dpurdie 1857
 
4211 dpurdie 1858
  CREATE UNIQUE INDEX "PK_BUILD_ENVIRONMENTS" ON "BUILD_ENVIRONMENTS" ("BE_ID") 
4040 dpurdie 1859
  ;
1860
/
4308 dpurdie 1861
--------------------------------------------------------
1862
--  DDL for Index INX_PACKAGE_DEPS_DPKG_ID
1863
--------------------------------------------------------
4040 dpurdie 1864
 
4211 dpurdie 1865
  CREATE INDEX "INX_PACKAGE_DEPS_DPKG_ID" ON "PACKAGE_DEPENDENCIES" ("DPKG_ID") 
4040 dpurdie 1866
  ;
1867
/
4308 dpurdie 1868
--------------------------------------------------------
1869
--  DDL for Index INX_RL_REFRTAG_ID
1870
--------------------------------------------------------
4040 dpurdie 1871
 
4211 dpurdie 1872
  CREATE INDEX "INX_RL_REFRTAG_ID" ON "RELEASE_LINKS" ("REF_RTAG_ID") 
4040 dpurdie 1873
  ;
1874
/
4308 dpurdie 1875
--------------------------------------------------------
1876
--  DDL for Index INX_RC_BASE_VIEW_ID
1877
--------------------------------------------------------
4040 dpurdie 1878
 
4211 dpurdie 1879
  CREATE INDEX "INX_RC_BASE_VIEW_ID" ON "RELEASE_CONTENT" ("BASE_VIEW_ID") 
4040 dpurdie 1880
  ;
1881
/
4308 dpurdie 1882
--------------------------------------------------------
1883
--  DDL for Index INX_DAEMON_INST_PV_ID
1884
--------------------------------------------------------
4211 dpurdie 1885
 
1886
  CREATE INDEX "INX_DAEMON_INST_PV_ID" ON "DAEMON_INSTRUCTIONS" ("PV_ID") 
1887
  ;
1888
/
4308 dpurdie 1889
--------------------------------------------------------
4040 dpurdie 1890
--  DDL for Index UNQ_PROJECT_EXT
1891
--------------------------------------------------------
1892
 
1893
  CREATE UNIQUE INDEX "UNQ_PROJECT_EXT" ON "PROJECT_EXTENTIONS" ("PROJ_ID", "EXT_NAME") 
1894
  ;
1895
/
4308 dpurdie 1896
--------------------------------------------------------
1897
--  DDL for Index VCS_TYPE_PK
1898
--------------------------------------------------------
4040 dpurdie 1899
 
4211 dpurdie 1900
  CREATE UNIQUE INDEX "VCS_TYPE_PK" ON "VCS_TYPE" ("VCS_TYPE_ID") 
4040 dpurdie 1901
  ;
1902
/
1903
--------------------------------------------------------
4211 dpurdie 1904
--  DDL for Index INX_PC_FILE_NAME
4040 dpurdie 1905
--------------------------------------------------------
1906
 
4211 dpurdie 1907
  CREATE INDEX "INX_PC_FILE_NAME" ON "PRODUCT_COMPONENTS" (UPPER("FILE_NAME")) 
4040 dpurdie 1908
  ;
1909
/
4308 dpurdie 1910
--------------------------------------------------------
1911
--  DDL for Index PK_RELEASE_TAGS
1912
--------------------------------------------------------
4040 dpurdie 1913
 
4211 dpurdie 1914
  CREATE UNIQUE INDEX "PK_RELEASE_TAGS" ON "RELEASE_TAGS" ("RTAG_ID") 
4040 dpurdie 1915
  ;
1916
/
1917
--------------------------------------------------------
4211 dpurdie 1918
--  DDL for Index FK_PROJ_ID_RELEASE_TAGS
4040 dpurdie 1919
--------------------------------------------------------
1920
 
4211 dpurdie 1921
  CREATE INDEX "FK_PROJ_ID_RELEASE_TAGS" ON "RELEASE_TAGS" ("PROJ_ID") 
4040 dpurdie 1922
  ;
1923
/
1924
--------------------------------------------------------
4211 dpurdie 1925
--  DDL for Index INX_RCOMP_PV_ID
4040 dpurdie 1926
--------------------------------------------------------
1927
 
4211 dpurdie 1928
  CREATE INDEX "INX_RCOMP_PV_ID" ON "RELEASE_COMPONENTS" ("PV_ID") 
4040 dpurdie 1929
  ;
1930
/
4308 dpurdie 1931
--------------------------------------------------------
1932
--  DDL for Index MICROSOFT_PK_DTPROPERTIES
1933
--------------------------------------------------------
4040 dpurdie 1934
 
4211 dpurdie 1935
  CREATE UNIQUE INDEX "MICROSOFT_PK_DTPROPERTIES" ON "MICROSOFTDTPROPERTIES" ("ID", "PROPERTY") 
4040 dpurdie 1936
  ;
1937
/
1938
--------------------------------------------------------
4308 dpurdie 1939
--  DDL for Index INX_UT_PV_TEST_TYPE
1940
--------------------------------------------------------
4040 dpurdie 1941
 
4211 dpurdie 1942
  CREATE INDEX "INX_UT_PV_TEST_TYPE" ON "UNIT_TESTS" ("PV_ID", "TEST_TYPES_FK") 
4040 dpurdie 1943
  ;
1944
/
4308 dpurdie 1945
--------------------------------------------------------
1946
--  DDL for Index PK_WORLDS
1947
--------------------------------------------------------
4040 dpurdie 1948
 
4211 dpurdie 1949
  CREATE UNIQUE INDEX "PK_WORLDS" ON "WORLDS" ("WORLD_ID") 
4040 dpurdie 1950
  ;
1951
/
4308 dpurdie 1952
--------------------------------------------------------
1953
--  DDL for Index UNQ_AN_PART2
1954
--------------------------------------------------------
4040 dpurdie 1955
 
4211 dpurdie 1956
  CREATE UNIQUE INDEX "UNQ_AN_PART2" ON "ADDITIONAL_NOTES" ("PV_ID", "NOTE_TITLE") 
4040 dpurdie 1957
  ;
1958
/
4308 dpurdie 1959
--------------------------------------------------------
4211 dpurdie 1960
--  Constraints for Table RELEASE_TAGS
4040 dpurdie 1961
--------------------------------------------------------
1962
 
4211 dpurdie 1963
  ALTER TABLE "RELEASE_TAGS" ADD CONSTRAINT "PK_RELEASE_TAGS" PRIMARY KEY ("RTAG_ID") ENABLE;
1964
  ALTER TABLE "RELEASE_TAGS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
1965
  ALTER TABLE "RELEASE_TAGS" MODIFY ("PARENT_RTAG_ID" NOT NULL ENABLE);
1966
  ALTER TABLE "RELEASE_TAGS" MODIFY ("REBUILD_STAMP" NOT NULL ENABLE);
1967
  ALTER TABLE "RELEASE_TAGS" MODIFY ("REBUILD_ENV" NOT NULL ENABLE);
1968
  ALTER TABLE "RELEASE_TAGS" MODIFY ("OFFICIAL" NOT NULL ENABLE);
1969
  ALTER TABLE "RELEASE_TAGS" MODIFY ("RTAG_NAME" NOT NULL ENABLE);
1970
  ALTER TABLE "RELEASE_TAGS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 1971
/
1972
--------------------------------------------------------
4308 dpurdie 1973
--  Constraints for Table RIPPLE_FIELD_STATES
1974
--------------------------------------------------------
4040 dpurdie 1975
 
4211 dpurdie 1976
  ALTER TABLE "RIPPLE_FIELD_STATES" MODIFY ("STATE_ACRONYM" NOT NULL DISABLE);
1977
  ALTER TABLE "RIPPLE_FIELD_STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
4040 dpurdie 1978
/
4308 dpurdie 1979
--------------------------------------------------------
4211 dpurdie 1980
--  Constraints for Table RUNTIME_DEPENDENCIES
4040 dpurdie 1981
--------------------------------------------------------
1982
 
4211 dpurdie 1983
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("MOD_USER" NOT NULL ENABLE);
1984
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
1985
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 1986
/
4308 dpurdie 1987
--------------------------------------------------------
1988
--  Constraints for Table PACKAGE_PROCESSES
1989
--------------------------------------------------------
4040 dpurdie 1990
 
4211 dpurdie 1991
  ALTER TABLE "PACKAGE_PROCESSES" MODIFY ("PROC_ID" NOT NULL ENABLE);
1992
  ALTER TABLE "PACKAGE_PROCESSES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 1993
/
1994
--------------------------------------------------------
4211 dpurdie 1995
--  Constraints for Table DO_NOT_RIPPLE
4040 dpurdie 1996
--------------------------------------------------------
1997
 
4211 dpurdie 1998
  ALTER TABLE "DO_NOT_RIPPLE" MODIFY ("RTAG_ID" NOT NULL ENABLE);
1999
  ALTER TABLE "DO_NOT_RIPPLE" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2000
/
2001
--------------------------------------------------------
4211 dpurdie 2002
--  Constraints for Table RELEASE_COMPONENTS
4040 dpurdie 2003
--------------------------------------------------------
2004
 
4211 dpurdie 2005
  ALTER TABLE "RELEASE_COMPONENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2006
/
4308 dpurdie 2007
--------------------------------------------------------
2008
--  Constraints for Table VIEW_SETTINGS
2009
--------------------------------------------------------
4211 dpurdie 2010
 
2011
  ALTER TABLE "VIEW_SETTINGS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2012
  ALTER TABLE "VIEW_SETTINGS" MODIFY ("USER_ID" NOT NULL ENABLE);
2013
/
4040 dpurdie 2014
--------------------------------------------------------
4211 dpurdie 2015
--  Constraints for Table WORLDS
4040 dpurdie 2016
--------------------------------------------------------
2017
 
4211 dpurdie 2018
  ALTER TABLE "WORLDS" ADD CONSTRAINT "PK_WORLDS" PRIMARY KEY ("WORLD_ID") ENABLE;
2019
  ALTER TABLE "WORLDS" MODIFY ("WORLD_NAME" NOT NULL ENABLE);
2020
  ALTER TABLE "WORLDS" MODIFY ("WORLD_ID" NOT NULL ENABLE);
4040 dpurdie 2021
/
2022
--------------------------------------------------------
4211 dpurdie 2023
--  Constraints for Table UNIT_TESTS
4040 dpurdie 2024
--------------------------------------------------------
2025
 
4211 dpurdie 2026
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_TYPES_FK" NOT NULL ENABLE);
2027
  ALTER TABLE "UNIT_TESTS" MODIFY ("PV_ID" NOT NULL ENABLE);
2028
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_ID" NOT NULL ENABLE);
4040 dpurdie 2029
/
2030
--------------------------------------------------------
4211 dpurdie 2031
--  Constraints for Table PACKAGE_DOCUMENTS
4040 dpurdie 2032
--------------------------------------------------------
2033
 
4211 dpurdie 2034
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("DOC_NUM" NOT NULL ENABLE);
2035
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("DOC_ID" NOT NULL ENABLE);
2036
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2037
/
2038
--------------------------------------------------------
4211 dpurdie 2039
--  Constraints for Table PACKAGE_BUILD_INFO
4040 dpurdie 2040
--------------------------------------------------------
2041
 
4211 dpurdie 2042
  ALTER TABLE "PACKAGE_BUILD_INFO" MODIFY ("BM_ID" NOT NULL ENABLE);
2043
  ALTER TABLE "PACKAGE_BUILD_INFO" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2044
/
2045
--------------------------------------------------------
2046
--  Constraints for Table ADVISORY_RIPPLE
2047
--------------------------------------------------------
2048
 
2049
  ALTER TABLE "ADVISORY_RIPPLE" MODIFY ("PV_ID" NOT NULL ENABLE);
2050
  ALTER TABLE "ADVISORY_RIPPLE" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2051
/
2052
--------------------------------------------------------
4211 dpurdie 2053
--  Constraints for Table PRODUCT_STATES
4040 dpurdie 2054
--------------------------------------------------------
2055
 
4211 dpurdie 2056
  ALTER TABLE "PRODUCT_STATES" ADD CONSTRAINT "PRODUCT_STATES_PK" PRIMARY KEY ("STATE_ID") ENABLE;
2057
  ALTER TABLE "PRODUCT_STATES" MODIFY ("STATE" NOT NULL ENABLE);
2058
  ALTER TABLE "PRODUCT_STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
4040 dpurdie 2059
/
4308 dpurdie 2060
--------------------------------------------------------
2061
--  Constraints for Table PRODUCT_COMPONENTS
2062
--------------------------------------------------------
4040 dpurdie 2063
 
4211 dpurdie 2064
  ALTER TABLE "PRODUCT_COMPONENTS" MODIFY ("OS_ID" NOT NULL ENABLE);
2065
  ALTER TABLE "PRODUCT_COMPONENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2066
/
4308 dpurdie 2067
--------------------------------------------------------
2068
--  Constraints for Table PACKAGE_PATCHES
2069
--------------------------------------------------------
4040 dpurdie 2070
 
4211 dpurdie 2071
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("INSTALL_ORDER" NOT NULL ENABLE);
2072
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("PATCH_ID" NOT NULL ENABLE);
2073
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2074
/
4308 dpurdie 2075
--------------------------------------------------------
2076
--  Constraints for Table RUN_LEVEL_SCHEDULE
2077
--------------------------------------------------------
4040 dpurdie 2078
 
4211 dpurdie 2079
  ALTER TABLE "RUN_LEVEL_SCHEDULE" ADD PRIMARY KEY ("SCHEDULED_ID") ENABLE;
2080
  ALTER TABLE "RUN_LEVEL_SCHEDULE" MODIFY ("SCHEDULED_ID" NOT NULL ENABLE);
4040 dpurdie 2081
/
2082
--------------------------------------------------------
4211 dpurdie 2083
--  Constraints for Table MICROSOFTDTPROPERTIES
4040 dpurdie 2084
--------------------------------------------------------
2085
 
4211 dpurdie 2086
  ALTER TABLE "MICROSOFTDTPROPERTIES" ADD CONSTRAINT "MICROSOFT_PK_DTPROPERTIES" PRIMARY KEY ("ID", "PROPERTY") ENABLE;
2087
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("VERSION" CONSTRAINT "MICROSOFT_NN_VERSION" NOT NULL ENABLE);
2088
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("PROPERTY" CONSTRAINT "MICROSOFT_NN_PROPERTY" NOT NULL ENABLE);
2089
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("ID" CONSTRAINT "MICROSOFT_NN_ID" NOT NULL ENABLE);
4040 dpurdie 2090
/
2091
--------------------------------------------------------
4211 dpurdie 2092
--  Constraints for Table NOTE_MANAGER
4040 dpurdie 2093
--------------------------------------------------------
2094
 
4211 dpurdie 2095
  ALTER TABLE "NOTE_MANAGER" ADD CONSTRAINT "PKNOTE_MANAGER1" PRIMARY KEY ("NID") ENABLE;
2096
  ALTER TABLE "NOTE_MANAGER" MODIFY ("NID" NOT NULL ENABLE);
4040 dpurdie 2097
/
2098
--------------------------------------------------------
4308 dpurdie 2099
--  Constraints for Table BUILD_SERVICE_CONFIG
2100
--------------------------------------------------------
4040 dpurdie 2101
 
4211 dpurdie 2102
  ALTER TABLE "BUILD_SERVICE_CONFIG" MODIFY ("CONFIG" NOT NULL ENABLE);
2103
  ALTER TABLE "BUILD_SERVICE_CONFIG" MODIFY ("SERVICE" NOT NULL ENABLE);
4040 dpurdie 2104
/
4308 dpurdie 2105
--------------------------------------------------------
2106
--  Constraints for Table GBE_MACHTYPE
2107
--------------------------------------------------------
4040 dpurdie 2108
 
4211 dpurdie 2109
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("BM_ID" NOT NULL ENABLE);
2110
  ALTER TABLE "GBE_MACHTYPE" ADD PRIMARY KEY ("GBE_ID") ENABLE;
2111
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("GBE_VALUE" NOT NULL ENABLE);
2112
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("GBE_ID" NOT NULL ENABLE);
4040 dpurdie 2113
/
4308 dpurdie 2114
--------------------------------------------------------
4211 dpurdie 2115
--  Constraints for Table ACTION_LOG
4040 dpurdie 2116
--------------------------------------------------------
2117
 
4211 dpurdie 2118
  ALTER TABLE "ACTION_LOG" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
2119
  ALTER TABLE "ACTION_LOG" MODIFY ("PV_ID" NOT NULL ENABLE);
2120
  ALTER TABLE "ACTION_LOG" MODIFY ("ACTION_DATETIME" NOT NULL ENABLE);
2121
  ALTER TABLE "ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2122
/
4308 dpurdie 2123
--------------------------------------------------------
2124
--  Constraints for Table ADDITIONAL_NOTES
2125
--------------------------------------------------------
4040 dpurdie 2126
 
4211 dpurdie 2127
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("MOD_USER" NOT NULL ENABLE);
2128
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2129
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("NOTE_TITLE" NOT NULL ENABLE);
2130
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("PV_ID" NOT NULL ENABLE);
2131
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("NOTE_ID" NOT NULL ENABLE);
4040 dpurdie 2132
/
2133
--------------------------------------------------------
4308 dpurdie 2134
--  Constraints for Table BUILD_STANDARDS_ADDENDUM
2135
--------------------------------------------------------
4040 dpurdie 2136
 
2137
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_PK" PRIMARY KEY ("BSA_ID") ENABLE;
2138
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BS_ID" NOT NULL ENABLE);
2139
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BSA_NAME" NOT NULL ENABLE);
2140
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BSA_ID" NOT NULL ENABLE);
2141
/
4308 dpurdie 2142
--------------------------------------------------------
4211 dpurdie 2143
--  Constraints for Table TEST_TYPES
4040 dpurdie 2144
--------------------------------------------------------
2145
 
4211 dpurdie 2146
  ALTER TABLE "TEST_TYPES" ADD CONSTRAINT "PK_TEST_TYPES" PRIMARY KEY ("TEST_TYPE_ID") ENABLE;
2147
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_NAME" NOT NULL ENABLE);
2148
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2149
/
2150
--------------------------------------------------------
4211 dpurdie 2151
--  Constraints for Table TEMP_ENV_STATES
4040 dpurdie 2152
--------------------------------------------------------
2153
 
4211 dpurdie 2154
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("TES_STATE" NOT NULL ENABLE);
2155
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2156
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("PV_ID" NOT NULL ENABLE);
2157
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("LEVEL_NUM" NOT NULL ENABLE);
2158
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("SESSION_NUM" NOT NULL ENABLE);
4040 dpurdie 2159
/
2160
--------------------------------------------------------
4211 dpurdie 2161
--  Constraints for Table VTREES_WORLD
4040 dpurdie 2162
--------------------------------------------------------
2163
 
4211 dpurdie 2164
  ALTER TABLE "VTREES_WORLD" MODIFY ("VTREE_ID" NOT NULL ENABLE);
2165
  ALTER TABLE "VTREES_WORLD" MODIFY ("WORLD_ID" NOT NULL ENABLE);
4040 dpurdie 2166
/
2167
--------------------------------------------------------
4211 dpurdie 2168
--  Constraints for Table RELEASE_CONFIG
4040 dpurdie 2169
--------------------------------------------------------
2170
 
4211 dpurdie 2171
  ALTER TABLE "RELEASE_CONFIG" ADD PRIMARY KEY ("RCON_ID") ENABLE;
2172
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2173
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("RCON_ID" NOT NULL ENABLE);
4040 dpurdie 2174
/
2175
--------------------------------------------------------
4211 dpurdie 2176
--  Constraints for Table VIEWS
4040 dpurdie 2177
--------------------------------------------------------
2178
 
4211 dpurdie 2179
  ALTER TABLE "VIEWS" ADD CONSTRAINT "PK_VIEWS" PRIMARY KEY ("VIEW_ID") ENABLE;
2180
  ALTER TABLE "VIEWS" MODIFY ("PUBLIC_READ" NOT NULL ENABLE);
2181
  ALTER TABLE "VIEWS" MODIFY ("BASE_VIEW" NOT NULL ENABLE);
2182
  ALTER TABLE "VIEWS" MODIFY ("OWNER_ID" NOT NULL ENABLE);
2183
  ALTER TABLE "VIEWS" MODIFY ("VIEW_NAME" NOT NULL ENABLE);
2184
  ALTER TABLE "VIEWS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
4040 dpurdie 2185
/
2186
--------------------------------------------------------
4211 dpurdie 2187
--  Constraints for Table JIRA_ISSUES
4040 dpurdie 2188
--------------------------------------------------------
2189
 
4211 dpurdie 2190
  ALTER TABLE "JIRA_ISSUES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2191
/
4308 dpurdie 2192
--------------------------------------------------------
2193
--  Constraints for Table PLATFORMS
2194
--------------------------------------------------------
4040 dpurdie 2195
 
4211 dpurdie 2196
  ALTER TABLE "PLATFORMS" MODIFY ("NAME" NOT NULL ENABLE);
2197
  ALTER TABLE "PLATFORMS" MODIFY ("CODE" NOT NULL ENABLE);
4040 dpurdie 2198
/
2199
--------------------------------------------------------
2200
--  Constraints for Table IGNORE_WARNINGS
2201
--------------------------------------------------------
2202
 
2203
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("DPV_ID" NOT NULL ENABLE);
2204
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("PV_ID" NOT NULL ENABLE);
2205
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2206
/
2207
--------------------------------------------------------
4211 dpurdie 2208
--  Constraints for Table DASH_BOARD
4040 dpurdie 2209
--------------------------------------------------------
2210
 
4211 dpurdie 2211
  ALTER TABLE "DASH_BOARD" MODIFY ("TOTAL_PACKAGES" NOT NULL ENABLE);
2212
  ALTER TABLE "DASH_BOARD" MODIFY ("AUTOMATED_PACKAGES" NOT NULL ENABLE);
2213
  ALTER TABLE "DASH_BOARD" MODIFY ("LAST_BUILD_TIME" NOT NULL ENABLE);
2214
  ALTER TABLE "DASH_BOARD" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2215
  ALTER TABLE "DASH_BOARD" MODIFY ("PROJ_ID" NOT NULL ENABLE);
4040 dpurdie 2216
/
2217
--------------------------------------------------------
4211 dpurdie 2218
--  Constraints for Table ACTION_TYPE
4040 dpurdie 2219
--------------------------------------------------------
2220
 
4211 dpurdie 2221
  ALTER TABLE "ACTION_TYPE" ADD CONSTRAINT "UNQ_ACTTYPE_ID" PRIMARY KEY ("ACTTYPE_ID") ENABLE;
2222
  ALTER TABLE "ACTION_TYPE" MODIFY ("NAME" NOT NULL ENABLE);
2223
  ALTER TABLE "ACTION_TYPE" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2224
/
2225
--------------------------------------------------------
4211 dpurdie 2226
--  Constraints for Table PACKAGE_VERSIONS
4040 dpurdie 2227
--------------------------------------------------------
2228
 
4211 dpurdie 2229
  ALTER TABLE "PACKAGE_VERSIONS" ADD CONSTRAINT "PK_PACKAGE_VERSIONS" PRIMARY KEY ("PV_ID") ENABLE;
2230
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("BUILD_TYPE" NOT NULL ENABLE);
2231
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("LAST_PV_ID" NOT NULL ENABLE);
2232
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("OWNER_ID" NOT NULL ENABLE);
2233
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("CREATOR_ID" NOT NULL ENABLE);
2234
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("MODIFIER_ID" NOT NULL ENABLE);
2235
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("DLOCKED" NOT NULL ENABLE);
2236
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PKG_VERSION" NOT NULL ENABLE);
2237
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PKG_ID" NOT NULL ENABLE);
2238
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2239
/
2240
--------------------------------------------------------
4211 dpurdie 2241
--  Constraints for Table PACKAGE_INTEREST
4040 dpurdie 2242
--------------------------------------------------------
2243
 
4211 dpurdie 2244
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("USER_ID" NOT NULL ENABLE);
2245
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2246
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("PKG_ID" NOT NULL ENABLE);
4040 dpurdie 2247
/
2248
--------------------------------------------------------
4211 dpurdie 2249
--  Constraints for Table RELEASE_CONTENT
4040 dpurdie 2250
--------------------------------------------------------
2251
 
4211 dpurdie 2252
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("PKG_STATE" NOT NULL ENABLE);
2253
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("INSERTOR_ID" NOT NULL ENABLE);
2254
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("INSERT_STAMP" NOT NULL ENABLE);
2255
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("BASE_VIEW_ID" NOT NULL ENABLE);
2256
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("PV_ID" NOT NULL ENABLE);
2257
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2258
/
2259
--------------------------------------------------------
4211 dpurdie 2260
--  Constraints for Table RELEASE_METRICS
4040 dpurdie 2261
--------------------------------------------------------
2262
 
4211 dpurdie 2263
  ALTER TABLE "RELEASE_METRICS" ADD CONSTRAINT "UNQ_RELEASE_METRICS" UNIQUE ("RTAG_ID") ENABLE;
2264
  ALTER TABLE "RELEASE_METRICS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2265
/
2266
--------------------------------------------------------
4211 dpurdie 2267
--  Constraints for Table PROJECT_EXTENTIONS
4040 dpurdie 2268
--------------------------------------------------------
2269
 
4211 dpurdie 2270
  ALTER TABLE "PROJECT_EXTENTIONS" MODIFY ("EXT_NAME" NOT NULL ENABLE);
4040 dpurdie 2271
/
2272
--------------------------------------------------------
4211 dpurdie 2273
--  Constraints for Table ABT_ACTION_LOG
4040 dpurdie 2274
--------------------------------------------------------
2275
 
4211 dpurdie 2276
  ALTER TABLE "ABT_ACTION_LOG" MODIFY ("RCON_ID" NOT NULL ENABLE);
4040 dpurdie 2277
/
2278
--------------------------------------------------------
4211 dpurdie 2279
--  Constraints for Table DAEMON_ACTION_LOG
4040 dpurdie 2280
--------------------------------------------------------
2281
 
4211 dpurdie 2282
  ALTER TABLE "DAEMON_ACTION_LOG" MODIFY ("RCON_ID" NOT NULL ENABLE);
2283
  ALTER TABLE "DAEMON_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2284
/
2285
--------------------------------------------------------
4211 dpurdie 2286
--  Constraints for Table PACKAGE_METRICS
4040 dpurdie 2287
--------------------------------------------------------
2288
 
4211 dpurdie 2289
  ALTER TABLE "PACKAGE_METRICS" ADD CONSTRAINT "UNQ_PACKAGE_METRICS" UNIQUE ("PV_ID") ENABLE;
2290
  ALTER TABLE "PACKAGE_METRICS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2291
/
2292
--------------------------------------------------------
4211 dpurdie 2293
--  Constraints for Table CODE_REVIEW_URL
4040 dpurdie 2294
--------------------------------------------------------
2295
 
4211 dpurdie 2296
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PK" PRIMARY KEY ("CR_ID") ENABLE;
2297
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("DATE_OF_REVIEW" NOT NULL ENABLE);
2298
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("URL" NOT NULL ENABLE);
2299
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2300
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("PV_ID" NOT NULL ENABLE);
2301
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("CR_ID" NOT NULL ENABLE);
4040 dpurdie 2302
/
2303
--------------------------------------------------------
4211 dpurdie 2304
--  Constraints for Table AUTOBUILD_FAILURE
4040 dpurdie 2305
--------------------------------------------------------
2306
 
4211 dpurdie 2307
  ALTER TABLE "AUTOBUILD_FAILURE" ADD PRIMARY KEY ("GROUP_EMAIL_ID") ENABLE;
2308
  ALTER TABLE "AUTOBUILD_FAILURE" MODIFY ("GROUP_EMAIL_ID" NOT NULL ENABLE);
4040 dpurdie 2309
/
2310
--------------------------------------------------------
4211 dpurdie 2311
--  Constraints for Table BUILD_MACHINE_CONFIG
4040 dpurdie 2312
--------------------------------------------------------
2313
 
4211 dpurdie 2314
  ALTER TABLE "BUILD_MACHINE_CONFIG" ADD CONSTRAINT "PK_BUILD_MACHINE_CONFIG" PRIMARY KEY ("BMCON_ID") ENABLE;
2315
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("GBE_ID" NOT NULL ENABLE);
2316
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("MACHINE_HOSTNAME" NOT NULL ENABLE);
2317
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("DISPLAY_NAME" NOT NULL ENABLE);
2318
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("BMCON_ID" NOT NULL ENABLE);
4040 dpurdie 2319
/
2320
--------------------------------------------------------
4211 dpurdie 2321
--  Constraints for Table VIEW_DEF
4040 dpurdie 2322
--------------------------------------------------------
2323
 
4211 dpurdie 2324
  ALTER TABLE "VIEW_DEF" MODIFY ("PKG_ID" NOT NULL ENABLE);
2325
  ALTER TABLE "VIEW_DEF" MODIFY ("VIEW_ID" NOT NULL ENABLE);
4040 dpurdie 2326
/
2327
--------------------------------------------------------
4211 dpurdie 2328
--  Constraints for Table BUILD_STANDARDS
4040 dpurdie 2329
--------------------------------------------------------
2330
 
4211 dpurdie 2331
  ALTER TABLE "BUILD_STANDARDS" ADD CONSTRAINT "BUILD_STANDARDS_PK" PRIMARY KEY ("BS_ID") ENABLE;
2332
  ALTER TABLE "BUILD_STANDARDS" MODIFY ("BS_NAME" NOT NULL ENABLE);
2333
  ALTER TABLE "BUILD_STANDARDS" MODIFY ("BS_ID" NOT NULL ENABLE);
4040 dpurdie 2334
/
4308 dpurdie 2335
--------------------------------------------------------
2336
--  Constraints for Table PACKAGE_BUILD_ENV
2337
--------------------------------------------------------
4040 dpurdie 2338
 
4211 dpurdie 2339
  ALTER TABLE "PACKAGE_BUILD_ENV" MODIFY ("BE_ID" NOT NULL ENABLE);
2340
  ALTER TABLE "PACKAGE_BUILD_ENV" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2341
/
2342
--------------------------------------------------------
4211 dpurdie 2343
--  Constraints for Table VTREES
4040 dpurdie 2344
--------------------------------------------------------
2345
 
4211 dpurdie 2346
  ALTER TABLE "VTREES" ADD CONSTRAINT "PK_VTREES" PRIMARY KEY ("VTREE_ID") ENABLE;
2347
  ALTER TABLE "VTREES" MODIFY ("HIDE" NOT NULL ENABLE);
2348
  ALTER TABLE "VTREES" MODIFY ("VTREE_NAME" NOT NULL ENABLE);
2349
  ALTER TABLE "VTREES" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2350
  ALTER TABLE "VTREES" MODIFY ("VTREE_ID" NOT NULL ENABLE);
4040 dpurdie 2351
/
2352
--------------------------------------------------------
4308 dpurdie 2353
--  Constraints for Table NOTIFICATION_HISTORY
2354
--------------------------------------------------------
4040 dpurdie 2355
 
4211 dpurdie 2356
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "PK_NOTIFICATION_HISTORY" PRIMARY KEY ("RTAG_ID", "PV_ID", "USER_ID") ENABLE;
2357
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
2358
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("USER_ID" NOT NULL ENABLE);
2359
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("PV_ID" NOT NULL ENABLE);
2360
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2361
/
4308 dpurdie 2362
--------------------------------------------------------
2363
--  Constraints for Table RELEASE_LINKS
2364
--------------------------------------------------------
4040 dpurdie 2365
 
4211 dpurdie 2366
  ALTER TABLE "RELEASE_LINKS" MODIFY ("REF_RTAG_ID" NOT NULL ENABLE);
2367
  ALTER TABLE "RELEASE_LINKS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2368
/
4308 dpurdie 2369
--------------------------------------------------------
2370
--  Constraints for Table PACKAGES
2371
--------------------------------------------------------
4040 dpurdie 2372
 
4211 dpurdie 2373
  ALTER TABLE "PACKAGES" ADD CONSTRAINT "PK_PACKAGES" PRIMARY KEY ("PKG_ID") ENABLE;
2374
  ALTER TABLE "PACKAGES" MODIFY ("PKG_NAME" NOT NULL ENABLE);
2375
  ALTER TABLE "PACKAGES" MODIFY ("PKG_ID" NOT NULL ENABLE);
4040 dpurdie 2376
/
4308 dpurdie 2377
--------------------------------------------------------
2378
--  Constraints for Table REPEAT_SCHEDULE
2379
--------------------------------------------------------
4040 dpurdie 2380
 
4211 dpurdie 2381
  ALTER TABLE "REPEAT_SCHEDULE" ADD PRIMARY KEY ("RPT_ID") ENABLE;
4040 dpurdie 2382
/
4308 dpurdie 2383
--------------------------------------------------------
2384
--  Constraints for Table PROJECTS
2385
--------------------------------------------------------
4040 dpurdie 2386
 
4211 dpurdie 2387
  ALTER TABLE "PROJECTS" ADD CONSTRAINT "PK_PROJECTS" PRIMARY KEY ("PROJ_ID") ENABLE;
2388
  ALTER TABLE "PROJECTS" MODIFY ("PROJ_NAME" NOT NULL ENABLE);
2389
  ALTER TABLE "PROJECTS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
4040 dpurdie 2390
/
4308 dpurdie 2391
--------------------------------------------------------
2392
--  Constraints for Table LICENCING
2393
--------------------------------------------------------
4040 dpurdie 2394
 
4211 dpurdie 2395
  ALTER TABLE "LICENCING" MODIFY ("LICENCE" NOT NULL ENABLE);
2396
  ALTER TABLE "LICENCING" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2397
/
4308 dpurdie 2398
--------------------------------------------------------
2399
--  Constraints for Table MESSAGE_BOARD
2400
--------------------------------------------------------
4040 dpurdie 2401
 
4211 dpurdie 2402
  ALTER TABLE "MESSAGE_BOARD" ADD CONSTRAINT "PK_MESSAGE_BOARD" PRIMARY KEY ("MSG_ID") ENABLE;
2403
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("SUBMITION_DATE" NOT NULL ENABLE);
2404
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_DETAILS" NOT NULL ENABLE);
2405
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_ID" NOT NULL ENABLE);
4040 dpurdie 2406
/
4308 dpurdie 2407
--------------------------------------------------------
2408
--  Constraints for Table PROJECT_ACTION_LOG
2409
--------------------------------------------------------
4040 dpurdie 2410
 
2411
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
2412
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2413
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("ACTION_DATETIME" NOT NULL ENABLE);
2414
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
2415
/
4308 dpurdie 2416
--------------------------------------------------------
2417
--  Constraints for Table ARCHIVE_DATA
2418
--------------------------------------------------------
4040 dpurdie 2419
 
4211 dpurdie 2420
  ALTER TABLE "ARCHIVE_DATA" MODIFY ("PV_ID" NOT NULL ENABLE);
2421
  ALTER TABLE "ARCHIVE_DATA" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2422
/
4308 dpurdie 2423
--------------------------------------------------------
2424
--  Constraints for Table VALIDATION_RULES
2425
--------------------------------------------------------
4040 dpurdie 2426
 
4211 dpurdie 2427
  ALTER TABLE "VALIDATION_RULES" MODIFY ("IS_REQUIRED" NOT NULL ENABLE);
2428
  ALTER TABLE "VALIDATION_RULES" MODIFY ("FIELD_NAME" NOT NULL ENABLE);
4040 dpurdie 2429
/
4308 dpurdie 2430
--------------------------------------------------------
2431
--  Constraints for Table LICENCES
2432
--------------------------------------------------------
4040 dpurdie 2433
 
4211 dpurdie 2434
  ALTER TABLE "LICENCES" ADD CONSTRAINT "PK_LICENCES" PRIMARY KEY ("LICENCE") ENABLE;
2435
  ALTER TABLE "LICENCES" MODIFY ("NAME" NOT NULL ENABLE);
2436
  ALTER TABLE "LICENCES" MODIFY ("LICENCE" NOT NULL ENABLE);
4040 dpurdie 2437
/
4308 dpurdie 2438
--------------------------------------------------------
2439
--  Constraints for Table MEMBERS_GROUP
2440
--------------------------------------------------------
4040 dpurdie 2441
 
4211 dpurdie 2442
  ALTER TABLE "MEMBERS_GROUP" MODIFY ("GROUP_EMAIL_ID" NOT NULL ENABLE);
4040 dpurdie 2443
/
4308 dpurdie 2444
--------------------------------------------------------
2445
--  Constraints for Table CQ_ISSUES
2446
--------------------------------------------------------
4040 dpurdie 2447
 
4211 dpurdie 2448
  ALTER TABLE "CQ_ISSUES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2449
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_STATE" NOT NULL ENABLE);
2450
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_ID" NOT NULL ENABLE);
2451
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_DB" NOT NULL ENABLE);
2452
  ALTER TABLE "CQ_ISSUES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2453
/
4308 dpurdie 2454
--------------------------------------------------------
2455
--  Constraints for Table ARCHIVE_ACTION_LOG
2456
--------------------------------------------------------
4040 dpurdie 2457
 
4211 dpurdie 2458
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("DESCRIPTION" NOT NULL ENABLE);
2459
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2460
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
2461
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2462
/
4308 dpurdie 2463
--------------------------------------------------------
4211 dpurdie 2464
--  Constraints for Table CODE_REVIEWS
4040 dpurdie 2465
--------------------------------------------------------
2466
 
4211 dpurdie 2467
  ALTER TABLE "CODE_REVIEWS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2468
/
4308 dpurdie 2469
--------------------------------------------------------
2470
--  Constraints for Table PLANNED
2471
--------------------------------------------------------
4040 dpurdie 2472
 
4211 dpurdie 2473
  ALTER TABLE "PLANNED" ADD CONSTRAINT "UNIQUE_PV_RTAG" UNIQUE ("PV_ID", "RTAG_ID") ENABLE;
2474
  ALTER TABLE "PLANNED" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2475
  ALTER TABLE "PLANNED" MODIFY ("PV_ID" NOT NULL ENABLE);
2476
  ALTER TABLE "PLANNED" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2477
/
4308 dpurdie 2478
--------------------------------------------------------
2479
--  Constraints for Table VCS_TYPE
2480
--------------------------------------------------------
4040 dpurdie 2481
 
4211 dpurdie 2482
  ALTER TABLE "VCS_TYPE" ADD CONSTRAINT "VCS_TYPE_PK" PRIMARY KEY ("VCS_TYPE_ID") ENABLE;
2483
  ALTER TABLE "VCS_TYPE" MODIFY ("TAG" NOT NULL ENABLE);
2484
  ALTER TABLE "VCS_TYPE" MODIFY ("NAME" NOT NULL ENABLE);
2485
  ALTER TABLE "VCS_TYPE" MODIFY ("VCS_TYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2486
/
4308 dpurdie 2487
--------------------------------------------------------
2488
--  Constraints for Table BUILD_MACHINES
2489
--------------------------------------------------------
4040 dpurdie 2490
 
4211 dpurdie 2491
  ALTER TABLE "BUILD_MACHINES" ADD CONSTRAINT "BUILD_MACHINES_PK" PRIMARY KEY ("BM_ID") ENABLE;
2492
  ALTER TABLE "BUILD_MACHINES" MODIFY ("BM_NAME" NOT NULL ENABLE);
2493
  ALTER TABLE "BUILD_MACHINES" MODIFY ("BM_ID" NOT NULL ENABLE);
4040 dpurdie 2494
/
4308 dpurdie 2495
--------------------------------------------------------
2496
--  Constraints for Table PEGGED_VERSIONS
2497
--------------------------------------------------------
4040 dpurdie 2498
 
4211 dpurdie 2499
  ALTER TABLE "PEGGED_VERSIONS" MODIFY ("PV_ID" NOT NULL ENABLE);
2500
  ALTER TABLE "PEGGED_VERSIONS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2501
/
4308 dpurdie 2502
--------------------------------------------------------
2503
--  Constraints for Table DAEMON_INSTRUCTIONS
2504
--------------------------------------------------------
4040 dpurdie 2505
 
4211 dpurdie 2506
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_UK1" UNIQUE ("OP_CODE", "RTAG_ID", "PV_ID") ENABLE;
2507
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_PK" PRIMARY KEY ("DAEMON_INSTRUCTIONS_ID") ENABLE;
2508
  ALTER TABLE "DAEMON_INSTRUCTIONS" MODIFY ("OP_CODE" NOT NULL ENABLE);
2509
  ALTER TABLE "DAEMON_INSTRUCTIONS" MODIFY ("DAEMON_INSTRUCTIONS_ID" NOT NULL ENABLE);
4040 dpurdie 2510
/
2511
--------------------------------------------------------
4211 dpurdie 2512
--  Constraints for Table WORK_IN_PROGRESS
4040 dpurdie 2513
--------------------------------------------------------
2514
 
4211 dpurdie 2515
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2516
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("PV_ID" NOT NULL ENABLE);
2517
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2518
/
2519
--------------------------------------------------------
4308 dpurdie 2520
--  Constraints for Table BUILD_ENV_DOCUMENTS
2521
--------------------------------------------------------
4040 dpurdie 2522
 
4211 dpurdie 2523
  ALTER TABLE "BUILD_ENV_DOCUMENTS" MODIFY ("DOC_NUM" NOT NULL ENABLE);
2524
  ALTER TABLE "BUILD_ENV_DOCUMENTS" MODIFY ("BE_ID" NOT NULL ENABLE);
4040 dpurdie 2525
/
4308 dpurdie 2526
--------------------------------------------------------
4211 dpurdie 2527
--  Constraints for Table BUILD_ORDER
4040 dpurdie 2528
--------------------------------------------------------
2529
 
4211 dpurdie 2530
  ALTER TABLE "BUILD_ORDER" MODIFY ("PV_ID" NOT NULL ENABLE);
2531
  ALTER TABLE "BUILD_ORDER" MODIFY ("STEP_NUM" NOT NULL ENABLE);
2532
  ALTER TABLE "BUILD_ORDER" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2533
/
4308 dpurdie 2534
--------------------------------------------------------
2535
--  Constraints for Table PACKAGE_DEPENDENCIES
2536
--------------------------------------------------------
4040 dpurdie 2537
 
4211 dpurdie 2538
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("BUILD_TYPE" NOT NULL ENABLE);
2539
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("DPKG_ID" NOT NULL ENABLE);
2540
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2541
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("DPV_ID" NOT NULL ENABLE);
2542
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2543
/
4308 dpurdie 2544
--------------------------------------------------------
2545
--  Constraints for Table PROCESSES
2546
--------------------------------------------------------
4040 dpurdie 2547
 
4211 dpurdie 2548
  ALTER TABLE "PROCESSES" ADD CONSTRAINT "PROCESSES_PK" PRIMARY KEY ("PROC_ID") ENABLE;
2549
  ALTER TABLE "PROCESSES" MODIFY ("PROC_NAME" NOT NULL ENABLE);
2550
  ALTER TABLE "PROCESSES" MODIFY ("PROC_ID" NOT NULL ENABLE);
4040 dpurdie 2551
/
4308 dpurdie 2552
--------------------------------------------------------
2553
--  Constraints for Table BUILD_ENVIRONMENTS
2554
--------------------------------------------------------
4040 dpurdie 2555
 
4211 dpurdie 2556
  ALTER TABLE "BUILD_ENVIRONMENTS" ADD CONSTRAINT "PK_BUILD_ENVIRONMENTS" PRIMARY KEY ("BE_ID") ENABLE;
2557
  ALTER TABLE "BUILD_ENVIRONMENTS" MODIFY ("BE_NAME" NOT NULL ENABLE);
2558
  ALTER TABLE "BUILD_ENVIRONMENTS" MODIFY ("BE_ID" NOT NULL ENABLE);
4040 dpurdie 2559
/
4308 dpurdie 2560
--------------------------------------------------------
2561
--  Constraints for Table DEPRECATED_PACKAGES
2562
--------------------------------------------------------
4040 dpurdie 2563
 
4211 dpurdie 2564
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("COMMENTS" NOT NULL ENABLE);
2565
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2566
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2567
/
2568
--------------------------------------------------------
2569
--  Ref Constraints for Table ABT_ACTION_LOG
2570
--------------------------------------------------------
2571
 
2572
  ALTER TABLE "ABT_ACTION_LOG" ADD FOREIGN KEY ("RCON_ID")
2573
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2574
/
2575
--------------------------------------------------------
2576
--  Ref Constraints for Table ACTION_LOG
2577
--------------------------------------------------------
2578
 
2579
  ALTER TABLE "ACTION_LOG" ADD CONSTRAINT "REFACTION_TYPE48" FOREIGN KEY ("ACTTYPE_ID")
2580
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2581
/
2582
--------------------------------------------------------
2583
--  Ref Constraints for Table ADDITIONAL_NOTES
2584
--------------------------------------------------------
2585
 
2586
  ALTER TABLE "ADDITIONAL_NOTES" ADD CONSTRAINT "FK_ADDITION_REF_PV_ID" FOREIGN KEY ("PV_ID")
2587
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2588
/
2589
--------------------------------------------------------
2590
--  Ref Constraints for Table ADVISORY_RIPPLE
2591
--------------------------------------------------------
2592
 
2593
  ALTER TABLE "ADVISORY_RIPPLE" ADD FOREIGN KEY ("RTAG_ID")
2594
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2595
  ALTER TABLE "ADVISORY_RIPPLE" ADD FOREIGN KEY ("PV_ID")
2596
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2597
/
2598
--------------------------------------------------------
2599
--  Ref Constraints for Table AUTOBUILD_FAILURE
2600
--------------------------------------------------------
2601
 
2602
  ALTER TABLE "AUTOBUILD_FAILURE" ADD FOREIGN KEY ("PROJ_ID")
2603
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2604
  ALTER TABLE "AUTOBUILD_FAILURE" ADD FOREIGN KEY ("VIEW_ID")
2605
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2606
/
2607
--------------------------------------------------------
2608
--  Ref Constraints for Table BUILD_ENV_DOCUMENTS
2609
--------------------------------------------------------
2610
 
2611
  ALTER TABLE "BUILD_ENV_DOCUMENTS" ADD CONSTRAINT "FK_BUILD_E_DOCS_REF_BUILD_ENV" FOREIGN KEY ("BE_ID")
2612
	  REFERENCES "BUILD_ENVIRONMENTS" ("BE_ID") ENABLE;
2613
/
2614
--------------------------------------------------------
2615
--  Ref Constraints for Table BUILD_MACHINE_CONFIG
2616
--------------------------------------------------------
2617
 
2618
  ALTER TABLE "BUILD_MACHINE_CONFIG" ADD CONSTRAINT "FK_BM_GBE_ID" FOREIGN KEY ("GBE_ID")
2619
	  REFERENCES "GBE_MACHTYPE" ("GBE_ID") ENABLE;
2620
/
2621
--------------------------------------------------------
2622
--  Ref Constraints for Table BUILD_ORDER
2623
--------------------------------------------------------
2624
 
2625
  ALTER TABLE "BUILD_ORDER" ADD CONSTRAINT "FK_BO_PV_ID" FOREIGN KEY ("PV_ID")
2626
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") DISABLE;
2627
  ALTER TABLE "BUILD_ORDER" ADD CONSTRAINT "FK_BO_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2628
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2629
/
2630
--------------------------------------------------------
2631
--  Ref Constraints for Table BUILD_STANDARDS_ADDENDUM
2632
--------------------------------------------------------
2633
 
2634
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_R01" FOREIGN KEY ("BS_ID")
2635
	  REFERENCES "BUILD_STANDARDS" ("BS_ID") ENABLE;
2636
/
2637
--------------------------------------------------------
2638
--  Ref Constraints for Table CODE_REVIEWS
2639
--------------------------------------------------------
2640
 
2641
  ALTER TABLE "CODE_REVIEWS" ADD CONSTRAINT "FK_CODE_REV_REF_PV_ID" FOREIGN KEY ("PV_ID")
2642
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2643
/
2644
--------------------------------------------------------
2645
--  Ref Constraints for Table CODE_REVIEW_URL
2646
--------------------------------------------------------
2647
 
2648
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PACKAGE_V_FK1" FOREIGN KEY ("PV_ID")
2649
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2650
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PROJECT_V_FK1" FOREIGN KEY ("PROJ_ID")
2651
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2652
/
2653
--------------------------------------------------------
2654
--  Ref Constraints for Table CQ_ISSUES
2655
--------------------------------------------------------
2656
 
2657
  ALTER TABLE "CQ_ISSUES" ADD CONSTRAINT "FK_CQ_PV_ID" FOREIGN KEY ("PV_ID")
2658
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2659
/
2660
--------------------------------------------------------
2661
--  Ref Constraints for Table DAEMON_ACTION_LOG
2662
--------------------------------------------------------
2663
 
2664
  ALTER TABLE "DAEMON_ACTION_LOG" ADD FOREIGN KEY ("RCON_ID")
2665
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2666
  ALTER TABLE "DAEMON_ACTION_LOG" ADD FOREIGN KEY ("ACTTYPE_ID")
2667
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2668
/
2669
--------------------------------------------------------
2670
--  Ref Constraints for Table DAEMON_INSTRUCTIONS
2671
--------------------------------------------------------
2672
 
2673
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_PV_ID_FK" FOREIGN KEY ("PV_ID")
2674
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2675
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_RTAG_ID_FK" FOREIGN KEY ("RTAG_ID")
2676
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2677
/
2678
--------------------------------------------------------
2679
--  Ref Constraints for Table DASH_BOARD
2680
--------------------------------------------------------
2681
 
2682
  ALTER TABLE "DASH_BOARD" ADD FOREIGN KEY ("PROJ_ID")
2683
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2684
  ALTER TABLE "DASH_BOARD" ADD FOREIGN KEY ("RTAG_ID")
2685
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2686
/
2687
--------------------------------------------------------
2688
--  Ref Constraints for Table DO_NOT_RIPPLE
2689
--------------------------------------------------------
2690
 
2691
  ALTER TABLE "DO_NOT_RIPPLE" ADD FOREIGN KEY ("PV_ID")
2692
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2693
  ALTER TABLE "DO_NOT_RIPPLE" ADD FOREIGN KEY ("RTAG_ID")
2694
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2695
/
2696
--------------------------------------------------------
2697
--  Ref Constraints for Table GBE_MACHTYPE
2698
--------------------------------------------------------
2699
 
2700
  ALTER TABLE "GBE_MACHTYPE" ADD CONSTRAINT "GBE_MACHTYPE_BUILD_MACHIN_FK1" FOREIGN KEY ("BM_ID")
2701
	  REFERENCES "BUILD_MACHINES" ("BM_ID") ENABLE;
2702
/
2703
--------------------------------------------------------
2704
--  Ref Constraints for Table IGNORE_WARNINGS
2705
--------------------------------------------------------
2706
 
2707
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_DPV_ID" FOREIGN KEY ("DPV_ID")
2708
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2709
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_PV_ID" FOREIGN KEY ("PV_ID")
2710
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2711
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2712
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2713
/
2714
--------------------------------------------------------
2715
--  Ref Constraints for Table JIRA_ISSUES
2716
--------------------------------------------------------
2717
 
2718
  ALTER TABLE "JIRA_ISSUES" ADD CONSTRAINT "FK_JIRA_PV_ID" FOREIGN KEY ("PV_ID")
2719
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2720
/
2721
--------------------------------------------------------
2722
--  Ref Constraints for Table LICENCING
2723
--------------------------------------------------------
2724
 
2725
  ALTER TABLE "LICENCING" ADD FOREIGN KEY ("PV_ID")
2726
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2727
  ALTER TABLE "LICENCING" ADD FOREIGN KEY ("LICENCE")
2728
	  REFERENCES "LICENCES" ("LICENCE") ENABLE;
2729
/
2730
--------------------------------------------------------
2731
--  Ref Constraints for Table MEMBERS_GROUP
2732
--------------------------------------------------------
2733
 
2734
  ALTER TABLE "MEMBERS_GROUP" ADD FOREIGN KEY ("GROUP_EMAIL_ID")
2735
	  REFERENCES "AUTOBUILD_FAILURE" ("GROUP_EMAIL_ID") ENABLE;
2736
/
2737
--------------------------------------------------------
2738
--  Ref Constraints for Table NOTIFICATION_HISTORY
2739
--------------------------------------------------------
2740
 
2741
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "FK_NH_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2742
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2743
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "FK_NK_PV_ID" FOREIGN KEY ("PV_ID")
2744
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") DISABLE;
2745
/
2746
--------------------------------------------------------
2747
--  Ref Constraints for Table PACKAGE_BUILD_ENV
2748
--------------------------------------------------------
2749
 
2750
  ALTER TABLE "PACKAGE_BUILD_ENV" ADD CONSTRAINT "FK_PKG_BUILD_E_REF_BUILD_ENV" FOREIGN KEY ("BE_ID")
2751
	  REFERENCES "BUILD_ENVIRONMENTS" ("BE_ID") ENABLE;
2752
  ALTER TABLE "PACKAGE_BUILD_ENV" ADD CONSTRAINT "FK_PKG_BUILD_E_REF_PKG_VERSION" FOREIGN KEY ("PV_ID")
2753
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2754
/
2755
--------------------------------------------------------
2756
--  Ref Constraints for Table PACKAGE_BUILD_INFO
2757
--------------------------------------------------------
2758
 
2759
  ALTER TABLE "PACKAGE_BUILD_INFO" ADD FOREIGN KEY ("PV_ID")
2760
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2761
  ALTER TABLE "PACKAGE_BUILD_INFO" ADD FOREIGN KEY ("BM_ID")
2762
	  REFERENCES "BUILD_MACHINES" ("BM_ID") ENABLE;
2763
/
2764
--------------------------------------------------------
2765
--  Ref Constraints for Table PACKAGE_DOCUMENTS
2766
--------------------------------------------------------
2767
 
2768
  ALTER TABLE "PACKAGE_DOCUMENTS" ADD CONSTRAINT "FK_PKGDOCS_REF_PV" FOREIGN KEY ("PV_ID")
2769
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2770
/
2771
--------------------------------------------------------
2772
--  Ref Constraints for Table PACKAGE_INTEREST
2773
--------------------------------------------------------
2774
 
2775
  ALTER TABLE "PACKAGE_INTEREST" ADD FOREIGN KEY ("PROJ_ID")
2776
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2777
/
2778
--------------------------------------------------------
2779
--  Ref Constraints for Table PACKAGE_METRICS
2780
--------------------------------------------------------
2781
 
2782
  ALTER TABLE "PACKAGE_METRICS" ADD CONSTRAINT "FK_PACKAGE_METRICS_PV_ID" FOREIGN KEY ("PV_ID")
2783
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2784
/
2785
--------------------------------------------------------
2786
--  Ref Constraints for Table PACKAGE_PATCHES
2787
--------------------------------------------------------
2788
 
2789
  ALTER TABLE "PACKAGE_PATCHES" ADD CONSTRAINT "FK_PP_PATCH_ID" FOREIGN KEY ("PATCH_ID")
2790
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2791
  ALTER TABLE "PACKAGE_PATCHES" ADD CONSTRAINT "FK_PP_PV_ID" FOREIGN KEY ("PV_ID")
2792
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2793
/
2794
--------------------------------------------------------
2795
--  Ref Constraints for Table PACKAGE_PROCESSES
2796
--------------------------------------------------------
2797
 
2798
  ALTER TABLE "PACKAGE_PROCESSES" ADD CONSTRAINT "PACKAGE_PROCESSES_R01" FOREIGN KEY ("PV_ID")
2799
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2800
  ALTER TABLE "PACKAGE_PROCESSES" ADD CONSTRAINT "PACKAGE_PROCESSES_R02" FOREIGN KEY ("PROC_ID")
2801
	  REFERENCES "PROCESSES" ("PROC_ID") ENABLE;
2802
/
2803
--------------------------------------------------------
2804
--  Ref Constraints for Table PACKAGE_VERSIONS
2805
--------------------------------------------------------
2806
 
2807
  ALTER TABLE "PACKAGE_VERSIONS" ADD CONSTRAINT "PACKAGE_VERSIONS_VCS_TYPE" FOREIGN KEY ("VCS_TYPE_ID")
2808
	  REFERENCES "VCS_TYPE" ("VCS_TYPE_ID") ENABLE;
2809
  ALTER TABLE "PACKAGE_VERSIONS" ADD FOREIGN KEY ("BS_ID")
2810
	  REFERENCES "BUILD_STANDARDS" ("BS_ID") ENABLE;
2811
/
2812
--------------------------------------------------------
2813
--  Ref Constraints for Table PEGGED_VERSIONS
2814
--------------------------------------------------------
2815
 
2816
  ALTER TABLE "PEGGED_VERSIONS" ADD CONSTRAINT "PEGGED_VERSIONS_PACKAG_FK1" FOREIGN KEY ("PV_ID")
2817
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2818
  ALTER TABLE "PEGGED_VERSIONS" ADD CONSTRAINT "PEGGED_VERSIONS_RELEAS_FK1" FOREIGN KEY ("RTAG_ID")
2819
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2820
/
2821
--------------------------------------------------------
2822
--  Ref Constraints for Table PLANNED
2823
--------------------------------------------------------
2824
 
2825
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFPACKAGE_VERSIONS54" FOREIGN KEY ("PV_ID")
2826
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2827
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFRELEASE_TAGS53" FOREIGN KEY ("RTAG_ID")
2828
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2829
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFVIEWS55" FOREIGN KEY ("VIEW_ID")
2830
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2831
/
2832
--------------------------------------------------------
2833
--  Ref Constraints for Table PLANNED_VERSIONS
2834
--------------------------------------------------------
2835
 
2836
  ALTER TABLE "PLANNED_VERSIONS" ADD FOREIGN KEY ("PKG_ID")
2837
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2838
/
2839
--------------------------------------------------------
2840
--  Ref Constraints for Table PRODUCT_COMPONENTS
2841
--------------------------------------------------------
2842
 
2843
  ALTER TABLE "PRODUCT_COMPONENTS" ADD CONSTRAINT "REFPACKAGE_VERSIONS49" FOREIGN KEY ("PV_ID")
2844
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2845
/
2846
--------------------------------------------------------
2847
--  Ref Constraints for Table PROJECT_ACTION_LOG
2848
--------------------------------------------------------
2849
 
2850
  ALTER TABLE "PROJECT_ACTION_LOG" ADD CONSTRAINT "REFACTION_TYPE63" FOREIGN KEY ("ACTTYPE_ID")
2851
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2852
  ALTER TABLE "PROJECT_ACTION_LOG" ADD FOREIGN KEY ("RTAG_ID")
2853
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") DISABLE;
2854
/
2855
--------------------------------------------------------
2856
--  Ref Constraints for Table RELEASE_COMPONENTS
2857
--------------------------------------------------------
2858
 
2859
  ALTER TABLE "RELEASE_COMPONENTS" ADD CONSTRAINT "FK_RCONT_PV_ID" FOREIGN KEY ("PV_ID")
2860
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2861
/
2862
--------------------------------------------------------
2863
--  Ref Constraints for Table RELEASE_CONFIG
2864
--------------------------------------------------------
2865
 
2866
  ALTER TABLE "RELEASE_CONFIG" ADD FOREIGN KEY ("RTAG_ID")
2867
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2868
  ALTER TABLE "RELEASE_CONFIG" ADD FOREIGN KEY ("GBE_ID")
2869
	  REFERENCES "GBE_MACHTYPE" ("GBE_ID") ENABLE;
2870
/
2871
--------------------------------------------------------
2872
--  Ref Constraints for Table RELEASE_CONTENT
2873
--------------------------------------------------------
2874
 
2875
  ALTER TABLE "RELEASE_CONTENT" ADD FOREIGN KEY ("PKG_ID")
2876
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2877
  ALTER TABLE "RELEASE_CONTENT" ADD FOREIGN KEY ("PRODUCT_STATE")
2878
	  REFERENCES "PRODUCT_STATES" ("STATE_ID") ENABLE;
2879
/
2880
--------------------------------------------------------
2881
--  Ref Constraints for Table RELEASE_LINKS
2882
--------------------------------------------------------
2883
 
2884
  ALTER TABLE "RELEASE_LINKS" ADD CONSTRAINT "REFRELEASE_TAGS56" FOREIGN KEY ("RTAG_ID")
2885
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2886
  ALTER TABLE "RELEASE_LINKS" ADD CONSTRAINT "REFRELEASE_TAGS58" FOREIGN KEY ("REF_RTAG_ID")
2887
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2888
/
2889
--------------------------------------------------------
2890
--  Ref Constraints for Table RELEASE_METRICS
2891
--------------------------------------------------------
2892
 
2893
  ALTER TABLE "RELEASE_METRICS" ADD CONSTRAINT "FK_RELEASE_METRICS_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2894
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2895
/
2896
--------------------------------------------------------
2897
--  Ref Constraints for Table RUNTIME_DEPENDENCIES
2898
--------------------------------------------------------
2899
 
2900
  ALTER TABLE "RUNTIME_DEPENDENCIES" ADD CONSTRAINT "FK_RTD_PV_ID" FOREIGN KEY ("PV_ID")
2901
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2902
  ALTER TABLE "RUNTIME_DEPENDENCIES" ADD CONSTRAINT "FK_RTD_RTD_ID" FOREIGN KEY ("RTD_ID")
2903
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2904
/
2905
--------------------------------------------------------
2906
--  Ref Constraints for Table RUN_LEVEL
2907
--------------------------------------------------------
2908
 
2909
  ALTER TABLE "RUN_LEVEL" ADD FOREIGN KEY ("RCON_ID")
2910
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2911
  ALTER TABLE "RUN_LEVEL" ADD FOREIGN KEY ("CURRENT_PKG_ID_BEING_BUILT")
2912
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2913
/
2914
--------------------------------------------------------
2915
--  Ref Constraints for Table UNIT_TESTS
2916
--------------------------------------------------------
2917
 
2918
  ALTER TABLE "UNIT_TESTS" ADD CONSTRAINT "FK_UT_REF_PV_ID" FOREIGN KEY ("PV_ID")
2919
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2920
  ALTER TABLE "UNIT_TESTS" ADD CONSTRAINT "FK_UT_REF_TEST_TYPES" FOREIGN KEY ("TEST_TYPES_FK")
2921
	  REFERENCES "TEST_TYPES" ("TEST_TYPE_ID") ENABLE;
2922
/
2923
--------------------------------------------------------
2924
--  Ref Constraints for Table VTREES_WORLD
2925
--------------------------------------------------------
2926
 
2927
  ALTER TABLE "VTREES_WORLD" ADD CONSTRAINT "FK_VW_REF_VTREE_ID" FOREIGN KEY ("VTREE_ID")
2928
	  REFERENCES "VTREES" ("VTREE_ID") ENABLE;
2929
  ALTER TABLE "VTREES_WORLD" ADD CONSTRAINT "FK_VW_REF_WORLD_ID" FOREIGN KEY ("WORLD_ID")
2930
	  REFERENCES "WORLDS" ("WORLD_ID") ENABLE;
2931
/
2932
--------------------------------------------------------
2933
--  Ref Constraints for Table WORK_IN_PROGRESS
2934
--------------------------------------------------------
2935
 
2936
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFPACKAGE_VERSIONS51" FOREIGN KEY ("PV_ID")
2937
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2938
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFRELEASE_TAGS50" FOREIGN KEY ("RTAG_ID")
2939
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2940
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFVIEWS52" FOREIGN KEY ("VIEW_ID")
2941
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2942
/
2943
--------------------------------------------------------
2944
--  DDL for Function CAN_EDIT_PKG_IN_PROJECT
2945
--------------------------------------------------------
2946
 
1373 dpurdie 2947
  CREATE OR REPLACE FUNCTION "CAN_EDIT_PKG_IN_PROJECT" ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
2948
 
2949
/* ---------------------------------------------------------------------------
2950
    Version: 3.0.0
2951
   --------------------------------------------------------------------------- */
2952
 
2953
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
2954
	ProjId NUMBER;
2955
	RowCount NUMBER;
2956
	cReleaseMode CHAR(1);
2957
 
2958
BEGIN
2959
 
2960
	--RETURN 1;
2961
 
2962
 
2963
	/*--------------- Business Rules Here -------------------*/
2964
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
2965
		RETURN 0;
2966
	END IF;
2967
	/*-------------------------------------------------------*/
2968
 
2969
 
2970
 
2971
 
2972
 
2973
 
2974
	/*-- First Check. See if package is used through release reference --*/
2975
	SELECT COUNT(rc.PV_ID) INTO RowCount
2976
	  FROM (
2977
	  		SELECT rl.REF_RTAG_ID
2978
			  FROM RELEASE_LINKS rl
2979
			 WHERE rl.RTAG_ID = nRtagId
2980
	  		) rl,
2981
			RELEASE_CONTENT rc
2982
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
2983
	    AND rc.PV_ID = nPvId;			
2984
 
2985
 
2986
	-- Decide if package can be edited  
2987
	IF RowCount > 0 THEN
2988
		-- Package is referenced from other release, hence cannot be edited
2989
		RETURN 0;	
2990
 
2991
	ELSE
2992
 
2993
		-- Check is only done for releases in restrictive mode
2994
		SELECT rt.OFFICIAL INTO cReleaseMode
2995
		  FROM RELEASE_TAGS rt
2996
		 WHERE rt.RTAG_ID = nRtagId;
2997
 
2998
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
2999
			-- Do not do any firther checking,
3000
			-- Package is editable here
3001
			RETURN 1;
3002
		END IF;	
3003
 
3004
	END IF;
3005
 
3006
 
3007
 
3008
 
3009
	/*-- Further checking --*/
3010
	-- Get proj_id
3011
	SELECT rt.PROJ_ID  INTO  ProjId
3012
	  FROM RELEASE_TAGS rt
3013
	 WHERE rt.RTAG_ID = nRtagId;
3014
 
3015
 
3016
 
3017
	BEGIN
3018
 
3019
		-- Get v_ext
3020
		SELECT pv.V_EXT  INTO  Vext
3021
		  FROM PACKAGE_VERSIONS pv
3022
		 WHERE pv.PV_ID = nPvId;  
3023
 
3024
		EXCEPTION
3025
	    	WHEN NO_DATA_FOUND THEN
3026
	       		Vext := NULL;
3027
 
3028
	END;	 
3029
 
3030
 
3031
	--Temp Hack for Step Project
3032
	IF ProjId != 281 THEN
3033
		-- Find if package can be edited in this project
3034
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
3035
	 		FROM PROJECT_EXTENTIONS pe
3036
			WHERE pe.PROJ_ID != ProjId  
3037
	  		AND pe.EXT_NAME = VExt;
3038
	END IF;		
3039
 
3040
 
3041
	-- Decide if package can be edited  
3042
	IF RowCount > 0 THEN
3043
		-- Package extension is found in other projects, hece NOT EDITABLE
3044
		RETURN 0;
3045
	ELSE
3046
		RETURN 1;	
3047
	END IF;
3048
 
3049
 
3050
END CAN_EDIT_PKG_IN_PROJECT;
4040 dpurdie 3051
 
1374 dpurdie 3052
/
1373 dpurdie 3053
 
4040 dpurdie 3054
/
3055
--------------------------------------------------------
3056
--  DDL for Function DT_ADDUSEROBJECT
3057
--------------------------------------------------------
3058
 
3959 dpurdie 3059
  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;
4040 dpurdie 3060
 
3959 dpurdie 3061
/
3062
 
4040 dpurdie 3063
/
3064
--------------------------------------------------------
3065
--  DDL for Function GET_AUTOMATED_LABEL
3066
--------------------------------------------------------
3067
 
3959 dpurdie 3068
  CREATE OR REPLACE FUNCTION "GET_AUTOMATED_LABEL" ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
3069
 
3070
/* ---------------------------------------------------------------------------
3071
    Version: 3.0.0
3072
   --------------------------------------------------------------------------- */
3073
 
4211 dpurdie 3074
  sPkgName VARCHAR2(4000);
3075
  sPkgVersion VARCHAR2(4000);
3076
  sVext VARCHAR2(4000);
3077
  cChangeType CHAR;
3078
  cBuildType CHAR;
3079
 
3959 dpurdie 3080
 
1373 dpurdie 3081
BEGIN
3082
 
3959 dpurdie 3083
	-- Get package details
4211 dpurdie 3084
	SELECT pkg.PKG_NAME, pv.V_EXT, pv.build_type, pv.change_type, pv.pkg_version INTO sPkgName, sVext,cBuildType, cChangeType, sPkgVersion  
3959 dpurdie 3085
	  FROM PACKAGE_VERSIONS pv,
3086
	  	   PACKAGES pkg
3087
	 WHERE pv.PKG_ID = pkg.PKG_ID
3088
	   AND pv.PV_ID = nPvId;
3089
 
4211 dpurdie 3090
  -- Generate Label for manually built package
3091
  If cBuildType = 'M' Then
3092
    return (sPkgName ||'_'|| sPkgVersion );
3093
  End If;
3959 dpurdie 3094
 
4211 dpurdie 3095
  -- Generate Label for automated build with specified package version
3096
  IF cchangetype = 'F' Then
3097
    return (sPkgName ||'_'|| sPkgVersion ||'.WIP');
3098
  End If;
3099
 
3959 dpurdie 3100
	-- Generate Label for automated build
3101
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
3102
 
3103
END GET_AUTOMATED_LABEL;
4040 dpurdie 3104
 
1374 dpurdie 3105
/
1373 dpurdie 3106
 
4040 dpurdie 3107
/
3108
--------------------------------------------------------
3109
--  DDL for Function GET_BUILD_NUMBER
3110
--------------------------------------------------------
3111
 
1373 dpurdie 3112
  CREATE OR REPLACE FUNCTION "GET_BUILD_NUMBER" (s_version IN VARCHAR2) RETURN VARCHAR2
3113
IS
3114
/* ---------------------------------------------------------------------------
3115
    Version: 1.0.0
3116
   --------------------------------------------------------------------------- */
3117
BEGIN
3118
    IF is_number(s_version) AND LENGTH(s_version) > 3
3119
    THEN
3120
        RETURN MOD(TO_NUMBER(s_version), 1000);
3121
    ELSE
3122
        RETURN 0;
3123
    END IF;
3124
END get_build_number;
4040 dpurdie 3125
 
1374 dpurdie 3126
/
1373 dpurdie 3127
 
4040 dpurdie 3128
/
3129
--------------------------------------------------------
3130
--  DDL for Function GET_PATCH_VERSION
3131
--------------------------------------------------------
3132
 
3959 dpurdie 3133
  CREATE OR REPLACE FUNCTION "GET_PATCH_VERSION" (s_version IN VARCHAR2) RETURN VARCHAR2
1373 dpurdie 3134
IS
3135
/* ---------------------------------------------------------------------------
3959 dpurdie 3136
    Version: 1.0.0
1373 dpurdie 3137
   --------------------------------------------------------------------------- */
3138
BEGIN
3959 dpurdie 3139
    IF is_number(s_version) AND LENGTH(s_version) > 3
1373 dpurdie 3140
    THEN
3959 dpurdie 3141
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
1373 dpurdie 3142
    ELSE
3959 dpurdie 3143
        RETURN s_version;
1373 dpurdie 3144
    END IF;
3959 dpurdie 3145
END get_patch_version;
4040 dpurdie 3146
 
1374 dpurdie 3147
/
1373 dpurdie 3148
 
4040 dpurdie 3149
/
3150
--------------------------------------------------------
3151
--  DDL for Function GET_PV_FIRST_MODIFIED
3152
--------------------------------------------------------
3153
 
3959 dpurdie 3154
  CREATE OR REPLACE FUNCTION "GET_PV_FIRST_MODIFIED" (v_pv_id NUMBER) RETURN DATE IS
3155
  ret DATE;
1373 dpurdie 3156
BEGIN
3959 dpurdie 3157
  SELECT q.modified_stamp
3158
    INTO ret
3159
    FROM (
3160
            SELECT level AS lvl, pvc.pv_id, pvc.modified_stamp, pvc.change_type
3161
              FROM package_versions pvc
3162
              START WITH pvc.pv_id = v_pv_id
3163
            CONNECT BY NOCYCLE pvc.pv_id = PRIOR pvc.last_pv_id
3164
          ) Q
3165
  WHERE q.change_type IS NOT NULL
3166
    AND rownum = 1
3167
  ORDER BY q.lvl;
3168
 
3169
  RETURN ret;
3170
END;
4040 dpurdie 3171
 
1374 dpurdie 3172
/
1373 dpurdie 3173
 
4040 dpurdie 3174
/
3175
--------------------------------------------------------
3176
--  DDL for Function GET_V_EXT
3177
--------------------------------------------------------
3178
 
3959 dpurdie 3179
  CREATE OR REPLACE FUNCTION "GET_V_EXT" (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
3180
 
1373 dpurdie 3181
/* ---------------------------------------------------------------------------
3959 dpurdie 3182
    Version: 3.0.0
1373 dpurdie 3183
   --------------------------------------------------------------------------- */
3959 dpurdie 3184
 
3185
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
3186
    lastDot NUMBER;
3187
 
1373 dpurdie 3188
BEGIN
3959 dpurdie 3189
    lastDot := INSTR (SSpkg_version, '.', -1);
3190
 
3191
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
1373 dpurdie 3192
    THEN
3959 dpurdie 3193
        -- YES dot separator found --
3194
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
3195
 
3196
        IF IS_VERSION_EXTENSION ( SSV_EXT )
3197
        THEN
3198
            RETURN SSV_EXT;
3199
        ELSE
3200
            RETURN NULL;
3201
        END IF;
3202
 
1373 dpurdie 3203
    ELSE
3959 dpurdie 3204
        -- NO dot separator found --
3205
        RETURN NULL;
1373 dpurdie 3206
    END IF;
3959 dpurdie 3207
 
3208
END GET_V_EXT;
4040 dpurdie 3209
 
1374 dpurdie 3210
/
1373 dpurdie 3211
 
4040 dpurdie 3212
/
3213
--------------------------------------------------------
3214
--  DDL for Function IN_LIST_NUMBER
3215
--------------------------------------------------------
3216
 
3959 dpurdie 3217
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
1373 dpurdie 3218
 
3219
/* ---------------------------------------------------------------------------
3220
    Version: 3.0.0
3221
   --------------------------------------------------------------------------- */
3222
 
3223
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
3224
	pos				   NUMBER;
3959 dpurdie 3225
	in_list			   VARCHAR2(4000) := sInList || ',';
1373 dpurdie 3226
 
3227
BEGIN
3228
 
3229
	IF NOT sInList IS NULL
3230
	THEN
3231
		LOOP
3232
	        EXIT WHEN in_list IS NULL;
3233
	        pos := INSTR ( in_list, ',' );
3234
	        sync_rtags.extend;
3235
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3236
	        in_list := SUBSTR ( in_list, pos+1 );
3237
		END LOOP;
3238
	END IF;
3239
 
3240
	RETURN sync_rtags;
3959 dpurdie 3241
END IN_LIST_NUMBER;
4040 dpurdie 3242
 
1374 dpurdie 3243
/
1373 dpurdie 3244
 
4040 dpurdie 3245
/
3246
--------------------------------------------------------
3247
--  DDL for Function IN_LIST_NUMBER2
3248
--------------------------------------------------------
3249
 
3959 dpurdie 3250
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER2" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
1373 dpurdie 3251
 
3252
/* ---------------------------------------------------------------------------
3253
    Version: 3.0.0
3254
   --------------------------------------------------------------------------- */
3255
 
3256
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
3257
	pos				   NUMBER;
3959 dpurdie 3258
	in_list			   VARCHAR2(32767) := sInList || ',';
1373 dpurdie 3259
 
3260
BEGIN
3261
 
3262
	IF NOT sInList IS NULL
3263
	THEN
3264
		LOOP
3265
	        EXIT WHEN in_list IS NULL;
3266
	        pos := INSTR ( in_list, ',' );
3267
	        sync_rtags.extend;
3268
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3269
	        in_list := SUBSTR ( in_list, pos+1 );
3270
		END LOOP;
3271
	END IF;
3272
 
3273
	RETURN sync_rtags;
3959 dpurdie 3274
END IN_LIST_NUMBER2;
4040 dpurdie 3275
 
1374 dpurdie 3276
/
1373 dpurdie 3277
 
4040 dpurdie 3278
/
3279
--------------------------------------------------------
3280
--  DDL for Function IN_LIST_VARCHAR2
3281
--------------------------------------------------------
3282
 
1373 dpurdie 3283
  CREATE OR REPLACE FUNCTION "IN_LIST_VARCHAR2" ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
3284
 
3285
/* ---------------------------------------------------------------------------
3286
    Version: 3.1
3287
   --------------------------------------------------------------------------- */
3288
 
3289
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
3290
	pos				   NUMBER;
3291
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
3292
	val				   VARCHAR2(4000);
3293
 
3294
BEGIN
3295
 
3296
	IF NOT sInList IS NULL
3297
	THEN
3298
		LOOP
3299
	        EXIT WHEN in_list IS NULL;
3300
	        pos := INSTR ( in_list, cSeparator );
3301
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3302
 
3303
			IF (NOT val IS NULL) THEN
3304
		        cItemCollection.extend;
3305
		        cItemCollection(cItemCollection.count) := val;
3306
			END IF;
3307
 
3308
	        in_list := SUBSTR ( in_list, pos+1 );
3309
		END LOOP;
3310
	END IF;
3311
 
3312
	RETURN cItemCollection;
3313
END IN_LIST_VARCHAR2;
4040 dpurdie 3314
 
1374 dpurdie 3315
/
1373 dpurdie 3316
 
4040 dpurdie 3317
/
3318
--------------------------------------------------------
3319
--  DDL for Function IS_NUMBER
3320
--------------------------------------------------------
3321
 
3959 dpurdie 3322
  CREATE OR REPLACE FUNCTION "IS_NUMBER" (p_val IN VARCHAR2) RETURN BOOLEAN
3323
IS
3324
   temp_num NUMBER;
3325
/* ---------------------------------------------------------------------------
3326
    Version: 1.0.0
3327
   --------------------------------------------------------------------------- */
3328
BEGIN
3329
   temp_num := TO_NUMBER(p_val);
3330
   RETURN true;
3331
EXCEPTION WHEN VALUE_ERROR THEN
3332
   RETURN false;
3333
END IS_NUMBER;
4040 dpurdie 3334
 
3959 dpurdie 3335
/
1373 dpurdie 3336
 
4040 dpurdie 3337
/
3338
--------------------------------------------------------
3339
--  DDL for Function IS_VERSION_EXTENSION
3340
--------------------------------------------------------
3341
 
3959 dpurdie 3342
  CREATE OR REPLACE FUNCTION "IS_VERSION_EXTENSION" (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
3343
IS
3344
/* ---------------------------------------------------------------------------
3345
    Version: 3.0.0
3346
   --------------------------------------------------------------------------- */
1373 dpurdie 3347
 
3959 dpurdie 3348
BEGIN
3349
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
3350
    THEN
3351
        RETURN FALSE;
3352
    ELSE
3353
        RETURN TRUE;
3354
    END IF;
1373 dpurdie 3355
 
3959 dpurdie 3356
END IS_VERSION_EXTENSION;
4040 dpurdie 3357
 
1374 dpurdie 3358
/
1373 dpurdie 3359
 
4040 dpurdie 3360
/
3361
--------------------------------------------------------
3362
--  DDL for Function ORA_SYSDATE
3363
--------------------------------------------------------
3364
 
3959 dpurdie 3365
  CREATE OR REPLACE FUNCTION "ORA_SYSDATE" 
3366
RETURN DATE
1373 dpurdie 3367
IS
3959 dpurdie 3368
/* ---------------------------------------------------------------------------
3369
    Version: 3.0.0
3370
   --------------------------------------------------------------------------- */
3371
BEGIN
1373 dpurdie 3372
 
3959 dpurdie 3373
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
3374
END ORA_SYSDATE;
4040 dpurdie 3375
 
3959 dpurdie 3376
/
1373 dpurdie 3377
 
4040 dpurdie 3378
/
3379
--------------------------------------------------------
3380
--  DDL for Function ORA_SYSDATETIME
3381
--------------------------------------------------------
3382
 
3959 dpurdie 3383
  CREATE OR REPLACE FUNCTION "ORA_SYSDATETIME" 
3384
RETURN DATE
3385
IS
3386
/* ---------------------------------------------------------------------------
3387
    Version: 3.0.0
3388
   --------------------------------------------------------------------------- */
3389
BEGIN
1373 dpurdie 3390
 
3959 dpurdie 3391
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
3392
END ORA_SYSDATETIME;
4040 dpurdie 3393
 
3959 dpurdie 3394
/
1373 dpurdie 3395
 
4040 dpurdie 3396
/
3397
--------------------------------------------------------
3398
--  DDL for Function PERL_DBD_TESTFUNC
3399
--------------------------------------------------------
3400
 
3959 dpurdie 3401
  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;
4040 dpurdie 3402
 
1374 dpurdie 3403
/
1373 dpurdie 3404
 
4040 dpurdie 3405
/
3406
--------------------------------------------------------
3407
--  DDL for Function RELEASE_MODE
3408
--------------------------------------------------------
3409
 
3959 dpurdie 3410
  CREATE OR REPLACE FUNCTION "RELEASE_MODE" ( nRtagId IN NUMBER ) RETURN CHAR IS
1373 dpurdie 3411
 
3959 dpurdie 3412
/* ---------------------------------------------------------------------------
3413
    Version: 3.0.0
3414
   --------------------------------------------------------------------------- */
1373 dpurdie 3415
 
3959 dpurdie 3416
   returnValue CHAR(1);
1373 dpurdie 3417
 
3959 dpurdie 3418
BEGIN
1373 dpurdie 3419
 
3959 dpurdie 3420
    /*--------------- Business Rules Here -------------------*/
3421
	/*-------------------------------------------------------*/
3422
 
3423
	-- Get release mode
3424
	SELECT rt.OFFICIAL INTO returnValue
3425
	  FROM RELEASE_TAGS rt
3426
	 WHERE rt.RTAG_ID = nRtagId;
3427
 
3428
	RETURN returnValue;
3429
 
3430
END RELEASE_MODE;
4040 dpurdie 3431
 
1374 dpurdie 3432
/
1373 dpurdie 3433
 
4040 dpurdie 3434
/
3435
--------------------------------------------------------
3436
--  DDL for Package PK_APP_UTILS
3437
--------------------------------------------------------
3438
 
1373 dpurdie 3439
  CREATE OR REPLACE PACKAGE "PK_APP_UTILS" IS
3440
/*
3441
------------------------------
3442
||  Last Modified:  S.Vukovic
3443
||  Modified Date:  26/Apr/2005
3444
||  Spec Version:   1.0
3445
------------------------------
3446
*/
3447
 
3448
	TYPE typeCur IS REF CURSOR;
3449
 
3450
    /*================================================================================================*/
3451
 
3452
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
3453
 
3454
	/*================================================================================================*/
3455
 
3456
END PK_APP_UTILS;
4040 dpurdie 3457
 
1374 dpurdie 3458
/
1373 dpurdie 3459
 
4040 dpurdie 3460
/
3461
--------------------------------------------------------
3462
--  DDL for Package PK_ARCHIVE
3463
--------------------------------------------------------
3464
 
3959 dpurdie 3465
  CREATE OR REPLACE PACKAGE "PK_ARCHIVE" 
1373 dpurdie 3466
IS
3959 dpurdie 3467
/*
3468
------------------------------
3469
||  Author:  Rupesh Solanki
3470
||  Date:    26 October 2006
3471
||  Version:   1.0
3472
------------------------------
3473
*/
1373 dpurdie 3474
 
3959 dpurdie 3475
   /*================================================================================================*/
3476
   PROCEDURE populate_packages_table;
3477
 
3478
   PROCEDURE populate_archive_data_table (
3479
      nrtagid   IN   release_tags.rtag_id%TYPE
3480
   );
1373 dpurdie 3481
 
3959 dpurdie 3482
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
1373 dpurdie 3483
 
3959 dpurdie 3484
   PROCEDURE migrate_rtag_to_archive_schema (
3485
      nrtagid   IN   release_tags.rtag_id%TYPE
3486
   );
1373 dpurdie 3487
 
3959 dpurdie 3488
   PROCEDURE clean_up_archive_data_table (
3489
      nrtagid   IN   release_tags.rtag_id%TYPE
3490
   );
1373 dpurdie 3491
 
3959 dpurdie 3492
   PROCEDURE write_action_log (
3493
      nuserid   IN   NUMBER,
3494
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 3495
   );
3496
/*================================================================================================*/
3959 dpurdie 3497
END pk_archive;
4040 dpurdie 3498
 
1374 dpurdie 3499
/
1373 dpurdie 3500
 
4040 dpurdie 3501
/
3502
--------------------------------------------------------
3503
--  DDL for Package PK_BUILDAPI
3504
--------------------------------------------------------
3505
 
1373 dpurdie 3506
  CREATE OR REPLACE PACKAGE "PK_BUILDAPI" 
3507
IS
3508
   /*================================================================================================*/
3509
   PROCEDURE add_product_component (
3510
      npvid           IN   NUMBER,
3511
      sosname         IN   VARCHAR2,
3512
      sorigfilepath   IN   VARCHAR2,
3513
      sfilename       IN   VARCHAR2,
3514
      sdestfilepath   IN   VARCHAR2,
3515
      nbytesize       IN   NUMBER,
3516
      scrccksum       IN   VARCHAR2
3517
   );
3518
 
3519
   PROCEDURE remove_all_product_components (
3520
      npvid     IN   NUMBER,
3521
      sosname   IN   VARCHAR2
3522
   );
3523
 
3524
   /*================================================================================================*/
3525
   FUNCTION get_osid (sosname IN VARCHAR2)
3526
      RETURN NUMBER;
3527
 
4308 dpurdie 3528
  /*================================================================================================*/
3529
    PROCEDURE update_build_service_info (
1373 dpurdie 3530
      sdatabaseserver   IN   VARCHAR2,
3531
      sarchiveserver    IN   VARCHAR2,
3532
      smailserver       IN   VARCHAR2,
3533
      smailsender       IN   VARCHAR2,
4211 dpurdie 3534
      faultmlist        IN   VARCHAR2,
1373 dpurdie 3535
      sdiskspace        IN   VARCHAR2,
3536
      ssbommanagement   IN   VARCHAR2
3537
   );
3538
 
3539
   /*================================================================================================*/
4040 dpurdie 3540
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2, sgbeclass IN NUMBER);
1373 dpurdie 3541
 
3542
   /*================================================================================================*/
3543
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
3544
 
3545
   /*================================================================================================*/
4040 dpurdie 3546
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2, sgbeclass IN NUMBER);
1373 dpurdie 3547
 
4040 dpurdie 3548
  /*================================================================================================*/
3549
   PROCEDURE add_buildmachine (sbmvalue IN VARCHAR2);
3550
 
1373 dpurdie 3551
   /*================================================================================================*/
4040 dpurdie 3552
   PROCEDURE remove_buildmachine (nbm_id IN NUMBER);
3553
 
3554
   /*================================================================================================*/
3555
   PROCEDURE update_buildmachine (nbm_id IN NUMBER, sbmvalue IN VARCHAR2);
3556
 
3557
   /*================================================================================================*/
1373 dpurdie 3558
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
4308 dpurdie 3559
 
1373 dpurdie 3560
   /*================================================================================================*/
4308 dpurdie 3561
   PROCEDURE remove_daemon (srconidlist IN VARCHAR2);
1373 dpurdie 3562
 
3563
   /*================================================================================================*/
3564
   PROCEDURE insert_schedule_info (
3565
      dschedulepause     IN   DATE,
3566
      dscheduleresume    IN   DATE,
3567
      crepeat            IN   VARCHAR2,
3568
      cindefinitepause   IN   VARCHAR2
3569
   );
3570
 
3571
   /*================================================================================================*/
3572
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
3573
 
3574
   /*================================================================================================*/
3575
   PROCEDURE set_infinite_pause;
3576
 
3577
   /*================================================================================================*/
3578
   PROCEDURE set_resume;
3579
 
3580
   /*================================================================================================*/
3581
   PROCEDURE delete_out_of_date_schedule;
3582
 
3583
   /*================================================================================================*/
3584
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
3585
 
3586
   /*================================================================================================*/
3587
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
3588
 
3589
   /*================================================================================================*/
3590
   PROCEDURE set_daemon_disable (nrconid NUMBER);
3591
 
3592
   /*================================================================================================*/
3593
   PROCEDURE set_daemon_states (nrtagid NUMBER, nstate NUMBER);
3594
 
3595
   /*================================================================================================*/
3596
   PROCEDURE mark_daemon_inst_in_progress( nInstId IN NUMBER );
3597
   /*================================================================================================*/
3598
   PROCEDURE mark_daemon_inst_completed( nInstId IN NUMBER );
3599
   /*================================================================================================*/
3600
   FUNCTION get_daemon_inst(
3601
      nRtag_id IN NUMBER,
3602
      nInst_id IN OUT NUMBER,
3603
      nOp_code IN OUT NUMBER,
3604
      nPv_id OUT NUMBER,
3605
      nUser_id OUT NUMBER,
3606
      nInProgress OUT NUMBER
3607
   ) RETURN NUMBER;
3608
   /*================================================================================================*/
3609
   PROCEDURE cleanup_stranded_daemon_insts;
3610
   /*================================================================================================*/
3611
   PROCEDURE insert_daemon_inst(
3612
      nOp_code IN NUMBER,
3613
      nRtag_id IN NUMBER,
3614
      nPv_id IN NUMBER,
3615
      nSchedDate IN DATE,
3616
      nRepeatSecs IN NUMBER,
3617
      nAddedDate IN DATE,
3618
      nUser_id IN NUMBER
3619
   );
3620
   /*================================================================================================*/
3621
   PROCEDURE del_daemon_inst( nInstId IN NUMBER );
3622
   /*================================================================================================*/
3623
   PROCEDURE del_daemon_inst_by_rtag_pvid(
3624
      nOp_code IN NUMBER,
3625
      nRtag_id IN NUMBER,
3626
      nPv_id IN NUMBER
3627
   );
3628
   /*================================================================================================*/
3629
   PROCEDURE update_daemon_inst(
3630
      nInstId IN NUMBER,
3631
      nOp_code IN NUMBER,
3632
      nRtag_id IN NUMBER,
3633
      nPv_id IN NUMBER,
3634
      nSchedDate IN DATE,
3635
      nRepeatSecs IN NUMBER,
3636
      nAddedDate IN DATE,
3637
      nUser_id IN NUMBER
3638
   );
3639
   /*================================================================================================*/
3640
   FUNCTION daemon_ops_for_rtag_pvid(
3641
      nRtag_id IN NUMBER,
3642
      nPv_id IN NUMBER
3643
   ) RETURN VARCHAR2;
3644
   /*================================================================================================*/
3645
   FUNCTION daemon_ops_for_rtag(
3646
      nRtag_id IN NUMBER
3647
   ) RETURN VARCHAR2;
3648
   /*================================================================================================*/
3649
   PROCEDURE add_daemon_config (
3650
      nrtagid           IN   NUMBER,
3651
      nbmcon_id         IN   NUMBER,
3652
      sdaemon_mode      IN   VARCHAR2,
3653
      sgbebuildfilter   IN   VARCHAR2
3654
   );
3655
   /*================================================================================================*/
3656
   PROCEDURE update_daemon_config (
3657
      nrconid           IN   NUMBER,
3658
      nbmcon_id         IN   NUMBER,
3659
      sdaemon_mode      IN   VARCHAR2,
3660
      sgbebuildfilter   IN   VARCHAR2
3661
   );
3662
 
4308 dpurdie 3663
 /*================================================================================================*/
3664
   PROCEDURE duplicate_daemon_config (
3665
      nrtagid           IN   NUMBER,
3666
      nbmcon_id         IN   NUMBER,
3667
      sdaemonhostname   IN   VARCHAR2,
3668
      ngbe_id           IN   NUMBER,
3669
      sdaemon_mode      IN   VARCHAR2,
3670
      sgbebuildfilter   IN   VARCHAR2
3671
   );
3672
 
1373 dpurdie 3673
   /*================================================================================================*/
3674
   PROCEDURE add_build_machine (
3675
      sdisplay_name          IN   VARCHAR2,
3676
      smachine_hostname      IN   VARCHAR2,
3677
      ngbeid                 IN   NUMBER,
3678
      sdescription           IN   VARCHAR2
3679
   );
3680
   /*================================================================================================*/
3681
   PROCEDURE delete_build_machine (sbmcon_id_list IN VARCHAR2);
3682
   /*================================================================================================*/
3683
   PROCEDURE update_build_machine (
3684
      nbmcon_id              IN   NUMBER,
3685
      sdisplay_name          IN   VARCHAR2,
3686
      smachine_hostname      IN   VARCHAR2,
3687
      ngbeid                 IN   NUMBER,
3688
      sdescription           IN   VARCHAR2
3689
   );
4553 dpurdie 3690
   /*================================================================================================*/
3691
   PROCEDURE import_daemons ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  );
1373 dpurdie 3692
END pk_buildapi;
4040 dpurdie 3693
 
1374 dpurdie 3694
/
1373 dpurdie 3695
 
4040 dpurdie 3696
/
3697
--------------------------------------------------------
3698
--  DDL for Package PK_ENVIRONMENT
3699
--------------------------------------------------------
3700
 
3959 dpurdie 3701
  CREATE OR REPLACE PACKAGE "PK_ENVIRONMENT" IS
1373 dpurdie 3702
/*
3703
------------------------------
3959 dpurdie 3704
||  Last Modified:  G.Huddy
3705
||  Modified Date:  28/May/2008
3706
||  Spec Version:   1.2
1373 dpurdie 3707
------------------------------
3708
*/
3709
 
3959 dpurdie 3710
	TYPE typeCur IS REF CURSOR;
3711
 
1373 dpurdie 3712
	/*================================================================================================*/
3713
 
3959 dpurdie 3714
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
3715
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3716
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3717
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3718
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3719
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3720
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
3721
 
3722
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3723
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3724
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3725
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3726
 
3727
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
3728
 
3729
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3730
 
3731
 
3732
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3733
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3734
 
3735
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3736
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3737
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3738
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3739
 
3740
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3741
 
3742
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
3743
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
3744
 
3745
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
3746
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
3747
							 CloneFromPvId IN NUMBER );
3748
 
3749
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3750
 
3751
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3752
 
3753
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3754
 
3755
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3756
 
3757
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
1373 dpurdie 3758
	/*================================================================================================*/
3959 dpurdie 3759
 
3760
END PK_ENVIRONMENT;
4040 dpurdie 3761
 
1374 dpurdie 3762
/
1373 dpurdie 3763
 
4040 dpurdie 3764
/
3765
--------------------------------------------------------
3766
--  DDL for Package PK_LICENCING
3767
--------------------------------------------------------
3768
 
3959 dpurdie 3769
  CREATE OR REPLACE PACKAGE "PK_LICENCING" IS
3770
/*
3771
------------------------------
3772
||  Last Modified:  G.Huddy
3773
||  Modified Date:  19/Aug/2008
3774
||  Spec Version:   1.0
3775
------------------------------
3776
*/
3777
 
3778
   TYPE typeCur IS REF CURSOR;
3779
 
3780
    /*================================================================================================*/
3781
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
3782
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
3783
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER );
3784
   FUNCTION  IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER;
3785
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER );
3786
   /*================================================================================================*/
3787
 
3788
END PK_LICENCING;
4040 dpurdie 3789
 
3959 dpurdie 3790
/
3791
 
4040 dpurdie 3792
/
3793
--------------------------------------------------------
3794
--  DDL for Package PK_PACKAGE
3795
--------------------------------------------------------
3796
 
3959 dpurdie 3797
  CREATE OR REPLACE PACKAGE "PK_PACKAGE" 
1373 dpurdie 3798
IS
3799
/*
3800
------------------------------
3959 dpurdie 3801
||  Last Modified:  Jeremy Tweddle
3802
||  Modified Date:  24/08/2007
1373 dpurdie 3803
||
3804
------------------------------
3805
*/
3806
   TYPE typecur IS REF CURSOR;
3807
 
3808
/*================================================================================================*/
3809
   PROCEDURE new_version (
3810
      nlastpvid                   IN       NUMBER,
3811
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
3812
      cbuildtype                  IN       CHAR,
4211 dpurdie 3813
      cchangetype                 IN       CHAR,
1373 dpurdie 3814
      nsettopvid                  IN       NUMBER DEFAULT NULL,
3815
      nrtagid                     IN       NUMBER,
3816
      nuserid                     IN       NUMBER,
3817
      enumissues_state_imported   IN       NUMBER,
3818
      returnpvid                  OUT      NUMBER
3819
   );
3820
 
3821
   PROCEDURE change_state (
3822
      pvid       IN   NUMBER,
3823
      newstate   IN   package_versions.dlocked%TYPE,
3824
      userid     IN   NUMBER
3825
   );
3826
 
3827
   PROCEDURE new_patch (
3828
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
3829
      nparentpvid        IN       NUMBER,
3830
      spatchidlist       IN       VARCHAR2,
3831
      nuserid            IN       NUMBER,
3832
      returnpatchid      OUT      NUMBER
3833
   );
3834
 
3835
   PROCEDURE obsolete_patch (
3836
      patchid            IN   NUMBER,
3837
      isobsolete         IN   CHAR,
3838
      obsoletecomments   IN   VARCHAR2,
3839
      userid             IN   NUMBER
3840
   );
3841
 
3842
   PROCEDURE obsolete_patches (
3843
      spatchidlist       IN   VARCHAR2,
3844
      isobsolete         IN   CHAR,
3845
      obsoletecomments   IN   VARCHAR2,
3846
      userid             IN   NUMBER
3847
   );
3848
 
3849
   PROCEDURE destroy_package (
3850
      pvid               IN       NUMBER,
3851
      overridewarnings   IN       CHAR DEFAULT 'N',
3852
      problemstring      OUT      VARCHAR2
3853
   );
3854
 
3855
   PROCEDURE add_process (
3856
      nprocid         IN   processes.proc_id%TYPE,
3857
      shealthtag      IN   processes.proc_name%TYPE,
3858
      sprocdesc       IN   processes.proc_description%TYPE,
3859
      scmdinterface   IN   processes.run_as%TYPE,
3860
      spkgowner       IN   processes.pkg_owner%TYPE,
3861
      sisinterface    IN   processes.is_interface%TYPE,
3862
      npvid           IN   package_processes.pv_id%TYPE,
3863
      nuserid         IN   NUMBER
3864
   );
3865
 
3866
   PROCEDURE add_package_process (
3867
      nprocidlist   IN   VARCHAR2,
3868
      npvid         IN   package_processes.pv_id%TYPE,
3869
      nuserid       IN   NUMBER
3870
   );
3871
 
3872
 
3873
 
3874
   PROCEDURE remove_process (
3875
      nprocid   IN   package_processes.proc_id%TYPE,
3876
      npvid     IN   package_processes.pv_id%TYPE,
3877
      nuserid   IN   NUMBER
3878
   );
3879
 
3880
   PROCEDURE move_package (
3881
   	  npvid  			  IN package_versions.pv_id%TYPE,
3882
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
3883
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
3884
	  nuserid			  IN NUMBER		 
3885
   ); 
3886
 
3959 dpurdie 3887
   PROCEDURE modify_product_state (
1373 dpurdie 3888
   	  npvid IN package_versions.pv_id%TYPE,
3959 dpurdie 3889
	  nrtagid IN release_tags.rtag_id%TYPE,
1373 dpurdie 3890
	  nstateid IN product_states.state_id%TYPE,
3891
	  nuserid IN NUMBER
3892
   );
3959 dpurdie 3893
 
3894
   PROCEDURE add_code_review_url (
3895
        npvid           IN    NUMBER,
3896
        nprojid         IN    NUMBER,
3897
        surl            IN    VARCHAR2,
3898
        sreason         IN    VARCHAR2,
4553 dpurdie 3899
        ddateofreview   IN    VARCHAR2
3959 dpurdie 3900
   );
3901
 
3902
   PROCEDURE update_code_review_url (
3903
        ncrid           IN    NUMBER,
3904
        nprojid         IN    NUMBER,
3905
        surl            IN    VARCHAR2,
4553 dpurdie 3906
        sreason         IN    VARCHAR2,
3907
        ddateofreview   IN    VARCHAR2
3959 dpurdie 3908
   );
3909
 
3910
   PROCEDURE remove_code_review_url (
3911
        ncrid           IN    NUMBER
3912
   );
1373 dpurdie 3913
/*================================================================================================*/
3959 dpurdie 3914
END pk_package;
4040 dpurdie 3915
 
1374 dpurdie 3916
/
1373 dpurdie 3917
 
4040 dpurdie 3918
/
3919
--------------------------------------------------------
3920
--  DDL for Package PK_PLANNED
3921
--------------------------------------------------------
3922
 
1373 dpurdie 3923
  CREATE OR REPLACE PACKAGE "PK_PLANNED" IS
3924
/*
3925
------------------------------
3926
||  Last Modified:  G.Huddy
3927
||  Modified Date:  28/May/2008
3928
||  Spec Version:   1.1
3929
------------------------------
3930
*/
3931
 
3932
	TYPE typeCur IS REF CURSOR;
3933
 
3934
    /*================================================================================================*/
3935
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3936
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3937
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3938
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
3939
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3940
	PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR);
3941
	/*================================================================================================*/
3942
 
3943
END PK_PLANNED;
4040 dpurdie 3944
 
1374 dpurdie 3945
/
1373 dpurdie 3946
 
4040 dpurdie 3947
/
3948
--------------------------------------------------------
3949
--  DDL for Package PK_PROJECT
3950
--------------------------------------------------------
3951
 
3959 dpurdie 3952
  CREATE OR REPLACE PACKAGE "PK_PROJECT" IS
1373 dpurdie 3953
 
3959 dpurdie 3954
    TYPE typecur IS REF CURSOR;
1373 dpurdie 3955
 
3959 dpurdie 3956
    /*------------------------------------------------------------------------*/
3957
    PROCEDURE update_base_url (
3958
        nprojid   IN  projects.proj_id%TYPE,
3959
        sbaseurl  IN  VARCHAR2
3960
    );
3961
    /*------------------------------------------------------------------------*/
3962
    PROCEDURE update_project_config (
3963
    nprojid   IN  projects.proj_id%TYPE,
3964
    sbaseurl  IN  VARCHAR2,
3965
    sjirakey  IN  VARCHAR2
3966
    );
3967
    /*------------------------------------------------------------------------*/
1373 dpurdie 3968
 
3959 dpurdie 3969
    END pk_project;
4040 dpurdie 3970
 
1374 dpurdie 3971
/
1373 dpurdie 3972
 
4040 dpurdie 3973
/
3974
--------------------------------------------------------
3975
--  DDL for Package PK_RELEASE
3976
--------------------------------------------------------
3977
 
1373 dpurdie 3978
  CREATE OR REPLACE PACKAGE "PK_RELEASE" IS
3979
/*
3980
------------------------------
3981
||  Last Modified:  S.Vukovic
3982
||  Modified Date:  12/Sep/2005
3983
||  Body Version:   3.0
3984
------------------------------
3985
*/
3986
 
3987
	TYPE typeCur IS REF CURSOR;
3988
 
3989
    /*================================================================================================*/
3990
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
3991
	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 );
3992
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
3993
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
3994
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
3995
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
3996
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
3997
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
3998
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
3999
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4000
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
4001
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4002
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4003
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4004
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
4005
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
4006
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
4007
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
4008
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
4009
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
4010
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
4011
 
4012
	/*================================================================================================*/
4013
 
4014
END PK_RELEASE;
4040 dpurdie 4015
 
1374 dpurdie 4016
/
1373 dpurdie 4017
 
4040 dpurdie 4018
/
4019
--------------------------------------------------------
4020
--  DDL for Package PK_RMAPI
4021
--------------------------------------------------------
4022
 
3959 dpurdie 4023
  CREATE OR REPLACE PACKAGE "PK_RMAPI" 
4024
IS
4025
   TYPE typecur IS REF CURSOR;
1373 dpurdie 4026
 
3959 dpurdie 4027
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
4028
      RETURN typecur;
1373 dpurdie 4029
 
3959 dpurdie 4030
   FUNCTION wip_iteration_package (
4031
      projname        VARCHAR2,
4032
      iterationname   VARCHAR2,
4033
      pkgname         VARCHAR2
4034
   )
4035
      RETURN typecur;
1373 dpurdie 4036
 
3959 dpurdie 4037
   FUNCTION auto_make_vcsrelease (
4038
      rtagid                   IN   NUMBER,
4039
      pkgname                  IN   VARCHAR2,
4040
      vext                     IN   VARCHAR2,
4041
      newpkgversion            IN   VARCHAR2,
4042
      vcstag                   IN   VARCHAR2,
4043
      dependenciesimportlist   IN   VARCHAR2,
4044
      isrippled                IN   NUMBER,
4045
      username                 IN   VARCHAR2
4046
   )
4047
      RETURN NUMBER;
1373 dpurdie 4048
 
4049
 
3959 dpurdie 4050
   PROCEDURE import_dependencies (
4051
      pvid                     IN   NUMBER,
4052
      dependenciesimportlist   IN   VARCHAR2,
4053
      userid                   IN   NUMBER
4054
   );
1373 dpurdie 4055
 
3959 dpurdie 4056
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
4057
      RETURN VARCHAR2;
1373 dpurdie 4058
 
3959 dpurdie 4059
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
4060
      RETURN VARCHAR2;
1373 dpurdie 4061
 
3959 dpurdie 4062
   PROCEDURE update_dash_board (rtagid IN NUMBER);
1373 dpurdie 4063
 
3959 dpurdie 4064
   FUNCTION exclude_from_build (
4065
      pvid          IN   NUMBER,
4066
      spkgversion   IN   VARCHAR2,
4067
      rtagid        IN   NUMBER,
4068
      username      IN   VARCHAR2
4069
   )
4070
      RETURN NUMBER;
1373 dpurdie 4071
 
3959 dpurdie 4072
   FUNCTION exclude_indirect_from_build (
4073
      pvid          IN   NUMBER,
4074
      spkgversion   IN   VARCHAR2,
4075
      rtagid        IN   NUMBER,
4076
      username      IN   VARCHAR2,
4077
      rootpvid      IN   NUMBER,
4078
      rootcause     IN   VARCHAR2,
4079
      rootfile      IN   VARCHAR2
4080
   )
4081
      RETURN NUMBER;
1373 dpurdie 4082
 
3959 dpurdie 4083
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
1373 dpurdie 4084
 
3959 dpurdie 4085
   FUNCTION insert_package_metrics (
4086
      rtagid IN NUMBER,
4087
      pkgname IN VARCHAR2,
4088
      vext IN VARCHAR2,
4089
      metricstring IN VARCHAR2
4090
   )
4091
      RETURN NUMBER;
1373 dpurdie 4092
 
3959 dpurdie 4093
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
1373 dpurdie 4094
 
3959 dpurdie 4095
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2;
4096
 
4097
   PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER);
4098
 
4099
   FUNCTION isSVN( pkgid IN NUMBER ) RETURN NUMBER;
4100
 
4101
   FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) RETURN NUMBER;
4102
 
4103
END pk_rmapi;
4040 dpurdie 4104
 
1374 dpurdie 4105
/
1373 dpurdie 4106
 
4040 dpurdie 4107
/
4108
--------------------------------------------------------
4109
--  DDL for Package PK_WORK_IN_PROGRESS
4110
--------------------------------------------------------
4111
 
3959 dpurdie 4112
  CREATE OR REPLACE PACKAGE "PK_WORK_IN_PROGRESS" IS
1373 dpurdie 4113
/*
4114
------------------------------
4115
||  Last Modified:  S.Vukovic
3959 dpurdie 4116
||  Modified Date:  2/May/2005
4117
||  Spec Version:   1.0
1373 dpurdie 4118
------------------------------
4119
*/
4120
 
4121
	TYPE typeCur IS REF CURSOR;
4122
 
4123
    /*================================================================================================*/
4124
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4125
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3959 dpurdie 4126
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
4127
 
1373 dpurdie 4128
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3959 dpurdie 4129
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
1373 dpurdie 4130
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
4131
	/*================================================================================================*/
3959 dpurdie 4132
 
4133
END PK_WORK_IN_PROGRESS;
4040 dpurdie 4134
 
1374 dpurdie 4135
/
1373 dpurdie 4136
 
4040 dpurdie 4137
/
4138
--------------------------------------------------------
4139
--  DDL for Package RM_ISSUES
4140
--------------------------------------------------------
4141
 
3959 dpurdie 4142
  CREATE OR REPLACE PACKAGE "RM_ISSUES" AS
1373 dpurdie 4143
 
3959 dpurdie 4144
	TYPE T_Cur IS REF CURSOR;
1373 dpurdie 4145
 
3959 dpurdie 4146
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
4147
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
4148
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
4149
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
1373 dpurdie 4150
 
3959 dpurdie 4151
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
4152
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
4153
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
1373 dpurdie 4154
 
3959 dpurdie 4155
END Rm_Issues;
4040 dpurdie 4156
 
3959 dpurdie 4157
/
1373 dpurdie 4158
 
4040 dpurdie 4159
/
4160
--------------------------------------------------------
4161
--  DDL for Package Body PK_APP_UTILS
4162
--------------------------------------------------------
4163
 
3959 dpurdie 4164
  CREATE OR REPLACE PACKAGE BODY "PK_APP_UTILS" IS
1373 dpurdie 4165
 
3959 dpurdie 4166
/*
4167
------------------------------
4168
||  Last Modified:  S.Vukovic
4169
||  Modified Date:  26/Apr/2005
4170
||  Body Version:   1.0
4171
------------------------------
4172
*/
1373 dpurdie 4173
 
4174
 
4175
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4176
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
1373 dpurdie 4177
 
4178
 
4179
BEGIN
4180
 
4181
 
3959 dpurdie 4182
	IF (NOT RtagId IS NULL) THEN
4183
		-- Case with RTAG_ID present
4184
		OPEN records FOR
4185
		SELECT rt.PROJ_ID,
4186
			   rt.RTAG_ID AS RTAG_ID
4187
		  FROM RELEASE_TAGS rt
4188
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
1373 dpurdie 4189
 
3959 dpurdie 4190
	ELSIF (NOT ProjId IS NULL) THEN
4191
		-- Case with PROJ_ID present
4192
		OPEN records FOR
4193
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
4194
			   -1 AS RTAG_ID
4195
		  FROM DUAL;
1373 dpurdie 4196
 
3959 dpurdie 4197
	ELSE
4198
		-- Case with none present
4199
		OPEN records FOR
4200
		SELECT -1 AS PROJ_ID,
4201
			   -1 AS RTAG_ID
4202
		  FROM DUAL;
1373 dpurdie 4203
 
3959 dpurdie 4204
	END IF;
1373 dpurdie 4205
 
4206
 
4207
 
4208
 
3959 dpurdie 4209
   	--RETURN records;
1373 dpurdie 4210
 
4211
END;
4212
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4213
END PK_APP_UTILS;
4040 dpurdie 4214
 
1374 dpurdie 4215
/
1373 dpurdie 4216
 
4040 dpurdie 4217
/
4218
--------------------------------------------------------
4219
--  DDL for Package Body PK_ARCHIVE
4220
--------------------------------------------------------
4221
 
3959 dpurdie 4222
  CREATE OR REPLACE PACKAGE BODY "PK_ARCHIVE" 
1373 dpurdie 4223
IS
3959 dpurdie 4224
/*
4225
------------------------------
4226
||  Author:  Rupesh Solanki
4227
||  Date:    26 October 2006
4228
||  Version:   1.0
4229
------------------------------
4230
*/
4231
/*---------------------------*/
4232
PROCEDURE populate_packages_table IS
1373 dpurdie 4233
 
3959 dpurdie 4234
BEGIN
4235
		  INSERT INTO archive_manager.PACKAGES
4236
		  (
4237
		  select * from packages where pkg_id not in 
4238
		  		  (select pkg_id from archive_manager.packages)
4239
		  );
1373 dpurdie 4240
 
3959 dpurdie 4241
          INSERT INTO archive_manager.PROCESSES
4242
          (
4243
          select * from processes where proc_id not in 
4244
            (select proc_id from archive_manager.processes)
4245
          );
4246
 
1373 dpurdie 4247
 
4248
 
3959 dpurdie 4249
END;
1373 dpurdie 4250
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4251
   PROCEDURE populate_archive_data_table (
4252
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4253
   )
4254
   IS
3959 dpurdie 4255
/*
4256
Reason: To populate the archive_data table with information regarding the
4257
         number of package versions that exist in other releases.
4258
*/
4259
      numcount      NUMBER;
4260
      numusedby     NUMBER;
4261
      numruntime    NUMBER;
4262
 
4263
      /* Get all the package versions in the release */
4264
      CURSOR archive_cur
4265
      IS
4266
         SELECT pv_id
4267
           FROM release_content
4268
          WHERE rtag_id = nrtagid;
4269
 
4270
      archive_rec   archive_cur%ROWTYPE;
1373 dpurdie 4271
   BEGIN
3959 dpurdie 4272
/*--------------- Business Rules Here -------------------*/
4273
/*-------------------------------------------------------*/
4274
      OPEN archive_cur;
1373 dpurdie 4275
 
3959 dpurdie 4276
      FETCH archive_cur
4277
       INTO archive_rec;
4278
 
4279
      WHILE archive_cur%FOUND
4280
      LOOP
4281
        /* How many packages depend on this package version? */
4282
         SELECT COUNT (*)
4283
           INTO numusedby
4284
           FROM package_dependencies
4285
          WHERE dpv_id = archive_rec.pv_id;
4286
 
4287
        /* How many project releases use this package version?  */
4288
         SELECT COUNT (*)
4289
           INTO numcount
4290
           FROM release_content
4291
          WHERE pv_id = archive_rec.pv_id;
4292
 
4293
        /* How many packages have this package version as runtime
4294
        dependency? */
4295
         SELECT COUNT (*)
4296
           INTO numruntime
4297
           FROM runtime_dependencies
4298
          WHERE rtd_id = archive_rec.pv_id;
4299
 
4300
        /* Insert into the archive_data table if they are not runtime dependant
4301
        and package dependant and they exist in that particular release only*/
4302
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
1373 dpurdie 4303
         THEN
3959 dpurdie 4304
            INSERT INTO archive_data
4305
                        (rtag_id, pv_id
4306
                        )
4307
                 VALUES (nrtagid, archive_rec.pv_id
4308
                        );
1373 dpurdie 4309
         END IF;
4310
 
3959 dpurdie 4311
         FETCH archive_cur
4312
          INTO archive_rec;
4313
      END LOOP;
1373 dpurdie 4314
   END;
4315
 
4316
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4317
   PROCEDURE migrate_pv_to_archive_schema (
4318
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4319
   )
4320
   IS
4321
   BEGIN
4322
 
3959 dpurdie 4323
      /* MIGRATION - PACKAGE_VERSIONS */
4324
      INSERT INTO archive_manager.package_versions
4325
         SELECT *
4326
           FROM package_versions
4327
          WHERE pv_id IN (SELECT pv_id
4328
                            FROM archive_data);
1373 dpurdie 4329
 
3959 dpurdie 4330
      /* MIGRATION - PACKAGE_BUILD_ENV */
4331
      INSERT INTO archive_manager.package_build_env
4332
         SELECT *
4333
           FROM package_build_env
4334
          WHERE pv_id IN (SELECT pv_id
4335
                            FROM archive_data);
1373 dpurdie 4336
 
3959 dpurdie 4337
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
4338
      DELETE FROM package_build_env
4339
            WHERE pv_id IN (SELECT pv_id
4340
                              FROM archive_data);
1373 dpurdie 4341
 
3959 dpurdie 4342
      /* MIGRATION - PACKAGE_BUILD_INFO */
4343
      INSERT INTO archive_manager.package_build_info
4344
         SELECT *
4345
           FROM package_build_info
4346
          WHERE pv_id IN (SELECT pv_id
4347
                            FROM archive_data);
1373 dpurdie 4348
 
3959 dpurdie 4349
      /* PURGE DATA FROM PACKAGE_BUILD_info */
4350
      DELETE FROM package_build_info
4351
            WHERE pv_id IN (SELECT pv_id
4352
                              FROM archive_data);							  
1373 dpurdie 4353
 
3959 dpurdie 4354
      /* MIGRATION - UNIT_TESTS  */
4355
      INSERT INTO archive_manager.unit_tests
4356
         SELECT *
4357
           FROM unit_tests
4358
          WHERE pv_id IN (SELECT pv_id
4359
                            FROM archive_data);
1373 dpurdie 4360
 
3959 dpurdie 4361
      /* PURGE DATA FROM UNIT_TESTS*/
4362
      DELETE FROM unit_tests
4363
            WHERE pv_id IN (SELECT pv_id
4364
                              FROM archive_data);
1373 dpurdie 4365
 
3959 dpurdie 4366
      /* MIGRATION - PACKAGE_PROCESSES */
4367
      INSERT INTO archive_manager.package_processes
4368
         SELECT *
4369
           FROM package_processes
4370
          WHERE pv_id IN (SELECT pv_id
4371
                            FROM archive_data);
1373 dpurdie 4372
 
3959 dpurdie 4373
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
4374
      DELETE FROM package_processes
4375
            WHERE pv_id IN (SELECT pv_id
4376
                              FROM archive_data);
1373 dpurdie 4377
 
3959 dpurdie 4378
      /* MIGRATION - PACKAGE_DEPENDENCIES */
4379
      INSERT INTO archive_manager.package_dependencies
4380
         SELECT *
4381
           FROM package_dependencies
4382
          WHERE pv_id IN (SELECT pv_id
4383
                            FROM archive_data);
2735 dpurdie 4384
 
3959 dpurdie 4385
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
4386
      DELETE FROM package_dependencies
4387
            WHERE pv_id IN (SELECT pv_id
4388
                              FROM archive_data);
1373 dpurdie 4389
 
3959 dpurdie 4390
      /* MIGRATION - CODE_REVIEWS */
4391
      INSERT INTO archive_manager.code_reviews
4392
         SELECT *
4393
           FROM code_reviews
4394
          WHERE pv_id IN (SELECT pv_id
4395
                            FROM archive_data);
1373 dpurdie 4396
 
3959 dpurdie 4397
      /* PURGE DATA FROM CODE_REVIEWS*/
4398
      DELETE FROM code_reviews
4399
            WHERE pv_id IN (SELECT pv_id
4400
                              FROM archive_data);
1373 dpurdie 4401
 
3959 dpurdie 4402
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
4403
      INSERT INTO archive_manager.runtime_dependencies
4404
         SELECT *
4405
           FROM runtime_dependencies
4406
          WHERE pv_id IN (SELECT pv_id
4407
                            FROM archive_data);
1373 dpurdie 4408
 
3959 dpurdie 4409
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
4410
      DELETE FROM runtime_dependencies
4411
            WHERE pv_id IN (SELECT pv_id
4412
                              FROM archive_data);
1373 dpurdie 4413
 
3959 dpurdie 4414
      /* MIGRATION - PACKAGE_DOCUMENTS */
4415
      INSERT INTO archive_manager.package_documents
4416
         SELECT *
4417
           FROM package_documents
4418
          WHERE pv_id IN (SELECT pv_id
4419
                            FROM archive_data);
1373 dpurdie 4420
 
3959 dpurdie 4421
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
4422
      DELETE FROM package_documents
4423
            WHERE pv_id IN (SELECT pv_id
4424
                              FROM archive_data);
1373 dpurdie 4425
 
3959 dpurdie 4426
      /* MIGRATION - PACKAGE_PATCHES */
4427
      INSERT INTO archive_manager.package_patches
4428
         SELECT *
4429
           FROM package_patches
4430
          WHERE pv_id IN (SELECT pv_id
4431
                            FROM archive_data);
1373 dpurdie 4432
 
3959 dpurdie 4433
      /* PURGE DATA FROM PACKAGE_PATCHES*/
4434
      DELETE FROM package_patches
4435
            WHERE pv_id IN (SELECT pv_id
4436
                              FROM archive_data);
1373 dpurdie 4437
 
3959 dpurdie 4438
      /* MIGRATION - CQ_ISSUES */
4439
      INSERT INTO archive_manager.cq_issues
4440
         SELECT *
4441
           FROM cq_issues
4442
          WHERE pv_id IN (SELECT pv_id
4443
                            FROM archive_data);
1373 dpurdie 4444
 
3959 dpurdie 4445
      /* PURGE DATA FROM CQ_ISSUES*/
4446
      DELETE FROM cq_issues
4447
            WHERE pv_id IN (SELECT pv_id
4448
                              FROM archive_data);
1373 dpurdie 4449
 
3959 dpurdie 4450
      /* MIGRATION - ADDITIONAL_NOTES */
4451
      INSERT INTO archive_manager.additional_notes
4452
         SELECT *
4453
           FROM additional_notes
4454
          WHERE pv_id IN (SELECT pv_id
4455
                            FROM archive_data);
1373 dpurdie 4456
 
3959 dpurdie 4457
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
4458
      DELETE FROM additional_notes
4459
            WHERE pv_id IN (SELECT pv_id
4460
                              FROM archive_data);
1373 dpurdie 4461
 
3959 dpurdie 4462
      /* MIGRATION - RELEASE_COMPONENTS */
4463
      INSERT INTO archive_manager.release_components
4464
         SELECT *
4465
           FROM release_components
4466
          WHERE pv_id IN (SELECT pv_id
4467
                            FROM archive_data);
1373 dpurdie 4468
 
3959 dpurdie 4469
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
4470
      DELETE FROM release_components
4471
            WHERE pv_id IN (SELECT pv_id
4472
                              FROM archive_data);
1373 dpurdie 4473
 
3959 dpurdie 4474
      /* MIGRATION - IGNORE_WARNINGS */
4475
      INSERT INTO archive_manager.ignore_warnings
4476
         SELECT *
4477
           FROM ignore_warnings
4478
          WHERE pv_id IN (SELECT pv_id
4479
                            FROM archive_data);
1374 dpurdie 4480
 
3959 dpurdie 4481
      /* PURGE DATA FROM IGNORE_WARNINGS*/
4482
      DELETE FROM ignore_warnings
4483
            WHERE pv_id IN (SELECT pv_id
4484
                              FROM archive_data);
1373 dpurdie 4485
 
3959 dpurdie 4486
      /* PURGE DATA FROM WORK_IN_PROGRESS */
4487
      DELETE FROM work_in_progress
4488
            WHERE rtag_id = nrtagid;
1374 dpurdie 4489
 
3959 dpurdie 4490
      /* PURGE DATA FROM PLANNED */
4491
      DELETE FROM planned
4492
            WHERE rtag_id = nrtagid;
1373 dpurdie 4493
 
3959 dpurdie 4494
      /* MIGRATION - JIRA_ISSUES */
4495
      INSERT INTO archive_manager.jira_issues
4496
         SELECT *
4497
           FROM jira_issues
4498
          WHERE pv_id IN (SELECT pv_id
4499
                            FROM archive_data);
1373 dpurdie 4500
 
3959 dpurdie 4501
      /* PURGE DATA FROM JIRA_ISSUES*/
4502
      DELETE FROM jira_issues
4503
            WHERE pv_id IN (SELECT pv_id
4504
                              FROM archive_data);
1373 dpurdie 4505
 
3959 dpurdie 4506
      /* MIGRATION - PRODUCT_COMPONENTS */
4507
      INSERT INTO archive_manager.product_components
4508
         SELECT *
4509
           FROM product_components
4510
          WHERE pv_id IN (SELECT pv_id
4511
                            FROM archive_data);
1373 dpurdie 4512
 
3959 dpurdie 4513
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
4514
      DELETE FROM product_components
4515
            WHERE pv_id IN (SELECT pv_id
4516
                              FROM archive_data);
1373 dpurdie 4517
 
3959 dpurdie 4518
      /* MIGRATION - ACTION_LOG */
4519
      INSERT INTO archive_manager.action_log
4520
         SELECT *
4521
           FROM action_log
4522
          WHERE pv_id IN (SELECT pv_id
4523
                            FROM archive_data);
1373 dpurdie 4524
 
3959 dpurdie 4525
      /* PURGE DATA FROM ACTION_LOG*/
4526
      DELETE FROM action_log
4527
            WHERE pv_id IN (SELECT pv_id
4528
                              FROM archive_data);
1373 dpurdie 4529
 
4530
 
4531
   END;
4532
 
4533
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4534
   PROCEDURE migrate_rtag_to_archive_schema (
4535
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4536
   )
4537
   IS
4538
   BEGIN
3959 dpurdie 4539
      /* MIGRATION - DO_NOT_RIPPLE */
4540
      INSERT INTO archive_manager.do_not_ripple
4541
         SELECT *
4542
           FROM do_not_ripple dnp
4543
          WHERE rtag_id = nrtagid;
1373 dpurdie 4544
 
3959 dpurdie 4545
      /* PURGE DATA FROM DO_NOT_RIPPLE */
4546
      DELETE FROM do_not_ripple
4547
            WHERE rtag_id = nrtagid;
4548
 
4549
      /* MIGRATION - ADVISORY_RIPPLES*/
4550
      INSERT INTO archive_manager.advisory_ripples
4551
         SELECT *
4552
           FROM advisory_ripple dnp
4553
          WHERE rtag_id = nrtagid;
1373 dpurdie 4554
 
3959 dpurdie 4555
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
4556
      DELETE FROM advisory_ripple
4557
            WHERE rtag_id = nrtagid;			
1373 dpurdie 4558
 
3959 dpurdie 4559
      /* MIGRATION - RELEASE_CONTENT */
4560
      INSERT INTO archive_manager.release_content
4561
         SELECT *
4562
           FROM release_content
4563
          WHERE rtag_id = nrtagid;
1373 dpurdie 4564
 
3959 dpurdie 4565
      /* PURGE DATA FROM RELEASE_CONTENT*/
4566
      DELETE FROM release_content
4567
            WHERE rtag_id = nrtagid;
1373 dpurdie 4568
 
3959 dpurdie 4569
      /* MIGRATION - NOTIFICATION_HISTORY */
4570
      INSERT INTO archive_manager.notification_history
4571
         SELECT *
4572
           FROM notification_history
4573
          WHERE rtag_id = nrtagid;
1373 dpurdie 4574
 
3959 dpurdie 4575
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
4576
      DELETE FROM notification_history
4577
            WHERE rtag_id = nrtagid;
1373 dpurdie 4578
 
3959 dpurdie 4579
      /* MIGRATION - BUILD_ORDER   */
4580
      INSERT INTO archive_manager.build_order
4581
         SELECT *
4582
           FROM build_order
4583
          WHERE rtag_id = nrtagid;
1373 dpurdie 4584
 
3959 dpurdie 4585
      /* PURGE DATA FROM BUILD_ORDER*/
4586
      DELETE FROM build_order
4587
            WHERE rtag_id = nrtagid;
1373 dpurdie 4588
 
3959 dpurdie 4589
      /* MIGRATION - PROJECT_ACTION_LOG */
4590
      INSERT INTO archive_manager.project_action_log
4591
         SELECT *
4592
           FROM project_action_log
4593
          WHERE rtag_id = nrtagid;
1373 dpurdie 4594
 
3959 dpurdie 4595
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
4596
      DELETE FROM project_action_log
4597
            WHERE rtag_id = nrtagid;
1373 dpurdie 4598
 
3959 dpurdie 4599
      /* MIGRATION - DEPRECATED_PACKAGES */
4600
      INSERT INTO archive_manager.deprecated_packages
4601
         SELECT *
4602
           FROM deprecated_packages
4603
          WHERE rtag_id = nrtagid;
1373 dpurdie 4604
 
3959 dpurdie 4605
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
4606
      DELETE FROM deprecated_packages
4607
            WHERE rtag_id = nrtagid;
4608
 
4609
      /* MIGRATION - RELEASE_TAGS */
4610
      INSERT INTO archive_manager.release_tags
4611
         SELECT *
1373 dpurdie 4612
           FROM release_tags
3959 dpurdie 4613
          WHERE rtag_id = nrtagid;
4614
 
4615
 
4616
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
4617
      DELETE FROM package_versions
4618
            WHERE pv_id IN (SELECT pv_id
4619
                              FROM archive_data);
4620
 
4621
 
1373 dpurdie 4622
   END;
4623
 
4624
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4625
   PROCEDURE clean_up_archive_data_table (
4626
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4627
   )
4628
   IS
4629
   BEGIN
3959 dpurdie 4630
      /* Cleaning Up The Archive_Data Table */
4631
      DELETE FROM archive_data
4632
            WHERE rtag_id = nrtagid;
1373 dpurdie 4633
   END;
4634
 
4635
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4636
   PROCEDURE write_action_log (
4637
      nuserid   IN   NUMBER,
4638
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4639
   )
4640
   IS
4641
   BEGIN
3959 dpurdie 4642
      /* Write Into Archive_Action_Log Table */
4643
      INSERT INTO archive_action_log
4644
                  (user_id, date_time_stamp, rtag_id,
4645
                   description
1373 dpurdie 4646
                  )
3959 dpurdie 4647
           VALUES (nuserid, ora_sysdatetime, nrtagid,
4648
                   'Release has been archived to the ARCHIVE_MANAGER schema'
1373 dpurdie 4649
                  );
4650
   END;
4651
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4652
END pk_archive; 
4040 dpurdie 4653
 
1374 dpurdie 4654
/
1373 dpurdie 4655
 
4040 dpurdie 4656
/
4657
--------------------------------------------------------
4658
--  DDL for Package Body PK_BUILDAPI
4659
--------------------------------------------------------
4660
 
1373 dpurdie 4661
  CREATE OR REPLACE PACKAGE BODY "PK_BUILDAPI" 
4662
IS
4663
   /*-------------------------------------------------------------------------------------------------------*/
4664
   PROCEDURE add_product_component (
4665
      npvid           IN   NUMBER,
4666
      sosname         IN   VARCHAR2,
4667
      sorigfilepath   IN   VARCHAR2,
4668
      sfilename       IN   VARCHAR2,
4669
      sdestfilepath   IN   VARCHAR2,
4670
      nbytesize       IN   NUMBER,
4671
      scrccksum       IN   VARCHAR2
4672
   )
4673
   IS
4674
      nosid   NUMBER;
4675
   BEGIN
4676
      /*--------------- Business Rules Here -------------------*/
4677
      -- OS Name Requirements --
4678
      IF (sosname IS NULL)
4679
      THEN
4680
         raise_application_error (-20000, 'OsName cannot be NULL.');
4681
      END IF;
4682
 
4683
      -- File Requirements --
4684
      IF (NOT sfilename IS NULL)
4685
      THEN
4686
         IF (nbytesize IS NULL)
4687
         THEN
4688
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
4689
         ELSIF (scrccksum IS NULL)
4690
         THEN
4691
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
4692
         END IF;
4693
      END IF;
4694
 
4695
      -- Folder Requirements --
4696
      -- No requirements for now.
4697
 
4698
      /*-------------------------------------------------------*/
4699
 
4700
      -- Get OsId
4701
      nosid := get_osid (sosname);
4702
 
4703
      -- Insert component entry
4704
      INSERT INTO product_components
4705
                  (pv_id, os_id, file_path, file_name, destination_path,
4706
                  byte_size, crc_cksum
4707
                  )
4708
         VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
4709
                  nbytesize, scrccksum
4710
                  );
4711
   EXCEPTION
4712
      WHEN DUP_VAL_ON_INDEX
4713
      THEN
4714
         raise_application_error (-20000,
4715
                                 'Cannot have duplicate product components.'
4716
                                 );
4717
   END;
4718
 
4719
/*-------------------------------------------------------------------------------------------------------*/
4720
   PROCEDURE remove_all_product_components (
4721
      npvid     IN   NUMBER,
4722
      sosname   IN   VARCHAR2
4723
   )
4724
   IS
4725
      nosid   NUMBER;
4726
   BEGIN
4727
/*--------------- Business Rules Here -------------------*/
4728
/*-------------------------------------------------------*/
4729
 
4730
      -- Get OsId
4731
      nosid := get_osid (sosname);
4732
 
4733
      -- Delete component entry
4734
      DELETE FROM product_components pc
4735
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
4736
   END;
4737
 
4738
/*-------------------------------------------------------------------------------------------------------*/
4739
   FUNCTION get_osid (sosname IN VARCHAR2)
4740
      RETURN NUMBER
4741
   IS
4742
      code   NUMBER;
4743
   BEGIN
4744
      -- Get Platform Code --
4745
      SELECT pf.code
4746
      INTO code
4747
      FROM platforms pf
4748
      WHERE UPPER (pf.NAME) = UPPER (sosname);
4749
 
4750
      RETURN code;
4751
   EXCEPTION
4752
      WHEN NO_DATA_FOUND
4753
      THEN
4754
         raise_application_error
4755
            (-20000,
4756
               'Platform '
4757
            || sosname
4758
            || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
4759
            );
4760
         RAISE;
4761
   END;
4762
 
4763
/*-------------------------------------------------------------------------------------------------------*/
4308 dpurdie 4764
 PROCEDURE update_build_service_info (
1373 dpurdie 4765
      sdatabaseserver   IN   VARCHAR2,
4766
      sarchiveserver    IN   VARCHAR2,
4767
      smailserver       IN   VARCHAR2,
4768
      smailsender       IN   VARCHAR2,
4211 dpurdie 4769
      faultmlist        IN   VARCHAR2,
1373 dpurdie 4770
      sdiskspace        IN   VARCHAR2,
4771
      ssbommanagement   IN   VARCHAR2
4772
   )
4773
   IS
4774
   BEGIN
4775
      UPDATE build_service_config
4776
         SET config = sdatabaseserver
4777
      WHERE service = 'DATABASE SERVER';
4778
 
4779
      UPDATE build_service_config
4780
         SET config = sarchiveserver
4781
      WHERE service = 'ARCHIVE SERVER';
4782
 
4783
      UPDATE build_service_config
4784
         SET config = smailserver
4785
      WHERE service = 'MAIL SERVER';
4786
 
4787
      UPDATE build_service_config
4788
         SET config = smailsender
4789
      WHERE service = 'BUILD FAILURE MAIL SENDER';
4790
 
4791
      UPDATE build_service_config
4211 dpurdie 4792
         SET config = faultmlist
4793
      WHERE service = 'FAULT EMAIL ADDRESS LIST';
4794
 
4795
      UPDATE build_service_config
1373 dpurdie 4796
         SET config = sdiskspace
4797
      WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
4798
 
4799
      UPDATE build_service_config
4800
         SET config = ssbommanagement
4801
      WHERE service = 'SBOM MANAGEMENT';
4802
   END;
4308 dpurdie 4803
 
1373 dpurdie 4804
 
4805
 
4806
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4807
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2, sgbeclass IN NUMBER)
1373 dpurdie 4808
   IS
4809
      gbe_id   NUMBER;
4810
   BEGIN
4811
      -- Get GBE_ID
4812
      SELECT seq_gbe_id.NEXTVAL
4813
      INTO gbe_id
4814
      FROM DUAL;
4815
 
4816
      INSERT INTO gbe_machtype
4040 dpurdie 4817
                  (gbe_id, gbe_value, bm_id )
4818
         VALUES (gbe_id, sgbevalue, sgbeclass );
1373 dpurdie 4819
   END;
4820
 
4821
/*-------------------------------------------------------------------------------------------------------*/
4822
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
4823
   IS
4824
   BEGIN
4825
      DELETE FROM gbe_machtype
4826
            WHERE gbe_id = ngbe_id;
4827
   END;
4828
 
4829
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4830
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2, sgbeclass IN NUMBER)
1373 dpurdie 4831
   IS
4832
   BEGIN
4833
      UPDATE gbe_machtype
4040 dpurdie 4834
         SET gbe_value = sgbevalue,
4835
             bm_id = sgbeclass
1373 dpurdie 4836
      WHERE gbe_id = ngbe_id;
4837
   END;
4838
 
4839
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4840
PROCEDURE add_buildmachine (sbmvalue IN VARCHAR2)
4841
   IS
4842
      bm_id   NUMBER;
4843
   BEGIN
4844
      -- Get BM_ID
4845
      SELECT seq_bm_id.NEXTVAL
4846
      INTO bm_id
4847
      FROM DUAL;
4848
 
4849
      INSERT INTO build_machines
4850
                  (bm_id, bm_name)
4851
         VALUES (bm_id, sbmvalue );
4852
   END;
4853
 
4854
/*-------------------------------------------------------------------------------------------------------*/
4855
   PROCEDURE remove_buildmachine (nbm_id IN NUMBER)
4856
   IS
4857
   BEGIN
4858
      DELETE FROM build_machines
4859
            WHERE bm_id = nbm_id;
4860
   END;
4861
 
4862
/*-------------------------------------------------------------------------------------------------------*/
4863
   PROCEDURE update_buildmachine (nbm_id IN NUMBER, sbmvalue IN VARCHAR2) 
4864
   IS
4865
   BEGIN
4866
      UPDATE build_machines
4867
         SET bm_name = sbmvalue
4868
         WHERE bm_id = nbm_id;
4869
   END;
4870
 
4871
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 4872
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
4873
   IS
4874
   BEGIN
4875
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
4876
      DELETE FROM daemon_action_log
4877
            WHERE rcon_id IN (
4878
                     SELECT *
4879
                     FROM THE
4880
                              (SELECT CAST
4881
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4882
                                          )
4883
                                 FROM DUAL
4884
                              ));
4885
 
4886
      DELETE FROM run_level
4887
            WHERE rcon_id IN (
4888
                     SELECT *
4889
                     FROM THE
4890
                              (SELECT CAST
4891
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4892
                                          )
4893
                                 FROM DUAL
4894
                              ));
4895
 
4896
      DELETE FROM abt_action_log
4897
            WHERE rcon_id IN (
4898
                     SELECT *
4899
                     FROM THE
4900
                              (SELECT CAST
4901
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4902
                                          )
4903
                                 FROM DUAL
4904
                              ));
4905
 
4906
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
4907
      DELETE FROM release_config
4908
            WHERE rcon_id IN (
4909
                     SELECT *
4910
                     FROM THE
4911
                              (SELECT CAST
4912
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4913
                                          )
4914
                                 FROM DUAL
4915
                              ));
4916
   END;
4917
 
4918
/*-------------------------------------------------------------------------------------------------------*/
4308 dpurdie 4919
   PROCEDURE remove_daemon (srconidlist IN VARCHAR2)
1373 dpurdie 4920
   IS
4308 dpurdie 4921
   oRconIdList RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4922
 
1373 dpurdie 4923
   BEGIN
4308 dpurdie 4924
 
4925
   oRconIdList := IN_LIST_NUMBER ( srconidlist );
4926
 
4927
      -- Break the linkage between the release_config and the build_machine_config
4928
 
4929
      -- Delete the linkage between the two tables.
4930
       UPDATE release_config
4931
         SET daemon_hostname = NULL,
4932
             bmcon_id = NULL 
4933
      WHERE rcon_id IN ( SELECT * FROM TABLE ( CAST ( oRconIdList AS RELMGR_NUMBER_TAB_t ) ) );
1373 dpurdie 4934
   END;
4935
 
4936
/*-------------------------------------------------------------------------------------------------------*/
4937
   PROCEDURE insert_schedule_info (
4938
      dschedulepause     IN   DATE,
4939
      dscheduleresume    IN   DATE,
4940
      crepeat            IN   VARCHAR2,
4941
      cindefinitepause   IN   VARCHAR2
4942
   )
4943
   IS
4944
      nscheduledid   NUMBER;
4945
   BEGIN
4946
      -- Get Next Available Scheduled Id
4947
      SELECT seq_scheduled_id.NEXTVAL
4948
      INTO nscheduledid
4949
      FROM DUAL;
4950
 
4951
      INSERT INTO run_level_schedule
4952
         VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
4953
                  cindefinitepause);
4954
   END;
4955
 
4956
/*-------------------------------------------------------------------------------------------------------*/
4957
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
4958
   IS
4959
   BEGIN
4960
      DELETE FROM run_level_schedule
4961
            WHERE scheduled_id = nscheduleid;
4962
   END;
4963
 
4964
/*-------------------------------------------------------------------------------------------------------*/
4965
   PROCEDURE set_infinite_pause
4966
   IS
4967
      nscheduledid   NUMBER;
4968
   BEGIN
4969
      -- Get Next Available Scheduled Id
4970
      SELECT seq_scheduled_id.NEXTVAL
4971
      INTO nscheduledid
4972
      FROM DUAL;
4973
 
4974
      INSERT INTO run_level_schedule
4975
         VALUES (nscheduledid, NULL, NULL, NULL, 'P');
4976
   END;
4977
 
4978
/*-------------------------------------------------------------------------------------------------------*/
4979
   PROCEDURE set_resume
4980
   IS
4981
   BEGIN
4982
      DELETE FROM run_level_schedule
4983
            WHERE indefinite_pause = 'P';
4984
   END;
4985
 
4986
/*-------------------------------------------------------------------------------------------------------*/
4987
   PROCEDURE delete_out_of_date_schedule
4988
   IS
4989
   BEGIN
4990
      DELETE FROM run_level_schedule
4991
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
4992
   END;
4993
 
4994
/*-------------------------------------------------------------------------------------------------------*/
4995
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
4996
   IS
4997
   BEGIN
4998
      UPDATE run_level
4999
         SET PAUSE = NULL
5000
      WHERE rcon_id = nrconid;
5001
   END;
5002
 
5003
/*-------------------------------------------------------------------------------------------------------*/
5004
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
5005
   IS
5006
   BEGIN
5007
      UPDATE run_level
5008
         SET PAUSE = 1
5009
      WHERE rcon_id = nrconid;
5010
   END;
5011
/*-------------------------------------------------------------------------------------------------------*/
5012
   PROCEDURE set_daemon_disable (nrconid NUMBER)
5013
   IS
5014
   BEGIN
5015
      UPDATE run_level
5016
         SET PAUSE = 2
5017
      WHERE rcon_id = nrconid;
5018
   END;
5019
 
5020
/*-------------------------------------------------------------------------------------------------------*/
5021
   PROCEDURE set_daemon_states (nrtagid NUMBER, nstate NUMBER)
5022
   IS
5023
   BEGIN
5024
     UPDATE run_level
5025
     SET pause = nstate
5026
     WHERE rcon_id IN
5027
     (SELECT rc.rcon_id FROM release_config rc WHERE rc.rtag_id = nrtagid);
5028
   END;
5029
 
5030
/*-------------------------------------------------------------------------------------------------------*/
5031
   -- inserts a new daemon instruction
5032
   -- This is for use by the Release Manager Website code.
5033
   --
5034
   PROCEDURE insert_daemon_inst
5035
   ( nOp_code IN NUMBER
5036
   , nRtag_id IN NUMBER
5037
   , nPv_id IN NUMBER
5038
   , nSchedDate IN DATE
5039
   , nRepeatSecs IN NUMBER
5040
   , nAddedDate IN DATE
5041
   , nUser_id IN NUMBER
5042
   ) IS
5043
      nInstId   NUMBER;
5044
   BEGIN
5045
      -- Get Next Available Scheduled Id
5046
      SELECT seq_daemon_instruction_id.NEXTVAL
5047
      INTO nInstId
5048
      FROM DUAL;
5049
 
5050
      INSERT INTO Daemon_Instructions
5051
         VALUES (nInstId, nOp_code, nRtag_id,
5052
                  nPv_id, nSchedDate, nRepeatSecs,
5053
                  nAddedDate, nUser_id, '0');
5054
   EXCEPTION
5055
      WHEN DUP_VAL_ON_INDEX
5056
      THEN
5057
         raise_application_error (-20000,
5058
                                 'Table already contains a record with the specified OPERATION, RELEASE, and PACKAGE VERSION'
5059
                                 );
5060
      WHEN OTHERS
5061
      THEN
5062
         raise;
5063
   END insert_daemon_inst;
5064
 
5065
/*-------------------------------------------------------------------------------------------------------*/
5066
   -- Deletes a daemon instruction matching the specified instruction ID
5067
   --
5068
   PROCEDURE del_daemon_inst
5069
   ( nInstId IN NUMBER
5070
   ) IS
5071
 
5072
   BEGIN
5073
      DELETE FROM Daemon_Instructions
5074
      WHERE DAEMON_INSTRUCTIONS_ID = nInstId;
5075
 
5076
   END del_daemon_inst;
5077
 
5078
/*-------------------------------------------------------------------------------------------------------*/
5079
   -- Deletes a daemon instruction matching the specified op-code, ratag, and pv_id
5080
   --
5081
   PROCEDURE del_daemon_inst_by_rtag_pvid(
5082
      nOp_code IN NUMBER,
5083
      nRtag_id IN NUMBER,
5084
      nPv_id IN NUMBER
5085
   ) IS
5086
   BEGIN
5087
      DELETE FROM Daemon_Instructions
5088
      WHERE OP_CODE = nOp_code
5089
      AND RTAG_ID = nRtag_id
5090
      AND PV_ID   = nPv_id;
5091
 
5092
   END del_daemon_inst_by_rtag_pvid;
5093
 
5094
/*-------------------------------------------------------------------------------------------------------*/
5095
   -- Updates a daemon instruction
5096
   -- This is for use by the Release Manager Website code.
5097
   --
5098
   PROCEDURE update_daemon_inst
5099
   ( nInstId IN NUMBER
5100
   , nOp_code IN NUMBER
5101
   , nRtag_id IN NUMBER
5102
   , nPv_id IN NUMBER
5103
   , nSchedDate IN DATE
5104
   , nRepeatSecs IN NUMBER
5105
   , nAddedDate IN DATE
5106
   , nUser_id IN NUMBER
5107
   ) IS
5108
      CURSOR daemon_inst_cur IS
5109
         SELECT *
5110
         FROM daemon_instructions di
5111
         WHERE di.DAEMON_INSTRUCTIONS_ID = nInstId;
5112
 
5113
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5114
 
5115
      exc_inst_removed EXCEPTION;
5116
   BEGIN
5117
      OPEN daemon_inst_cur;
5118
 
5119
      FETCH daemon_inst_cur
5120
      INTO daemon_inst_rec;
5121
 
5122
      IF daemon_inst_cur%FOUND THEN
5123
 
5124
         UPDATE Daemon_Instructions
5125
         SET op_code = nOp_code,
5126
            rtag_id = nRtag_id,
5127
            pv_id   = nPv_id,
5128
            scheduled_datetime = nSchedDate,
5129
            repeat_secs = nRepeatSecs,
5130
            added_datetime = nAddedDate,
5131
            user_id = nUser_id,
5132
            in_progress = '0'
5133
         WHERE daemon_instructions_id = nInstId;
5134
      ELSE
5135
         raise exc_inst_removed;
5136
      END IF;
5137
 
5138
      CLOSE daemon_inst_cur;
5139
   EXCEPTION
5140
      WHEN DUP_VAL_ON_INDEX
5141
      THEN
5142
         raise_application_error (-20000,
5143
                                 'Table already contains a record with the specified OPERATION, RELEASE, and PACKAGE VERSION'
5144
                                 );
5145
      WHEN exc_inst_removed
5146
      THEN
5147
         raise_application_error (-20000,
5148
                                 'Record was probably deleted by the Buildtool during your edit-form session. Please create a new Daemon Instruction.'
5149
                                 );
5150
      WHEN OTHERS
5151
      THEN
5152
         raise;
5153
   END update_daemon_inst;
5154
 
5155
/*-------------------------------------------------------------------------------------------------------*/
5156
   -- Returns a comma-separated list of operation codes found for a given rtag and pv_id combination
5157
   -- This is for use by the Release Manager Website code.
5158
   --
5159
   FUNCTION daemon_ops_for_rtag_pvid(
5160
      nRtag_id IN NUMBER,
5161
      nPv_id IN NUMBER
5162
   ) RETURN VARCHAR2
5163
   IS
5164
      CURSOR daemon_inst_cur IS
5165
         SELECT di.OP_CODE
5166
         FROM daemon_instructions di
5167
         WHERE di.RTAG_ID = nRtag_id
5168
            AND di.PV_ID = nPv_id;
5169
 
5170
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5171
 
5172
      sRetList VARCHAR2(4000) := '';
5173
 
5174
   BEGIN
5175
      OPEN daemon_inst_cur;
5176
 
5177
      FETCH daemon_inst_cur
5178
      INTO daemon_inst_rec;
5179
 
5180
      WHILE daemon_inst_cur%FOUND
5181
      LOOP
5182
         sRetList := sRetList || daemon_inst_rec.op_code || ',';
5183
 
5184
         FETCH daemon_inst_cur
5185
         INTO daemon_inst_rec;
5186
      END LOOP;
5187
 
5188
      CLOSE daemon_inst_cur;
5189
 
5190
      RETURN sRetList;
5191
   END daemon_ops_for_rtag_pvid;
5192
/*-------------------------------------------------------------------------------------------------------*/
5193
   -- Returns a comma-separated list of operation codes found for a given rtag
5194
   -- This is for use by the Release Manager Website code.
5195
   --
5196
   FUNCTION daemon_ops_for_rtag(
5197
      nRtag_id IN NUMBER
5198
   ) RETURN VARCHAR2
5199
   IS
5200
      CURSOR daemon_inst_cur IS
5201
         SELECT di.OP_CODE
5202
         FROM daemon_instructions di
5203
         WHERE di.RTAG_ID = nRtag_id;
5204
 
5205
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5206
 
5207
      sRetList VARCHAR2(4000) := '';
5208
 
5209
   BEGIN
5210
      OPEN daemon_inst_cur;
5211
 
5212
      FETCH daemon_inst_cur
5213
      INTO daemon_inst_rec;
5214
 
5215
      WHILE daemon_inst_cur%FOUND
5216
      LOOP
5217
         sRetList := sRetList || daemon_inst_rec.op_code || ',';
5218
 
5219
         FETCH daemon_inst_cur
5220
         INTO daemon_inst_rec;
5221
      END LOOP;
5222
 
5223
      CLOSE daemon_inst_cur;
5224
 
5225
      RETURN sRetList;
5226
   END daemon_ops_for_rtag;
5227
/*-------------------------------------------------------------------------------------------------------*/
5228
   -- Gets a record from the daemon instruction table that can be carried out now and returns the fields
5229
   -- in the record a daemon will need
5230
   -- The Buildtool should use this to find a job to do for a particular release. It should then call
5231
   -- mark_daemon_inst_in_progress(inst_id) before carrying out the work, and then call
5232
   -- mark_daemon_inst_completed(inst_id) to signal its completion.
5233
   -- Can be called repeatedly to get a full list of all instructions for a release, by passing back in
5234
   -- the instruction ID obtained from the previous call (the 1st call should use 0)
5235
   -- Can be called repeatedly to get a full list of all instructions of a specific op-code value for a release,
5236
   -- by passing back in an op-code value of 0 or higher (use -1 if no op-code filtering is needed)
5237
   -- Returns 1 if a record was found, else 0.
5238
   --
5239
   FUNCTION get_daemon_inst(
5240
      nRtag_id IN NUMBER,
5241
      nInst_id IN OUT NUMBER,
5242
      nOp_code IN OUT NUMBER,
5243
      nPv_id OUT NUMBER,
5244
      nUser_id OUT NUMBER,
5245
      nInProgress OUT NUMBER
5246
   ) RETURN NUMBER
5247
   IS
5248
      CURSOR daemon_inst_cur IS
5249
         SELECT di.daemon_instructions_id, di.op_code, di.pv_id ,di.user_id, di.in_progress
5250
           FROM daemon_instructions di
5251
          WHERE di.rtag_id = nRtag_id
5252
            AND di.daemon_instructions_id > nInst_id
5253
            AND di.scheduled_datetime <= ora_sysdatetime
5254
            AND ((nOp_code = -1) OR (nOp_code = di.op_code))
5255
            AND rownum <= 1
5256
       ORDER BY di.daemon_instructions_id;
5257
 
5258
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5259
   BEGIN
5260
      OPEN daemon_inst_cur;
5261
 
5262
      FETCH daemon_inst_cur
5263
      INTO daemon_inst_rec;
5264
 
5265
      -- If we found a record, return it.
5266
      IF daemon_inst_cur%FOUND THEN
5267
         nInst_id := daemon_inst_rec.daemon_instructions_id;
5268
         nOp_code := daemon_inst_rec.op_code;
5269
         nPv_id   := daemon_inst_rec.pv_id;
5270
         nUser_id := daemon_inst_rec.user_id;
5271
         IF daemon_inst_rec.in_progress = '1' THEN
5272
            nInProgress := 1;
5273
         ELSE
5274
            nInProgress := 0;
5275
         END IF;
5276
         CLOSE daemon_inst_cur;
5277
         RETURN 1;
5278
      END IF;
5279
 
5280
      CLOSE daemon_inst_cur;
5281
      RETURN 0;
5282
 
5283
   END get_daemon_inst;
5284
/*-------------------------------------------------------------------------------------------------------*/
5285
   -- Marks a daemon instruction as being processed by a daemon
5286
   -- The Buildtool should use this before it embarks on the work the instruction commands
5287
   --
5288
   PROCEDURE mark_daemon_inst_in_progress( nInstId IN NUMBER )
5289
   IS
5290
   BEGIN
5291
      UPDATE Daemon_Instructions
5292
      SET in_progress = '1'
5293
      WHERE daemon_instructions_id = nInstId;
5294
 
5295
   END mark_daemon_inst_in_progress;
5296
 
5297
/*-------------------------------------------------------------------------------------------------------*/
5298
   -- Once the Buildtool has finished carrying out the daemon instruction, it should call this stored
5299
   -- procedure in order to either delete the instruction or update it in the case where it is a repeating
5300
   -- instruction.
5301
   --
5302
   PROCEDURE mark_daemon_inst_completed( nInstId IN NUMBER )
5303
   IS
5304
      repSecs NUMBER;
5305
      schedDate  DATE;
5306
 
5307
      CURSOR daemon_inst_cur IS
5308
         SELECT di.REPEAT_SECS AS repSecs, di.SCHEDULED_DATETIME AS schedDate
5309
         FROM daemon_instructions di
5310
         WHERE di.daemon_instructions_id = nInstId;
5311
 
5312
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5313
   BEGIN
5314
      OPEN daemon_inst_cur;
5315
 
5316
      FETCH daemon_inst_cur
5317
      INTO daemon_inst_rec;
5318
 
5319
      IF daemon_inst_cur%FOUND THEN
5320
 
5321
         -- if instruction repeats daily, add 1 day to the scheduled time and update the record
5322
         IF daemon_inst_rec.repSecs = 86400 THEN
5323
            UPDATE Daemon_Instructions
5324
               SET scheduled_datetime = daemon_inst_rec.schedDate + 1,
5325
                  in_progress = '0'
5326
            WHERE daemon_instructions_id = nInstId;
5327
         ELSE
5328
            -- Delete the daemon instruction, we are done with it
5329
            del_daemon_inst(nInstId);
5330
         END IF;
5331
      END IF;
5332
 
5333
      CLOSE daemon_inst_cur;
5334
 
5335
   EXCEPTION
5336
      WHEN OTHERS
5337
      THEN
5338
         raise;
5339
 
5340
   END mark_daemon_inst_completed;
5341
/*-------------------------------------------------------------------------------------------------------*/
5342
   -- This function deletes any old daemon instruction that appears stranded due to a problem that might
5343
   -- have occured during buildtool operation such as might occur if the buildtool or the machine it was
5344
   -- hosted on came down whilst it was processing a daemon instruction.
5345
   PROCEDURE cleanup_stranded_daemon_insts
5346
   IS
5347
   BEGIN
5348
      -- delete records at least two days old
5349
      DELETE FROM daemon_instructions di
5350
      WHERE  (di.scheduled_datetime + 5) <= ora_sysdatetime;
5351
 
5352
   END cleanup_stranded_daemon_insts;
5353
/*-------------------------------------------------------------------------------------------------------*/
5354
  --This function supersedes function, add_daemon. Done for DEVI-046806
5355
   PROCEDURE add_daemon_config (
5356
      nrtagid           IN   NUMBER,
5357
      nbmcon_id         IN   NUMBER,
5358
      sdaemon_mode      IN   VARCHAR2,
5359
      sgbebuildfilter   IN   VARCHAR2
5360
   )
5361
   IS
5362
      nrecordnumber   NUMBER;
5363
      nrconid         NUMBER;
5364
      sdaemonhostname VARCHAR2(50);
5365
      ngbeid         NUMBER;
5366
   BEGIN
5367
      -- Get RCON_ID
5368
      SELECT seq_rcon_id.NEXTVAL
5369
      INTO nrconid
5370
      FROM DUAL;
5371
 
5372
      SELECT COUNT (*)
5373
      INTO nrecordnumber
5374
      FROM release_config
5375
      WHERE rtag_id = nrtagid;
5376
 
5377
      SELECT machine_hostname,gbe_id INTO sdaemonhostname,ngbeid
5378
      FROM build_machine_config
5379
      WHERE bmcon_id = nbmcon_id;
5380
 
5381
      INSERT INTO release_config
5382
             (rcon_id, rtag_id, daemon_hostname, daemon_mode,
4308 dpurdie 5383
                gbe_id, gbe_buildfilter, bmcon_id)
1373 dpurdie 5384
      VALUES (nrconid, nrtagid, sdaemonhostname, sdaemon_mode,
4308 dpurdie 5385
                ngbeid, sgbebuildfilter, nbmcon_id);
1373 dpurdie 5386
 
5387
      -- A newly configured daemon should initially be paused (DEVI-047277)
5388
      INSERT INTO run_level
5389
                  (rcon_id, pause)
5390
           VALUES (nrconid, 2);
5391
 
5392
   END;
5393
 
5394
/*-------------------------------------------------------------------------------------------------------*/
5395
  --This function supersedes function, update_daemon. Done for DEVI-046806
5396
   PROCEDURE update_daemon_config (
5397
      nrconid           IN   NUMBER,
5398
      nbmcon_id         IN   NUMBER,
5399
      sdaemon_mode      IN   VARCHAR2,
5400
      sgbebuildfilter   IN   VARCHAR2
5401
   )
5402
   IS
5403
      sdaemonhostname VARCHAR2(50);
5404
      ngbeid         NUMBER;
5405
   BEGIN
5406
 
5407
      SELECT machine_hostname,gbe_id INTO sdaemonhostname,ngbeid
5408
      FROM build_machine_config
5409
      WHERE bmcon_id = nbmcon_id;
5410
 
5411
      UPDATE release_config
5412
         SET daemon_hostname = sdaemonhostname,
5413
            gbe_id = ngbeid,
5414
            daemon_mode = sdaemon_mode,
4308 dpurdie 5415
            gbe_buildfilter = sgbebuildfilter,
5416
            bmcon_id = nbmcon_id 
1373 dpurdie 5417
      WHERE rcon_id = nrconid;
5418
   END;
5419
 
5420
 
5421
/*-------------------------------------------------------------------------------------------------------*/
5422
   PROCEDURE add_build_machine (
5423
      sdisplay_name          IN   VARCHAR2,
5424
      smachine_hostname      IN   VARCHAR2,
5425
      ngbeid                 IN   NUMBER,
5426
      sdescription           IN   VARCHAR2
5427
   )
5428
   IS
5429
      nrecordnumber   NUMBER;
5430
      nbmcon_id       NUMBER;
5431
   BEGIN
5432
      -- Get BMCON_ID
5433
      SELECT seq_bmcon_id.NEXTVAL INTO nbmcon_id FROM DUAL;
5434
 
5435
      INSERT INTO build_machine_config(bmcon_id, display_name, machine_hostname,gbe_id,description)
5436
            VALUES (nbmcon_id,sdisplay_name,smachine_hostname,ngbeid,sdescription);
5437
 
5438
   EXCEPTION
5439
      WHEN DUP_VAL_ON_INDEX
5440
      THEN
5441
         raise_application_error (-20000,
5442
                                 'Cannot have duplicate machines.'
5443
                                 );
5444
 
5445
   END;
5446
 
5447
/*-------------------------------------------------------------------------------------------------------*/
4308 dpurdie 5448
 PROCEDURE duplicate_daemon_config (
5449
      nrtagid           IN   NUMBER,
5450
      nbmcon_id         IN   NUMBER,
5451
      sdaemonhostname   IN   VARCHAR2,
5452
      ngbe_id           IN   NUMBER,
5453
      sdaemon_mode      IN   VARCHAR2,
5454
      sgbebuildfilter   IN   VARCHAR2
5455
   )
5456
   IS
5457
      nrecordnumber   NUMBER;
5458
      nrconid         NUMBER;
5459
    BEGIN
5460
 
5461
      -- Get RCON_ID
5462
      SELECT seq_rcon_id.NEXTVAL
5463
      INTO nrconid
5464
      FROM DUAL;
5465
 
5466
      INSERT INTO release_config
5467
             (rcon_id, rtag_id, daemon_hostname, daemon_mode,
5468
                gbe_id, gbe_buildfilter, bmcon_id)
5469
      VALUES (nrconid, nrtagid, sdaemonhostname, sdaemon_mode,
5470
                ngbe_id, sgbebuildfilter, nbmcon_id);
5471
 
5472
    -- A newly configured daemon should initially be disabled (DEVI-047277)
5473
      INSERT INTO run_level
5474
                  (rcon_id, pause)
5475
           VALUES (nrconid, 2);
5476
 
5477
   END;
5478
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 5479
   PROCEDURE delete_build_machine (sbmcon_id_list IN VARCHAR2)
5480
   IS
5481
   BEGIN
5482
      DELETE FROM build_machine_config
5483
            WHERE bmcon_id IN (
5484
                     SELECT * FROM THE
5485
                              (SELECT CAST
5486
                                          (in_list_number (sbmcon_id_list) AS relmgr_number_tab_t
5487
                                          )
5488
                                 FROM DUAL
5489
                              ));
5490
   END;
5491
 
5492
 
5493
/*-------------------------------------------------------------------------------------------------------*/
5494
   PROCEDURE update_build_machine (
5495
      nbmcon_id              IN   NUMBER,
5496
      sdisplay_name          IN   VARCHAR2,
5497
      smachine_hostname      IN   VARCHAR2,
5498
      ngbeid                 IN   NUMBER,
5499
      sdescription           IN   VARCHAR2
5500
   )
5501
   IS
5502
   BEGIN
5503
      UPDATE build_machine_config
5504
         SET display_name = sdisplay_name,
5505
             machine_hostname = smachine_hostname,
5506
             gbe_id = ngbeid,
5507
             description = sdescription
5508
      WHERE bmcon_id = nbmcon_id;
5509
   EXCEPTION
5510
      WHEN DUP_VAL_ON_INDEX
5511
      THEN
5512
         raise_application_error (-20000,
5513
                                 'Cannot have duplicate machines.'
5514
                                 );
5515
   END;
4553 dpurdie 5516
 
5517
/*-------------------------------------------------------------------------------------------------------*/
5518
PROCEDURE import_daemons ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
5519
 
5520
   sSourceLocation VARCHAR2(4000);
5521
   sTargetLocation VARCHAR2(4000);
5522
   ProjId NUMBER;
5523
   cReleaseMode CHAR(1);
5524
   RconId NUMBER;
5525
 
5526
   -- this cursor gets the source release daemon configurations, ensuring that the
5527
   -- first record will be the master daemon, and subsequent records will be the slaves.
5528
   CURSOR curSrcReleaseConfigs IS
5529
    SELECT daemon_hostname, gbe_id, gbe_buildfilter, bmcon_id, daemon_mode
5530
     FROM RELEASE_CONFIG rc
5531
    WHERE rc.RTAG_ID = nSourceRtagId
5532
    ORDER BY rc.daemon_mode;
5533
    recSrcReleaseConfigs curSrcReleaseConfigs%ROWTYPE;
5534
 
5535
    -- this cursor looks for target release daemons
5536
   CURSOR curTgtReleaseConfigs IS
5537
    SELECT rcon_id
5538
     FROM RELEASE_CONFIG rc
5539
    WHERE rc.RTAG_ID = nTargetRtagId;
5540
    recTgtReleaseConfigs curTgtReleaseConfigs%ROWTYPE;
5541
 
5542
    -- this cursor looks for target release daemon run level entries
5543
   CURSOR curTgtReleaseConfigRunLevel IS
5544
    SELECT current_run_level
5545
     FROM RUN_LEVEL rl
5546
    WHERE rl.RCON_ID = recTgtReleaseConfigs.rcon_id;
5547
    recTgtReleaseConfigRunLevel curTgtReleaseConfigRunLevel%ROWTYPE;
5548
 
5549
BEGIN
5550
   /*--------------- Business Rules Here -------------------*/
5551
   IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
5552
   THEN
5553
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
5554
   END IF;
5555
 
5556
   IF (nSourceRtagId = nTargetRtagId) THEN
5557
      RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
5558
   END IF;
5559
 
5560
   -- Check if Target release is in OPEN mode
5561
   SELECT rt.OFFICIAL  INTO  cReleaseMode
5562
     FROM RELEASE_TAGS rt
5563
    WHERE rt.RTAG_ID = nTargetRtagId;
5564
 
5565
   IF (cReleaseMode != 'N') THEN
5566
      RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
5567
   END IF;
5568
 
5569
   -- check that the target release's daemons are all paused before we allow an import operation
5570
   OPEN curTgtReleaseConfigs;
5571
   FETCH curtgtReleaseConfigs INTO recTgtReleaseConfigs;
5572
 
5573
   WHILE curTgtReleaseConfigs%FOUND
5574
   LOOP
5575
      OPEN curTgtReleaseConfigRunLevel;
5576
      FETCH curTgtReleaseConfigRunLevel INTO recTgtReleaseConfigRunLevel;
5577
      IF curTgtReleaseConfigRunLevel%FOUND THEN
5578
         IF (recTgtReleaseConfigRunLevel.current_run_level IS NULL) OR
5579
            (recTgtReleaseConfigRunLevel.current_run_level <> 2) THEN
5580
            RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
5581
         END IF;
5582
      ELSE
5583
         -- we don't know what the daemon run level is so err on the side of caution
5584
         RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
5585
      END IF;
5586
      CLOSE curTgtReleaseConfigRunLevel;
5587
 
5588
      FETCH curTgtReleaseConfigs INTO recTgtReleaseConfigs;
5589
   END LOOP;
5590
 
5591
   CLOSE curTgtReleaseConfigs;
5592
 
5593
 
5594
   /*-------------------------------------------------------*/
5595
 
5596
   --Import Release Configuration Information
5597
   OPEN curSrcReleaseConfigs;
5598
   FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
5599
 
5600
     WHILE curSrcReleaseConfigs%FOUND
5601
   LOOP
5602
      -- add a daemon to the target release
5603
      PK_BUILDAPI.duplicate_daemon_config( nTargetRtagId, 
5604
                                     recSrcReleaseConfigs.bmcon_id, 
5605
                                     recSrcReleaseConfigs.daemon_hostname, 
5606
                                     recSrcReleaseConfigs.gbe_id, 
5607
                                     recSrcReleaseConfigs.daemon_mode ,
5608
                                     recSrcReleaseConfigs.gbe_buildfilter );
5609
 
5610
      FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
5611
   END LOOP;
5612
 
5613
   CLOSE curSrcReleaseConfigs;
5614
 
5615
 
5616
   /* Log Project Action */
5617
   -- Get Source Location
5618
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
5619
     FROM RELEASE_TAGS rt,
5620
           PROJECTS pr
5621
    WHERE rt.PROJ_ID = pr.PROJ_ID
5622
      AND rt.RTAG_ID = nSourceRtagId;
5623
 
5624
   -- Get Target Location
5625
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
5626
     FROM RELEASE_TAGS rt,
5627
           PROJECTS pr
5628
    WHERE rt.PROJ_ID = pr.PROJ_ID
5629
      AND rt.RTAG_ID = nTargetRtagId;
5630
 
5631
   -- Get project id
5632
   SELECT rt.PROJ_ID  INTO  ProjId
5633
     FROM RELEASE_TAGS rt
5634
    WHERE rt.RTAG_ID = nTargetRtagId;
5635
 
5636
   Log_Project_Action ( ProjId, 'import_daemon_configuration', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );
5637
END;
5638
 
1373 dpurdie 5639
END pk_buildapi;
4040 dpurdie 5640
 
1374 dpurdie 5641
/
1373 dpurdie 5642
 
4040 dpurdie 5643
/
5644
--------------------------------------------------------
5645
--  DDL for Package Body PK_ENVIRONMENT
5646
--------------------------------------------------------
5647
 
1373 dpurdie 5648
  CREATE OR REPLACE PACKAGE BODY "PK_ENVIRONMENT" 
5649
IS
5650
 
5651
   /*-------------------------------------------------------------------------------------------------------*/
5652
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
5653
     RETURN NUMBER
5654
   IS
5655
   BEGIN
5656
      /*
5657
     || N - unlocked
5658
     || Y - release and locked
5659
     || P - penging approval
5660
     || A - approved package ready for auto-build
5661
     */
5662
     IF cdlock = 'N' OR cdlock = 'R'
5663
     THEN
5664
       -- WORK IN PROGRESS --
5665
       RETURN 0;
5666
     ELSIF cdlock = 'P' OR cdlock = 'A'
5667
     THEN
5668
       -- PENDING --
5669
       RETURN 1;
5670
     ELSIF cdlock = 'Y'
5671
     THEN
5672
       -- RELEASED --
5673
       RETURN 2;
5674
     ELSE
5675
       -- NOT FOUND --
5676
       raise_application_error
5677
                   (-20000,
5678
                      'Cannot decide where to place package. [cDlock='
5679
                    || cdlock
5680
                    || ']'
5681
                   );
5682
     END IF;
5683
   END;
5684
 
5685
/*-------------------------------------------------------------------------------------------------------*/
5686
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
5687
     RETURN NUMBER
5688
   IS
5689
     envtab   NUMBER         := -1;
5690
 
5691
     CURSOR curarea
5692
     IS
5693
       SELECT 2 AS envtab
5694
         FROM release_content rc
5695
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
5696
       UNION
5697
       SELECT 0 AS envtab
5698
         FROM work_in_progress wip
5699
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
5700
       UNION
5701
       SELECT 1 AS envtab
5702
         FROM planned pl
5703
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
5704
 
5705
     recarea   curarea%ROWTYPE;
5706
   BEGIN
5707
     OPEN curarea;
5708
 
5709
     FETCH curarea
5710
      INTO recarea;
5711
 
5712
     IF curarea%FOUND
5713
     THEN
5714
       envtab := recarea.envtab;
5715
     END IF;
5716
 
5717
     CLOSE curarea;
5718
 
5719
     RETURN envtab;
5720
   END;
5721
 
5722
/*-------------------------------------------------------------------------------------------------------*/
5723
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
5724
     RETURN NUMBER
5725
   IS
5726
     ispatch   package_versions.dlocked%TYPE;
5727
     viewid   NUMBER                    := -1;
5728
 
5729
     CURSOR curview
5730
     IS
5731
       SELECT rc.base_view_id AS view_id
5732
         FROM release_content rc
5733
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
5734
       UNION
5735
       SELECT wip.view_id AS view_id
5736
         FROM work_in_progress wip
5737
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
5738
       UNION
5739
       SELECT pl.view_id AS view_id
5740
         FROM planned pl
5741
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
5742
 
5743
     recview   curview%ROWTYPE;
5744
   BEGIN
5745
     -- Get dlock state
5746
     SELECT pv.is_patch
5747
      INTO ispatch
5748
      FROM package_versions pv
5749
      WHERE pv.pv_id = pvid;
5750
 
5751
     -- Decide which view id should package go under.
5752
     IF (ispatch != 'Y') OR (ispatch IS NULL)
5753
     THEN
5754
       -- Get VIEW ID of Package
5755
       OPEN curview;
5756
 
5757
       FETCH curview
5758
        INTO recview;
5759
 
5760
       IF curview%FOUND
5761
       THEN
5762
         viewid := recview.view_id;
5763
       ELSE
5764
         raise_application_error
5765
            (-20000,
5766
               'Cannot find view_id to proceed. [PvId='
5767
            || pvid
5768
            || ']. The current version may not exist in the release anymore.'
5769
            );
5770
       END IF;
5771
 
5772
       CLOSE curview;
5773
     ELSE
5774
       -- Get VIEW ID of Patch (view id of parent package)
5775
       SELECT rc.base_view_id
5776
         INTO viewid
5777
         FROM release_content rc, package_patches ppv
5778
        WHERE rc.rtag_id = rtagid
5779
         AND rc.pv_id = ppv.pv_id
5780
         AND ppv.patch_id = pvid;
5781
     END IF;
5782
 
5783
     RETURN viewid;
5784
   END;
5785
 
5786
/*-------------------------------------------------------------------------------------------------------*/
5787
   PROCEDURE add_package (
5788
     pvid    IN   NUMBER,
5789
     viewid   IN   NUMBER,
5790
     rtagid   IN   NUMBER,
5791
     userid   IN   NUMBER
5792
   )
5793
   IS
5794
     dlocked   package_versions.dlocked%TYPE;
5795
     envtab   NUMBER;
5796
   BEGIN
5797
     IF can_edit_pkg_in_project (pvid, rtagid) = 1
5798
     THEN
5799
       -- Get dlock state
5800
       SELECT pv.dlocked
5801
         INTO dlocked
5802
         FROM package_versions pv
5803
        WHERE pv.pv_id = pvid;
5804
 
5805
       -- Get which area should go under
5806
       envtab := select_environment_area (dlocked);
5807
       -- Log
5808
       log_action (pvid, 'action', userid, 'Start of Package Add...');
5809
 
5810
       -- Remove Package
5811
       IF envtab = 0
5812
       THEN
5813
         -- WORK IN PROGRESS --
5814
         pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
5815
       ELSIF envtab = 1
5816
       THEN
5817
         -- PENDING --
5818
         pk_planned.add_package (pvid, viewid, rtagid, userid);
5819
       ELSIF envtab = 2
5820
       THEN
5821
         -- RELEASED --
5822
         -- NOTE: this package will be replaced with matching package
5823
         pk_release.add_package (pvid, viewid, rtagid, userid);
5824
         -- Now do post Release Actions
5825
         pk_release.run_post_actions (pvid, rtagid);
5826
       END IF;
5827
 
5828
       -- Log
5829
       log_action (pvid, 'action', userid, 'End of Package Add...');
5830
     END IF;
5831
   END;
5832
 
5833
/*-------------------------------------------------------------------------------------------------------*/
5834
   PROCEDURE add_package_bulk (
5835
     pvidlist   IN   VARCHAR2,
5836
     viewid    IN   NUMBER,
5837
     rtagid    IN   NUMBER,
5838
     userid    IN   NUMBER
5839
   )
5840
   IS
5841
     nidcollector   relmgr_number_tab_t         := relmgr_number_tab_t
5842
                                                        ();
5843
     dlocked      package_versions.dlocked%TYPE;
5844
     pvid         NUMBER;
5845
     envtab       NUMBER;
5846
   BEGIN
5847
     /*--------------- Business Rules Here -------------------*/
5848
     IF (pvidlist IS NULL)
5849
     THEN
5850
       raise_application_error (-20000,
5851
                          'Please select at least one package.'
5852
                         );
5853
     END IF;
5854
 
5855
/*-------------------------------------------------------*/
5856
     nidcollector := in_list_number (pvidlist);
5857
 
5858
     FOR i IN 1 .. nidcollector.COUNT
5859
     LOOP
5860
       pvid := nidcollector (i);
5861
       add_package (pvid, viewid, rtagid, userid);
5862
     END LOOP;
5863
   END;
5864
 
5865
/*-------------------------------------------------------------------------------------------------------*/
5866
   PROCEDURE replace_package (
5867
     newpvid  IN   NUMBER,
5868
     oldpvid  IN   NUMBER,
5869
     rtagid   IN   NUMBER,
5870
     userid   IN   NUMBER
5871
   )
5872
   IS
5873
     dlocked      package_versions.dlocked%TYPE;
5874
     viewid       NUMBER;
5875
     envtab       NUMBER;
5876
     ROWCOUNT     NUMBER;
5877
     creleasemode CHAR (1);
5878
     npkgid       NUMBER;
5879
   BEGIN
5880
     /*--------------- Business Rules Here -------------------*/
5881
     -- Check if oldPvId exists. It could have been removed
5882
     SELECT COUNT (pv.pv_id)
5883
       INTO ROWCOUNT
5884
       FROM package_versions pv
5885
      WHERE pv.pv_id = oldpvid;
5886
 
5887
/*-------------------------------------------------------*/
5888
 
5889
     /* This procedure is usually used by "History" option in Release Manager */
5890
 
5891
     -- Get dlock state
5892
     SELECT pv.dlocked
5893
       INTO dlocked
5894
       FROM package_versions pv
5895
      WHERE pv.pv_id = newpvid;
5896
 
5897
     -- Get VIEW_ID ---
5898
     IF ROWCOUNT = 1
5899
     THEN
5900
       viewid := get_view_location (oldpvid, rtagid);
5901
     ELSE
5902
       -- Set ViewID to default
5903
       viewid := 7;
5904
     END IF;
5905
 
5906
     -- Get which area should go under
5907
     envtab := select_environment_area (dlocked);
5908
     -- Log
5909
     log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
5910
 
5911
     -- Replace package
5912
     IF envtab = 0
5913
     THEN
5914
       -- WORK IN PROGRESS --
5915
 
5916
       -- Delete old package
5917
       pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
5918
 
5919
       -- Add new package
5920
       pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
5921
     ELSIF envtab = 1
5922
     THEN
5923
       -- PENDING --
5924
 
5925
       -- Delete old package
5926
       pk_planned.remove_package (oldpvid, rtagid, userid);
5927
 
5928
       -- Add new package
5929
       pk_planned.add_package (newpvid, viewid, rtagid, userid);
5930
     ELSIF envtab = 2
5931
     THEN
5932
       -- RELEASED --
5933
 
5934
       -- Delete old package
5935
       pk_release.remove_package (oldpvid, rtagid, userid);
5936
       -- Add new package
5937
       pk_release.add_package (newpvid, viewid, rtagid, userid);
5938
 
5939
       -- update the pegging table
5940
       UPDATE PEGGED_VERSIONS SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
5941
 
5942
       -- update the advisory ripple table
5943
       UPDATE ADVISORY_RIPPLE SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
5944
 
5945
       -- Now do post Release Actions
5946
       pk_release.run_post_actions (newpvid, rtagid);
5947
     END IF;
5948
 
5949
     -- Log
5950
     log_action (oldpvid, 'action', userid, 'End of Package Replace...');
5951
   END;
5952
 
5953
/*-------------------------------------------------------------------------------------------------------*/
5954
   FUNCTION remove_package (
5955
     pvid        IN   NUMBER,
5956
     rtagid      IN   NUMBER,
5957
     userid      IN   NUMBER,
5958
     forceremove IN   CHAR
5959
   )
5960
     RETURN NUMBER
5961
   IS
5962
     envtab      NUMBER;
5963
     isused      BOOLEAN;
5964
     recordcount   NUMBER;
5965
   BEGIN
5966
/*--------------- Business Rules Here -------------------*/
5967
/*-------------------------------------------------------*/
5968
 
5969
     -- Find location of package
5970
     envtab := get_package_area (pvid, rtagid);
5971
 
5972
     -- Remove Package
5973
     IF envtab = 0
5974
     THEN
5975
       -- WORK IN PROGRESS --
5976
       -- Delete package
5977
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
5978
 
5979
       RETURN 0;
5980
     ELSIF envtab = 1
5981
     THEN
5982
       -- PENDING --
5983
       -- Delete package
5984
       pk_planned.remove_package (pvid, rtagid, userid);
5985
 
5986
       RETURN 0;
5987
     ELSIF envtab = 2
5988
     THEN
5989
       -- RELEASED --
5990
 
5991
       -- Check if is used by other packages
5992
       isused := TRUE;
5993
 
5994
       IF forceremove = 'N'
5995
       THEN
5996
         SELECT COUNT (pv.pv_id)
5997
           INTO recordcount
5998
           FROM (SELECT dpv.pkg_id, dpv.v_ext
5999
                 FROM release_content rc,
6000
                     package_dependencies dep,
6001
                     package_versions dpv
6002
                WHERE rc.rtag_id = rtagid
6003
                  AND rc.pv_id = dep.pv_id
6004
                  AND dep.dpv_id = dpv.pv_id) rdep,
6005
               package_versions pv
6006
          WHERE pv.pkg_id = rdep.pkg_id
6007
            AND NVL (pv.v_ext, '|LINK_A_NULL|') =
6008
                                  NVL (rdep.v_ext, '|LINK_A_NULL|')
6009
            AND pv.pv_id = pvid;
6010
 
6011
         IF recordcount > 0
6012
         THEN
6013
            RETURN 1;               -- Return 1 as package being used
6014
         ELSE
6015
            isused := FALSE;
6016
         END IF;
6017
       END IF;
6018
 
6019
       IF forceremove = 'Y' OR NOT isused
6020
       THEN
6021
         -- Delete old package
6022
         pk_release.remove_package (pvid, rtagid, userid);
6023
 
6024
         -- Delete old package's pegging info
6025
         DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = rtagid AND pegv.PV_ID = pvid;
6026
 
6027
         -- Delete old package's advisory ripple info
6028
         DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = rtagid AND avr.PV_ID = pvid;
6029
 
6030
         -- Now do post Release Actions
6031
         pk_release.run_post_actions (pvid, rtagid);
6032
         RETURN 0;
6033
       END IF;
6034
     END IF;
6035
   END;
6036
 
6037
/*-------------------------------------------------------------------------------------------------------*/
6038
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
6039
 
6040
   PROCEDURE get_environment_items (
6041
     viewtype         IN      NUMBER,
6042
     userid           IN      NUMBER,
6043
     rtagid           IN      NUMBER,
6044
     sviewidshowlist  IN      VARCHAR2,
6045
     ntruerecordcount OUT     NUMBER,
6046
     recordset        OUT     typecur
6047
   )
6048
   IS
6049
   BEGIN
6050
     -- Get true record count because views can give false count
6051
     SELECT COUNT (pl.pv_id)
6052
      INTO ntruerecordcount
6053
      FROM environment_view pl
6054
      WHERE pl.rtag_id = rtagid;
6055
 
6056
     IF viewtype = 1
6057
     THEN
6058
       /*--- GUEST VIEW ---*/
6059
       OPEN recordset FOR
6060
         SELECT   *
6061
            FROM (
6062
                 /* Base Views collapsed */
6063
                 SELECT DISTINCT vi.view_id, vi.view_name,
6064
                             TO_NUMBER (NULL) AS pkg_state,
6065
                             TO_NUMBER (NULL) AS deprecated_state,
6066
                             TO_NUMBER (NULL) AS pv_id,
6067
                             NULL AS pkg_name, NULL AS pkg_version,
6068
                             NULL AS dlocked, NULL AS pv_description,
6069
                             rel.operation
6070
                         FROM environment_view rel, views vi
6071
                        WHERE rel.view_id = vi.view_id
6072
                          AND rtag_id = rtagid
6073
                          AND rel.view_id NOT IN (
6074
                               SELECT *
6075
                                 FROM THE
6076
                                       (SELECT CAST
6077
                                               (in_list_number
6078
                                                  (sviewidshowlist
6079
                                                  ) AS relmgr_number_tab_t
6080
                                               )
6081
                                         FROM DUAL
6082
                                       ))
6083
                 UNION
6084
                 /* Base Views expanded */
6085
                 SELECT vi.view_id, vi.view_name,
6086
                      DECODE (rel.pkg_state,
6087
                            NULL, 0,
6088
                            rel.pkg_state
6089
                           ) AS pkg_state,
6090
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6091
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6092
                      rel.operation
6093
                  FROM environment_view rel,
6094
                      PACKAGES pkg,
6095
                      package_versions pv,
6096
                      views vi
6097
                  WHERE pv.pkg_id = pkg.pkg_id
6098
                   AND rel.pv_id = pv.pv_id
6099
                   AND rel.view_id = vi.view_id
6100
                   AND rel.view_id IN (
6101
                        SELECT *
6102
                          FROM THE
6103
                                (SELECT CAST
6104
                                        (in_list_number
6105
                                               (sviewidshowlist) AS relmgr_number_tab_t
6106
                                        )
6107
                                  FROM DUAL
6108
                                ))
6109
                   AND rtag_id = rtagid) ord
6110
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6111
     ELSIF viewtype = 2
6112
     THEN
6113
       /*--- PERSONAL VIEW ---*/
6114
       OPEN recordset FOR
6115
         SELECT   *
6116
            FROM (
6117
                 /* Base Views collapsed */
6118
                 SELECT DISTINCT vi.view_id, vi.view_name,
6119
                             TO_NUMBER (NULL) AS pkg_state,
6120
                             TO_NUMBER (NULL) AS deprecated_state,
6121
                             TO_NUMBER (NULL) AS pv_id,
6122
                             NULL AS pkg_name, NULL AS pkg_version,
6123
                             NULL AS dlocked, NULL AS pv_description,
6124
                             rel.operation
6125
                         FROM environment_view rel,
6126
                             view_settings vs,
6127
                             views vi
6128
                        WHERE rel.view_id = vi.view_id
6129
                          AND vs.view_id = rel.view_id
6130
                          AND vs.user_id = userid
6131
                          AND rtag_id = rtagid
6132
                          AND rel.view_id NOT IN (
6133
                               SELECT *
6134
                                 FROM THE
6135
                                       (SELECT CAST
6136
                                               (in_list_number
6137
                                                  (sviewidshowlist
6138
                                                  ) AS relmgr_number_tab_t
6139
                                               )
6140
                                         FROM DUAL
6141
                                       ))
6142
                 UNION
6143
                 /* Base Views expanded */
6144
                 SELECT vi.view_id, vi.view_name,
6145
                      DECODE (rel.pkg_state,
6146
                            NULL, 0,
6147
                            rel.pkg_state
6148
                           ) AS pkg_state,
6149
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6150
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6151
                      rel.operation
6152
                  FROM environment_view rel,
6153
                      PACKAGES pkg,
6154
                      package_versions pv,
6155
                      views vi,
6156
                      view_settings vs
6157
                  WHERE pv.pkg_id = pkg.pkg_id
6158
                   AND rel.pv_id = pv.pv_id
6159
                   AND rel.view_id = vi.view_id
6160
                   AND vs.view_id = vi.view_id
6161
                   AND vs.user_id = userid
6162
                   AND rel.view_id IN (
6163
                        SELECT *
6164
                          FROM THE
6165
                                (SELECT CAST
6166
                                        (in_list_number
6167
                                               (sviewidshowlist) AS relmgr_number_tab_t
6168
                                        )
6169
                                  FROM DUAL
6170
                                ))
6171
                   AND rtag_id = rtagid
6172
                 UNION
6173
                 /* Private Views collapsed */
6174
                 SELECT vi.view_id, vi.view_name,
6175
                      TO_NUMBER (NULL) AS pkg_state,
6176
                      TO_NUMBER (NULL) AS deprecated_state,
6177
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6178
                      NULL AS pkg_version, NULL AS dlocked,
6179
                      NULL AS pv_description,
6180
                      rel.operation
6181
                  FROM view_settings vs,
6182
                      view_def vd,
6183
                      views vi,
6184
                      environment_view rel,
6185
                      package_versions pv
6186
                  WHERE vs.view_id = vi.view_id
6187
                   AND rel.pv_id = pv.pv_id
6188
                   AND vd.pkg_id = pv.pkg_id
6189
                   AND vd.view_id = vi.view_id
6190
                   AND vi.base_view = 'N'
6191
                   AND rel.rtag_id = rtagid
6192
                   AND vs.user_id = userid
6193
                   AND vi.view_id NOT IN (
6194
                        SELECT *
6195
                          FROM THE
6196
                                (SELECT CAST
6197
                                        (in_list_number
6198
                                               (sviewidshowlist) AS relmgr_number_tab_t
6199
                                        )
6200
                                  FROM DUAL
6201
                                ))
6202
                 UNION
6203
                 /* Private Views expanded */
6204
                 SELECT vi.view_id, vi.view_name,
6205
                      DECODE (rel.pkg_state,
6206
                            NULL, 0,
6207
                            rel.pkg_state
6208
                           ) AS pkg_state,
6209
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6210
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6211
                      rel.operation
6212
                  FROM users usr,
6213
                      view_settings vs,
6214
                      view_def vd,
6215
                      views vi,
6216
                      environment_view rel,
6217
                      PACKAGES pkg,
6218
                      package_versions pv
6219
                  WHERE vs.user_id = usr.user_id
6220
                   AND vs.view_id = vi.view_id
6221
                   AND vd.view_id = vi.view_id
6222
                   AND pv.pkg_id = pkg.pkg_id
6223
                   AND rel.pv_id = pv.pv_id
6224
                   AND rel.rtag_id = rtagid
6225
                   AND vd.pkg_id = pkg.pkg_id
6226
                   AND vi.base_view = 'N'
6227
                   AND vi.view_id IN (
6228
                        SELECT *
6229
                          FROM THE
6230
                                (SELECT CAST
6231
                                        (in_list_number
6232
                                               (sviewidshowlist) AS relmgr_number_tab_t
6233
                                        )
6234
                                  FROM DUAL
6235
                                ))
6236
                   AND usr.user_id = userid) ord
6237
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6238
     END IF;
6239
   END;
6240
 
6241
/*-------------------------------------------------------------------------------------------------------*/
6242
   PROCEDURE get_released_items (
6243
     viewtype         IN      NUMBER,
6244
     userid           IN      NUMBER,
6245
     rtagid           IN      NUMBER,
6246
     sviewidshowlist  IN      VARCHAR2,
6247
     ntruerecordcount OUT     NUMBER,
6248
     recordset        OUT     typecur
6249
   )
6250
   IS
6251
   BEGIN
6252
     -- Get true record count because views can give false count
6253
     SELECT COUNT (rc.pv_id)
6254
      INTO ntruerecordcount
6255
      FROM release_content rc
6256
      WHERE rc.rtag_id = rtagid;
6257
 
6258
     IF viewtype = 1
6259
     THEN
6260
       /*--- GUEST VIEW ---*/
6261
       OPEN recordset FOR
6262
         SELECT   *
6263
            FROM (
6264
                 /* Base Views collapsed */
6265
                 SELECT DISTINCT vi.view_id, vi.view_name,
6266
                             TO_NUMBER (NULL) AS pkg_state,
6267
                             TO_NUMBER (NULL) AS deprecated_state,
6268
                             TO_NUMBER (NULL) AS pv_id,
6269
                             NULL AS pkg_name, NULL AS pkg_version,
6270
                             NULL AS dlocked, NULL AS pv_description
6271
                         FROM release_content rel, views vi
6272
                        WHERE rel.base_view_id = vi.view_id
6273
                          AND rtag_id = rtagid
6274
                          AND rel.base_view_id NOT IN (
6275
                               SELECT *
6276
                                 FROM THE
6277
                                       (SELECT CAST
6278
                                               (in_list_number
6279
                                                  (sviewidshowlist
6280
                                                  ) AS relmgr_number_tab_t
6281
                                               )
6282
                                         FROM DUAL
6283
                                       ))
6284
                 UNION
6285
                 /* Base Views expanded */
6286
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6287
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6288
                      pv.pkg_version, pv.dlocked, pv.pv_description
6289
                  FROM release_content rel,
6290
                      PACKAGES pkg,
6291
                      package_versions pv,
6292
                      views vi
6293
                  WHERE pv.pkg_id = pkg.pkg_id
6294
                   AND rel.pv_id = pv.pv_id
6295
                   AND rel.base_view_id = vi.view_id
6296
                   AND rel.base_view_id IN (
6297
                        SELECT *
6298
                          FROM THE
6299
                                (SELECT CAST
6300
                                        (in_list_number
6301
                                               (sviewidshowlist) AS relmgr_number_tab_t
6302
                                        )
6303
                                  FROM DUAL
6304
                                ))
6305
                   AND rtag_id = rtagid) ord
6306
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6307
     ELSIF viewtype = 2
6308
     THEN
6309
       /*--- PERSONAL VIEW ---*/
6310
       OPEN recordset FOR
6311
         SELECT   *
6312
            FROM (
6313
                 /* Base Views collapsed */
6314
                 SELECT DISTINCT vi.view_id, vi.view_name,
6315
                             TO_NUMBER (NULL) AS pkg_state,
6316
                             TO_NUMBER (NULL) AS deprecated_state,
6317
                             TO_NUMBER (NULL) AS pv_id,
6318
                             NULL AS pkg_name, NULL AS pkg_version,
6319
                             NULL AS dlocked, NULL AS pv_description
6320
                         FROM release_content rel,
6321
                             view_settings vs,
6322
                             views vi
6323
                        WHERE rel.base_view_id = vi.view_id
6324
                          AND vs.view_id = rel.base_view_id
6325
                          AND vs.user_id = userid
6326
                          AND rtag_id = rtagid
6327
                          AND rel.base_view_id NOT IN (
6328
                               SELECT *
6329
                                 FROM THE
6330
                                       (SELECT CAST
6331
                                               (in_list_number
6332
                                                  (sviewidshowlist
6333
                                                  ) AS relmgr_number_tab_t
6334
                                               )
6335
                                         FROM DUAL
6336
                                       ))
6337
                 UNION
6338
                 /* Base Views expanded */
6339
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6340
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6341
                      pv.pkg_version, pv.dlocked, pv.pv_description
6342
                  FROM release_content rel,
6343
                      PACKAGES pkg,
6344
                      package_versions pv,
6345
                      views vi,
6346
                      view_settings vs
6347
                  WHERE pv.pkg_id = pkg.pkg_id
6348
                   AND rel.pv_id = pv.pv_id
6349
                   AND rel.base_view_id = vi.view_id
6350
                   AND vs.view_id = vi.view_id
6351
                   AND vs.user_id = userid
6352
                   AND rel.base_view_id IN (
6353
                        SELECT *
6354
                          FROM THE
6355
                                (SELECT CAST
6356
                                        (in_list_number
6357
                                               (sviewidshowlist) AS relmgr_number_tab_t
6358
                                        )
6359
                                  FROM DUAL
6360
                                ))
6361
                   AND rtag_id = rtagid
6362
                 UNION
6363
                 /* Private Views collapsed */
6364
                 SELECT vi.view_id, vi.view_name,
6365
                      TO_NUMBER (NULL) AS pkg_state,
6366
                      TO_NUMBER (NULL) AS deprecated_state,
6367
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6368
                      NULL AS pkg_version, NULL AS dlocked,
6369
                      NULL AS pv_description
6370
                  FROM view_settings vs,
6371
                      view_def vd,
6372
                      views vi,
6373
                      release_content rel,
6374
                      package_versions pv
6375
                  WHERE vs.view_id = vi.view_id
6376
                   AND rel.pv_id = pv.pv_id
6377
                   AND vd.pkg_id = pv.pkg_id
6378
                   AND vd.view_id = vi.view_id
6379
                   AND vi.base_view = 'N'
6380
                   AND rel.rtag_id = rtagid
6381
                   AND vs.user_id = userid
6382
                   AND vi.view_id NOT IN (
6383
                        SELECT *
6384
                          FROM THE
6385
                                (SELECT CAST
6386
                                        (in_list_number
6387
                                               (sviewidshowlist) AS relmgr_number_tab_t
6388
                                        )
6389
                                  FROM DUAL
6390
                                ))
6391
                 UNION
6392
                 /* Private Views expanded */
6393
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6394
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6395
                      pv.pkg_version, pv.dlocked, pv.pv_description
6396
                  FROM users usr,
6397
                      view_settings vs,
6398
                      view_def vd,
6399
                      views vi,
6400
                      release_content rel,
6401
                      PACKAGES pkg,
6402
                      package_versions pv
6403
                  WHERE vs.user_id = usr.user_id
6404
                   AND vs.view_id = vi.view_id
6405
                   AND vd.view_id = vi.view_id
6406
                   AND pv.pkg_id = pkg.pkg_id
6407
                   AND rel.pv_id = pv.pv_id
6408
                   AND rel.rtag_id = rtagid
6409
                   AND vd.pkg_id = pkg.pkg_id
6410
                   AND vi.base_view = 'N'
6411
                   AND vi.view_id IN (
6412
                        SELECT *
6413
                          FROM THE
6414
                                (SELECT CAST
6415
                                        (in_list_number
6416
                                               (sviewidshowlist) AS relmgr_number_tab_t
6417
                                        )
6418
                                  FROM DUAL
6419
                                ))
6420
                   AND usr.user_id = userid) ord
6421
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6422
     END IF;
6423
   END;
6424
 
6425
/*-------------------------------------------------------------------------------------------------------*/
6426
   PROCEDURE get_work_in_progress_items (
6427
     viewtype         IN      NUMBER,
6428
     userid           IN      NUMBER,
6429
     rtagid           IN      NUMBER,
6430
     sviewidshowlist  IN      VARCHAR2,
6431
     ntruerecordcount OUT     NUMBER,
6432
     recordset        OUT     typecur
6433
   )
6434
   IS
6435
   BEGIN
6436
     -- Get true record count because views can give false count
6437
     SELECT COUNT (wip.pv_id)
6438
      INTO ntruerecordcount
6439
      FROM work_in_progress wip
6440
      WHERE wip.rtag_id = rtagid;
6441
 
6442
     IF viewtype = 1
6443
     THEN
6444
       /*--- GUEST VIEW ---*/
6445
       OPEN recordset FOR
6446
         SELECT   *
6447
            FROM (
6448
                 /* Base Views collapsed */
6449
                 SELECT DISTINCT vi.view_id, vi.view_name,
6450
                             TO_NUMBER (NULL) AS pkg_state,
6451
                             TO_NUMBER (NULL) AS deprecated_state,
6452
                             TO_NUMBER (NULL) AS pv_id,
6453
                             NULL AS pkg_name, NULL AS pkg_version,
6454
                             NULL AS dlocked, NULL AS pv_description
6455
                         FROM work_in_progress rel, views vi
6456
                        WHERE rel.view_id = vi.view_id
6457
                          AND rtag_id = rtagid
6458
                          AND rel.view_id NOT IN (
6459
                               SELECT *
6460
                                 FROM THE
6461
                                       (SELECT CAST
6462
                                               (in_list_number
6463
                                                  (sviewidshowlist
6464
                                                  ) AS relmgr_number_tab_t
6465
                                               )
6466
                                         FROM DUAL
6467
                                       ))
6468
                 UNION
6469
                 /* Base Views expanded */
6470
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6471
 
6472
                      --rel.pkg_state,
6473
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6474
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6475
                      pv.pv_description
6476
                  FROM work_in_progress rel,
6477
                      PACKAGES pkg,
6478
                      package_versions pv,
6479
                      views vi
6480
                  WHERE pv.pkg_id = pkg.pkg_id
6481
                   AND rel.pv_id = pv.pv_id
6482
                   AND rel.view_id = vi.view_id
6483
                   AND rel.view_id IN (
6484
                        SELECT *
6485
                          FROM THE
6486
                                (SELECT CAST
6487
                                        (in_list_number
6488
                                               (sviewidshowlist) AS relmgr_number_tab_t
6489
                                        )
6490
                                  FROM DUAL
6491
                                ))
6492
                   AND rtag_id = rtagid) ord
6493
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6494
     ELSIF viewtype = 2
6495
     THEN
6496
       /*--- PERSONAL VIEW ---*/
6497
       OPEN recordset FOR
6498
         SELECT   *
6499
            FROM (
6500
                 /* Base Views collapsed */
6501
                 SELECT DISTINCT vi.view_id, vi.view_name,
6502
                             TO_NUMBER (NULL) AS pkg_state,
6503
                             TO_NUMBER (NULL) AS deprecated_state,
6504
                             TO_NUMBER (NULL) AS pv_id,
6505
                             NULL AS pkg_name, NULL AS pkg_version,
6506
                             NULL AS dlocked, NULL AS pv_description
6507
                         FROM work_in_progress rel,
6508
                             view_settings vs,
6509
                             views vi
6510
                        WHERE rel.view_id = vi.view_id
6511
                          AND vs.view_id = rel.view_id
6512
                          AND vs.user_id = userid
6513
                          AND rtag_id = rtagid
6514
                          AND rel.view_id NOT IN (
6515
                               SELECT *
6516
                                 FROM THE
6517
                                       (SELECT CAST
6518
                                               (in_list_number
6519
                                                  (sviewidshowlist
6520
                                                  ) AS relmgr_number_tab_t
6521
                                               )
6522
                                         FROM DUAL
6523
                                       ))
6524
                 UNION
6525
                 /* Base Views expanded */
6526
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6527
 
6528
                      --rel.pkg_state,
6529
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6530
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6531
                      pv.pv_description
6532
                  FROM work_in_progress rel,
6533
                      PACKAGES pkg,
6534
                      package_versions pv,
6535
                      views vi,
6536
                      view_settings vs
6537
                  WHERE pv.pkg_id = pkg.pkg_id
6538
                   AND rel.pv_id = pv.pv_id
6539
                   AND rel.view_id = vi.view_id
6540
                   AND vs.view_id = vi.view_id
6541
                   AND vs.user_id = userid
6542
                   AND rel.view_id IN (
6543
                        SELECT *
6544
                          FROM THE
6545
                                (SELECT CAST
6546
                                        (in_list_number
6547
                                               (sviewidshowlist) AS relmgr_number_tab_t
6548
                                        )
6549
                                  FROM DUAL
6550
                                ))
6551
                   AND rtag_id = rtagid
6552
                 UNION
6553
                 /* Private Views collapsed */
6554
                 SELECT vi.view_id, vi.view_name,
6555
                      TO_NUMBER (NULL) AS pkg_state,
6556
                      TO_NUMBER (NULL) AS deprecated_state,
6557
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6558
                      NULL AS pkg_version, NULL AS dlocked,
6559
                      NULL AS pv_description
6560
                  FROM view_settings vs,
6561
                      view_def vd,
6562
                      views vi,
6563
                      work_in_progress rel,
6564
                      package_versions pv
6565
                  WHERE vs.view_id = vi.view_id
6566
                   AND rel.pv_id = pv.pv_id
6567
                   AND vd.pkg_id = pv.pkg_id
6568
                   AND vd.view_id = vi.view_id
6569
                   AND vi.base_view = 'N'
6570
                   AND rel.rtag_id = rtagid
6571
                   AND vs.user_id = userid
6572
                   AND vi.view_id NOT IN (
6573
                        SELECT *
6574
                          FROM THE
6575
                                (SELECT CAST
6576
                                        (in_list_number
6577
                                               (sviewidshowlist) AS relmgr_number_tab_t
6578
                                        )
6579
                                  FROM DUAL
6580
                                ))
6581
                 UNION
6582
                 /* Private Views expanded */
6583
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6584
 
6585
                      --rel.pkg_state,
6586
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6587
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6588
                      pv.pv_description
6589
                  FROM users usr,
6590
                      view_settings vs,
6591
                      view_def vd,
6592
                      views vi,
6593
                      work_in_progress rel,
6594
                      PACKAGES pkg,
6595
                      package_versions pv
6596
                  WHERE vs.user_id = usr.user_id
6597
                   AND vs.view_id = vi.view_id
6598
                   AND vd.view_id = vi.view_id
6599
                   AND pv.pkg_id = pkg.pkg_id
6600
                   AND rel.pv_id = pv.pv_id
6601
                   AND rel.rtag_id = rtagid
6602
                   AND vd.pkg_id = pkg.pkg_id
6603
                   AND vi.base_view = 'N'
6604
                   AND vi.view_id IN (
6605
                        SELECT *
6606
                          FROM THE
6607
                                (SELECT CAST
6608
                                        (in_list_number
6609
                                               (sviewidshowlist) AS relmgr_number_tab_t
6610
                                        )
6611
                                  FROM DUAL
6612
                                ))
6613
                   AND usr.user_id = userid) ord
6614
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6615
     END IF;
6616
   END;
6617
 
6618
/*-------------------------------------------------------------------------------------------------------*/
6619
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
6620
 
6621
   PROCEDURE get_pending_items (
6622
     viewtype         IN      NUMBER,
6623
     userid           IN      NUMBER,
6624
     rtagid           IN      NUMBER,
6625
     sviewidshowlist  IN      VARCHAR2,
6626
     ntruerecordcount OUT     NUMBER,
6627
     recordset        OUT     typecur
6628
   )
6629
   IS
6630
   BEGIN
6631
     -- Get true record count because views can give false count
6632
     SELECT COUNT (pl.pv_id)
6633
      INTO ntruerecordcount
6634
      FROM planned pl
6635
      WHERE pl.rtag_id = rtagid;
6636
 
6637
     IF viewtype = 1
6638
     THEN
6639
       /*--- GUEST VIEW ---*/
6640
       OPEN recordset FOR
6641
         SELECT   *
6642
            FROM (
6643
                 /* Base Views collapsed */
6644
                 SELECT DISTINCT vi.view_id, vi.view_name,
6645
                             TO_NUMBER (NULL) AS pkg_state,
6646
                             TO_NUMBER (NULL) AS deprecated_state,
6647
                             TO_NUMBER (NULL) AS pv_id,
6648
                             NULL AS pkg_name, NULL AS pkg_version,
6649
                             NULL AS dlocked, NULL AS pv_description,
6650
                             rel.operation
6651
                         FROM planned rel, views vi
6652
                        WHERE rel.view_id = vi.view_id
6653
                          AND rtag_id = rtagid
6654
                          AND rel.view_id NOT IN (
6655
                               SELECT *
6656
                                 FROM THE
6657
                                       (SELECT CAST
6658
                                               (in_list_number
6659
                                                  (sviewidshowlist
6660
                                                  ) AS relmgr_number_tab_t
6661
                                               )
6662
                                         FROM DUAL
6663
                                       ))
6664
                 UNION
6665
                 /* Base Views expanded */
6666
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6667
 
6668
                      --rel.pkg_state,
6669
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6670
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6671
                      pv.pv_description,
6672
                      rel.operation
6673
                  FROM planned rel,
6674
                      PACKAGES pkg,
6675
                      package_versions pv,
6676
                      views vi
6677
                  WHERE pv.pkg_id = pkg.pkg_id
6678
                   AND rel.pv_id = pv.pv_id
6679
                   AND rel.view_id = vi.view_id
6680
                   AND rel.view_id IN (
6681
                        SELECT *
6682
                          FROM THE
6683
                                (SELECT CAST
6684
                                        (in_list_number
6685
                                               (sviewidshowlist) AS relmgr_number_tab_t
6686
                                        )
6687
                                  FROM DUAL
6688
                                ))
6689
                   AND rtag_id = rtagid) ord
6690
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6691
     ELSIF viewtype = 2
6692
     THEN
6693
       /*--- PERSONAL VIEW ---*/
6694
       OPEN recordset FOR
6695
         SELECT   *
6696
            FROM (
6697
                 /* Base Views collapsed */
6698
                 SELECT DISTINCT vi.view_id, vi.view_name,
6699
                             TO_NUMBER (NULL) AS pkg_state,
6700
                             TO_NUMBER (NULL) AS deprecated_state,
6701
                             TO_NUMBER (NULL) AS pv_id,
6702
                             NULL AS pkg_name, NULL AS pkg_version,
6703
                             NULL AS dlocked, NULL AS pv_description,
6704
                             rel.operation
6705
                         FROM planned rel, view_settings vs, views vi
6706
                        WHERE rel.view_id = vi.view_id
6707
                          AND vs.view_id = rel.view_id
6708
                          AND vs.user_id = userid
6709
                          AND rtag_id = rtagid
6710
                          AND rel.view_id NOT IN (
6711
                               SELECT *
6712
                                 FROM THE
6713
                                       (SELECT CAST
6714
                                               (in_list_number
6715
                                                  (sviewidshowlist
6716
                                                  ) AS relmgr_number_tab_t
6717
                                               )
6718
                                         FROM DUAL
6719
                                       ))
6720
                 UNION
6721
                 /* Base Views expanded */
6722
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6723
 
6724
                      --rel.pkg_state,
6725
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6726
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6727
                      pv.pv_description,
6728
                      rel.operation
6729
                  FROM planned rel,
6730
                      PACKAGES pkg,
6731
                      package_versions pv,
6732
                      views vi,
6733
                      view_settings vs
6734
                  WHERE pv.pkg_id = pkg.pkg_id
6735
                   AND rel.pv_id = pv.pv_id
6736
                   AND rel.view_id = vi.view_id
6737
                   AND vs.view_id = vi.view_id
6738
                   AND vs.user_id = userid
6739
                   AND rel.view_id IN (
6740
                        SELECT *
6741
                          FROM THE
6742
                                (SELECT CAST
6743
                                        (in_list_number
6744
                                               (sviewidshowlist) AS relmgr_number_tab_t
6745
                                        )
6746
                                  FROM DUAL
6747
                                ))
6748
                   AND rtag_id = rtagid
6749
                 UNION
6750
                 /* Private Views collapsed */
6751
                 SELECT vi.view_id, vi.view_name,
6752
                      TO_NUMBER (NULL) AS pkg_state,
6753
                      TO_NUMBER (NULL) AS deprecated_state,
6754
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6755
                      NULL AS pkg_version, NULL AS dlocked,
6756
                      NULL AS pv_description,
6757
                      rel.operation
6758
                  FROM view_settings vs,
6759
                      view_def vd,
6760
                      views vi,
6761
                      planned rel,
6762
                      package_versions pv
6763
                  WHERE vs.view_id = vi.view_id
6764
                   AND rel.pv_id = pv.pv_id
6765
                   AND vd.pkg_id = pv.pkg_id
6766
                   AND vd.view_id = vi.view_id
6767
                   AND vi.base_view = 'N'
6768
                   AND rel.rtag_id = rtagid
6769
                   AND vs.user_id = userid
6770
                   AND vi.view_id NOT IN (
6771
                        SELECT *
6772
                          FROM THE
6773
                                (SELECT CAST
6774
                                        (in_list_number
6775
                                               (sviewidshowlist) AS relmgr_number_tab_t
6776
                                        )
6777
                                  FROM DUAL
6778
                                ))
6779
                 UNION
6780
                 /* Private Views expanded */
6781
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6782
 
6783
                      --rel.pkg_state,
6784
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6785
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6786
                      pv.pv_description,
6787
                      rel.operation
6788
                  FROM users usr,
6789
                      view_settings vs,
6790
                      view_def vd,
6791
                      views vi,
6792
                      planned rel,
6793
                      PACKAGES pkg,
6794
                      package_versions pv
6795
                  WHERE vs.user_id = usr.user_id
6796
                   AND vs.view_id = vi.view_id
6797
                   AND vd.view_id = vi.view_id
6798
                   AND pv.pkg_id = pkg.pkg_id
6799
                   AND rel.pv_id = pv.pv_id
6800
                   AND rel.rtag_id = rtagid
6801
                   AND vd.pkg_id = pkg.pkg_id
6802
                   AND vi.base_view = 'N'
6803
                   AND vi.view_id IN (
6804
                        SELECT *
6805
                          FROM THE
6806
                                (SELECT CAST
6807
                                        (in_list_number
6808
                                               (sviewidshowlist) AS relmgr_number_tab_t
6809
                                        )
6810
                                  FROM DUAL
6811
                                ))
6812
                   AND usr.user_id = userid) ord
6813
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6814
     END IF;
6815
   END;
6816
 
6817
/*-------------------------------------------------------------------------------------------------------*/
6818
   PROCEDURE get_view_content (
6819
     rtagid     IN      NUMBER,
6820
     viewid     IN      NUMBER,
6821
     recordset OUT     typecur
6822
   )
6823
   IS
6824
     isbaseview   CHAR (1);
6825
   BEGIN
6826
     -- Check if the view is BASE VIEW
6827
     SELECT vi.base_view
6828
      INTO isbaseview
6829
      FROM views vi
6830
      WHERE vi.view_id = viewid;
6831
 
6832
     IF (isbaseview = 'Y')
6833
     THEN
6834
       -- Get Base view content
6835
       OPEN recordset FOR
6836
         SELECT   DECODE (rel.pkg_state,
6837
                      NULL, 0,
6838
                      rel.pkg_state
6839
                     ) AS pkg_state,
6840
                rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6841
                pv.pkg_version, pv.dlocked, pv.pv_description,
6842
                pv.build_type,
6843
                rel.operation
6844
            FROM environment_view rel, PACKAGES pkg, package_versions pv
6845
            WHERE pv.pkg_id = pkg.pkg_id
6846
             AND rel.pv_id = pv.pv_id
6847
             AND rel.view_id = viewid
6848
             AND rel.rtag_id = rtagid
6849
         ORDER BY UPPER (pkg.pkg_name);
6850
     ELSE
6851
       -- Get non base view content
6852
       OPEN recordset FOR
6853
         SELECT   DECODE (rel.pkg_state,
6854
                      NULL, 0,
6855
                      rel.pkg_state
6856
                     ) AS pkg_state,
6857
                rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6858
                pv.pkg_version, pv.dlocked, pv.pv_description,
6859
                pv.build_type,
6860
                rel.operation
6861
            FROM environment_view rel,
6862
                PACKAGES pkg,
6863
                package_versions pv,
6864
                view_def vd
6865
            WHERE pv.pkg_id = pkg.pkg_id
6866
             AND rel.pv_id = pv.pv_id
6867
             AND rel.rtag_id = rtagid
6868
             AND vd.view_id = viewid
6869
             AND vd.pkg_id = pv.pkg_id
6870
         ORDER BY UPPER (pkg.pkg_name);
6871
     END IF;
6872
   END;
6873
 
6874
/*-------------------------------------------------------------------------------------------------------*/
6875
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
6876
     RETURN NUMBER
6877
   IS
6878
     envtab           NUMBER;
6879
     returnvalue      NUMBER;
6880
     return_not_found NUMBER := -1;
6881
   BEGIN
6882
     envtab := get_package_area (pvid, rtagid);
6883
 
6884
     IF envtab = 0
6885
     THEN
6886
       -- WORK IN PROGRESS --
6887
       returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
6888
     ELSIF envtab = 1
6889
     THEN
6890
       -- PENDING --
6891
       returnvalue := pk_planned.get_package_view (pvid, rtagid);
6892
     ELSIF envtab = 2
6893
     THEN
6894
       -- RELEASED --
6895
       returnvalue := pk_release.get_package_view (pvid, rtagid);
6896
     ELSE
6897
       -- This may be a Patch not located anywhere but unlocked
6898
       returnvalue := return_not_found;
6899
     END IF;
6900
 
6901
     RETURN returnvalue;
6902
   END;
6903
 
6904
/*-------------------------------------------------------------------------------------------------------*/
6905
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
6906
   IS
6907
     viewid        NUMBER;
6908
     envtab        NUMBER;
6909
     ispatch       CHAR (1) := NULL;
6910
     buildtype     CHAR (1) := NULL;
6911
   BEGIN
6912
     -- Check if package is patch
6913
     SELECT pv.is_patch, pv.build_type
6914
      INTO ispatch, buildtype
6915
      FROM package_versions pv
6916
      WHERE pv.pv_id = pvid;
6917
 
6918
     -- Get ViewId
6919
     viewid := get_package_view (pvid, rtagid);
6920
     -- Remove from current area
6921
     envtab := pk_environment.get_package_area (pvid, rtagid);
6922
 
6923
     -- Make sure that package was in work-in-progress or pending before makeing it release
6924
     -- Exclude patches, ripple builds
6925
     IF (envtab < 0)
6926
     THEN
6927
       -- Not found in work-in-progress or pending
6928
       IF (ispatch IS NULL) AND (buildtype = 'M')
6929
       THEN
6930
         raise_application_error (-20000,
6931
                            'This package cannot be released here.'
6932
                           );
6933
       END IF;
6934
     END IF;
6935
 
6936
     -- Log
6937
     log_action (pvid, 'action', userid, 'Start of Make Package Release...');
6938
 
6939
     IF envtab = 0
6940
     THEN
6941
       -- WORK IN PROGRESS --
6942
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
6943
     ELSIF envtab = 1
6944
     THEN
6945
       -- PENDING --
6946
       pk_planned.remove_package (pvid, rtagid, userid);
6947
     END IF;
6948
 
6949
     -- Change package state
6950
     pk_package.change_state (pvid, 'Y', userid);
6951
 
6952
     -- Make sure it is valid BASE VIEW
6953
     IF viewid < 1
6954
     THEN
6955
       viewid := 7;                     -- This is default base view
6956
     END IF;
6957
 
6958
     IF (ispatch IS NULL)
6959
     THEN
6960
       -- Add package to new area
6961
       pk_release.add_package (pvid, viewid, rtagid, userid);
6962
     END IF;
6963
 
6964
     -- Now do post Release Actions
6965
     pk_release.run_post_actions (pvid, rtagid);
6966
 
6967
     -- The release has changed and there may now be invalid rtag_id/pv_id combinations in
6968
     -- the DO_NOT_RIPPLE and ADVISORY_RIPPLE Tables so perform a clean-up operation upon them.
6969
     clean_do_not_ripple(rtagid);
6970
     clean_advisory_ripple(rtagid);
6971
 
6972
     -- Log
6973
     log_action (pvid, 'action', userid, 'End of Make Package Release...');
6974
   END;
6975
 
6976
/*-------------------------------------------------------------------------------------------------------*/
6977
   PROCEDURE auto_make_release (
6978
     pvid          IN   NUMBER,
6979
     rtagid        IN   NUMBER,
6980
     userid        IN   NUMBER,
6981
     vext          IN   package_versions.v_ext%TYPE,
6982
     ssv_ext       IN   package_versions.v_ext%TYPE,
6983
     clonefrompvid IN   NUMBER
6984
   )
6985
   IS
6986
     viewid        NUMBER;
6987
     envtab        NUMBER;
6988
     ispatch       CHAR (1) := NULL;
6989
     buildtype      CHAR (1) := NULL;
6990
   BEGIN
6991
     -- Check if package is patch
6992
     SELECT pv.is_patch, pv.build_type
6993
      INTO ispatch, buildtype
6994
      FROM package_versions pv
6995
      WHERE pv.pv_id = pvid;
6996
 
6997
     IF vext <> ssv_ext
6998
     THEN
6999
       -- Get ViewId
7000
       viewid := get_package_view (clonefrompvid, rtagid);
7001
       -- Remove from current area
7002
       envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
7003
     ELSE
7004
       -- Get ViewId
7005
       viewid := get_package_view (pvid, rtagid);
7006
       -- Remove from current area
7007
       envtab := pk_environment.get_package_area (pvid, rtagid);
7008
     END IF;
7009
 
7010
     -- Make sure that package was in work-in-progress or pending before makeing it release
7011
     -- Exclude patches, ripple builds
7012
     IF (envtab < 0)
7013
     THEN
7014
       -- Not found in work-in-progress or pending
7015
       IF (ispatch IS NULL) AND (buildtype = 'M')
7016
       THEN
7017
         raise_application_error (-20000,
7018
                            'This package cannot be released here.'
7019
                           );
7020
       END IF;
7021
     END IF;
7022
 
7023
     -- Log
7024
     log_action (pvid, 'action', userid, 'Start of Make Package Release...');
7025
 
7026
     IF vext <> ssv_ext
7027
     THEN
7028
       IF envtab = 0
7029
       THEN
7030
         -- WORK IN PROGRESS --
4553 dpurdie 7031
         pk_work_in_progress.remove_package (clonefrompvid, rtagid,
7032
                                    userid);
1373 dpurdie 7033
       ELSIF envtab = 1
7034
       THEN
7035
         -- PENDING --
7036
         pk_planned.remove_package (clonefrompvid, rtagid, userid);
7037
       ELSIF envtab = 2
7038
       THEN
7039
         -- RELEASED --
7040
         pk_release.remove_package (clonefrompvid, rtagid, userid);
7041
       END IF;
7042
     ELSE
7043
       IF envtab = 0
7044
       THEN
7045
         -- WORK IN PROGRESS --
7046
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
7047
       ELSIF envtab = 1
7048
       THEN
7049
         -- PENDING --
7050
         pk_planned.remove_package (pvid, rtagid, userid);
7051
       END IF;
7052
     END IF;
7053
 
7054
     -- Change package state
7055
     pk_package.change_state (pvid, 'Y', userid);
7056
 
7057
     -- Make sure it is valid BASE VIEW
7058
     IF viewid < 1
7059
     THEN
7060
       viewid := 7;                     -- This is default base view
7061
     END IF;
7062
 
7063
     IF (ispatch IS NULL)
7064
     THEN
7065
       -- Add package to new area
7066
       pk_release.add_package (pvid, viewid, rtagid, userid);
7067
     END IF;
7068
 
7069
     -- Now do post Release Actions
7070
     pk_release.run_post_actions (pvid, rtagid);
7071
     -- Now update the Dash_Board Table (DEPRECATED)
7072
     pk_rmapi.update_dash_board (rtagid);
7073
 
7074
     -- The release has changed and there may now be invalid rtag_id/pv_id combinations in
7075
     -- the DO_NOT_RIPPLE and ADVISORY_RIPPLE Tables so perform a clean-up operation upon them.
7076
     clean_do_not_ripple(rtagid);
7077
     clean_advisory_ripple(rtagid);
7078
 
7079
     -- Log
7080
     log_action (pvid, 'action', userid, 'End of Make Package Release...');
7081
   END;
7082
 
7083
/*-------------------------------------------------------------------------------------------------------*/
7084
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7085
   IS
7086
     viewid   NUMBER;
7087
     envtab   NUMBER;
7088
   BEGIN
7089
     -- Get ViewId
7090
     --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
7091
     viewid := get_package_view (pvid, rtagid);
7092
     -- Remove from current area
7093
     envtab := pk_environment.get_package_area (pvid, rtagid);
7094
     -- Log
7095
     log_action (pvid,
7096
              'action',
7097
              userid,
7098
              'Start of Make Package UnRelease...'
7099
             );
7100
 
7101
     IF envtab = 2
7102
     THEN
7103
       -- RELEASE AREA --
7104
       pk_release.remove_package (pvid, rtagid, userid);
7105
     ELSIF envtab = 1
7106
     THEN
7107
       -- PENDING --
7108
       pk_planned.remove_package (pvid, rtagid, userid);
7109
     END IF;
7110
 
7111
     -- Change package state
7112
     pk_package.change_state (pvid, 'N', userid);
7113
 
7114
     -- Make sure it is valid BASE VIEW
7115
     IF viewid < 1
7116
     THEN
7117
       viewid := 7;                     -- This is default base view
7118
     END IF;
7119
 
7120
     -- Add package to new area
7121
     pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
7122
     -- Now do post Release Actions
7123
     pk_release.run_post_actions (pvid, rtagid);
7124
     -- Log
7125
     log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
7126
   END;
7127
 
7128
/*-------------------------------------------------------------------------------------------------------*/
7129
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7130
   IS
7131
     viewid     NUMBER;
7132
     ispatch    CHAR (1) := NULL;
7133
     buildtype  CHAR (1) := NULL;
7134
   BEGIN
7135
     -- Check if package is patch
7136
     SELECT pv.is_patch, pv.build_type
7137
      INTO ispatch, buildtype
7138
      FROM package_versions pv
7139
      WHERE pv.pv_id = pvid;
7140
 
7141
     -- Get ViewId
7142
     viewid := get_package_view (pvid, rtagid);
7143
     --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
7144
 
7145
     -- Log
7146
     log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
7147
 
7148
     IF (ispatch IS NULL)
7149
     THEN
7150
       -- Remove from current area
7151
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
7152
       -- Change package state
7153
       pk_package.change_state (pvid, 'P', userid);
7154
       -- Add package to new area
7155
       pk_planned.add_package (pvid, viewid, rtagid, userid);
7156
     END IF;
7157
 
7158
     -- Log
7159
     log_action (pvid, 'action', userid, 'End of Make Package Pending...');
7160
   END;
7161
 
7162
/*-------------------------------------------------------------------------------------------------------*/
7163
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7164
   IS
7165
   BEGIN
7166
     -- Log
7167
     log_action (pvid,
7168
                 'action',
7169
                 userid,
7170
                 'Start of Package Pending Approval...'
7171
                 );
7172
     -- Change package state
7173
     pk_package.change_state (pvid, 'A', userid);
7174
     -- Log
7175
     log_action (pvid, 'action', userid,
7176
                 'End of Package Pending Approval...');
7177
   END;
7178
 
7179
/*-------------------------------------------------------------------------------------------------------*/
7180
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7181
   IS
7182
     viewid   NUMBER;
7183
     operation CHAR;
7184
   BEGIN
7185
     -- Get ViewId
7186
     viewid := get_package_view (pvid, rtagid);
7187
     -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
7188
 
7189
     -- DEVI-45275
7190
     -- If the package version is an official version that is to be rejected from a merge operation
7191
     -- then find out in order to prevent it being added back to work-in-progress table . This will
7192
     -- be denoted by the operation field in the planned table being A or S
7193
     operation := ' ';
7194
     SELECT
7195
     (CASE WHEN pl.operation IS NOT NULL THEN pl.operation ELSE ' ' END) INTO operation
7196
     FROM planned pl
7197
     WHERE pl.PV_ID = pvid
7198
     AND pl.RTAG_ID = rtagid;
7199
 
7200
     -- Log
7201
     log_action (pvid, 'action', userid, 'Start of Reject Package...');
7202
     -- Remove from current area
7203
     pk_planned.remove_package (pvid, rtagid, userid);
7204
 
7205
     -- DEVI-45275 - Prevent merge candidate from being added back to work-in-progress table .
7206
     IF operation <> 'A' AND operation <> 'S'
7207
     THEN
7208
     -- Change package state
7209
     pk_package.change_state (pvid, 'R', userid);
7210
     -- Add package to new area
7211
     pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
7212
     ELSE
7213
      log_action (pvid, 'action', userid, 'Rejected Package Merge');
7214
     END IF;
7215
     -- Log
7216
     log_action (pvid, 'action', userid, 'End of Reject Package...');
7217
   END;
7218
 
7219
/*-------------------------------------------------------------------------------------------------------*/
7220
   PROCEDURE change_package_view (
7221
     pvid       IN   NUMBER,
7222
     rtagid     IN   NUMBER,
7223
     newviewid  IN   NUMBER
7224
   )
7225
   IS
7226
     envtab   NUMBER;
7227
   BEGIN
7228
     envtab := pk_environment.get_package_area (pvid, rtagid);
7229
 
7230
     IF envtab = 0
7231
     THEN
7232
       -- WORK IN PROGRESS --
7233
       pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
7234
     ELSIF envtab = 1
7235
     THEN
7236
       -- PENDING --
7237
       pk_planned.change_package_view (pvid, rtagid, newviewid);
7238
     ELSIF envtab = 2
7239
     THEN
7240
       -- RELEASED --
7241
       pk_release.change_package_view (pvid, rtagid, newviewid);
7242
     END IF;
7243
   END;
7244
 
7245
/*-------------------------------------------------------------------------------------------------------*/
7246
   PROCEDURE find_package (
7247
     skeyword     IN      VARCHAR2,
7248
     nrtagid      IN      NUMBER,
7249
     nsearcharea  IN      NUMBER,
7250
     recordset    OUT     typecur
7251
   )
7252
   IS
7253
   BEGIN
7254
     IF nsearcharea = 0
7255
     THEN
7256
       /* Search Work In Progress */
7257
       OPEN recordset FOR
7258
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7259
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7260
                pv.modified_stamp, usr.full_name, usr.user_email
7261
           FROM views vi,
7262
                work_in_progress rc,
7263
                PACKAGES pkg,
7264
                package_versions pv,
7265
                users usr
7266
          WHERE rc.view_id = vi.view_id
7267
            AND rc.pv_id = pv.pv_id
7268
            AND pkg.pkg_id = pv.pkg_id
7269
            AND pv.modifier_id = usr.user_id
7270
            AND rc.rtag_id = nrtagid
7271
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7272
       ORDER BY UPPER (pkg.pkg_name);
7273
     ELSIF nsearcharea = 1
7274
     THEN
7275
       /* Search Pending */
7276
       OPEN recordset FOR
7277
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7278
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7279
                pv.modified_stamp, usr.full_name, usr.user_email
7280
           FROM views vi,
7281
                planned rc,
7282
                PACKAGES pkg,
7283
                package_versions pv,
7284
                users usr
7285
          WHERE rc.view_id = vi.view_id
7286
            AND rc.pv_id = pv.pv_id
7287
            AND pkg.pkg_id = pv.pkg_id
7288
            AND pv.modifier_id = usr.user_id
7289
            AND rc.rtag_id = nrtagid
7290
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7291
       ORDER BY UPPER (pkg.pkg_name);
7292
     ELSIF nsearcharea = 2
7293
     THEN
7294
       /* Search Released */
7295
       OPEN recordset FOR
7296
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7297
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7298
                pv.modified_stamp, usr.full_name, usr.user_email
7299
           FROM views vi,
7300
                release_content rc,
7301
                PACKAGES pkg,
7302
                package_versions pv,
7303
                users usr
7304
          WHERE rc.base_view_id = vi.view_id
7305
            AND rc.pv_id = pv.pv_id
7306
            AND pkg.pkg_id = pv.pkg_id
7307
            AND pv.modifier_id = usr.user_id
7308
            AND rc.rtag_id = nrtagid
7309
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7310
         ORDER BY UPPER (pkg.pkg_name);
7311
     ELSIF nsearcharea = 3
7312
     THEN
7313
       /* Search ALL */
7314
       OPEN recordset FOR
7315
         SELECT rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
7316
                pv.pv_id, pv.pkg_version, pv.comments,
7317
                pv.modified_stamp, usr.full_name, usr.user_email
7318
           FROM views vi,
7319
                environment_view rc,
7320
                PACKAGES pkg,
7321
                package_versions pv,
7322
                users usr
7323
          WHERE rc.view_id = vi.view_id
7324
            AND rc.pv_id = pv.pv_id
7325
            AND pkg.pkg_id = pv.pkg_id
7326
            AND pv.modifier_id = usr.user_id
7327
            AND rc.rtag_id = nrtagid
7328
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7329
         ORDER BY UPPER (pkg.pkg_name);
7330
     END IF;
7331
   END;
7332
 
7333
/*-------------------------------------------------------------------------------------------------------*/
7334
   PROCEDURE find_file (
7335
     skeyword     IN      VARCHAR2,
7336
     nrtagid      IN      NUMBER,
7337
     nsearcharea  IN      NUMBER,
7338
     npagesize    IN      NUMBER,
7339
     recordset    OUT     typecur
7340
   )
7341
   IS
7342
   BEGIN
7343
     IF nsearcharea = 0
7344
     THEN
7345
       /* Search Work In Progress */
7346
       OPEN recordset FOR
7347
         SELECT   qry.*
7348
            FROM (
7349
                 /* File search on Packages */
7350
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7351
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7352
                   FROM work_in_progress rc,
7353
                        PACKAGES pkg,
7354
                        package_versions pv,
7355
                        release_components art
7356
                  WHERE rc.pv_id = art.pv_id
7357
                    AND pv.pkg_id = pkg.pkg_id
7358
                    AND rc.pv_id = pv.pv_id
7359
                    AND rc.rtag_id = nrtagid
7360
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7361
                 UNION ALL
7362
                 /* File search on Products */
7363
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7364
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7365
                   FROM work_in_progress rc,
7366
                        PACKAGES pkg,
7367
                        package_versions pv,
7368
                        product_components art
7369
                  WHERE rc.pv_id = art.pv_id
7370
                    AND pv.pkg_id = pkg.pkg_id
7371
                    AND rc.pv_id = pv.pv_id
7372
                    AND rc.rtag_id = nrtagid
7373
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7374
            WHERE ROWNUM <= npagesize
7375
         ORDER BY UPPER (qry.pkg_name);
7376
     ELSIF nsearcharea = 1
7377
     THEN
7378
       /* Search Pending */
7379
       OPEN recordset FOR
7380
         SELECT   qry.*
7381
            FROM (
7382
                 /* File search on Packages */
7383
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7384
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7385
                   FROM planned rc,
7386
                        PACKAGES pkg,
7387
                        package_versions pv,
7388
                        release_components art
7389
                  WHERE rc.pv_id = art.pv_id
7390
                    AND pv.pkg_id = pkg.pkg_id
7391
                    AND rc.pv_id = pv.pv_id
7392
                    AND rc.rtag_id = nrtagid
7393
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7394
                 UNION ALL
7395
                 /* File search on Products */
7396
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7397
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7398
                   FROM planned rc,
7399
                        PACKAGES pkg,
7400
                        package_versions pv,
7401
                        product_components art
7402
                  WHERE rc.pv_id = art.pv_id
7403
                    AND pv.pkg_id = pkg.pkg_id
7404
                    AND rc.pv_id = pv.pv_id
7405
                    AND rc.rtag_id = nrtagid
7406
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7407
            WHERE ROWNUM <= npagesize
7408
         ORDER BY UPPER (qry.pkg_name);
7409
     ELSIF nsearcharea = 2
7410
     THEN
7411
       /* Search Released */
7412
       OPEN recordset FOR
7413
         SELECT   qry.*
7414
            FROM (
7415
                 /* File search on Packages */
7416
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7417
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7418
                        NULL AS patch_id
7419
                   FROM release_content rc,
7420
                        PACKAGES pkg,
7421
                        package_versions pv,
7422
                        release_components art
7423
                  WHERE rc.pv_id = art.pv_id
7424
                    AND pv.pkg_id = pkg.pkg_id
7425
                    AND rc.pv_id = pv.pv_id
7426
                    AND rc.rtag_id = nrtagid
7427
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7428
                 UNION ALL
7429
                 /* File search on Products */
7430
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7431
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7432
                        NULL AS patch_id
7433
                   FROM release_content rc,
7434
                        PACKAGES pkg,
7435
                        package_versions pv,
7436
                        product_components art
7437
                  WHERE rc.pv_id = art.pv_id
7438
                    AND pv.pkg_id = pkg.pkg_id
7439
                    AND rc.pv_id = pv.pv_id
7440
                    AND rc.rtag_id = nrtagid
7441
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7442
                 UNION ALL
7443
                 /* File search on Patches */
7444
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7445
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7446
                        DECODE (art.file_path,
7447
                                NULL, pp.patch_id,
7448
                                NULL
7449
                                ) AS patch_id
7450
                   FROM release_content rc,
7451
                        PACKAGES pkg,
7452
                        package_versions pv,
7453
                        release_components art,
7454
                        package_patches pp
7455
                  WHERE pv.pv_id = pp.pv_id
7456
                    AND pv.pkg_id = pkg.pkg_id
7457
                    AND rc.rtag_id = nrtagid
7458
                    AND art.pv_id = pp.patch_id
7459
                    AND rc.pv_id = pp.pv_id
7460
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7461
            WHERE ROWNUM <= npagesize
7462
         ORDER BY UPPER (qry.pkg_name);
7463
     ELSIF nsearcharea = 3
7464
     THEN
7465
       /* Search ALL */
7466
       OPEN recordset FOR
7467
         SELECT   qry.*
7468
            FROM (
7469
                 /* File search on Packages */
7470
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7471
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7472
                        NULL AS patch_id
7473
                   FROM environment_view rc,
7474
                        PACKAGES pkg,
7475
                        package_versions pv,
7476
                        release_components art
7477
                  WHERE rc.pv_id = art.pv_id
7478
                    AND pv.pkg_id = pkg.pkg_id
7479
                    AND rc.pv_id = pv.pv_id
7480
                    AND rc.rtag_id = nrtagid
7481
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7482
                 UNION ALL
7483
                 /* File search on Products */
7484
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7485
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7486
                        NULL AS patch_id
7487
                   FROM environment_view rc,
7488
                        PACKAGES pkg,
7489
                        package_versions pv,
7490
                        product_components art
7491
                  WHERE rc.pv_id = art.pv_id
7492
                    AND pv.pkg_id = pkg.pkg_id
7493
                    AND rc.pv_id = pv.pv_id
7494
                    AND rc.rtag_id = nrtagid
7495
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7496
                 UNION ALL
7497
                 /* File search on Patches */
7498
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7499
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7500
                        DECODE (art.file_path,
7501
                                NULL, pp.patch_id,
7502
                                NULL
7503
                               ) AS patch_id
7504
                   FROM release_content rc,
7505
                        PACKAGES pkg,
7506
                        package_versions pv,
7507
                        release_components art,
7508
                        package_patches pp
7509
                  WHERE pv.pv_id = pp.pv_id
7510
                    AND pv.pkg_id = pkg.pkg_id
7511
                    AND rc.rtag_id = nrtagid
7512
                    AND art.pv_id = pp.patch_id
7513
                    AND rc.pv_id = pp.pv_id
7514
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7515
            WHERE ROWNUM <= npagesize
7516
         ORDER BY UPPER (qry.pkg_name);
7517
     END IF;
7518
   END;
7519
 
7520
/*-------------------------------------------------------------------------------------------------------*/
7521
   PROCEDURE get_prodrelease_items (
7522
     rtagid           IN      NUMBER,
7523
     ntruerecordcount OUT     NUMBER,
7524
     recordset        OUT     typecur
7525
   )
7526
   IS
7527
   BEGIN
7528
     -- Get true record count n the number of integration products
7529
     SELECT COUNT (rc.pv_id)
7530
      INTO ntruerecordcount
7531
      FROM release_content rc
7532
      WHERE rc.rtag_id = rtagid;
7533
 
7534
     OPEN recordset FOR
7535
       SELECT vi.view_id, vi.view_name, rel.pkg_state,   --rel.pkg_state,
7536
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7537
              pv.pkg_version, pv.dlocked, pv.pv_description
7538
         FROM release_content rel,
7539
              PACKAGES pkg,
7540
              package_versions pv,
7541
              views vi
7542
        WHERE pv.pkg_id = pkg.pkg_id
7543
          AND rel.pv_id = pv.pv_id
7544
          AND rel.base_view_id = vi.view_id
7545
          AND pv.is_deployable = 'Y'
7546
          AND rtag_id = rtagid
7547
          AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
7548
                                 FROM deployment_manager.os_contents)
7549
          AND rel.product_state IS NULL
7550
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7551
   END;
7552
 
7553
/*-------------------------------------------------------------------------------------------------------*/
7554
   PROCEDURE get_integration_items (
7555
     rtagid           IN      NUMBER,
7556
     ntruerecordcount OUT     NUMBER,
7557
     recordset        OUT     typecur
7558
   )
7559
   IS
7560
   BEGIN
7561
     -- Get true record count n the number of integration products
7562
     SELECT COUNT (rc.pv_id)
7563
      INTO ntruerecordcount
7564
      FROM release_content rc
7565
      WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
7566
 
7567
     OPEN recordset FOR
7568
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7569
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7570
              pv.pkg_version, pv.dlocked, pv.pv_description
7571
         FROM release_content rel,
7572
              PACKAGES pkg,
7573
              package_versions pv,
7574
              views vi
7575
        WHERE pv.pkg_id = pkg.pkg_id
7576
          AND rel.pv_id = pv.pv_id
7577
          AND rel.base_view_id = vi.view_id
7578
          AND pv.is_deployable = 'Y'
7579
          AND rtag_id = rtagid
7580
          AND rel.product_state IN (1, 5)
7581
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7582
   END;
7583
 
7584
/*-------------------------------------------------------------------------------------------------------*/
7585
   PROCEDURE get_test_items (
7586
     rtagid           IN      NUMBER,
7587
     ntruerecordcount OUT     NUMBER,
7588
     recordset        OUT     typecur
7589
   )
7590
   IS
7591
   BEGIN
7592
     -- Get true record count n the number of test products
7593
     SELECT COUNT (rc.pv_id)
7594
      INTO ntruerecordcount
7595
      FROM release_content rc
7596
      WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
7597
 
7598
     OPEN recordset FOR
7599
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7600
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7601
              pv.pkg_version, pv.dlocked, pv.pv_description
7602
         FROM release_content rel,
7603
              PACKAGES pkg,
7604
              package_versions pv,
7605
              views vi
7606
        WHERE pv.pkg_id = pkg.pkg_id
7607
          AND rel.pv_id = pv.pv_id
7608
          AND rel.base_view_id = vi.view_id
7609
          AND pv.is_deployable = 'Y'
7610
          AND rtag_id = rtagid
7611
          AND rel.product_state = 2
7612
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7613
   END;
7614
 
7615
/*-------------------------------------------------------------------------------------------------------*/
7616
   PROCEDURE get_deploy_items (
7617
     rtagid           IN      NUMBER,
7618
     ntruerecordcount OUT     NUMBER,
7619
     recordset        OUT     typecur
7620
   )
7621
   IS
7622
   BEGIN
7623
     -- Get true record count n the number of deploy products
7624
     SELECT COUNT (rc.pv_id)
7625
      INTO ntruerecordcount
7626
      FROM release_content rc
7627
      WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
7628
 
7629
     OPEN recordset FOR
7630
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7631
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7632
              pv.pkg_version, pv.dlocked, pv.pv_description
7633
         FROM release_content rel,
7634
              PACKAGES pkg,
7635
              package_versions pv,
7636
              views vi
7637
        WHERE pv.pkg_id = pkg.pkg_id
7638
          AND rel.pv_id = pv.pv_id
7639
          AND rel.base_view_id = vi.view_id
7640
          AND pv.is_deployable = 'Y'
7641
          AND rtag_id = rtagid
7642
          AND rel.product_state IN (3, 5)
7643
          AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
7644
                                 FROM deployment_manager.os_contents)
7645
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7646
   END;
7647
 
7648
/*-------------------------------------------------------------------------------------------------------*/
7649
   PROCEDURE get_reject_items (
7650
     rtagid           IN      NUMBER,
7651
     ntruerecordcount OUT     NUMBER,
7652
     recordset        OUT     typecur
7653
   )
7654
   IS
7655
   BEGIN
7656
     -- Get true record count n the number of reject products
7657
     SELECT COUNT (rc.pv_id)
7658
       INTO ntruerecordcount
7659
       FROM release_content rc
7660
      WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
7661
 
7662
     OPEN recordset FOR
7663
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7664
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7665
              pv.pkg_version, pv.dlocked, pv.pv_description
7666
         FROM release_content rel,
7667
              PACKAGES pkg,
7668
              package_versions pv,
7669
              views vi
7670
        WHERE pv.pkg_id = pkg.pkg_id
7671
          AND rel.pv_id = pv.pv_id
7672
          AND rel.base_view_id = vi.view_id
7673
          AND pv.is_deployable = 'Y'
7674
          AND rtag_id = rtagid
7675
          AND rel.product_state = 4
7676
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7677
   END;
7678
/*-------------------------------------------------------------------------------------------------------*/
7679
   -- DEVI-45275 - this procedure performs the merge of an existing package version in the planned table
7680
   -- to the release_content table.
7681
 
7682
  PROCEDURE approve_merge (
7683
   PvId    IN NUMBER,
7684
   RtagId  IN NUMBER,
7685
   UserId  IN NUMBER
7686
  )
7687
  IS
7688
   viewid        NUMBER;
7689
   envtab        NUMBER;
7690
   oper         CHAR;
7691
  BEGIN
7692
      -- Get ViewId
7693
     viewid := get_package_view (pvid, rtagid);
7694
 
7695
     -- Get the view tab
7696
     envtab := pk_environment.get_package_area (pvid, rtagid);
7697
 
7698
     -- Make sure that package was in pending before merging it to released
7699
     IF (envtab <> 1)
7700
     THEN
7701
       -- Not found in pending
7702
       raise_application_error (-20000,
7703
                          'This package cannot be released here.'
7704
                         );
7705
     END IF;
7706
 
7707
     -- Log
7708
     log_action (pvid, 'action', userid, 'Start of Package Merge...');
7709
 
7710
     -- Get the planned operation type A=Add, S=Subtract
7711
     SELECT ev.operation INTO oper
7712
       FROM environment_view ev
7713
      WHERE ev.rtag_id = RtagId
7714
        AND ev.pv_id = PvId
7715
        AND (ev.operation = 'A' OR ev.operation = 'S');
7716
 
7717
     -- Remove from Pending
7718
     pk_planned.remove_package (PvId, RtagId, UserId);
7719
 
7720
     -- Either add to the release, or remove from the release as the operation commands
7721
     IF oper = 'A'
7722
     THEN
7723
       pk_release.add_package(PvId, viewId, RtagId, UserId);
7724
 
7725
     ELSIF oper = 'S'
7726
     THEN
7727
       pk_release.remove_package(PvId, RtagId, UserId);
7728
 
7729
       -- Delete old package's pegging info
7730
       DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = RtagId AND pegv.PV_ID = PvId;
7731
 
7732
       -- Delete old package's advisory ripple info
7733
       DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = RtagId AND avr.PV_ID = PvId;
7734
     END IF;
7735
 
7736
     touch_release(RtagId);
7737
 
7738
     -- Log
7739
     log_action (pvid, 'action', userid, 'End of Package Merge...');
7740
  END;
7741
/*-------------------------------------------------------------------------------------------------------*/
7742
END pk_environment;
4040 dpurdie 7743
 
1374 dpurdie 7744
/
1373 dpurdie 7745
 
4040 dpurdie 7746
/
7747
--------------------------------------------------------
7748
--  DDL for Package Body PK_LICENCING
7749
--------------------------------------------------------
7750
 
3959 dpurdie 7751
  CREATE OR REPLACE PACKAGE BODY "PK_LICENCING" IS
1373 dpurdie 7752
 
7753
/*
7754
------------------------------
3959 dpurdie 7755
||  Last Modified:  G.Huddy
7756
||  Modified Date:  19/Aug/2008
1373 dpurdie 7757
||  Body Version:   1.0
7758
------------------------------
7759
*/
7760
 
3959 dpurdie 7761
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
7762
   BEGIN
7763
      IF IS_LICENCED(PvId, licenceId) = 0 THEN
7764
         -- Add entry to licencing table
7765
         INSERT INTO licencing (pv_id, licence)
7766
         VALUES (PvId, licenceId);
1373 dpurdie 7767
 
3959 dpurdie 7768
         -- log action
7769
         -- TODO
7770
      END IF;
1373 dpurdie 7771
 
3959 dpurdie 7772
   END;
1373 dpurdie 7773
 
7774
/*-------------------------------------------------------------------------------------------------------*/
7775
 
3959 dpurdie 7776
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
7777
   BEGIN
7778
      IF NOT IS_LICENCED(PvId, licenceId) = 0 THEN
7779
         -- Delete entry from licencing table
7780
         DELETE FROM licencing
7781
         WHERE pv_id = PvId
7782
         AND licence = licenceId;
1373 dpurdie 7783
 
3959 dpurdie 7784
         -- log action
7785
         -- TODO
7786
      END IF;
7787
   END;
1373 dpurdie 7788
 
7789
/*-------------------------------------------------------------------------------------------------------*/
7790
 
3959 dpurdie 7791
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 7792
 
3959 dpurdie 7793
      CURSOR licencing_cur
7794
      IS
7795
         SELECT *
7796
         FROM licencing
7797
         WHERE pv_id = fromPvId;
1373 dpurdie 7798
 
3959 dpurdie 7799
      licencing_rec licencing_cur%ROWTYPE;
1373 dpurdie 7800
 
7801
   BEGIN
3959 dpurdie 7802
      -- For each licence association that the Last PV_ID had, create a similar
7803
      -- arrangement for the new PV_ID
7804
      -- NOTE that any additional licencing associations the new PV_ID has that the old one
7805
      -- does not have, are retained. The assumption is that the user has made those and so we do not
7806
      -- have any right to destroy them without asking them.
7807
      OPEN licencing_cur;
1373 dpurdie 7808
 
3959 dpurdie 7809
      FETCH licencing_cur
7810
      INTO licencing_rec;
1373 dpurdie 7811
 
3959 dpurdie 7812
      WHILE licencing_cur%FOUND
1373 dpurdie 7813
      LOOP
3959 dpurdie 7814
         ADD_LICENCE ( toPvId, licencing_rec.licence, UserId );
1373 dpurdie 7815
 
3959 dpurdie 7816
         FETCH licencing_cur
7817
         INTO licencing_rec;
1373 dpurdie 7818
      END LOOP;
7819
   END;
7820
 
7821
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 7822
 
7823
   FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER IS
7824
      found NUMBER;
1373 dpurdie 7825
   BEGIN
7826
 
3959 dpurdie 7827
      SELECT COUNT(*) INTO found
7828
      FROM licencing
7829
      WHERE pv_id = PvId
7830
      AND licence = LicenceId;
1373 dpurdie 7831
 
3959 dpurdie 7832
      RETURN found;
1373 dpurdie 7833
   END;
7834
 
7835
/*-------------------------------------------------------------------------------------------------------*/
7836
 
3959 dpurdie 7837
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 7838
 
3959 dpurdie 7839
      CURSOR licencing_cur
7840
      IS
1373 dpurdie 7841
         SELECT *
3959 dpurdie 7842
         FROM licencing
7843
         WHERE pv_id = PvId;
1373 dpurdie 7844
 
3959 dpurdie 7845
      licencing_rec licencing_cur%ROWTYPE;
7846
   BEGIN
7847
      -- For each licence association that the PV_ID had, remove it
7848
      OPEN licencing_cur;
1373 dpurdie 7849
 
3959 dpurdie 7850
      FETCH licencing_cur
7851
      INTO licencing_rec;
1373 dpurdie 7852
 
3959 dpurdie 7853
      WHILE licencing_cur%FOUND
7854
      LOOP
7855
         REMOVE_LICENCE ( PvId, licencing_rec.licence, UserId );
1373 dpurdie 7856
 
3959 dpurdie 7857
         FETCH licencing_cur
7858
         INTO licencing_rec;
7859
      END LOOP;
1373 dpurdie 7860
   END;
7861
 
7862
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 7863
END PK_LICENCING;
4040 dpurdie 7864
 
1374 dpurdie 7865
/
1373 dpurdie 7866
 
4040 dpurdie 7867
/
7868
--------------------------------------------------------
7869
--  DDL for Package Body PK_PACKAGE
7870
--------------------------------------------------------
7871
 
3959 dpurdie 7872
  CREATE OR REPLACE PACKAGE BODY "PK_PACKAGE" 
1373 dpurdie 7873
IS
7874
   /*-------------------------------------------------------------------------------------------------------*/
7875
   PROCEDURE new_version (
7876
      nlastpvid                   IN       NUMBER,
7877
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
7878
      cbuildtype                  IN       CHAR,
4211 dpurdie 7879
      cchangetype                 IN       CHAR,
1373 dpurdie 7880
      nsettopvid                  IN       NUMBER DEFAULT NULL,
7881
      nrtagid                     IN       NUMBER,
7882
      nuserid                     IN       NUMBER,
7883
      enumissues_state_imported   IN       NUMBER,
7884
      returnpvid                  OUT      NUMBER
7885
   )
7886
   IS
3959 dpurdie 7887
      origpkg_id                  package_versions.pkg_id%TYPE;
7888
      origdlocked                 package_versions.dlocked%TYPE;
7889
      ssv_mm                      package_versions.v_mm%TYPE;
7890
      ssv_nmm                     package_versions.v_nmm%TYPE;
7891
      ssv_ext                     package_versions.v_ext%TYPE;
7892
      spackageversion             VARCHAR2 (4000);
7893
      nissuestypes                NUMBER;
7894
      nviewid                     NUMBER;
7895
      reccount                    NUMBER;
7896
      isreleased                  package_versions.dlocked%TYPE := 'N';
7897
      slabel                      VARCHAR2 (4000)               := NULL;
4211 dpurdie 7898
      uchangetype                 CHAR := cchangetype;
1373 dpurdie 7899
 
7900
      CURSOR package_versions_cur
7901
      IS
7902
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
7903
           FROM package_versions pv
7904
          WHERE pv.pkg_version = snewpkgversion
7905
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
7906
                                         FROM package_versions origpv
7907
                                        WHERE origpv.pv_id = nlastpvid);
7908
 
3959 dpurdie 7909
      package_versions_rec package_versions_cur%ROWTYPE;
1373 dpurdie 7910
 
7911
      CURSOR clone_package_versions_cur
7912
      IS
7913
         SELECT DISTINCT pkg_id, dlocked
7914
                    FROM package_versions
7915
                   WHERE pv_id = nlastpvid;
7916
 
3959 dpurdie 7917
      clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
1373 dpurdie 7918
   BEGIN
7919
      spackageversion := snewpkgversion;
7920
 
7921
      IF nsettopvid IS NULL
7922
      THEN
7923
         -- SetToPv_id is not supplied, hence proceed.
7924
 
7925
         /* ---------------------------------------------------- */
3959 dpurdie 7926
         /* Find id package_version exists                       */
7927
         /* ---------------------------------------------------- */
1373 dpurdie 7928
         OPEN package_versions_cur;
7929
 
7930
         FETCH package_versions_cur
7931
          INTO package_versions_rec;
7932
 
7933
         IF package_versions_cur%NOTFOUND
7934
         THEN
7935
            ---  Create brand new package ---
7936
            SELECT seq_pv_id.NEXTVAL
7937
              INTO returnpvid
7938
              FROM DUAL;
7939
 
7940
            -- Split Version to get extention + other
7941
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
7942
 
7943
            -- Get previous package to clone from
7944
            OPEN clone_package_versions_cur;
7945
 
7946
            FETCH clone_package_versions_cur
7947
             INTO clone_package_versions_rec;
7948
 
7949
            origpkg_id := clone_package_versions_rec.pkg_id;
7950
            origdlocked := clone_package_versions_rec.dlocked;
7951
 
7952
            CLOSE clone_package_versions_cur;
7953
 
7954
            -- Automated built config
4211 dpurdie 7955
            IF ( cbuildtype = 'M' ) THEN
7956
              uchangetype := 'F';
7957
            END IF;  
7958
 
7959
            -- Automated version numbering
7960
            -- Make sure that version is still unique
7961
            IF (uchangetype != 'F') THEN
7962
              spackageversion := '(' || returnpvid || ')' || ssv_ext;
1373 dpurdie 7963
            END IF;
4211 dpurdie 7964
 
1373 dpurdie 7965
 
7966
            -- Clone Package Version Details --
3959 dpurdie 7967
            INSERT INTO package_versions(pv_id, pkg_id, pkg_version, dlocked, created_stamp,
7968
                                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
7969
                                         v_ext, src_path, pv_description, pv_overview,
7970
                                         last_pv_id, owner_id, is_deployable,
4211 dpurdie 7971
                                         is_build_env_required, build_type, change_type, 
7972
                                         bs_id, is_autobuildable, ripple_field)
3959 dpurdie 7973
                 SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
7974
                        spackageversion AS pkg_version, 'N' AS dlocked,
7975
                        ora_sysdate AS created_stamp, nuserid AS creator_id,
7976
                        ora_sysdatetime AS modified_stamp,
7977
                        nuserid AS modifier_id, ssv_mm AS v_mm,
7978
                        ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
7979
                        pv.pv_description, pv.pv_overview,
7980
                        nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
4211 dpurdie 7981
                        pv.is_build_env_required, cbuildtype, uchangetype, 
7982
                        pv.bs_id, pv.is_autobuildable, pv.ripple_field
3959 dpurdie 7983
                   FROM package_versions pv
7984
                  WHERE pv.pv_id = nlastpvid;
1373 dpurdie 7985
 
7986
            -- Set Issues Type for cloning ---
7987
            IF origdlocked = 'Y'
7988
            THEN
7989
               nissuestypes := enumissues_state_imported;
7990
            ELSE
7991
               nissuestypes := NULL;
7992
            END IF;
7993
 
7994
            basic_clone (nlastpvid,
7995
                         returnpvid,
7996
                         nrtagid,
7997
                         nuserid,
7998
                         origpkg_id,
7999
                         nissuestypes
8000
                        );
4211 dpurdie 8001
 
8002
            -- Update Label for versioning purposes
8003
            slabel := get_automated_label (returnpvid);
8004
            UPDATE package_versions pv
8005
            SET pv.pkg_label = slabel
8006
            WHERE pv.pv_id = returnpvid;
8007
 
1373 dpurdie 8008
         ELSE
8009
            --- Package already exists, hence reuse ---
8010
            returnpvid := package_versions_rec.pv_id;
8011
            isreleased := package_versions_rec.dlocked;
8012
         END IF;
8013
 
8014
         CLOSE package_versions_cur;
8015
      ELSE
8016
         returnpvid := nsettopvid;
8017
      END IF;
8018
   END new_version;
8019
 
8020
/*-------------------------------------------------------------------------------------------------------*/
8021
   PROCEDURE change_state (
8022
      pvid       IN   NUMBER,
8023
      newstate   IN   package_versions.dlocked%TYPE,
8024
      userid     IN   NUMBER
8025
   )
8026
   IS
8027
   BEGIN
8028
      -- Set package in Released mode
8029
      UPDATE package_versions pv
8030
         SET pv.dlocked = newstate,
8031
             pv.modified_stamp = ora_sysdatetime,
8032
             pv.modifier_id = userid
8033
       WHERE pv.pv_id = pvid;
8034
 
8035
      -- Log action --
8036
      IF newstate = 'Y'
8037
      THEN
8038
         -- RELEASED --
8039
         log_action (pvid,
8040
                     'makeofficial',
8041
                     userid,
8042
                     'Package state change to: Released'
8043
                    );
8044
      ELSIF newstate = 'N'
8045
      THEN
8046
         -- UNLOCKED --
8047
         log_action (pvid,
8048
                     'makeunofficial',
8049
                     userid,
8050
                     'Package state change to: Ulocked'
8051
                    );
8052
      ELSIF newstate = 'P'
8053
      THEN
8054
         -- PENDING APPROVAL --
8055
         log_action (pvid,
8056
                     'add_to_planned',
8057
                     userid,
8058
                     'Package state change to: Pending Approval'
8059
                    );
8060
      ELSIF newstate = 'R'
8061
      THEN
8062
         -- REJECTED --
8063
         log_action (pvid,
8064
                     'reject_package',
8065
                     userid,
8066
                     'Package state change to: Rejected'
8067
                    );
8068
      ELSIF newstate = 'A'
8069
      THEN
8070
         -- APPROVED --
8071
         log_action (pvid,
8072
                     'approve_package',
8073
                     userid,
8074
                     'Package state change to: Approved'
8075
                    );
8076
      END IF;
8077
   END;
8078
 
8079
/*-------------------------------------------------------------------------------------------------------*/
8080
   PROCEDURE destroy_package (
8081
      pvid               IN       NUMBER,
8082
      overridewarnings   IN       CHAR DEFAULT 'N',
8083
      problemstring      OUT      VARCHAR2
8084
   )
8085
   IS
8086
      LOCKED     CHAR;
8087
      pkgid      NUMBER;
8088
      ROWCOUNT   NUMBER;
8089
   BEGIN
8090
      /*
8091
      || This will destroy all package details from database.
8092
      || It will only be used to remove unwanted work in progress packages,
8093
      || or mestaken versions
8094
      */
8095
 
8096
      /*--------------- Business Rules Here -------------------*/
8097
      problemstring := NULL;
8098
 
8099
      IF overridewarnings = 'N'
8100
      THEN
8101
         -- Package must not be official
8102
         SELECT pv.dlocked
8103
           INTO LOCKED
8104
           FROM package_versions pv
8105
          WHERE pv.pv_id = pvid;
8106
 
8107
         IF LOCKED = 'Y'
8108
         THEN
8109
            problemstring :=
8110
                  problemstring
8111
               || '- Package is locked and released.'
8112
               || UTL_TCP.crlf;
8113
         END IF;
8114
 
8115
         -- Cannot remove if used in BOMs
8116
         SELECT COUNT (osc.prod_id)
8117
           INTO ROWCOUNT
8118
           FROM deployment_manager.os_contents osc
8119
          WHERE osc.prod_id = pvid;
8120
 
8121
         IF ROWCOUNT > 0
8122
         THEN
8123
            problemstring :=
8124
                  problemstring
8125
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
8126
               || UTL_TCP.crlf;
8127
         END IF;
8128
 
8129
         -- Cannot remove if Referenced as build dependency
8130
         SELECT COUNT (dep.pv_id)
8131
           INTO ROWCOUNT
8132
           FROM package_dependencies dep
8133
          WHERE dep.dpv_id = pvid;
8134
 
8135
         IF ROWCOUNT > 0
8136
         THEN
8137
            problemstring :=
8138
                  problemstring
8139
               || '- Package is referenced by other package as build dependency.'
8140
               || UTL_TCP.crlf;
8141
         END IF;
8142
 
8143
         -- Cannot remove if Referenced as runtime dependency
8144
         SELECT COUNT (rd.pv_id)
8145
           INTO ROWCOUNT
8146
           FROM runtime_dependencies rd
8147
          WHERE rd.rtd_id = pvid;
8148
 
8149
         IF ROWCOUNT > 0
8150
         THEN
8151
            problemstring :=
8152
                  problemstring
8153
               || '- Package is referenced by other package as runtime dependency.'
8154
               || UTL_TCP.crlf;
8155
         END IF;
8156
 
8157
         -- Cannot remove if Referenced as patch
8158
         SELECT COUNT (pp.pv_id)
8159
           INTO ROWCOUNT
8160
           FROM package_patches pp
8161
          WHERE pp.patch_id = pvid;
8162
 
8163
         IF ROWCOUNT > 0
8164
         THEN
8165
            problemstring :=
8166
                  problemstring
8167
               || '- Package is used as patch by other package.'
8168
               || UTL_TCP.crlf;
8169
         END IF;
8170
      END IF;
8171
 
8172
/*-------------------------------------------------------*/
8173
      IF (problemstring IS NULL)
8174
      THEN
8175
         --- Remove From Work in Progress
8176
         DELETE FROM work_in_progress wip
8177
               WHERE wip.pv_id = pvid;
8178
 
8179
         --- Remove From Pending
8180
         DELETE FROM planned pl
8181
               WHERE pl.pv_id = pvid;
8182
 
8183
         --- Remove From Released area
8184
         DELETE FROM release_content rc
8185
               WHERE rc.pv_id = pvid;
8186
 
8187
         ---Remove From Package Processes
8188
         DELETE FROM package_processes pp
8189
               WHERE pp.pv_id = pvid;
8190
 
8191
         --- Remove Dependencies
8192
         DELETE FROM package_dependencies dep
8193
               WHERE dep.pv_id = pvid;
8194
 
8195
         DELETE FROM package_dependencies dep
8196
               WHERE dep.dpv_id = pvid;
8197
 
8198
         --- Remove Runtime dependencies
8199
         DELETE FROM runtime_dependencies rtd
8200
               WHERE rtd.pv_id = pvid;
8201
 
8202
         DELETE FROM runtime_dependencies rtd
8203
               WHERE rtd.rtd_id = pvid;
8204
 
8205
         --- Remove components
8206
         DELETE FROM product_components pc
8207
               WHERE pc.pv_id = pvid;
8208
 
8209
         DELETE FROM release_components rc
8210
               WHERE rc.pv_id = pvid;
8211
 
8212
         --- Remove From Notification History
8213
         DELETE FROM notification_history nh
8214
               WHERE nh.pv_id = pvid;
8215
 
8216
         --- Remove From Ignore Warnings
8217
         DELETE FROM ignore_warnings iw
8218
               WHERE iw.pv_id = pvid;
8219
 
8220
         --- Remove From Additional Notes
8221
         DELETE FROM additional_notes an
8222
               WHERE an.pv_id = pvid;
8223
 
8224
         --- Remove From CQ Issues
8225
         DELETE FROM cq_issues cq
8226
               WHERE cq.pv_id = pvid;
8227
 
8228
         --- Remove from Package Patches
8229
         DELETE FROM package_patches pp
8230
               WHERE pp.pv_id = pvid;
8231
 
8232
         DELETE FROM package_patches pp
8233
               WHERE pp.patch_id = pvid;
8234
 
8235
         --- Remove From Package Documents
8236
         DELETE FROM package_documents pd
8237
               WHERE pd.pv_id = pvid;
8238
 
8239
         --- Remove from Code Review
8240
         DELETE FROM code_reviews cr
8241
               WHERE cr.pv_id = pvid;
8242
 
3959 dpurdie 8243
         --- Remove from Code Review URL
8244
         DELETE FROM code_review_url cru
8245
               WHERE cru.pv_id = pvid;
8246
 
1373 dpurdie 8247
         --- Remove from Unit Tests
8248
         DELETE FROM unit_tests ut
8249
               WHERE ut.pv_id = pvid;
8250
 
8251
         --- Remove from Package BuildEnv
8252
         DELETE FROM package_build_env pbe
8253
               WHERE pbe.pv_id = pvid;
8254
 
3959 dpurdie 8255
         --- Remove from Package Build Info
8256
         DELETE FROM package_build_info pbi
8257
               WHERE pbi.pv_id = pvid;
8258
 
1373 dpurdie 8259
         --- Remove from Build Order
8260
         DELETE FROM build_order bo
8261
               WHERE bo.pv_id = pvid;
8262
 
3959 dpurdie 8263
         --- Remove from Licencing
8264
         PK_LICENCING.REMOVE_ALL_LICENCING( pvid, 0 );
8265
 
1373 dpurdie 8266
         --- Remove from Note Manager
8267
         DELETE FROM note_manager nm
8268
               WHERE nm.nid = pvid;
8269
 
8270
         --- Remove from Action log
8271
         DELETE FROM action_log al
8272
               WHERE al.pv_id = pvid;
3959 dpurdie 8273
 
8274
         --- Remove from Do Not Ripple
8275
         DELETE FROM DO_NOT_RIPPLE dnr
8276
               WHERE dnr.PV_ID = pvid;
8277
 
8278
         --- Remove from Advisory Ripple
8279
         DELETE FROM ADVISORY_RIPPLE ar
8280
               WHERE ar.PV_ID = pvid;
8281
 
8282
         --- Remove from Jira Issues
8283
         DELETE FROM JIRA_ISSUES jira
8284
               WHERE jira.PV_ID = pvid;
8285
 
8286
         --- Remove from Package Metrics
8287
         DELETE FROM package_metrics pm
8288
              WHERE pm.pv_id = pvid;
8289
 
8290
         -- Delete from Pegged Versions
8291
         DELETE FROM pegged_versions pegv
8292
              WHERE pegv.pv_id = pvid;
8293
 
1373 dpurdie 8294
         --- Finally Remove From Package Versions
8295
         --- Get Package name
8296
         SELECT pv.pkg_id
8297
           INTO pkgid
8298
           FROM package_versions pv
8299
          WHERE pv.pv_id = pvid;
8300
 
8301
         DELETE FROM package_versions pv
8302
               WHERE pv.pv_id = pvid;
8303
 
8304
         --- Remove package name if not used any more
8305
         SELECT COUNT (pv.pv_id)
8306
           INTO ROWCOUNT
8307
           FROM package_versions pv
8308
          WHERE pv.pkg_id = pkgid;
8309
 
8310
         IF ROWCOUNT < 1
8311
         THEN
8312
            DELETE FROM PACKAGES pkg
8313
                  WHERE pkg.pkg_id = pkgid;
8314
         END IF;
8315
      END IF;
8316
   END;
8317
 
8318
/*-------------------------------------------------------------------------------------------------------*/
8319
   PROCEDURE new_patch (
8320
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
8321
      nparentpvid        IN       NUMBER,
8322
      spatchidlist       IN       VARCHAR2,
8323
      nuserid            IN       NUMBER,
8324
      returnpatchid      OUT      NUMBER
8325
   )
8326
   IS
8327
      patchpv_id           NUMBER;
8328
      parpkg_id            NUMBER;
8329
      lastinstallorder     NUMBER;
8330
      ispatchdlocked       package_versions.dlocked%TYPE;
8331
      ssv_mm               package_versions.v_mm%TYPE;
8332
      ssv_nmm              package_versions.v_nmm%TYPE;
8333
      ssv_ext              package_versions.v_ext%TYPE;
3959 dpurdie 8334
      opatchdepcollector   relmgr_number_tab_t  := relmgr_number_tab_t ();
1373 dpurdie 8335
 
8336
      CURSOR parent_cur
8337
      IS
8338
         SELECT pv.*, pkg.pkg_name
8339
           FROM package_versions pv, PACKAGES pkg
8340
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
8341
 
3959 dpurdie 8342
      parent_rec parent_cur%ROWTYPE;
1373 dpurdie 8343
 
8344
      CURSOR patch_cur
8345
      IS
8346
         SELECT pv.*, pg.pkg_name
8347
           FROM package_versions pv, PACKAGES pg
8348
          WHERE pv.pkg_id = parpkg_id
8349
            AND pv.pkg_version = snewpatchversion
8350
            AND pv.pkg_id = pg.pkg_id;
8351
 
3959 dpurdie 8352
      patch_rec  patch_cur%ROWTYPE;
1373 dpurdie 8353
 
8354
      CURSOR releases_cur
8355
      IS
8356
         SELECT rc.pv_id
8357
           FROM release_content rc
8358
          WHERE rc.pv_id = patch_rec.pv_id;
8359
 
3959 dpurdie 8360
      releases_rec releases_cur%ROWTYPE;
1373 dpurdie 8361
   BEGIN
8362
      -- Get Last Install Order
8363
      SELECT COUNT (*)
8364
        INTO lastinstallorder
8365
        FROM package_patches pp
8366
       WHERE pp.pv_id = nparentpvid;
8367
 
8368
      -- Get parent details
8369
      OPEN parent_cur;
8370
 
8371
      FETCH parent_cur
8372
       INTO parent_rec;
8373
 
8374
      parpkg_id := parent_rec.pkg_id;
8375
 
8376
      -- Find if patch exists in database
8377
      OPEN patch_cur;
8378
 
8379
      FETCH patch_cur
8380
       INTO patch_rec;
8381
 
8382
      -- Parent must be official
8383
      IF parent_rec.dlocked = 'Y'
8384
      THEN
8385
         IF patch_cur%NOTFOUND
8386
         THEN
8387
            ispatchdlocked := 'N';
8388
 
8389
            -- Create new patch version --
8390
            SELECT seq_pv_id.NEXTVAL
8391
              INTO patchpv_id
8392
              FROM DUAL;
8393
 
8394
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
8395
 
8396
            INSERT INTO package_versions
8397
                        (pv_id, pkg_id, pkg_version,
8398
                         dlocked, created_stamp, creator_id,
8399
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
8400
                         src_path,
8401
                         pv_description,
8402
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
3959 dpurdie 8403
                         is_autobuildable, ripple_field
1373 dpurdie 8404
                        )
8405
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
8406
                         ispatchdlocked, ora_sysdate, nuserid,
8407
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
8408
                         parent_rec.src_path,
8409
                            'This is a patch to '
8410
                         || parent_rec.pkg_name
8411
                         || ' '
8412
                         || parent_rec.pkg_version,
3959 dpurdie 8413
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
1373 dpurdie 8414
                        );
8415
 
8416
            INSERT INTO package_patches
8417
                        (pv_id, patch_id, install_order)
3959 dpurdie 8418
                (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
8419
                        lastinstallorder + 1 AS install_order
8420
                   FROM package_versions pv
8421
                  WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
1373 dpurdie 8422
 
8423
            /* LOG ACTION */
8424
            log_action (patchpv_id,
8425
                        'new_version',
8426
                        nuserid,
8427
                        'Patch version created: ' || snewpatchversion
8428
                       );
8429
            log_action (nparentpvid,
8430
                        'patch_add',
8431
                        nuserid,
8432
                        'New patch created and attached: ' || snewpatchversion
8433
                       );
8434
         ELSE
8435
            patchpv_id := patch_rec.pv_id;
8436
            ispatchdlocked := patch_rec.dlocked;
8437
 
8438
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
8439
            OPEN releases_cur;
8440
 
8441
            FETCH releases_cur
8442
             INTO releases_rec;
8443
 
8444
            IF releases_cur%NOTFOUND
8445
            THEN
8446
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
8447
               UPDATE package_versions
8448
                  SET is_patch = 'Y'
8449
                WHERE pv_id = patchpv_id;
8450
 
8451
               INSERT INTO package_patches
8452
                           (pv_id, patch_id, install_order)
3959 dpurdie 8453
                   (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
8454
                           lastinstallorder + 1 AS install_order
8455
                      FROM package_versions pv
8456
                     WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
1373 dpurdie 8457
            END IF;
8458
 
8459
            CLOSE releases_cur;
8460
 
8461
            /* LOG ACTION */
8462
            log_action (nparentpvid,
8463
                        'patch_add',
8464
                        nuserid,
8465
                           'Patch version was found and attached: '
8466
                        || snewpatchversion
8467
                       );
8468
         END IF;
8469
      END IF;
8470
 
8471
      /* Create Patch Dependencies */
8472
      opatchdepcollector := in_list_number (spatchidlist);
8473
 
8474
      -- Make sure patch is unofficial before altering its dependencies
8475
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
8476
      THEN
8477
         -- Delete Existing Dependencies
8478
         DELETE FROM package_dependencies dep
8479
               WHERE dep.pv_id = patchpv_id;
8480
 
8481
         -- Insert new dependencies
8482
         INSERT INTO package_dependencies
8483
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
3959 dpurdie 8484
              SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
8485
                     parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
8486
                     'L' AS build_type
8487
                FROM package_versions pv
8488
               WHERE pv.pv_id IN (
1373 dpurdie 8489
                      SELECT *
8490
                        FROM TABLE
8491
                                (CAST
8492
                                    (opatchdepcollector AS relmgr_number_tab_t)
8493
                                ));
8494
      END IF;
8495
 
8496
      -- Return patch_id
8497
      returnpatchid := patchpv_id;
8498
 
8499
      CLOSE parent_cur;
8500
 
8501
      CLOSE patch_cur;
8502
   EXCEPTION
8503
      WHEN DUP_VAL_ON_INDEX
8504
      THEN
8505
         raise_application_error (-20000,
8506
                                     'Patch version '
8507
                                  || snewpatchversion
8508
                                  || ' already exist.'
8509
                                 );
8510
   END;
8511
 
8512
/*-------------------------------------------------------------------------------------------------------*/
8513
   PROCEDURE obsolete_patch (
8514
      patchid            IN   NUMBER,
8515
      isobsolete         IN   CHAR,
8516
      obsoletecomments   IN   VARCHAR2,
8517
      userid             IN   NUMBER
8518
   )
8519
   IS
8520
   BEGIN
8521
      -- Update patch
8522
      UPDATE package_versions pv
8523
         SET pv.is_obsolete = isobsolete,
8524
             pv.obsolete_comments = obsoletecomments
8525
       WHERE pv.pv_id = patchid;
8526
 
8527
      /*
8528
      -- Update patch children
8529
      UPDATE PACKAGE_VERSIONS pv SET
8530
      pv.IS_OBSOLETE = IsObsolete,
8531
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8532
      WHERE pv.PV_ID IN (
8533
                     SELECT DISTINCT dep.DPV_ID
8534
                       FROM PACKAGE_DEPENDENCIES dep
8535
                      WHERE dep.PV_ID = PatchId
8536
                     );
8537
 
8538
 
8539
      -- Update patch parent
8540
      UPDATE PACKAGE_VERSIONS pv SET
8541
      pv.IS_OBSOLETE = IsObsolete,
8542
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8543
      WHERE pv.PV_ID IN (
8544
                     SELECT DISTINCT dep.PV_ID
8545
                       FROM PACKAGE_DEPENDENCIES dep
8546
                      WHERE dep.DPV_ID = PatchId
8547
                     );
8548
 
3959 dpurdie 8549
      */
1373 dpurdie 8550
 
8551
      /* LOG ACTION */
8552
      IF isobsolete IS NOT NULL
8553
      THEN
8554
         log_action (patchid,
8555
                     'patch_obsolete',
8556
                     userid,
8557
                     'Obsolete patch. ' || obsoletecomments
8558
                    );
8559
      ELSE
8560
         log_action (patchid,
8561
                     'patch_obsolete',
8562
                     userid,
8563
                     'Undo patch obsolete.'
8564
                    );
8565
      END IF;
8566
   END;
8567
 
8568
/*-------------------------------------------------------------------------------------------------------*/
8569
   PROCEDURE obsolete_patches (
8570
      spatchidlist       IN   VARCHAR2,
8571
      isobsolete         IN   CHAR,
8572
      obsoletecomments   IN   VARCHAR2,
8573
      userid             IN   NUMBER
8574
   )
8575
   IS
8576
   BEGIN
8577
      /*--------------- Business Rules Here -------------------*/
8578
      IF spatchidlist IS NULL
8579
      THEN
8580
         raise_application_error (-20000,
8581
                                  'Please select one or more Patches.'
8582
                                 );
8583
      END IF;
8584
 
8585
/*-------------------------------------------------------*/
8586
 
8587
      -- Update patch
8588
      UPDATE package_versions pv
8589
         SET pv.is_obsolete = isobsolete,
8590
             pv.obsolete_comments = obsoletecomments
8591
       WHERE pv.pv_id IN (
8592
                SELECT *
8593
                  FROM THE
8594
                          (SELECT CAST
8595
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
8596
                                     )
8597
                             FROM DUAL
8598
                          ));
3959 dpurdie 8599
      /*
8600
      -- Update patch children
8601
      UPDATE PACKAGE_VERSIONS pv SET
8602
      pv.IS_OBSOLETE = IsObsolete,
8603
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8604
      WHERE pv.PV_ID IN (
8605
                     SELECT DISTINCT dep.DPV_ID
8606
                       FROM PACKAGE_DEPENDENCIES dep
8607
                      WHERE dep.PV_ID = PatchId
8608
                     );
1373 dpurdie 8609
 
8610
 
3959 dpurdie 8611
      -- Update patch parent
8612
      UPDATE PACKAGE_VERSIONS pv SET
8613
      pv.IS_OBSOLETE = IsObsolete,
8614
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8615
      WHERE pv.PV_ID IN (
8616
                     SELECT DISTINCT dep.PV_ID
8617
                       FROM PACKAGE_DEPENDENCIES dep
8618
                      WHERE dep.DPV_ID = PatchId
8619
                     );
1373 dpurdie 8620
 
8621
      */
8622
 
3959 dpurdie 8623
      /* LOG ACTION
8624
      IF IsObsolete IS NOT NULL THEN
1373 dpurdie 8625
         Log_Action ( PatchId, 'patch_obsolete', UserId,
3959 dpurdie 8626
                     'Obsolete patch. '|| ObsoleteComments );
8627
      ELSE
8628
         Log_Action ( PatchId, 'patch_obsolete', UserId,
8629
                     'Undo patch obsolete.' );
8630
      END IF;  */
1373 dpurdie 8631
   END;
8632
 
8633
/*-------------------------------------------------------------------------------------------------------*/
8634
   PROCEDURE add_process (
8635
      nprocid         IN   processes.proc_id%TYPE,
8636
      shealthtag      IN   processes.proc_name%TYPE,
8637
      sprocdesc       IN   processes.proc_description%TYPE,
8638
      scmdinterface   IN   processes.run_as%TYPE,
8639
      spkgowner       IN   processes.pkg_owner%TYPE,
8640
      sisinterface    IN   processes.is_interface%TYPE,
8641
      npvid           IN   package_processes.pv_id%TYPE,
8642
      nuserid         IN   NUMBER
8643
   )
8644
   IS
8645
      pkgname   VARCHAR2 (100);
3959 dpurdie 8646
 
1373 dpurdie 8647
   BEGIN
8648
      INSERT INTO processes
8649
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
8650
                   is_interface
8651
                  )
8652
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
8653
                   sisinterface
8654
                  );
8655
 
8656
      pk_package.add_package_process (nprocid, npvid, nuserid);
8657
   END;
8658
 
8659
/*-------------------------------------------------------------------------------------------------------*/
8660
   PROCEDURE add_package_process (
8661
      nprocidlist   IN   VARCHAR2,
8662
      npvid         IN   package_processes.pv_id%TYPE,
8663
      nuserid       IN   NUMBER
8664
   )
8665
   IS
8666
      processname   VARCHAR2 (4000);
8667
 
8668
      CURSOR proc_cur
8669
      IS
8670
         SELECT prc.proc_id
8671
           FROM processes prc
8672
          WHERE prc.proc_id IN (
8673
                   SELECT *
8674
                     FROM THE
8675
                             (SELECT CAST
8676
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
8677
                                        )
8678
                                FROM DUAL
8679
                             ));
8680
 
3959 dpurdie 8681
      proc_rec  proc_cur%ROWTYPE;
1373 dpurdie 8682
   BEGIN
8683
      OPEN proc_cur;
8684
 
8685
      FETCH proc_cur
8686
       INTO proc_rec;
8687
 
8688
      WHILE proc_cur%FOUND
8689
      LOOP
3959 dpurdie 8690
         INSERT INTO package_processes (proc_id, pv_id)
8691
              VALUES (proc_rec.proc_id, npvid);
1373 dpurdie 8692
 
8693
         SELECT prc.proc_name
8694
           INTO processname
8695
           FROM processes prc
8696
          WHERE prc.proc_id = proc_rec.proc_id;
8697
 
8698
         -- Log Action --
8699
         log_action (npvid,
8700
                     'process_add',
8701
                     nuserid,
8702
                     'Added process with health tag ' || processname
8703
                    );
8704
 
8705
         FETCH proc_cur
8706
          INTO proc_rec;
8707
      END LOOP;
3959 dpurdie 8708
 
8709
      CLOSE proc_cur;
1373 dpurdie 8710
   END;
8711
 
8712
/*-------------------------------------------------------------------------------------------------------*/
8713
   PROCEDURE remove_process (
8714
      nprocid   IN   package_processes.proc_id%TYPE,
8715
      npvid     IN   package_processes.pv_id%TYPE,
8716
      nuserid   IN   NUMBER
8717
   )
8718
   IS
8719
      processname   VARCHAR2 (4000);
8720
   BEGIN
8721
      SELECT prc.proc_name
8722
        INTO processname
8723
        FROM processes prc
8724
       WHERE prc.proc_id = nprocid;
8725
 
8726
      DELETE FROM package_processes
8727
            WHERE proc_id = nprocid AND pv_id = npvid;
8728
 
8729
      -- Log Action --
8730
      log_action (npvid,
8731
                  'process_remove',
8732
                  nuserid,
8733
                  'Removed process with health tag ' || processname
8734
                 );
8735
   END;
8736
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8737
   /*
8738
   ** Author: Rupesh Solanki
8739
   ** Purpose: To move package versions from one release to another
8740
   ** Release: 4th September 2006
8741
   */
8742
   PROCEDURE move_package (
8743
      npvid        IN package_versions.pv_id%TYPE,
8744
      nrtagid      IN release_tags.rtag_id%TYPE,
8745
      nnewrtagid   IN release_tags.rtag_id%TYPE,
8746
      nuserid      IN NUMBER
8747
   )
8748
   IS
1373 dpurdie 8749
 
3959 dpurdie 8750
      oldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);
8751
 
8752
   BEGIN
8753
      SELECT rtag_name into oldrtag_name
8754
      FROM RELEASE_TAGS
8755
      WHERE rtag_id = nrtagid;
8756
 
8757
      SELECT rtag_name into newrtag_name
8758
      FROM RELEASE_TAGS
8759
      WHERE rtag_id = nnewrtagid;
8760
 
8761
      /* Table Work In Progress*/
8762
      UPDATE WORK_IN_PROGRESS
8763
      SET RTAG_ID = nnewrtagid
8764
      WHERE RTAG_ID = nrtagid
8765
      AND PV_ID = npvid;
8766
 
8767
      /* Table PLANNED*/
8768
      UPDATE PLANNED
8769
      SET RTAG_ID = nnewrtagid
8770
      WHERE RTAG_ID = nrtagid
8771
      AND PV_ID = npvid;
8772
 
8773
      /* Table PEGGED_VERSIONS */
8774
      DELETE FROM PEGGED_VERSIONS pegv
8775
      WHERE pegv.RTAG_ID = nrtagid
8776
      AND pegv.PV_ID = npvid;
8777
 
8778
      /* Table ADVISORY_RIPPLE*/
8779
      DELETE FROM ADVISORY_RIPPLE
8780
      WHERE RTAG_ID = nrtagid
8781
      AND PV_ID = npvid;
8782
 
8783
 
1373 dpurdie 8784
      -- Log Action --
8785
      log_action (npvid,
8786
                  'move_package_version',
8787
                  nuserid,
8788
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
3959 dpurdie 8789
                 );
8790
   END;
8791
 
1373 dpurdie 8792
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8793
   /*
8794
   ** Author: Rupesh Solanki
8795
   ** Purpose: To modify the product state from integration to test to deployment
8796
   ** Release: 25th January 2006
8797
   */
8798
   PROCEDURE modify_product_state (
8799
      npvid    IN package_versions.pv_id%TYPE,
8800
      nrtagid  IN release_tags.rtag_id%TYPE,
8801
      nstateid IN product_states.state_id%TYPE,
8802
      nuserid  IN NUMBER
1373 dpurdie 8803
   ) IS
3959 dpurdie 8804
 
8805
      sStateName VARCHAR2(4000);
8806
      sRtagName VARCHAR2(4000);
8807
 
8808
   BEGIN
8809
 
8810
      UPDATE RELEASE_CONTENT
8811
      SET PRODUCT_STATE = nstateid
8812
      WHERE PV_ID = npvid
8813
      AND RTAG_ID = nrtagid;
8814
 
8815
 
8816
      SELECT STATE INTO sStateName
8817
      FROM PRODUCT_STATES
8818
      WHERE STATE_ID = nstateid;
8819
 
8820
      SELECT RTAG_NAME into sRtagName
8821
      FROM RELEASE_TAGS
8822
      WHERE RTAG_ID = nrtagid;
8823
 
8824
 
8825
      -- Log Action --
8826
      log_action (npvid,
8827
                  'modify_product_state',
8828
                     nuserid,
8829
                     sStateName || ' in '|| sRtagName
8830
                  );
8831
   END;
8832
/*-------------------------------------------------------------------------------------------------------*/
8833
   /*
8834
   ** Author: Jeremy Tweddle
8835
   ** Date: 24/Aug/2007
8836
   */
8837
   PROCEDURE add_code_review_url (
8838
      npvid           IN    NUMBER,
8839
      nprojid         IN    NUMBER,
8840
      surl            IN    VARCHAR2,
8841
      sreason         IN    VARCHAR2,
4553 dpurdie 8842
      ddateofreview   IN    VARCHAR2
3959 dpurdie 8843
   ) IS
8844
 
8845
      ncrid NUMBER;
8846
 
8847
   BEGIN
8848
 
8849
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
8850
 
4553 dpurdie 8851
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review, last_modified )
8852
      VALUES ( ncrid, npvid, nprojid, surl, sreason, TO_DATE( ddateofreview,'DD/MM/YYYY' ), ora_sysdate );
3959 dpurdie 8853
 
8854
   END;
8855
/*-------------------------------------------------------------------------------------------------------*/
8856
   /*
8857
   ** Author: Jeremy Tweddle
8858
   ** Date: 22/Aug/2007
8859
   */
8860
   PROCEDURE update_code_review_url (
8861
      ncrid           IN    NUMBER,
8862
      nprojid         IN    NUMBER,
8863
      surl            IN    VARCHAR2,
4553 dpurdie 8864
      sreason         IN    VARCHAR2,
8865
      ddateofreview   IN    VARCHAR2
3959 dpurdie 8866
   ) IS
8867
 
8868
   BEGIN
8869
 
8870
      UPDATE code_review_url
8871
      SET url = surl,
8872
          proj_id = nprojid,
8873
          reason = sreason,
4553 dpurdie 8874
          date_of_review = TO_DATE( ddateofreview,'DD/MM/YYYY' ), 
3959 dpurdie 8875
          last_modified = ora_sysdate
8876
      WHERE cr_id = ncrid;
8877
 
8878
   END;
4553 dpurdie 8879
 
3959 dpurdie 8880
/*-------------------------------------------------------------------------------------------------------*/
8881
   /*
8882
   ** Author: Jeremy Tweddle
8883
   ** Date: 22/Aug/2007
8884
   */
8885
   PROCEDURE remove_code_review_url (
8886
      ncrid  IN    NUMBER
8887
   ) IS
8888
 
8889
   BEGIN
8890
      DELETE FROM code_review_url
8891
      WHERE cr_id = ncrid;
8892
   END;
8893
/*-------------------------------------------------------------------------------------------------------*/
8894
END pk_package;
4040 dpurdie 8895
 
1374 dpurdie 8896
/
1373 dpurdie 8897
 
4040 dpurdie 8898
/
8899
--------------------------------------------------------
8900
--  DDL for Package Body PK_PLANNED
8901
--------------------------------------------------------
8902
 
3959 dpurdie 8903
  CREATE OR REPLACE PACKAGE BODY "PK_PLANNED" IS
8904
 
1373 dpurdie 8905
/*
8906
------------------------------
3959 dpurdie 8907
||  Last Modified:  G.Huddy
8908
||  Modified Date:  05/Aug/2008
8909
||  Body Version:   1.2
1373 dpurdie 8910
------------------------------
8911
*/
8912
 
8913
 
8914
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8915
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 8916
 
3959 dpurdie 8917
    oldPvId NUMBER;
8918
    ReleaseLocation VARCHAR2(4000);
8919
    IsPatch CHAR(1) := NULL;
8920
    sLocation VARCHAR2(4000) := NULL;
8921
    nRtagIdLocation NUMBER;
1373 dpurdie 8922
 
8923
 
8924
 
3959 dpurdie 8925
BEGIN
8926
    /*--------------- Business Rules Here -------------------*/
8927
    /*-------------------------------------------------------*/
1373 dpurdie 8928
 
3959 dpurdie 8929
    BEGIN
8930
        -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
8931
        SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
8932
          FROM PLANNED pl,
8933
               RELEASE_TAGS rt,
8934
               PROJECTS proj
8935
         WHERE pl.PV_ID = newPvId
8936
           AND pl.RTAG_ID = rt.RTAG_ID
8937
           AND rt.OFFICIAL != 'Y'
8938
           AND rt.PROJ_ID = proj.PROJ_ID;
1373 dpurdie 8939
 
3959 dpurdie 8940
        EXCEPTION
8941
            WHEN NO_DATA_FOUND THEN
8942
                sLocation := NULL;
8943
    END;
1373 dpurdie 8944
 
3959 dpurdie 8945
 
8946
 
8947
    IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
8948
 
8949
        -- Add to "Pending" area
8950
        INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
8951
        VALUES( RtagId, newPvId, ViewId, 'R' );
8952
 
8953
 
8954
        /* LOG ACTION */
8955
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
8956
          FROM PROJECTS proj,
8957
               RELEASE_TAGS rt
8958
         WHERE rt.PROJ_ID = proj.PROJ_ID
8959
           AND rt.RTAG_ID = RtagId;
8960
 
8961
        Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
8962
 
8963
    ELSE
8964
 
8965
        RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
8966
 
8967
    END IF;
8968
 
8969
END;
1373 dpurdie 8970
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8971
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 8972
 
3959 dpurdie 8973
    ReleaseLocation VARCHAR2(4000);
1373 dpurdie 8974
 
3959 dpurdie 8975
BEGIN
1373 dpurdie 8976
 
3959 dpurdie 8977
    /*--------------- Business Rules Here -------------------*/
8978
    /*-------------------------------------------------------*/
1373 dpurdie 8979
 
8980
 
3959 dpurdie 8981
    -- Get release location for logging pusposes
8982
    SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
8983
      FROM PROJECTS proj,
8984
           RELEASE_TAGS rt
8985
     WHERE rt.PROJ_ID = proj.PROJ_ID
8986
       AND rt.RTAG_ID = RtagId;
1373 dpurdie 8987
 
8988
 
3959 dpurdie 8989
    -- Delete from Work In Progress
8990
    DELETE
8991
      FROM PLANNED pl
8992
     WHERE pl.RTAG_ID = RtagId
8993
       AND pl.PV_ID = PvId;
1373 dpurdie 8994
 
3959 dpurdie 8995
    Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
8996
 
8997
 
8998
 
8999
 
9000
END;
1373 dpurdie 9001
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9002
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
1373 dpurdie 9003
 
3959 dpurdie 9004
    ReturnValue NUMBER;
1373 dpurdie 9005
 
3959 dpurdie 9006
BEGIN
9007
    SELECT pl.VIEW_ID INTO ReturnValue
9008
      FROM PLANNED pl
9009
     WHERE pl.RTAG_ID = RtagId
9010
       AND pl.PV_ID = PvId;
9011
 
9012
    RETURN ReturnValue;
9013
END;
9014
/*-------------------------------------------------------------------------------------------------------*/
9015
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
9016
 
9017
    IsBaseView CHAR(1);
9018
 
9019
BEGIN
9020
 
9021
    -- Check if the view is BASE VIEW
9022
    SELECT vi.BASE_VIEW INTO IsBaseView
9023
      FROM VIEWS vi
9024
     WHERE vi.VIEW_ID = ViewId;
9025
 
9026
 
9027
    IF (IsBaseView = 'Y') THEN
9028
        -- Get Base view content
9029
        OPEN RecordSet FOR
9030
        SELECT 0 AS PKG_STATE,
9031
               NULL AS DEPRECATED_STATE,
9032
               pv.pv_id,
9033
               pkg.pkg_name,
9034
               pv.pkg_version,
9035
               pv.dlocked,
9036
               pv.pv_description,
9037
               pv.BUILD_TYPE,
9038
               rel.operation
9039
          FROM PLANNED rel,
9040
               packages pkg,
9041
               package_versions pv
9042
         WHERE pv.pkg_id = pkg.pkg_id
9043
           AND rel.pv_id = pv.pv_id
9044
           AND rel.VIEW_ID = ViewId
9045
           AND rel.RTAG_ID = RtagId
9046
         ORDER BY UPPER(pkg.PKG_NAME);
9047
 
9048
    ELSE
9049
 
9050
        -- Get non base view content
9051
        OPEN RecordSet FOR
9052
        SELECT 0 AS PKG_STATE,
9053
               NULL AS DEPRECATED_STATE,
9054
               pv.pv_id,
9055
               pkg.pkg_name,
9056
               pv.pkg_version,
9057
               pv.dlocked,
9058
               pv.pv_description,
9059
               pv.BUILD_TYPE,
9060
               rel.operation
9061
          FROM PLANNED rel,
9062
               packages pkg,
9063
               package_versions pv,
9064
               VIEW_DEF vd
9065
         WHERE pv.pkg_id = pkg.pkg_id
9066
           AND rel.pv_id = pv.pv_id
9067
           AND rel.RTAG_ID = RtagId
9068
           AND vd.VIEW_ID = ViewId
9069
           AND vd.PKG_ID = pv.PKG_ID
9070
         ORDER BY UPPER(pkg.PKG_NAME);
9071
 
9072
    END IF;
9073
 
9074
 
9075
END;
9076
/*-------------------------------------------------------------------------------------------------------*/
9077
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
9078
 
9079
BEGIN
9080
 
9081
    UPDATE PLANNED pl SET
9082
    pl.VIEW_ID = NewViewId
9083
    WHERE pl.PV_ID = PvId
9084
      AND pl.RTAG_ID = RtagId;
9085
 
9086
END;
9087
/*-------------------------------------------------------------------------------------------------------*/
9088
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
9089
-- version of a package as part of a release-to-release merge operation carried out within release manager.
9090
-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its
9091
-- opposite operation, if the opposite already exists in the planned table. This supports user activity
9092
-- via the Release Manager merge manager display
9093
 
9094
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
9095
 
9096
    ReleaseLocation VARCHAR2(4000);
9097
 
9098
        entryExists NUMBER;
9099
        existingOperation CHAR;
9100
BEGIN
9101
    /*--------------- Business Rules Here -------------------*/
9102
    /*-------------------------------------------------------*/
9103
 
9104
      -- Determine if the specified PV_ID already exists in the planned table....
9105
      SELECT COUNT (pl.pv_id) INTO entryExists
9106
      FROM PLANNED pl
9107
      WHERE pl.pv_id = newPvId
9108
      AND pl.rtag_id = RtagId
9109
      AND pl.view_id = ViewId;
9110
 
9111
      -- If the specified PV_ID already exists in the planned table....
9112
      IF entryExists = 1 THEN
9113
 
9114
         -- Get the operation for the existing entry
9115
         SELECT pl.operation INTO existingOperation
9116
         FROM PLANNED pl
9117
         WHERE pl.pv_id = newPvId
9118
         AND pl.rtag_id = RtagId
9119
         AND pl.view_id = ViewId;
9120
 
9121
         -- Is the specified merge operation the opposite of the existing entry?
9122
         -- If it is not, then there is nothing to do, otherwise...
9123
         -- NOTE: A = Add, S = Subtract
9124
         IF (mergeOperation = 'S' AND existingOperation = 'A')
9125
            OR (mergeOperation = 'A' AND existingOperation = 'S') THEN
9126
 
9127
           -- It is the opposite, so effectively it cancels the existing entry
9128
           -- Remove the entry from the planned table
9129
           DELETE
9130
            FROM PLANNED pl
9131
           WHERE pl.pv_id = newPvId
9132
             AND pl.rtag_id = RtagId
9133
             AND pl.view_id = ViewId;
9134
 
9135
           -- Log action
9136
           SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9137
             FROM PROJECTS proj,
9138
                  RELEASE_TAGS rt
9139
            WHERE rt.PROJ_ID = proj.PROJ_ID
9140
              AND rt.RTAG_ID = RtagId;
9141
 
9142
           Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 9143
         END IF;
3959 dpurdie 9144
      ELSE
9145
         -- Add to Planned tabled
9146
         INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
9147
         VALUES( RtagId, newPvId, ViewId, mergeOperation );
1373 dpurdie 9148
 
3959 dpurdie 9149
         -- Log Action
9150
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9151
          FROM PROJECTS proj,
9152
               RELEASE_TAGS rt
9153
         WHERE rt.PROJ_ID = proj.PROJ_ID
9154
         AND   rt.RTAG_ID = RtagId;
9155
 
9156
         Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 9157
      END IF;
9158
 
3959 dpurdie 9159
END;
1373 dpurdie 9160
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9161
END PK_PLANNED;
4040 dpurdie 9162
 
3959 dpurdie 9163
/
1373 dpurdie 9164
 
4040 dpurdie 9165
/
9166
--------------------------------------------------------
9167
--  DDL for Package Body PK_PROJECT
9168
--------------------------------------------------------
9169
 
3959 dpurdie 9170
  CREATE OR REPLACE PACKAGE BODY "PK_PROJECT" IS
1373 dpurdie 9171
 
3959 dpurdie 9172
    /*------------------------------------------------------------------------*/
9173
    PROCEDURE update_base_url (
9174
    nprojid   IN  projects.proj_id%TYPE,
9175
    sbaseurl  IN  VARCHAR2
9176
    ) IS
9177
    BEGIN
1373 dpurdie 9178
 
3959 dpurdie 9179
    UPDATE projects
9180
    SET base_url = sbaseurl
9181
    WHERE proj_id = nprojid;
9182
 
9183
    END update_base_url;
9184
 
9185
/*------------------------------------------------------------------------*/
9186
    PROCEDURE update_project_config (
9187
    nprojid   IN  projects.proj_id%TYPE,
9188
    sbaseurl  IN  VARCHAR2,
9189
    sjirakey  IN  VARCHAR2
9190
    ) IS
9191
    BEGIN
9192
 
9193
    UPDATE projects
9194
    SET base_url = sbaseurl,
9195
        jira_key = sjirakey
9196
    WHERE proj_id = nprojid;
9197
 
9198
    END update_project_config;
9199
    /*------------------------------------------------------------------------*/
9200
 
9201
    END pk_project;
4040 dpurdie 9202
 
3959 dpurdie 9203
/
9204
 
4040 dpurdie 9205
/
9206
--------------------------------------------------------
9207
--  DDL for Package Body PK_RELEASE
9208
--------------------------------------------------------
9209
 
3959 dpurdie 9210
  CREATE OR REPLACE PACKAGE BODY "PK_RELEASE" IS
9211
 
1373 dpurdie 9212
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9213
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
1373 dpurdie 9214
 
3959 dpurdie 9215
RtagId NUMBER;
9216
ParentRtagId NUMBER;
9217
RecCount NUMBER := 0;
9218
VtreeId NUMBER;
1373 dpurdie 9219
 
3959 dpurdie 9220
BEGIN
9221
   /*--------------- Business Rules Here -------------------*/
9222
   -- Check for missing parameters
9223
   IF (sReleaseName IS NULL) OR (nUserId IS NULL)
9224
   THEN
9225
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
1373 dpurdie 9226
 
3959 dpurdie 9227
   END IF;
1373 dpurdie 9228
 
3959 dpurdie 9229
 
9230
   -- Check for duplicate Release Names
9231
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9232
     FROM RELEASE_TAGS rt
9233
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9234
      AND rt.PROJ_ID = nProjId;
9235
 
9236
   IF (RecCount > 0) THEN
9237
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
9238
   END IF;
9239
   /*-------------------------------------------------------*/
9240
 
9241
 
9242
   -- Get rtag_id
9243
   SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
9244
 
9245
   SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
9246
 
9247
 
9248
 
9249
   -- Get Parent RtagId
9250
   ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
9251
 
9252
   -- If the parent RTAG is NOT in this project then we cannot use it.
9253
   -- We must re-assign the parent to be the new release's RTAG_ID instead
9254
   -- else it will not show up in the projects release tree (DEVI-55480)
9255
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9256
     FROM RELEASE_TAGS rt
9257
    WHERE rt.RTAG_ID = ParentRtagId
9258
      AND rt.PROJ_ID = nProjId;
9259
 
9260
   IF (RecCount = 0) THEN
9261
     ParentRtagId := RtagId;
9262
   END IF;
9263
 
9264
   -- Create new release
9265
   INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID,
9266
                        OFFICIAL, REBUILD_ENV, REBUILD_STAMP,
9267
                        PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
9268
   VALUES ( RtagId,
9269
          sReleaseName,
9270
          sReleaseComments,
9271
          ORA_SYSDATE,
9272
          nUserId,
9273
          'N',
9274
          'N',
9275
          0,
9276
          ParentRtagId,
9277
          nProjId,
9278
          VtreeId );
9279
 
9280
   -- If a source release is provided, clone its config spec branch information into the new release (DEVI-56650)
9281
   IF (NOT nSourceRtagId IS NULL)
9282
   THEN
9283
      UPDATE RELEASE_TAGS rtd
9284
      SET rtd.config_spec_branch = (SELECT rts.CONFIG_SPEC_BRANCH FROM RELEASE_TAGS rts WHERE rts.RTAG_ID = nSourceRtagId)
9285
      WHERE rtd.RTAG_ID = RtagId;
9286
   END IF;
9287
 
9288
   -- Update display Order
9289
   UPDATE_DISPLAY_ORDER ( nProjId );
9290
 
9291
   /* Log Project Action */
9292
   Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
9293
 
9294
 
9295
   -- Import Release Contents
9296
   IF (NOT nSourceRtagId IS NULL) THEN
9297
      Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
9298
   END IF;
9299
 
9300
END;
9301
/*-------------------------------------------------------------------------------------------------------*/
9302
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
9303
 
9304
 
9305
BEGIN
9306
 
9307
 
9308
   /*--------------- Business Rules Here -------------------*/
9309
   /*-------------------------------------------------------*/
9310
 
9311
   UPDATE RELEASE_TAGS urt SET
9312
   urt.DISPLAY_ORDER = (
9313
                  SELECT qry.REC_NUM
9314
                    FROM (
9315
                        SELECT rel.*, ROWNUM AS REC_NUM
9316
                          FROM (
9317
 
9318
                                SELECT rt.RTAG_ID,
9319
                                    rt.DISPLAY_ORDER,
9320
                                     DECODE( rt.PARENT_RTAG_ID,
9321
                                             rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
9322
                                FROM RELEASE_TAGS rt
9323
                               WHERE rt.PROJ_ID = nProjId
9324
 
9325
                                ) rel
9326
                        START WITH rel.PARENT_RTAG_ID = 0
9327
                        CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID
9328
                        ORDER SIBLINGS BY rel.DISPLAY_ORDER
9329
                        ) qry
9330
                     WHERE qry.RTAG_ID = urt.RTAG_ID
9331
                  )
9332
   WHERE urt.PROJ_ID = nProjId;
9333
 
9334
END;
9335
/*-------------------------------------------------------------------------------------------------------*/
9336
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
9337
 
9338
   nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9339
   SeqNum NUMBER;
9340
 
9341
BEGIN
9342
 
9343
 
9344
   /*--------------- Business Rules Here -------------------*/
9345
   /*-------------------------------------------------------*/
9346
 
9347
   nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
9348
 
9349
   -- Set start sequence number
9350
   SeqNum := 1;
9351
 
9352
   FOR i IN 1..nIdCollector.COUNT
9353
   LOOP
9354
 
9355
      -- Update new display order
9356
      UPDATE RELEASE_TAGS rt SET
9357
         rt.DISPLAY_ORDER = SeqNum
9358
       WHERE rt.PROJ_ID = nProjId
9359
         AND rt.RTAG_ID = nIdCollector(i);
9360
 
9361
      SeqNum := SeqNum + 1;
9362
 
9363
   END LOOP;
9364
 
9365
END;
9366
/*-------------------------------------------------------------------------------------------------------*/
9367
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
9368
 
9369
RecCount NUMBER := 0;
9370
ProjId NUMBER;
9371
 
9372
BEGIN
9373
 
9374
 
9375
   /*--------------- Business Rules Here -------------------*/
9376
   -- Check for missing parameters
9377
   IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
9378
   THEN
9379
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
9380
 
9381
   END IF;
9382
 
9383
 
9384
   -- Check for duplicate Release Names
9385
   SELECT rt.PROJ_ID INTO ProjId
9386
     FROM RELEASE_TAGS rt
9387
    WHERE rt.RTAG_ID = nRtagId;
9388
 
9389
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9390
     FROM RELEASE_TAGS rt
9391
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9392
      AND rt.RTAG_ID != nRtagId
9393
      AND rt.PROJ_ID = ProjId;
9394
 
9395
 
9396
   IF (RecCount > 0) THEN
9397
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
9398
   END IF;
9399
   /*-------------------------------------------------------*/
9400
 
9401
 
9402
 
9403
   -- Update release details
9404
   UPDATE RELEASE_TAGS rt SET
9405
   rt.RTAG_NAME = sReleaseName,
9406
   rt.DESCRIPTION = sReleaseComments,
9407
   rt.PARENT_RTAG_ID = nParentRtagId,
9408
   rt.ASSOC_MASS_REF = nMASSRtagId,
9409
   rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
9410
   rt.OWNER_EMAIL = sOwnerEmail,
9411
   rt.PRODUCT_STATE_USED = cState
9412
   WHERE rt.RTAG_ID = nRtagId;
9413
 
9414
   -- Update display Order
9415
   UPDATE_DISPLAY_ORDER ( ProjId );
9416
 
9417
   /* Log Project Action */
9418
   Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
9419
 
9420
 
9421
 
9422
 
9423
END;
9424
/*-------------------------------------------------------------------------------------------------------*/
9425
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
9426
 
9427
   RecCount NUMBER := 0;
9428
   sReleaseId VARCHAR2(4000);
9429
   ProjId NUMBER;
9430
 
9431
BEGIN
9432
   /*--------------- Business Rules Here -------------------*/
9433
   IF (nRtagId IS NULL)
9434
   THEN
9435
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9436
   END IF;
9437
 
9438
 
9439
 
9440
   -- Check for any kids
9441
   SELECT COUNT( rt.RTAG_ID ) INTO RecCount
9442
     FROM RELEASE_TAGS rt
9443
    WHERE rt.PARENT_RTAG_ID = nRtagId
9444
      AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
9445
 
9446
   IF (RecCount > 0) THEN
9447
      RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
9448
   END IF;
9449
   /*-------------------------------------------------------*/
9450
 
9451
   -- Clear the release contents
9452
   Clean_Release_Contents ( nRtagId, nUserId );
9453
 
9454
   /* Log Project Action */
9455
   SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
9456
     FROM RELEASE_TAGS rt
9457
    WHERE rt.RTAG_ID = nRtagId;
9458
 
9459
   Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
9460
 
9461
 
9462
   -- Remove Release
9463
   DELETE
9464
     FROM RELEASE_TAGS rt
9465
    WHERE rt.RTAG_ID = nRtagId;
9466
 
9467
 
9468
 
9469
END;
9470
/*-------------------------------------------------------------------------------------------------------*/
9471
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
9472
 
9473
   sSourceLocation VARCHAR2(4000);
9474
   sTargetLocation VARCHAR2(4000);
9475
   ProjId NUMBER;
9476
   cReleaseMode CHAR(1);
9477
   RconId NUMBER;
9478
 
9479
   -- this cursor gets the source release daemon configurations, ensuring that the
9480
   -- first record will be the master daemon, and subsequent records will be the slaves.
9481
   CURSOR curSrcReleaseConfigs IS
4308 dpurdie 9482
    SELECT daemon_hostname, gbe_id, gbe_buildfilter, bmcon_id, daemon_mode
3959 dpurdie 9483
     FROM RELEASE_CONFIG rc
9484
    WHERE rc.RTAG_ID = nSourceRtagId
9485
    ORDER BY rc.daemon_mode;
9486
    recSrcReleaseConfigs curSrcReleaseConfigs%ROWTYPE;
9487
 
9488
    -- this cursor looks for target release daemons
9489
   CURSOR curTgtReleaseConfigs IS
9490
    SELECT rcon_id
9491
     FROM RELEASE_CONFIG rc
9492
    WHERE rc.RTAG_ID = nTargetRtagId;
9493
    recTgtReleaseConfigs curTgtReleaseConfigs%ROWTYPE;
9494
 
9495
    -- this cursor looks for target release daemon run level entries
9496
   CURSOR curTgtReleaseConfigRunLevel IS
9497
    SELECT current_run_level
9498
     FROM RUN_LEVEL rl
9499
    WHERE rl.RCON_ID = recTgtReleaseConfigs.rcon_id;
9500
    recTgtReleaseConfigRunLevel curTgtReleaseConfigRunLevel%ROWTYPE;
9501
 
9502
BEGIN
9503
   /*--------------- Business Rules Here -------------------*/
9504
   IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
9505
   THEN
9506
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
9507
   END IF;
9508
 
9509
   IF (nSourceRtagId = nTargetRtagId) THEN
9510
      RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
9511
   END IF;
9512
 
9513
 
9514
   -- Check if Target release is in OPEN mode
9515
   SELECT rt.OFFICIAL  INTO  cReleaseMode
9516
     FROM RELEASE_TAGS rt
9517
    WHERE rt.RTAG_ID = nTargetRtagId;
9518
 
9519
   IF (cReleaseMode != 'N') THEN
9520
      RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
9521
   END IF;
9522
 
9523
   -- check that the target release's daemons are all paused before we allow an import operation
9524
   OPEN curTgtReleaseConfigs;
9525
   FETCH curtgtReleaseConfigs INTO recTgtReleaseConfigs;
9526
 
9527
   WHILE curTgtReleaseConfigs%FOUND
9528
   LOOP
9529
      OPEN curTgtReleaseConfigRunLevel;
9530
      FETCH curTgtReleaseConfigRunLevel INTO recTgtReleaseConfigRunLevel;
9531
      IF curTgtReleaseConfigRunLevel%FOUND THEN
9532
         IF (recTgtReleaseConfigRunLevel.current_run_level IS NULL) OR
9533
            (recTgtReleaseConfigRunLevel.current_run_level <> 2) THEN
9534
            RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
9535
         END IF;
1373 dpurdie 9536
      ELSE
3959 dpurdie 9537
         -- we don't know what the daemon run level is so err on the side of caution
9538
         RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
1373 dpurdie 9539
      END IF;
3959 dpurdie 9540
      CLOSE curTgtReleaseConfigRunLevel;
1373 dpurdie 9541
 
3959 dpurdie 9542
      FETCH curTgtReleaseConfigs INTO recTgtReleaseConfigs;
9543
   END LOOP;
1373 dpurdie 9544
 
3959 dpurdie 9545
   CLOSE curTgtReleaseConfigs;
1373 dpurdie 9546
 
9547
 
3959 dpurdie 9548
   /*-------------------------------------------------------*/
1373 dpurdie 9549
 
3959 dpurdie 9550
   -- Clean target contents
9551
   Clean_Release_Contents ( nTargetRtagId, nUserId );
1373 dpurdie 9552
 
9553
 
3959 dpurdie 9554
   -- Import Released Area Contents
9555
   INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE )
9556
   SELECT nTargetRtagId AS RTAG_ID,
9557
         rc.PV_ID,
9558
         rc.BASE_VIEW_ID,
9559
         rc.INSERT_STAMP,
9560
         rc.INSERTOR_ID,
9561
         rc.PKG_STATE,
9562
         rc.PKG_ID,
9563
         rc.DEPRECATED_STATE
9564
     FROM RELEASE_CONTENT rc
9565
    WHERE rc.RTAG_ID = nSourceRtagId;
9566
 
9567
 
9568
   -- Import any Pegged Version settings from the source release
9569
   INSERT INTO PEGGED_VERSIONS ( RTAG_ID, PV_ID )
9570
   SELECT nTargetRtagId AS RTAG_ID,
9571
          pegv.PV_ID
9572
     FROM PEGGED_VERSIONS pegv
9573
    WHERE pegv.RTAG_ID = nSourceRtagId;
9574
 
9575
   -- Import any Advisory Ripple settings from the source release
9576
   INSERT INTO ADVISORY_RIPPLE ( RTAG_ID, PV_ID )
9577
   SELECT nTargetRtagId AS RTAG_ID,
9578
          avr.PV_ID
9579
     FROM ADVISORY_RIPPLE avr
9580
    WHERE avr.RTAG_ID = nSourceRtagId;
9581
 
9582
 
9583
   --Import Release Configuration Information
9584
   OPEN curSrcReleaseConfigs;
9585
   FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
9586
 
4308 dpurdie 9587
     WHILE curSrcReleaseConfigs%FOUND
3959 dpurdie 9588
   LOOP
9589
      -- add a daemon to the target release
4308 dpurdie 9590
      PK_BUILDAPI.duplicate_daemon_config( nTargetRtagId, 
9591
                                     recSrcReleaseConfigs.bmcon_id, 
9592
                                     recSrcReleaseConfigs.daemon_hostname, 
9593
                                     recSrcReleaseConfigs.gbe_id, 
9594
                                     recSrcReleaseConfigs.daemon_mode ,
9595
                                     recSrcReleaseConfigs.gbe_buildfilter );
3959 dpurdie 9596
 
9597
      FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
9598
   END LOOP;
9599
 
9600
   CLOSE curSrcReleaseConfigs;
9601
 
9602
 
9603
 
9604
   -- Import Ignore Warning states
9605
   INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
9606
   SELECT nTargetRtagId AS RTAG_ID,
9607
          igw.PV_ID,
9608
          igw.DPV_ID
9609
     FROM IGNORE_WARNINGS igw
9610
    WHERE igw.rtag_id = nSourceRtagId;
9611
 
9612
 
9613
   /* Log Project Action */
9614
   -- Get Source Location
9615
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
9616
     FROM RELEASE_TAGS rt,
9617
           PROJECTS pr
9618
    WHERE rt.PROJ_ID = pr.PROJ_ID
9619
      AND rt.RTAG_ID = nSourceRtagId;
9620
 
9621
   -- Get Target Location
9622
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
9623
     FROM RELEASE_TAGS rt,
9624
           PROJECTS pr
9625
    WHERE rt.PROJ_ID = pr.PROJ_ID
9626
      AND rt.RTAG_ID = nTargetRtagId;
9627
 
9628
   -- Get project id
9629
   SELECT rt.PROJ_ID  INTO  ProjId
9630
     FROM RELEASE_TAGS rt
9631
    WHERE rt.RTAG_ID = nTargetRtagId;
9632
 
9633
   Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );
9634
END;
9635
 
9636
 
9637
 
1373 dpurdie 9638
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9639
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
1373 dpurdie 9640
 
3959 dpurdie 9641
   RecCount NUMBER;
9642
        rconIdList VARCHAR2(4000);
1373 dpurdie 9643
 
3959 dpurdie 9644
BEGIN
9645
   /*--------------- Business Rules Here -------------------*/
9646
   IF (nRtagId IS NULL)
9647
   THEN
9648
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9649
   END IF;
1373 dpurdie 9650
 
9651
 
3959 dpurdie 9652
   -- Check if other release references this release
9653
   SELECT COUNT( rl.RTAG_ID ) INTO RecCount
9654
     FROM RELEASE_LINKS rl
9655
    WHERE rl.REF_RTAG_ID = nRtagId;
1373 dpurdie 9656
 
3959 dpurdie 9657
   IF (RecCount > 0) THEN
9658
      RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
9659
   END IF;
9660
   /*-------------------------------------------------------*/
1373 dpurdie 9661
 
3959 dpurdie 9662
   -- Delete Release links
9663
   DELETE
9664
     FROM RELEASE_LINKS rl
9665
    WHERE rl.RTAG_ID = nRtagId;
9666
 
9667
   -- Delete ignore warning
9668
   DELETE
9669
     FROM IGNORE_WARNINGS iw
9670
    WHERE iw.RTAG_ID = nRtagId;
9671
 
9672
 
9673
   -- Delete Build Order cached calculations
9674
   DELETE
9675
     FROM BUILD_ORDER bo
9676
    WHERE bo.RTAG_ID = nRtagId;
9677
 
9678
 
9679
   -- Delete Notification History
9680
   DELETE
9681
     FROM NOTIFICATION_HISTORY nh
9682
    WHERE nh.RTAG_ID = nRtagId;
9683
 
9684
 
9685
   -- Delete Released Area Contents
9686
   DELETE
9687
     FROM RELEASE_CONTENT rc
9688
    WHERE rc.RTAG_ID = nRtagId;
9689
 
9690
 
9691
   -- Delete Work In Progress Area Contents
9692
   DELETE
9693
     FROM WORK_IN_PROGRESS wip
9694
    WHERE wip.RTAG_ID = nRtagId;
9695
 
9696
 
9697
   -- Delete Pending Area Contents
9698
   DELETE
9699
     FROM PLANNED pl
9700
    WHERE pl.RTAG_ID = nRtagId;
9701
 
9702
   -- Delete Deprecated Packages
9703
   DELETE
9704
     FROM DEPRECATED_PACKAGES dp
9705
    WHERE dp.RTAG_ID = nRtagId;
9706
 
9707
   -- Delete Project Action Log
9708
   DELETE
9709
     FROM PROJECT_ACTION_LOG pal
9710
    WHERE pal.RTAG_ID = nRtagId;
9711
 
9712
   -- Delete Do Not Ripple Contents
9713
   DELETE
9714
     FROM DO_NOT_RIPPLE dnr
9715
    WHERE dnr.RTAG_ID = nRtagId;
9716
 
9717
   -- Delete Dash Board Contents
9718
   DELETE
9719
     FROM DASH_BOARD db
9720
    WHERE db.RTAG_ID = nRtagId;
9721
 
9722
   -- Delete Advisory Ripple Contents
9723
   DELETE
9724
     FROM ADVISORY_RIPPLE adr
9725
    WHERE adr.RTAG_ID = nRtagId;
9726
 
9727
   -- Delete Archive Action Log
9728
   DELETE
9729
     FROM ARCHIVE_ACTION_LOG aal
9730
    WHERE aal.RTAG_ID = nRtagId;
9731
 
9732
   -- Delete Daemons For This Release
9733
   FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
9734
   LOOP
9735
      rconIdList := rconIdList || rcon.RCON_ID || ',';
9736
   END LOOP;
9737
 
9738
   pk_buildapi.DELETE_DAEMON(rconIdList);
9739
 
9740
   -- Delete Release Metrics Contents
9741
   DELETE
9742
     FROM RELEASE_METRICS rm
9743
    WHERE rm.RTAG_ID = nRtagId;
9744
 
9745
   -- Delete Release Configuration Contents
9746
   DELETE
9747
     FROM RELEASE_CONFIG rc
9748
    WHERE rc.RTAG_ID = nRtagId;
9749
 
9750
   -- Delete Pegged Version Contents
9751
   DELETE
9752
     FROM PEGGED_VERSIONS pegv
9753
    WHERE pegv.RTAG_ID = nRtagId;
9754
 
9755
END;
9756
/*-------------------------------------------------------------------------------------------------------*/
9757
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
9758
 
9759
   nSourceParentRtagId NUMBER;
9760
 
9761
BEGIN
9762
   /*--------------- Business Rules Here -------------------*/
9763
   IF (nRtagId IS NULL) OR (cIsBranch IS NULL)
9764
   THEN
9765
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
9766
   END IF;
9767
   /*-------------------------------------------------------*/
9768
 
9769
 
9770
   IF ( nSourceRtagId IS NULL ) THEN
9771
      -- Create new on main branch
9772
      RETURN nRtagId;
9773
 
9774
   ELSE
9775
      -- Create from source rtag_id
9776
 
9777
      -- Find parent of Source RtagId
9778
      SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
9779
        FROM RELEASE_TAGS rt
9780
       WHERE rt.RTAG_ID = nSourceRtagId;
9781
 
9782
      IF (UPPER(cIsBranch) = 'Y') THEN
9783
         RETURN nSourceRtagId;
9784
      ELSE
9785
         IF (nSourceRtagId = nSourceParentRtagId) THEN
9786
            RETURN nRtagId;
9787
         ELSE
9788
            RETURN nSourceParentRtagId;
1373 dpurdie 9789
         END IF;
9790
      END IF;
9791
 
3959 dpurdie 9792
 
9793
   END IF;
9794
 
9795
 
9796
END;
1373 dpurdie 9797
/*-------------------------------------------------------------------------------------------------------*/
9798
 
3959 dpurdie 9799
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
9800
--                       sNextVersion OUT VARCHAR2,
9801
--                       nNextLifeCycle OUT NUMBER,
9802
--                       nParentRtagId OUT NUMBER,
9803
--                       nProjId IN NUMBER ) IS
9804
--
9805
-- SourceBranchCount NUMBER;
9806
-- ProjRootVersion VARCHAR2(4000);
9807
-- LastLifeCycle NUMBER;
9808
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
9809
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
9810
--
9811
-- SourceProjId NUMBER;
9812
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
9813
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
9814
--
9815
-- BEGIN
9816
--    /*--------------- Business Rules Here -------------------*/
9817
--    /*-------------------------------------------------------*/
9818
--
9819
--
9820
--    BEGIN
9821
--       -- Get Project root version
9822
--       SELECT rt.RTAG_VERSION INTO ProjRootVersion
9823
--         FROM RELEASE_TAGS rt
9824
--        WHERE rt.PROJ_ID = nProjId
9825
--          AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
9826
--
9827
--       EXCEPTION
9828
--       WHEN NO_DATA_FOUND THEN
9829
--       ProjRootVersion := ROOT_VERSION_NOT_FOUND;
9830
--    END;
9831
--
9832
--
9833
--
9834
--
9835
--    BEGIN
9836
--       -- Get info for source rtagid
9837
--       SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
9838
--         FROM RELEASE_TAGS rt
9839
--        WHERE rt.RTAG_ID = nSourceRtagId;
9840
--
9841
--       EXCEPTION
9842
--       WHEN NO_DATA_FOUND THEN
9843
--       SourceProjId := NULL;
9844
--       SourceVersion := NULL;
9845
--       SourceLifeCycle := NULL;
9846
--    END;
9847
--
9848
--
9849
--    IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
9850
--
9851
--       /* Blank Release Required  OR  Release imported from other project */
9852
--
9853
--       IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
9854
--          /* No Releases found in the project, hence calculate next version available.  */
9855
--
9856
--          -- Set parent rtag
9857
--          nParentRtagId := SET_PARENT_AS_YOURSELF;
9858
--
9859
--
9860
--          BEGIN
9861
--             -- Get Next Available Global Root Version
9862
--             SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
9863
--               FROM RELEASE_TAGS rt
9864
--              WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
9865
--
9866
--             -- Set Next Rtag Version
9867
--             sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
9868
--
9869
--             -- Restart Lifecycle
9870
--             nNextLifeCycle := 0;
9871
--
9872
--
9873
--             EXCEPTION
9874
--             WHEN NO_DATA_FOUND THEN
9875
--             -- Release Manager has no releases, hence start from 1
9876
--             sNextVersion := '1';
9877
--             nNextLifeCycle := 0;
9878
--
9879
--          END;
9880
--
9881
--
9882
--
9883
--       ELSE
9884
--          /* Releases found in this project. */
9885
--
9886
--          SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
9887
--            FROM (
9888
--                SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
9889
--                  FROM RELEASE_TAGS rt
9890
--                 WHERE rt.PROJ_ID = nProjId
9891
--                   AND rt.RTAG_VERSION = ProjRootVersion
9892
--                 ORDER BY rt.RTAG_LIFE_CYCLE DESC
9893
--                  ) qry
9894
--           WHERE ROWNUM = 1;
9895
--
9896
--
9897
--          -- Set same Rtag Version
9898
--          sNextVersion := ProjRootVersion;
9899
--
9900
--          -- Increase Lifecycle
9901
--          nNextLifeCycle := LastLifeCycle + 1;
9902
--
9903
--       END IF;
9904
--
9905
--
9906
--
9907
--    ELSE
9908
--       /* Create Release From other release within this project */
9909
--
9910
--       -- Set parent id
9911
--       nParentRtagId := nSourceRtagId;
9912
--
9913
--
9914
--       -- Get number of source branches
9915
--       SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
9916
--         FROM RELEASE_TAGS rt
9917
--        WHERE rt.PROJ_ID = nProjId
9918
--          AND rt.PARENT_RTAG_ID = nSourceRtagId;
9919
--
9920
--
9921
--       IF SourceBranchCount = 0 THEN
9922
--          /* Release is Head (i.e. Tip on its branch ) */
9923
--
9924
--          -- Set Next Rtag Version
9925
--          sNextVersion := SourceVersion;
9926
--
9927
--          -- Increase Lifecycle
9928
--          nNextLifeCycle := SourceLifeCycle + 1;
9929
--
9930
--
9931
--       ELSIF SourceBranchCount = 1 THEN
9932
--          /* Release IS NOT Head, but can be branched */
9933
--
9934
--          -- Set Next Rtag Version
9935
--          sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
9936
--
9937
--          -- Reset Lifecycle to 1
9938
--          nNextLifeCycle := 1;
9939
--
9940
--
9941
--       ELSE
9942
--          -- Limit of two branches is reached
9943
--          RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');
9944
--
9945
--       END IF;
9946
--
9947
--
9948
--
9949
--
9950
--
9951
--
9952
--    END IF;
9953
--
9954
--
9955
-- END;
9956
 
9957
/*-------------------------------------------------------------------------------------------------------*/
9958
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
9959
 
9960
   IsBaseView CHAR(1);
9961
 
9962
BEGIN
9963
 
9964
   -- Check if the view is BASE VIEW
9965
   SELECT vi.BASE_VIEW INTO IsBaseView
9966
     FROM VIEWS vi
9967
    WHERE vi.VIEW_ID = ViewId;
9968
 
9969
   IF (IsBaseView = 'Y') THEN
9970
      -- Get Base view content
9971
      OPEN RecordSet FOR
9972
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
9973
            rel.deprecated_state,
9974
            pv.pv_id,
9975
            pkg.pkg_name,
9976
            pv.pkg_version,
9977
            pv.dlocked,
9978
            pv.pv_description,
9979
            pv.BUILD_TYPE
9980
        FROM release_content rel,
9981
             packages pkg,
9982
             package_versions pv
9983
       WHERE pv.pkg_id = pkg.pkg_id
9984
         AND rel.pv_id = pv.pv_id
9985
         AND rel.BASE_VIEW_ID = ViewId
9986
         AND rel.RTAG_ID = RtagId
9987
       ORDER BY UPPER(pkg.PKG_NAME);
9988
 
9989
   ELSE
9990
 
9991
       -- Get non base view content
9992
      OPEN RecordSet FOR
9993
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
9994
            rel.deprecated_state,
9995
            pv.pv_id,
9996
            pkg.pkg_name,
9997
            pv.pkg_version,
9998
            pv.dlocked,
9999
            pv.pv_description,
10000
            pv.BUILD_TYPE
10001
        FROM release_content rel,
10002
             packages pkg,
10003
             package_versions pv,
10004
            VIEW_DEF vd
10005
       WHERE pv.pkg_id = pkg.pkg_id
10006
         AND rel.pv_id = pv.pv_id
10007
         AND vd.VIEW_ID = ViewId
10008
         AND vd.PKG_ID = pv.PKG_ID
10009
         AND rel.RTAG_ID = RtagId
10010
       ORDER BY UPPER(pkg.PKG_NAME);
10011
 
10012
   END IF;
10013
 
10014
 
10015
 
10016
 
10017
END;
10018
/*-------------------------------------------------------------------------------------------------------*/
10019
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10020
 
10021
   ReleaseLocation VARCHAR2(4000);
10022
   sPkgVersion VARCHAR2(4000);
10023
   nPkgId NUMBER;
10024
   sVExt VARCHAR2(4000);
10025
   IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
10026
 
10027
   -- Find package for replacement
10028
   CURSOR curReplacePkg IS
10029
    SELECT pv.PV_ID
10030
     FROM RELEASE_CONTENT rc,
10031
           PACKAGE_VERSIONS pv
10032
    WHERE rc.PV_ID = pv.PV_ID
10033
      AND rc.RTAG_ID = RtagId
10034
      AND pv.PKG_ID = nPkgId
10035
      AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
10036
    recReplacePkg curReplacePkg%ROWTYPE;
10037
 
10038
BEGIN
10039
 
10040
   -- Get is_patch, pkg_id and v_ext
10041
   SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
10042
     FROM PACKAGE_VERSIONS pv
10043
    WHERE pv.PV_ID = newPvId;
10044
 
10045
 
10046
   -- Never put patch in relesed area
10047
   IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
10048
 
10049
      -- Try to get a package to be replaced with this new one.
10050
      -- Use unique constraint of PKG_ID and V_EXT
10051
      OPEN curReplacePkg;
10052
       FETCH curReplacePkg INTO recReplacePkg;
10053
 
10054
       IF curReplacePkg%FOUND THEN
10055
         -- Replace package
10056
         REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
10057
 
10058
      ELSE
10059
         -- Add new package
10060
         INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
10061
         VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
10062
 
10063
 
10064
          /* LOG ACTION */
10065
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10066
           FROM PROJECTS proj,
10067
                 RELEASE_TAGS rt
10068
          WHERE rt.PROJ_ID = proj.PROJ_ID
10069
            AND rt.RTAG_ID = RtagId;
10070
 
10071
         SELECT pv.PKG_VERSION INTO sPkgVersion
10072
           FROM PACKAGE_VERSIONS pv
10073
          WHERE pv.PV_ID = newPvId;
10074
 
10075
         Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
10076
 
10077
 
1373 dpurdie 10078
      END IF;
10079
 
3959 dpurdie 10080
      CLOSE curReplacePkg;
10081
 
10082
   END IF;
10083
 
10084
END;
1373 dpurdie 10085
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10086
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 10087
 
3959 dpurdie 10088
   ReleaseLocation VARCHAR2(4000);
10089
   sPkgVersion VARCHAR2(4000);
10090
 
10091
BEGIN
10092
 
10093
   -- Replace Package
10094
    UPDATE RELEASE_CONTENT
10095
       SET pv_id = newPvId,
10096
           insert_stamp = Ora_Sysdate,
10097
           insertor_id = UserId,
10098
         product_state = NULL
10099
     WHERE rtag_id = RtagId
10100
       AND pv_id = oldPvId;
10101
 
10102
   -- update the pegging table
10103
   UPDATE PEGGED_VERSIONS
10104
      SET pv_id = newPvId
10105
     WHERE rtag_id = RtagId
10106
       AND pv_id = oldPvId;
10107
 
10108
   -- update the advisory_ripple table
10109
   UPDATE ADVISORY_RIPPLE
10110
      SET pv_id = newPvId
10111
     WHERE rtag_id = RtagId
10112
       AND pv_id = oldPvId;
10113
 
10114
    /* LOG ACTION */
10115
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10116
     FROM PROJECTS proj,
10117
           RELEASE_TAGS rt
10118
    WHERE rt.PROJ_ID = proj.PROJ_ID
10119
      AND rt.RTAG_ID = RtagId;
10120
 
10121
   SELECT pv.PKG_VERSION INTO sPkgVersion
10122
     FROM PACKAGE_VERSIONS pv
10123
    WHERE pv.PV_ID = newPvId;
10124
 
10125
   Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
10126
   Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
10127
 
10128
END;
10129
/*-------------------------------------------------------------------------------------------------------*/
10130
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10131
   ReleaseLocation VARCHAR2(4000);
10132
 
10133
BEGIN
10134
 
10135
 
10136
   -- Delete old package
10137
   DELETE
10138
     FROM RELEASE_CONTENT rc
10139
    WHERE rc.PV_ID = PvId
10140
      AND rc.RTAG_ID = RtagId;
10141
 
10142
 
10143
   /* LOG ACTION */
10144
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10145
     FROM PROJECTS proj,
10146
          RELEASE_TAGS rt
10147
    WHERE rt.PROJ_ID = proj.PROJ_ID
10148
      AND rt.RTAG_ID = RtagId;
10149
 
10150
   Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
10151
 
10152
 
10153
END;
10154
/*-------------------------------------------------------------------------------------------------------*/
10155
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10156
   ReleaseLocation VARCHAR2(4000);
10157
 
10158
   CURSOR curMatchingPackage IS
10159
    SELECT mpv.PV_ID
10160
     FROM RELEASE_CONTENT rc,
10161
           PACKAGE_VERSIONS mpv,
10162
         PACKAGE_VERSIONS pv
10163
    WHERE rc.PV_ID = mpv.PV_ID
10164
      AND rc.RTAG_ID = RtagId
10165
      AND pv.PV_ID = PvId
10166
      AND pv.PKG_ID = mpv.PKG_ID
10167
      AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
10168
    recMatchingPackage curMatchingPackage%ROWTYPE;
10169
 
10170
BEGIN
10171
 
10172
   OPEN curMatchingPackage;
10173
    FETCH curMatchingPackage INTO recMatchingPackage;
10174
 
10175
    IF curMatchingPackage%FOUND THEN
10176
      -- Delete old package
10177
      DELETE
10178
        FROM RELEASE_CONTENT rc
10179
       WHERE rc.PV_ID = recMatchingPackage.PV_ID
10180
         AND rc.RTAG_ID = RtagId;
10181
 
10182
 
10183
      /* LOG ACTION */
10184
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10185
        FROM PROJECTS proj,
10186
              RELEASE_TAGS rt
10187
       WHERE rt.PROJ_ID = proj.PROJ_ID
10188
         AND rt.RTAG_ID = RtagId;
10189
 
10190
      Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
10191
 
10192
   END IF;
10193
 
10194
 
10195
   CLOSE curMatchingPackage;
10196
 
10197
 
10198
 
10199
 
10200
END;
10201
/*-------------------------------------------------------------------------------------------------------*/
10202
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
10203
 
10204
   ReturnValue NUMBER;
10205
 
10206
BEGIN
10207
   SELECT rc.BASE_VIEW_ID INTO ReturnValue
10208
     FROM RELEASE_CONTENT rc
10209
    WHERE rc.RTAG_ID = RtagId
10210
      AND rc.PV_ID = PvId;
10211
 
10212
   RETURN ReturnValue;
10213
END;
10214
/*-------------------------------------------------------------------------------------------------------*/
10215
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
10216
 
10217
BEGIN
10218
   -- Reset Ignore warnings up-the-tree
10219
   RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
10220
 
10221
   -- Refresh Package states
10222
   TOUCH_RELEASE ( RtagId );
10223
 
10224
END;
10225
/*-------------------------------------------------------------------------------------------------------*/
10226
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
10227
   CURSOR curReleases IS
10228
    SELECT rc.RTAG_ID
10229
     FROM RELEASE_CONTENT rc
10230
    WHERE rc.PV_ID = PvId;
10231
    recReleases curReleases%ROWTYPE;
10232
 
10233
BEGIN
10234
 
10235
   OPEN curReleases;
10236
    FETCH curReleases INTO recReleases;
10237
 
10238
   WHILE curReleases%FOUND
10239
   LOOP
10240
 
10241
      RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
10242
 
10243
      FETCH curReleases INTO recReleases;
10244
   END LOOP;
10245
 
10246
   CLOSE curReleases;
10247
 
10248
END;
10249
/*-------------------------------------------------------------------------------------------------------*/
10250
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
10251
 
10252
BEGIN
10253
 
10254
   UPDATE RELEASE_CONTENT rc SET
10255
   rc.BASE_VIEW_ID = NewViewId
10256
   WHERE rc.PV_ID = PvId
10257
     AND rc.RTAG_ID = RtagId;
10258
 
10259
END;
10260
/*-------------------------------------------------------------------------------------------------------*/
10261
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
10262
 
10263
   RowCount NUMBER;
10264
 
10265
 
10266
   CURSOR curPackageClash IS
10267
   SELECT pkg.PKG_NAME,
10268
         er.*
10269
     FROM (
10270
 
10271
           /* Get existing referenced packages */
10272
         SELECT pv.PKG_ID,
10273
                pv.V_EXT
10274
           FROM RELEASE_LINKS rl,
10275
                 RELEASE_CONTENT rc,
10276
                 PACKAGE_VERSIONS pv
10277
          WHERE rl.RTAG_ID = nRtagId
10278
            AND rl.REF_RTAG_ID = rc.RTAG_ID
10279
            AND rc.PV_ID = pv.PV_ID
10280
 
10281
            ) er,
10282
         (
10283
 
10284
         /* Get current reference packages */
10285
         SELECT pv.PKG_ID,
10286
                pv.V_EXT
10287
           FROM RELEASE_CONTENT rc,
10288
                 PACKAGE_VERSIONS pv
10289
          WHERE rc.RTAG_ID = nRefRtagId
10290
            AND rc.PV_ID = pv.PV_ID
10291
 
10292
         ) cr,
10293
         PACKAGES PKG
10294
    WHERE er.PKG_ID = cr.PKG_ID
10295
      AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10296
      AND er.PKG_ID = pkg.PKG_ID;
10297
 
10298
   recPackageClash curPackageClash%ROWTYPE;
10299
 
10300
BEGIN
10301
   /*--------------- Business Rules Here -------------------*/
10302
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
10303
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
10304
   END IF;
10305
 
10306
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
10307
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
10308
   END IF;
10309
   /*-------------------------------------------------------*/
10310
   ProblemString := NULL;
10311
 
10312
 
10313
   -- Check if release already has references
10314
   SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
10315
     FROM RELEASE_LINKS rl
10316
    WHERE rl.RTAG_ID = nRtagId;
10317
 
10318
 
10319
   IF RowCount > 0 THEN
10320
      -- Found existing references
10321
 
10322
      -- Make sure there is no package clashes
10323
      OPEN curPackageClash;
10324
       FETCH curPackageClash INTO recPackageClash;
10325
 
10326
      IF curPackageClash%FOUND THEN
10327
 
10328
         ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
10329
 
10330
         WHILE curPackageClash%FOUND
10331
         LOOP
10332
            EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;   -- Do not allow variable overflow
10333
 
10334
            ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
10335
 
10336
            FETCH curPackageClash INTO recPackageClash;
10337
         END LOOP;
10338
 
1373 dpurdie 10339
      END IF;
10340
 
3959 dpurdie 10341
      CLOSE curPackageClash;
10342
 
10343
 
10344
   ELSE
10345
      -- No references found, hence reference a release
10346
 
10347
 
10348
      -- Remove exising package from this release to be referenced
10349
      REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);
10350
 
10351
 
10352
      -- Add new linked packages to release
10353
      INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
10354
      SELECT nRtagId,
10355
            rc.PV_ID,
10356
            rc.BASE_VIEW_ID,
10357
            rc.INSERT_STAMP,
10358
            rc.INSERTOR_ID,
10359
            rc.PKG_STATE
10360
        FROM RELEASE_CONTENT rc
10361
       WHERE rc.RTAG_ID = nRefRtagId;
10362
 
10363
 
10364
 
10365
      -- Copy ignore warnings for referenced packages
10366
      INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
10367
      SELECT nRtagId,
10368
            iw.PV_ID,
10369
            iw.DPV_ID,
10370
            iw.IS_PATCH_IGNORE
10371
        FROM IGNORE_WARNINGS iw,
10372
              RELEASE_CONTENT rc
10373
       WHERE iw.RTAG_ID = rc.RTAG_ID
10374
         AND iw.PV_ID = rc.PV_ID
10375
         AND rc.RTAG_ID = nRefRtagId;
10376
 
10377
 
10378
 
10379
      -- Reference release
10380
      INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
10381
      VALUES ( nRtagId, nRefRtagId );
10382
 
10383
 
10384
      -- Refresh Package states
10385
      TOUCH_RELEASE ( nRtagId );
10386
 
10387
   END IF;
10388
 
10389
 
10390
END;
1373 dpurdie 10391
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10392
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
1373 dpurdie 10393
 
3959 dpurdie 10394
 
10395
BEGIN
10396
   /*--------------- Business Rules Here -------------------*/
10397
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
10398
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
10399
   END IF;
10400
 
10401
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
10402
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
10403
   END IF;
10404
 
10405
   /*-------------------------------------------------------*/
10406
 
10407
 
10408
   -- Remove ignore warnings for those packages who use referenced packages
10409
   DELETE FROM IGNORE_WARNINGS iw
10410
    WHERE iw.RTAG_ID = nRtagId
10411
      AND iw.DPV_ID IN (
10412
                        SELECT dep.DPV_ID
10413
                       FROM (
10414
 
10415
                           /* Get referenced packages */
10416
                           SELECT pv.PKG_ID,
10417
                                  pv.V_EXT
10418
                             FROM RELEASE_CONTENT rc,
10419
                                   PACKAGE_VERSIONS pv
10420
                            WHERE rc.RTAG_ID = nRefRtagId
10421
                              AND rc.PV_ID = pv.PV_ID
10422
 
10423
                           ) cr,
10424
                           (
10425
 
10426
                           /* Get all dependencies for current release */
10427
                           SELECT DISTINCT
10428
                                 pv.PKG_ID,
10429
                                 pv.V_EXT,
10430
                                 dep.DPV_ID
10431
                             FROM RELEASE_CONTENT rc,
10432
                                 PACKAGE_DEPENDENCIES dep,
10433
                                 PACKAGE_VERSIONS pv
10434
                            WHERE rc.RTAG_ID = nRtagId
10435
                              AND rc.PV_ID = dep.PV_ID
10436
                              AND dep.PV_ID = pv.PV_ID
10437
 
10438
                           ) dep
10439
                      WHERE dep.PKG_ID = cr.PKG_ID
10440
                        AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10441
                     );
10442
 
10443
 
10444
 
10445
 
10446
   -- Remove ignore warnings for those package which are going to be replaced with the reference
10447
   DELETE FROM IGNORE_WARNINGS iw
10448
    WHERE iw.RTAG_ID = nRtagId
10449
      AND iw.PV_ID IN (
10450
                  SELECT pv.PV_ID
10451
                    FROM (
10452
 
10453
                        /* Get referenced packages */
10454
                        SELECT pv.PKG_ID,
10455
                               pv.V_EXT
10456
                          FROM RELEASE_CONTENT rc,
10457
                                PACKAGE_VERSIONS pv
10458
                         WHERE rc.RTAG_ID = nRefRtagId
10459
                           AND rc.PV_ID = pv.PV_ID
10460
 
10461
                        ) cr,
10462
                        RELEASE_CONTENT rc,
10463
                        PACKAGE_VERSIONS pv
10464
                   WHERE pv.PKG_ID = cr.PKG_ID
10465
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10466
                     AND rc.RTAG_ID = nRtagId
10467
                     AND rc.PV_ID = pv.PV_ID
10468
                  );
10469
 
10470
 
10471
 
10472
 
10473
 
10474
   -- Remove matching packages from release
10475
   DELETE FROM RELEASE_CONTENT rc
10476
    WHERE rc.RTAG_ID = nRtagId
10477
      AND rc.PV_ID IN (
10478
                  SELECT pv.PV_ID
10479
                    FROM (
10480
 
10481
                        /* Get referenced packages */
10482
                        SELECT pv.PKG_ID,
10483
                               pv.V_EXT
10484
                          FROM RELEASE_CONTENT rc,
10485
                                PACKAGE_VERSIONS pv
10486
                         WHERE rc.RTAG_ID = nRefRtagId
10487
                           AND rc.PV_ID = pv.PV_ID
10488
 
10489
                        ) cr,
10490
                        RELEASE_CONTENT rc,
10491
                        PACKAGE_VERSIONS pv
10492
                   WHERE pv.PKG_ID = cr.PKG_ID
10493
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10494
                     AND rc.RTAG_ID = nRtagId
10495
                     AND rc.PV_ID = pv.PV_ID
10496
                  );
10497
 
10498
 
10499
 
10500
 
10501
 
10502
   -- Remove Reference release
10503
   DELETE
10504
     FROM RELEASE_LINKS rl
10505
    WHERE rl.RTAG_ID = nRtagId
10506
      AND rl.REF_RTAG_ID = nRefRtagId;
10507
 
10508
 
10509
   -- Refresh Package states
10510
   TOUCH_RELEASE ( nRtagId );
10511
 
10512
 
10513
END;
10514
/*-------------------------------------------------------------------------------------------------------*/
10515
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
10516
 
10517
   cReleaseMode CHAR(1);
10518
   cPvMode CHAR(1);
10519
 
10520
BEGIN
10521
 
10522
   -- Get Release Mode
10523
   SELECT rt.OFFICIAL INTO cReleaseMode
10524
     FROM RELEASE_TAGS rt
10525
    WHERE rt.RTAG_ID = RtagId;
10526
 
10527
 
10528
   -- Get Package Mode
10529
   SELECT pv.DLOCKED INTO cPvMode
10530
     FROM PACKAGE_VERSIONS pv
10531
    WHERE pv.PV_ID = PvId;
10532
 
10533
   -- Only check if package is locked
10534
   IF (cPvMode = 'Y') THEN
10535
 
10536
      IF (cReleaseMode != 'N') AND (Permission != 'Y')
1373 dpurdie 10537
      THEN
3959 dpurdie 10538
         RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
10539
 
1373 dpurdie 10540
      END IF;
10541
 
3959 dpurdie 10542
   END IF;
10543
 
10544
 
10545
END;
10546
 
1373 dpurdie 10547
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10548
END PK_RELEASE;
4040 dpurdie 10549
 
3959 dpurdie 10550
/
10551
 
4040 dpurdie 10552
/
10553
--------------------------------------------------------
10554
--  DDL for Package Body PK_RMAPI
10555
--------------------------------------------------------
10556
 
3959 dpurdie 10557
  CREATE OR REPLACE PACKAGE BODY "PK_RMAPI" 
10558
IS
10559
 
10560
   /*-------------------------------------------------------------------------------------------------------*/
10561
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
10562
      RETURN typecur
1373 dpurdie 10563
   IS
3959 dpurdie 10564
      npvid     NUMBER  := 0;
10565
      RECORDS   typecur;
1373 dpurdie 10566
   BEGIN
3959 dpurdie 10567
      BEGIN
10568
         -- Get PV_ID --
10569
         SELECT pv.pv_id
10570
           INTO npvid
10571
           FROM PACKAGES pkg, package_versions pv
10572
          WHERE pv.pkg_id = pkg.pkg_id
10573
            AND pkg.pkg_name = pkgname
10574
            AND pv.pkg_version = pkgversion;
10575
      EXCEPTION
10576
         WHEN NO_DATA_FOUND
10577
         THEN
10578
            raise_application_error (-20000, 'Package Not Found!');
10579
            --WHEN OTHERS THEN
10580
                  -- Consider logging the error and then re-raise
10581
            RAISE;
10582
      END;
1373 dpurdie 10583
 
3959 dpurdie 10584
      -- Finally get package dependencies --
10585
      OPEN RECORDS FOR
10586
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
10587
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
10588
          WHERE dep.pv_id = npvid
10589
            AND dpv.pkg_id = dpkg.pkg_id
10590
            AND dpv.pv_id = dep.dpv_id;
10591
 
10592
      RETURN RECORDS;
1373 dpurdie 10593
   END;
10594
 
10595
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10596
   FUNCTION wip_iteration_package (
10597
      projname        VARCHAR2,
10598
      iterationname   VARCHAR2,
10599
      pkgname         VARCHAR2
1373 dpurdie 10600
   )
3959 dpurdie 10601
      RETURN typecur
1373 dpurdie 10602
   IS
3959 dpurdie 10603
      nrtagid   NUMBER  := 0;
10604
      RECORDS   typecur;
1373 dpurdie 10605
   BEGIN
3959 dpurdie 10606
      BEGIN
10607
         -- Get latest rtag_id --
10608
         SELECT rt.rtag_id
10609
           INTO nrtagid
10610
           FROM projects proj, release_tags rt
10611
          WHERE rt.proj_id = proj.proj_id
10612
            AND UPPER (proj.proj_name) = UPPER (projname)
10613
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
1373 dpurdie 10614
 
3959 dpurdie 10615
         IF (nrtagid IS NULL)
10616
         THEN
10617
            raise_application_error (-20000,
10618
                                     'Work In Progress is Not Found!');
10619
         END IF;
10620
      EXCEPTION
10621
         WHEN NO_DATA_FOUND
10622
         THEN
10623
            raise_application_error (-20000,
10624
                                     'Work In Progress is Not Found!');
10625
            RAISE;
10626
      END;
10627
 
10628
      -- Finally get package dependencies --
10629
      OPEN RECORDS FOR
10630
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
10631
                pv.src_path
10632
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
10633
          WHERE pv.pkg_id = pkg.pkg_id
10634
            AND wip.pv_id = pv.pv_id
10635
            AND wip.rtag_id = nrtagid
10636
            AND pkg.pkg_name = pkgname;
10637
 
10638
      RETURN RECORDS;
1373 dpurdie 10639
   END;
10640
 
10641
/*-------------------------------------------------------------------------------------------------------*/
4553 dpurdie 10642
-- Use:
10643
--   Used by the Automated Build System to release a new package
10644
-- Returns:
10645
--    Use application errors to indicate programming errors
10646
--    Use negative return codes to indicate correctable user problems
10647
--    Positive return code is the new PVID of the package
10648
  FUNCTION auto_make_vcsrelease (
3959 dpurdie 10649
      rtagid                   IN   NUMBER,
10650
      pkgname                  IN   VARCHAR2,
10651
      vext                     IN   VARCHAR2,
10652
      newpkgversion            IN   VARCHAR2,
10653
      vcstag                   IN   VARCHAR2,
10654
      dependenciesimportlist   IN   VARCHAR2,
10655
      isrippled                IN   NUMBER,
10656
      username                 IN   VARCHAR2
10657
   )
1373 dpurdie 10658
      RETURN NUMBER
10659
   IS
3959 dpurdie 10660
      pkgid                           NUMBER;
10661
      pvid                            NUMBER                        := 0;
10662
      userid                          NUMBER;
10663
      dlocked                         VARCHAR2 (20)                 := NULL;
10664
      clonefrompvid                   NUMBER;
10665
      ssv_mm                          package_versions.v_mm%TYPE;
10666
      ssv_nmm                         package_versions.v_nmm%TYPE;
10667
      ssv_ext                         package_versions.v_ext%TYPE;
10668
      return_package_not_found        NUMBER                        := -1;
10669
      return_package_already_exists   NUMBER                        := -2;
10670
      return_not_approved             NUMBER                        := -3;
10671
      return_migrated_pkg             NUMBER                        := -4;
4553 dpurdie 10672
      return_svn_path_changed         NUMBER                        := -5;
1373 dpurdie 10673
 
10674
 
3959 dpurdie 10675
      x_vcstypeid                     NUMBER;
10676
      x_tag                           VARCHAR2(32);
10677
      x_label                         VARCHAR2(60);
10678
      x_srcpath                       VARCHAR2(2000);
10679
      p_srcpath                       VARCHAR2(2000);
1373 dpurdie 10680
 
3959 dpurdie 10681
      -- Regular expression constituents
10682
      Token         VARCHAR2(16) := '([^:]+)';  -- a token is anything except a ':' character
10683
      Seperator     VARCHAR2(4)  := '::';       -- tokens will be seperated by '::'
10684
      BOL           VARCHAR2(4)  := '^';
10685
      Anything      VARCHAR2(4)  := '.*';
10686
      ReplaceToken1 VARCHAR2(4)  := '\1';
10687
      ReplaceToken2 VARCHAR2(4)  := '\2';
10688
      ReplaceToken3 VARCHAR2(4)  := '\3';
10689
      iprev_modifier_id               NUMBER;
10690
 
1373 dpurdie 10691
   BEGIN
3959 dpurdie 10692
      /*--------------- Business Rules Here -------------------*/
10693
      IF (rtagid IS NULL)
10694
      THEN
10695
         raise_application_error (-20000, 'RtagId must be supplied.');
10696
      END IF;
1373 dpurdie 10697
 
3959 dpurdie 10698
      IF (pkgname IS NULL)
10699
      THEN
10700
         raise_application_error (-20000, 'PkgName must be supplied.');
10701
      END IF;
1373 dpurdie 10702
 
3959 dpurdie 10703
      IF (newpkgversion IS NULL)
1373 dpurdie 10704
      THEN
3959 dpurdie 10705
         raise_application_error (-20000, 'PkgVersion must be supplied.');
1373 dpurdie 10706
      END IF;
10707
 
3959 dpurdie 10708
      IF (vcstag IS NULL)
1373 dpurdie 10709
      THEN
3959 dpurdie 10710
         raise_application_error (-20000, 'PkgVcsTag must be supplied.');
1373 dpurdie 10711
      END IF;
10712
 
3959 dpurdie 10713
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
1373 dpurdie 10714
      THEN
4553 dpurdie 10715
         raise_application_error (-20000, 'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).');
1373 dpurdie 10716
      END IF;
10717
 
3959 dpurdie 10718
      IF (username IS NULL)
1373 dpurdie 10719
      THEN
3959 dpurdie 10720
         raise_application_error (-20000, 'UserName must be supplied.');
1373 dpurdie 10721
      END IF;
10722
 
3959 dpurdie 10723
      -- Parse the PkgVcsTag
10724
      -- Sets up
10725
      --   x_tag, x_label, x_srcpath
1373 dpurdie 10726
 
3959 dpurdie 10727
       BEGIN
10728
          -- Extract the first token - this will be the short tag name for the VCS (eg. 'CC', 'SVN', etc)
10729
          x_tag := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Anything, ReplaceToken1);
1373 dpurdie 10730
 
3959 dpurdie 10731
          -- Decode the short tag
10732
          CASE x_tag
10733
             WHEN 'CC' THEN
10734
                -- extract the 2nd and 3rd tokens, those being the source path and label respectively
10735
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10736
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
1373 dpurdie 10737
 
3959 dpurdie 10738
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
10739
                -- check for that error as well as the obvious zero-length string conditions.
10740
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
10741
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
10742
                END IF;
10743
 
10744
                IF isSVNbyName(pkgname) > 0 THEN
10745
                    -- Don't allow migrated packages to be released from a CC label
10746
                    return return_migrated_pkg;
10747
                END IF;
1373 dpurdie 10748
 
10749
 
3959 dpurdie 10750
             WHEN 'SVN' THEN
10751
                -- extract the 2nd token, that being the subversion tag
10752
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10753
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
1373 dpurdie 10754
 
3959 dpurdie 10755
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
10756
                -- check for that error as well as the obvious zero-length string conditions.
10757
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
10758
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
10759
                END IF;
10760
 
10761
             WHEN 'UC' THEN
10762
                -- nothing to extract, just assign defaults
10763
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10764
                x_label   := 'N/A';
10765
             ELSE
10766
                raise_application_error (-20000, 'Unrecognised VCS Tag!');
10767
          END CASE;
10768
       END;
10769
 
10770
      -- Get the VCS_TYPE_ID for the version control system.
10771
      BEGIN
10772
         SELECT vt.vcs_type_id
10773
         INTO x_vcstypeid
10774
         FROM VCS_TYPE vt
10775
         WHERE vt.tag = x_tag;
10776
         EXCEPTION
10777
            WHEN NO_DATA_FOUND THEN
10778
               raise_application_error (-20000, 'Database is missing a version control system tag (' || x_tag || ')!' );
10779
      END;
10780
 
10781
 
10782
      -- Get user_id
10783
      BEGIN
10784
         SELECT usr.user_id
10785
           INTO userid
10786
           FROM users usr
10787
          WHERE UPPER (usr.user_name) = UPPER (username)
10788
            AND usr.is_disabled IS NULL;
10789
      EXCEPTION
10790
         WHEN NO_DATA_FOUND
1373 dpurdie 10791
         THEN
10792
            raise_application_error (-20000,
4553 dpurdie 10793
                                        'UserName: '
3959 dpurdie 10794
                                     || username
10795
                                     || ' is not valid or disabled.'
1373 dpurdie 10796
                                    );
3959 dpurdie 10797
      END;
1373 dpurdie 10798
 
3959 dpurdie 10799
/*-------------------------------------------------------*/
1373 dpurdie 10800
 
3959 dpurdie 10801
      -- Create package if necessary
10802
      IF isrippled = 1
1373 dpurdie 10803
      THEN
3959 dpurdie 10804
         /* Ripple Build */
10805
         BEGIN
10806
            -- Make sure that package does not exist
10807
            SELECT pv.pv_id
10808
              INTO pvid
10809
              FROM package_versions pv, PACKAGES pkg
10810
             WHERE pv.pkg_id = pkg.pkg_id
10811
               AND pkg.pkg_name = pkgname
10812
               AND pv.pkg_version = newpkgversion;
10813
         EXCEPTION
10814
            WHEN NO_DATA_FOUND
10815
            THEN
10816
               pvid := 0;
10817
         END;
10818
 
10819
         IF (pvid = 0)
1373 dpurdie 10820
         THEN
3959 dpurdie 10821
            -- Split current version in parts
10822
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
10823
 
10824
            BEGIN
10825
               -- Find package to be replaced with the ripple package
10826
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
10827
               THEN
10828
                  SELECT pv.pv_id, pv.src_path
10829
                    INTO clonefrompvid, p_srcpath
10830
                    FROM PACKAGES pkg, package_versions pv,
10831
                         release_content rc
10832
                   WHERE rc.pv_id = pv.pv_id
10833
                     AND pv.pkg_id = pkg.pkg_id
10834
                     AND rc.rtag_id = rtagid
10835
                     AND pkg.pkg_name = pkgname
10836
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
10837
               ELSE
10838
                  SELECT pv.pv_id, pv.src_path
10839
                    INTO clonefrompvid, p_srcpath
10840
                    FROM PACKAGES pkg, package_versions pv,
10841
                         release_content rc
10842
                   WHERE rc.pv_id = pv.pv_id
10843
                     AND pv.pkg_id = pkg.pkg_id
10844
                     AND rc.rtag_id = rtagid
10845
                     AND pkg.pkg_name = pkgname
10846
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
10847
               END IF;
10848
            EXCEPTION
10849
               WHEN NO_DATA_FOUND
10850
               THEN
10851
                  raise_application_error
10852
                                        (-20000,
10853
                                            'Cannot get CloneFromPvId. VExt='
10854
                                         || vext
10855
                                         || ', RtagId='
10856
                                         || rtagid
10857
                                         || ', PkgName='
10858
                                         || pkgname
10859
                                         || ', SSV_EXT='
10860
                                         || ssv_ext
10861
                                        );
10862
            END;
10863
 
10864
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
10865
            THEN
10866
               -- Create package
10867
               seed_package_names_versions (pkgname,
10868
                                            newpkgversion,
10869
                                            userid,
10870
                                            pvid,
10871
                                            clonefrompvid
10872
                                           );
10873
            ELSE
10874
               -- Create package
10875
               seed_package_names_versions2 (pkgname,
10876
                                             newpkgversion,
10877
                                             userid,
10878
                                             pvid,
10879
                                             clonefrompvid
10880
                                            );
10881
            END IF;
10882
 
10883
            -- Update Package reason for release
10884
            UPDATE package_versions pv
10885
               SET pv.comments = 'Rippled Build.',
10886
                   pv.build_type = 'Y'
10887
             WHERE pv.pv_id = pvid;
10888
         ELSE
10889
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
10890
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
10891
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
10892
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
10893
            UPDATE package_versions pv
10894
               SET pv.release_notes_info = null,
10895
                   pv.modified_stamp = ora_sysdatetime
10896
             WHERE pv.pv_id = pvid;
10897
 
10898
            --DEVI-066151
10899
            log_action (pvid, 'package_rebuilt', userid, 'Package Re-built...');
10900
 
10901
            RETURN return_package_already_exists;
1373 dpurdie 10902
         END IF;
10903
      ELSE
3959 dpurdie 10904
         /* Auto build from Pending area */
10905
 
10906
         -- Find package in pending area
10907
         BEGIN
10908
            SELECT pv.pv_id, pv.dlocked, pv.src_path
10909
              INTO pvid, dlocked, p_srcpath
10910
              FROM planned pl, package_versions pv, PACKAGES pkg
10911
             WHERE pl.pv_id = pv.pv_id
10912
               AND pv.pkg_id = pkg.pkg_id
10913
               AND pl.rtag_id = rtagid
10914
               AND pkg.pkg_name = pkgname
10915
               AND pv.dlocked = 'A'
10916
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
10917
               AND rownum = 1
10918
             ORDER BY pv.modified_stamp;
10919
         EXCEPTION
10920
            WHEN NO_DATA_FOUND
10921
            THEN
10922
               pvid := 0;
10923
         END;
10924
 
10925
         IF (pvid = 0)
1373 dpurdie 10926
         THEN
3959 dpurdie 10927
            -- Package does not exist in pending area, hence report it
10928
            RETURN return_package_not_found;
10929
         ELSIF (dlocked != 'A')
1373 dpurdie 10930
         THEN
3959 dpurdie 10931
            -- Package is not approved for autobuild
10932
            RETURN return_not_approved;
1373 dpurdie 10933
         END IF;
10934
 
10935
      END IF;
10936
 
3959 dpurdie 10937
      -- Ensure Source Path does not change
10938
      -- Do not expect the SVN development branch to change
10939
      -- From the previous package
10940
      IF ( x_tag = 'SVN' AND p_srcpath != x_srcpath )
1373 dpurdie 10941
      THEN
4553 dpurdie 10942
        return return_svn_path_changed;
1373 dpurdie 10943
      END IF;
10944
 
3959 dpurdie 10945
      BEGIN
10946
         -- Import Dependencies
10947
         import_dependencies (pvid, dependenciesimportlist, userid);
10948
      END;
1373 dpurdie 10949
 
10950
 
3959 dpurdie 10951
      BEGIN
10952
         -- Split current version in parts
10953
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
1373 dpurdie 10954
 
3959 dpurdie 10955
         -- Update Package Details
10956
         UPDATE package_versions pv
10957
            SET pv.pkg_version = newpkgversion,
10958
                pv.v_ext = ssv_ext,
10959
                pv.v_mm = ssv_mm,
10960
                pv.v_nmm = ssv_nmm,
10961
                pv.src_path = x_srcpath,
10962
                pv.pkg_label = x_label,
10963
                pv.vcs_type_id = x_vcstypeid
10964
          WHERE pv.pv_id = pvid;
10965
      EXCEPTION
10966
         WHEN DUP_VAL_ON_INDEX
10967
         THEN
10968
            -- Package already exists, hence cannot be used for ripple build
10969
            RETURN return_package_already_exists;
10970
      END;
10971
 
10972
      -- Update the is_autobuildable
10973
      UPDATE package_versions
10974
         SET is_autobuildable = 'Y'
10975
       WHERE pv_id = pvid;
10976
 
10977
      -- DEVI-063601
10978
      -- For planned builds the modifier_id shouldn't be set to buildadm.
10979
      -- To ensure this the modifier_id is obtained so it can be restored after
10980
      -- the function pk_environment.auto_make_release is called.
10981
      -- This function calls, change_state, which sets the modifier_id to the
10982
      -- specified userid, which for auto builds is buildadm.
10983
      SELECT pv.modifier_id INTO iprev_modifier_id
10984
      FROM package_versions pv WHERE pv.pv_id = pvid;
10985
 
10986
      -- Now release package
10987
      pk_environment.auto_make_release (pvid,
10988
                                        rtagid,
10989
                                        userid,
10990
                                        vext,
10991
                                        ssv_ext,
10992
                                        clonefrompvid
10993
                                       );
10994
 
10995
      -- DEVI-063601
10996
      -- if it is a planned build then restore the modifier_id to the previous modifier
10997
      UPDATE package_versions pv SET pv.modifier_id = iprev_modifier_id
10998
      WHERE pv.pv_id = pvid;
10999
 
11000
      --Now clean the PLANNED_VERSIONS table
11001
      SELECT pkg_id
11002
        INTO pkgid
11003
        FROM PACKAGES
11004
       WHERE pkg_name = pkgname;
11005
 
11006
      DELETE FROM planned_versions
11007
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
11008
 
11009
      RETURN pvid;
1373 dpurdie 11010
   END;
11011
 
11012
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11013
   PROCEDURE import_dependencies (
11014
      pvid                     IN   NUMBER,
11015
      dependenciesimportlist   IN   VARCHAR2,
11016
      userid                   IN   NUMBER
11017
   )
1373 dpurdie 11018
   IS
3959 dpurdie 11019
/*
11020
|| DependenciesImportList Format:
11021
|| "pkgA","1.0.0";"pkgB","2.0.0";
11022
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
11023
*/
11024
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
11025
         INDEX BY VARCHAR2 (4000);
11026
 
11027
      seperator         VARCHAR2 (2)           := '||';
11028
      pkgname           VARCHAR2 (4000);
11029
      pkgversion        VARCHAR2 (4000);
11030
      buildtype         VARCHAR2 (50);
11031
      pkgid             NUMBER;
11032
      vext              VARCHAR2 (4000);
11033
      dpvid             NUMBER;
11034
      slist             VARCHAR2 (4000);
11035
      cbuildtypes       tdictionary;
11036
      dependencyrow     NUMBER;
11037
      sdependency       VARCHAR2 (4000);
11038
      first_pos         VARCHAR2 (4000);
11039
      second_pos        VARCHAR2 (4000);
11040
      third_pos         VARCHAR2 (4000);
11041
      forth_pos         VARCHAR2 (4000);
11042
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11043
 
11044
      CURSOR curbuildtype
11045
      IS
11046
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
11047
                dep.build_type
11048
           FROM package_dependencies dep, package_versions dpv
11049
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
11050
 
11051
      recbuildtype      curbuildtype%ROWTYPE;
1373 dpurdie 11052
   BEGIN
3959 dpurdie 11053
      slist := dependenciesimportlist;
1373 dpurdie 11054
 
3959 dpurdie 11055
      -- Preformat String
11056
      IF NOT slist IS NULL
1373 dpurdie 11057
      THEN
3959 dpurdie 11058
         slist := REPLACE (slist, ' ');                      -- Remove spaces
11059
         slist := REPLACE (slist, UTL_TCP.crlf);
11060
         -- Remove new line and carriage-return characters
11061
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
1373 dpurdie 11062
      END IF;
11063
 
3959 dpurdie 11064
      -- Get Current Dependencies
11065
      OPEN curbuildtype;
1373 dpurdie 11066
 
3959 dpurdie 11067
      FETCH curbuildtype
11068
       INTO recbuildtype;
1373 dpurdie 11069
 
3959 dpurdie 11070
      WHILE curbuildtype%FOUND
11071
      LOOP
11072
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
1373 dpurdie 11073
 
3959 dpurdie 11074
         FETCH curbuildtype
11075
          INTO recbuildtype;
11076
      END LOOP;
1373 dpurdie 11077
 
3959 dpurdie 11078
      CLOSE curbuildtype;
1373 dpurdie 11079
 
3959 dpurdie 11080
      -- Separate dependencies with ; separator
11081
      citemcollection := in_list_varchar2 (slist, ';');
1373 dpurdie 11082
 
3959 dpurdie 11083
      BEGIN
11084
         -- Remove old dependencies
11085
         DELETE FROM package_dependencies dep
11086
               WHERE dep.pv_id = pvid;
1373 dpurdie 11087
 
3959 dpurdie 11088
         -- Loop through dependencies
11089
         FOR dependencyrow IN 1 .. citemcollection.COUNT
11090
         LOOP
11091
            -- Extract pkg_name and pkg_version
11092
            sdependency := citemcollection (dependencyrow);
11093
            first_pos := INSTR (sdependency, '"', 1, 1);
11094
            second_pos := INSTR (sdependency, '"', 1, 2);
11095
            third_pos := INSTR (sdependency, '"', 1, 3);
11096
            forth_pos := INSTR (sdependency, '"', 1, 4);
11097
            pkgname :=
11098
               SUBSTR (sdependency,
11099
                       (first_pos + 1),
11100
                       (second_pos - first_pos - 1)
11101
                      );
11102
            pkgversion :=
11103
               SUBSTR (sdependency,
11104
                       (third_pos + 1),
11105
                       (forth_pos - third_pos - 1)
11106
                      );
11107
 
11108
            -- Dependency must exits to be linked against
11109
            BEGIN
11110
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
11111
                 INTO dpvid, pkgid, vext
11112
                 FROM package_versions pv, PACKAGES pkg
11113
                WHERE pv.pkg_id = pkg.pkg_id
11114
                  AND pkg.pkg_name = pkgname
11115
                  AND pv.pkg_version = pkgversion;
11116
            EXCEPTION
11117
               WHEN NO_DATA_FOUND
11118
               THEN
11119
                  raise_application_error
11120
                                  (-20000,
11121
                                      'Dependency ['
11122
                                   || pkgname
11123
                                   || ' '
11124
                                   || pkgversion
11125
                                   || '] does not exist yet and cannot be used!'
11126
                                  );
11127
            END;
11128
 
11129
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
11130
            BEGIN
11131
               buildtype := cbuildtypes (pkgid || seperator || vext);
11132
 
11133
               IF buildtype IS NULL
11134
               THEN
11135
                  -- Set build type to LinkPackageArchive by default
11136
                  buildtype := 'L';
11137
               END IF;
11138
            EXCEPTION
11139
               WHEN NO_DATA_FOUND
11140
               THEN
11141
                  buildtype := 'L';
11142
            END;
11143
 
11144
            -- Insert Dependencies
11145
            update_package_dependency (pvid,
11146
                                       pkgname,
11147
                                       pkgversion,
11148
                                       buildtype,
11149
                                       userid,
11150
 
11151
                                      );
11152
         END LOOP;
11153
      END;
1373 dpurdie 11154
   END;
11155
 
11156
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11157
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
11158
      RETURN VARCHAR2
1373 dpurdie 11159
   IS
3959 dpurdie 11160
      pkgversion   VARCHAR2 (4000);
1373 dpurdie 11161
   BEGIN
3959 dpurdie 11162
      BEGIN
11163
         SELECT pv.pkg_version
11164
           INTO pkgversion
11165
           FROM PACKAGES pkg, release_content rc, package_versions pv
11166
          WHERE pv.pv_id = rc.pv_id
11167
            AND pkg.pkg_id = pv.pkg_id
11168
            AND pkg.pkg_name = pkgname
11169
            AND rc.rtag_id = rtagid;
11170
 
11171
         RETURN pkgversion;
11172
      END;
1373 dpurdie 11173
   END;
11174
 
11175
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11176
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
11177
      RETURN VARCHAR2
1373 dpurdie 11178
   IS
3959 dpurdie 11179
      pkgversion   VARCHAR2 (4000);
1373 dpurdie 11180
   BEGIN
3959 dpurdie 11181
      BEGIN
11182
         SELECT pv.pkg_version
11183
           INTO pkgversion
11184
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
11185
          WHERE pv.pv_id = wip.pv_id
11186
            AND pkg.pkg_id = pv.pkg_id
11187
            AND pkg.pkg_name = pkgname
11188
            AND wip.rtag_id = rtagid;
1373 dpurdie 11189
 
3959 dpurdie 11190
         IF pkgversion IS NULL
11191
         THEN
11192
            SELECT pv.pkg_version
11193
              INTO pkgversion
11194
              FROM PACKAGES pkg, planned pl, package_versions pv
11195
             WHERE pv.pv_id = pl.pv_id
11196
               AND pkg.pkg_id = pv.pkg_id
11197
               AND pkg.pkg_name = pkgname
11198
               AND pl.rtag_id = rtagid;
11199
         END IF;
11200
 
11201
         RETURN pkgversion;
11202
      END;
1373 dpurdie 11203
   END;
11204
 
11205
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11206
   PROCEDURE update_dash_board (rtagid IN NUMBER)
1373 dpurdie 11207
   IS
3959 dpurdie 11208
      projid       NUMBER;
11209
      projiddb     NUMBER;
11210
      total        NUMBER;
11211
      auto_total   NUMBER;
11212
      rtagiddb     NUMBER;
1373 dpurdie 11213
   BEGIN
3959 dpurdie 11214
      SELECT COUNT (*)
11215
        INTO total
11216
        FROM release_content rc, package_versions pv
11217
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
1373 dpurdie 11218
 
3959 dpurdie 11219
      SELECT COUNT (*)
11220
        INTO auto_total
11221
        FROM release_content rc, package_versions pv
11222
       WHERE pv.pv_id = rc.pv_id
11223
         AND pv.is_autobuildable = 'Y'
11224
         AND rc.rtag_id = rtagid;
11225
 
11226
      BEGIN
11227
         SELECT rtag_id
11228
           INTO rtagiddb
11229
           FROM dash_board
11230
          WHERE rtag_id = rtagid;
11231
 
11232
         SELECT proj_id
11233
           INTO projiddb
11234
           FROM dash_board
11235
          WHERE rtag_id = rtagid;
11236
      EXCEPTION
11237
         WHEN NO_DATA_FOUND
11238
         THEN
11239
            rtagiddb := '';
11240
      END;
11241
 
11242
      IF rtagiddb IS NULL
1373 dpurdie 11243
      THEN
3959 dpurdie 11244
         SELECT proj_id
11245
           INTO projid
11246
           FROM release_tags
11247
          WHERE rtag_id = rtagid;
11248
 
11249
         INSERT INTO dash_board
11250
                     (proj_id, rtag_id, last_build_time, automated_packages,
11251
                      total_packages
11252
                     )
11253
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
11254
                      total
11255
                     );
11256
      ELSE
11257
         UPDATE dash_board
11258
            SET last_build_time = ora_sysdatetime,
11259
                automated_packages = auto_total,
11260
                total_packages = total
11261
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
1373 dpurdie 11262
      END IF;
11263
   END;
11264
 
11265
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11266
   FUNCTION exclude_from_build (
11267
      pvid          IN   NUMBER,
11268
      spkgversion   IN   VARCHAR2,
11269
      rtagid        IN   NUMBER,
11270
      username      IN   VARCHAR2
1373 dpurdie 11271
   )
3959 dpurdie 11272
      RETURN NUMBER
1373 dpurdie 11273
   IS
3959 dpurdie 11274
      userid              NUMBER;
11275
      outerrcode          NUMBER;
11276
      pkgid               NUMBER;
11277
 
11278
      CURSOR dnr_duplicate_cur
11279
      IS
11280
         SELECT *
11281
           FROM do_not_ripple
11282
          WHERE pv_id = pvid AND rtag_id = rtagid;
11283
 
11284
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1373 dpurdie 11285
   BEGIN
3959 dpurdie 11286
      outerrcode := -1;       -- Set default return error code to ERROR state
11287
 
11288
      /*--------------- Business Rules Here -------------------*/
11289
      IF (rtagid IS NULL)
1373 dpurdie 11290
      THEN
3959 dpurdie 11291
         RETURN outerrcode;
11292
--         raise_application_error (-20000, 'RtagId must be supplied.');
11293
      END IF;
11294
 
11295
      IF (pvid IS NULL)
1373 dpurdie 11296
      THEN
3959 dpurdie 11297
         RETURN outerrcode;
11298
--         raise_application_error (-20000, 'PvId must be supplied.');
11299
      END IF;
11300
 
11301
      IF (username IS NULL)
1373 dpurdie 11302
      THEN
3959 dpurdie 11303
         RETURN outerrcode;
11304
--         raise_application_error (-20000, 'UserName must be supplied.');
11305
      END IF;
11306
 
11307
      -- Get user_id
11308
      BEGIN
11309
         SELECT usr.user_id
11310
           INTO userid
11311
           FROM users usr
11312
          WHERE UPPER (usr.user_name) = UPPER (username)
11313
            AND usr.is_disabled IS NULL;
11314
      EXCEPTION
11315
         WHEN NO_DATA_FOUND
11316
         THEN
11317
            RETURN outerrcode;
11318
--            raise_application_error (-20000,
11319
--                                        'UserName '
11320
--                                     || username
11321
--                                     || ' is not valid or disabled.'
11322
--                                    );
11323
      END;
11324
 
11325
      OPEN dnr_duplicate_cur;
11326
 
11327
      FETCH dnr_duplicate_cur
11328
       INTO dnr_duplicate_rec;
11329
 
11330
      IF dnr_duplicate_cur%FOUND
1373 dpurdie 11331
      THEN
3959 dpurdie 11332
         outerrcode := 0;
1373 dpurdie 11333
      END IF;
3959 dpurdie 11334
 
11335
      IF dnr_duplicate_cur%NOTFOUND
11336
      THEN
11337
         /* No duplicate recordset */
11338
         unripple_package (pvid, rtagid, userid);
11339
         outerrcode := 0;                            -- Set return to SUCCESS
11340
      END IF;
11341
 
11342
      CLOSE dnr_duplicate_cur;
11343
 
11344
      SELECT pkg_id
11345
        INTO pkgid
11346
        FROM package_versions
11347
       WHERE pv_id = pvid;
11348
 
11349
      DELETE FROM planned_versions
11350
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
11351
 
11352
      RETURN outerrcode;
1373 dpurdie 11353
   END;
11354
 
11355
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11356
   FUNCTION exclude_indirect_from_build (
11357
      pvid          IN   NUMBER,
11358
      spkgversion   IN   VARCHAR2,
11359
      rtagid        IN   NUMBER,
11360
      username      IN   VARCHAR2,
11361
      rootpvid      IN   NUMBER,
11362
      rootcause     IN   VARCHAR2,
11363
      rootfile      IN   VARCHAR2
1373 dpurdie 11364
   )
3959 dpurdie 11365
      RETURN NUMBER
1373 dpurdie 11366
   IS
3959 dpurdie 11367
      userid              NUMBER;
11368
      outerrcode          NUMBER;
11369
      pkgid               NUMBER;
11370
 
11371
      CURSOR dnr_duplicate_cur
11372
      IS
11373
         SELECT *
11374
           FROM do_not_ripple
11375
          WHERE pv_id = pvid AND rtag_id = rtagid;
11376
 
11377
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1373 dpurdie 11378
   BEGIN
3959 dpurdie 11379
      outerrcode := -1;       -- Set default return error code to ERROR state
11380
 
11381
      /*--------------- Business Rules Here -------------------*/
11382
      IF (rtagid IS NULL)
1373 dpurdie 11383
      THEN
3959 dpurdie 11384
         RETURN outerrcode;
11385
--         raise_application_error (-20000, 'RtagId must be supplied.');
11386
      END IF;
11387
 
11388
      IF (pvid IS NULL)
1373 dpurdie 11389
      THEN
3959 dpurdie 11390
         RETURN outerrcode;
11391
--         raise_application_error (-20000, 'PvId must be supplied.');
11392
      END IF;
11393
 
11394
      IF (username IS NULL)
1373 dpurdie 11395
      THEN
3959 dpurdie 11396
         RETURN outerrcode;
11397
--         raise_application_error (-20000, 'UserName must be supplied.');
1373 dpurdie 11398
      END IF;
3959 dpurdie 11399
 
11400
      -- Get user_id
11401
      BEGIN
11402
         SELECT usr.user_id
11403
           INTO userid
11404
           FROM users usr
11405
          WHERE UPPER (usr.user_name) = UPPER (username)
11406
            AND usr.is_disabled IS NULL;
11407
      EXCEPTION
11408
         WHEN NO_DATA_FOUND
11409
         THEN
11410
            RETURN outerrcode;
11411
--            raise_application_error (-20000,
11412
--                                        'UserName '
11413
--                                     || username
11414
--                                     || ' is not valid or disabled.'
11415
--                                    );
11416
      END;
11417
 
11418
     /* No duplicate recordset */
11419
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
11420
     outerrcode := 0;                            -- Set return to SUCCESS
11421
 
11422
      SELECT pkg_id
11423
        INTO pkgid
11424
        FROM package_versions
11425
       WHERE pv_id = pvid;
11426
 
11427
      DELETE FROM planned_versions
11428
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
11429
 
11430
      RETURN outerrcode;
1373 dpurdie 11431
   END;
11432
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11433
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
1373 dpurdie 11434
   IS
11435
   BEGIN
3959 dpurdie 11436
      INSERT INTO abt_action_log
11437
                  (rcon_id, action_datetime, action
11438
                  )
11439
           VALUES (rconid, ora_sysdatetime, action
11440
                  );
1373 dpurdie 11441
   END;
11442
 
11443
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11444
   FUNCTION insert_package_metrics (
11445
      rtagid                   IN   NUMBER,
11446
      pkgname                  IN   VARCHAR2,
11447
      vext                     IN   VARCHAR2,
11448
      metricstring             IN   VARCHAR2
1373 dpurdie 11449
   )
3959 dpurdie 11450
      RETURN NUMBER
1373 dpurdie 11451
   IS
3959 dpurdie 11452
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11453
      lv_pvid                  NUMBER                 := 0;
11454
      rownumber                NUMBER;
11455
      rowcontent               VARCHAR2(4000);
11456
      metricname               VARCHAR2(1000);
11457
      metricvalue              VARCHAR2(4000);
11458
      return_insert_error      NUMBER                 := -1;
11459
      return_insert_success    NUMBER                 := 0;
11460
 
11461
      /* Metrics */
11462
      lv_branches                 NUMBER;
11463
      lv_branchlist               VARCHAR2(4000);
11464
      lv_codefiles                NUMBER;
11465
      lv_ignoredfiles             NUMBER;
11466
      lv_directories              NUMBER;
11467
      lv_directorydepth           NUMBER;
11468
      lv_totalfiles               NUMBER;
11469
      lv_makefiles                NUMBER;
11470
      lv_blanklines               NUMBER;
11471
      lv_codelines                NUMBER;
11472
      lv_commentlines             NUMBER;
11473
 
1373 dpurdie 11474
   BEGIN
3959 dpurdie 11475
      /*--------------- Business Rules Here -------------------*/
11476
      IF (rtagid IS NULL)
11477
      THEN
11478
         RETURN return_insert_error;
11479
      END IF;
1373 dpurdie 11480
 
3959 dpurdie 11481
      IF (pkgname IS NULL)
11482
      THEN
11483
         RETURN return_insert_error;
11484
      END IF;
11485
 
11486
      IF (metricstring IS NULL)
11487
      THEN
11488
         RETURN return_insert_error;
11489
      END IF;
11490
 
11491
      BEGIN
11492
         SELECT pv.pv_id
11493
           INTO lv_pvid
11494
           FROM package_versions pv, packages pkg, release_content rc
11495
          WHERE pv.pkg_id = pkg.pkg_id
11496
            AND rc.rtag_id = rtagid
11497
            AND pv.pv_id = rc.pv_id
11498
            AND pkg.pkg_name = pkgname
11499
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
11500
      EXCEPTION
11501
           WHEN NO_DATA_FOUND
11502
           THEN
11503
                lv_pvid := 0;
11504
      END;
11505
 
11506
      citemcollection := in_list_varchar2 (metricstring, ';');
11507
 
11508
      FOR rownumber IN 1 .. citemcollection.COUNT
11509
      LOOP
11510
         rowcontent := citemcollection(rownumber);
11511
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
11512
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
11513
 
11514
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
11515
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
11516
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
11517
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
11518
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
11519
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
11520
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
11521
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
11522
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
11523
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
11524
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
11525
         END IF;
11526
      END LOOP;
11527
 
11528
      IF (lv_pvid > 0)
11529
      THEN
11530
         -- Delete any existing entries for this package version to makes sure our data is untainted
11531
         DELETE FROM package_metrics pm
11532
         WHERE pm.pv_id = lv_pvid;
11533
 
11534
         -- Insert the new data into the metrics table
11535
         INSERT INTO package_metrics
11536
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
11537
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
11538
                     )
11539
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
11540
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
11541
                     );
11542
 
11543
         -- Now update the Release_Metrics Table
11544
         update_release_metrics(rtagid);
11545
 
11546
         RETURN return_insert_success;
11547
      ELSE
11548
         RETURN return_insert_error;
11549
      END IF;
1373 dpurdie 11550
   END;
11551
 
11552
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11553
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
1373 dpurdie 11554
   IS
3959 dpurdie 11555
      lv_totalpackages       NUMBER;
11556
      lv_autobuilt           NUMBER;
11557
      lv_linesofcode         NUMBER;
11558
      lv_unittested          NUMBER;
11559
      lv_autotested          NUMBER;
11560
      lv_numOfbranches       NUMBER;
11561
      lv_lastbuildtime       DATE;
1373 dpurdie 11562
   BEGIN
3959 dpurdie 11563
      IF (rtagid > 0)
11564
      THEN
11565
         -- Get the total number of packages in this release and the number of
11566
         -- those that are autobuilt
11567
         SELECT COUNT (DISTINCT rc.pv_id),
11568
                COUNT (DISTINCT autobuilt_qry.pv_id)
11569
           INTO lv_totalpackages, lv_autobuilt
11570
           FROM release_content rc,
11571
                package_versions pv,
11572
                (
11573
                 SELECT rc.pv_id
11574
                   FROM release_content rc,
11575
                        package_versions pv
11576
                  WHERE pv.is_autobuildable = 'Y'
11577
                    AND pv.pv_id = rc.pv_id
11578
                    AND rc.rtag_id = rtagid
11579
                ) autobuilt_qry
11580
          WHERE pv.pv_id = rc.pv_id
11581
            AND rc.rtag_id = rtagid
11582
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
1373 dpurdie 11583
 
3959 dpurdie 11584
         -- Get the build time of the last package built in this release and the
11585
         -- total number of lines of code
11586
         SELECT MAX(pm.created_stamp),
11587
                SUM(pm.code_lines)
11588
           INTO lv_lastbuildtime, lv_linesofcode
11589
           FROM package_metrics pm, release_content rc
11590
          WHERE pm.pv_id = rc.pv_id
11591
            AND rc.rtag_id = rtagid;
11592
 
11593
         -- Get the number of packages with unit tests in this release and the
11594
         -- number of those that are autotested
11595
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
11596
           FROM unit_tests ut,
11597
                release_content rc
11598
          WHERE ut.pv_id = rc.pv_id
11599
            AND rc.rtag_id = rtagid
11600
        AND ut.test_types_fk != 1;
11601
 
11602
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
11603
          FROM unit_tests ut,
11604
               release_content rc
11605
         WHERE ut.pv_id = rc.pv_id
11606
           AND rc.rtag_id = rtagid
11607
           AND ut.test_types_fk = 7;
11608
 
11609
 
11610
         -- Count the number of unique branches in the packages in this release.
11611
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
11612
--           FROM (
11613
--                SELECT pv_id,
11614
--                       regexp_substr(str, '[^,]+', 1, level) branch,
11615
--                       level lv,
11616
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
11617
--                  FROM (
11618
--                       SELECT pm.pv_id,
11619
--                              ','||pm.branch_list str
11620
--                         FROM package_metrics pm,
11621
--                              release_content rc
11622
--                        WHERE pm.pv_id = rc.pv_id
11623
--                          AND rc.rtag_id = rtagid
11624
--                       )
11625
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
11626
--                )
11627
--          WHERE lv != lg;
11628
 
11629
         UPDATE release_metrics rm
11630
            SET rm.total_packages = lv_totalpackages,
11631
                rm.autobuilt = lv_autobuilt,
11632
                rm.lines_of_code = lv_linesofcode,
11633
                rm.unit_tested = lv_unittested,
11634
                rm.autotested = lv_autotested,
11635
--                rm.branches = lv_numOfbranches,
11636
                rm.last_build_time = lv_lastbuildtime
11637
          WHERE rtag_id = rtagid;
11638
 
11639
         IF (SQL%ROWCOUNT = 0)
11640
         THEN
11641
            INSERT INTO release_metrics
11642
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
11643
                         autotested, last_build_time
11644
                        )
11645
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
11646
                         lv_autotested, lv_lastbuildtime
11647
                        );
11648
         END IF;
11649
--         IF (SQL%ROWCOUNT = 0)
11650
--         THEN
11651
--            INSERT INTO release_metrics
11652
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
11653
--                         autotested, branches, last_build_time
11654
--                        )
11655
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
11656
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
11657
--                        );
11658
--         END IF;
11659
--      ELSE
11660
--         raise_application_error (-20000, 'RtagId must be supplied.');
11661
      END IF;
1373 dpurdie 11662
   END;
11663
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11664
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2
1373 dpurdie 11665
   IS
3959 dpurdie 11666
      vcstypeid    NUMBER;
11667
      vcstag       VARCHAR2(32);
11668
      label        VARCHAR2(60);
11669
      srcpath      VARCHAR2(2000);
11670
      vcstypeid_cc NUMBER;
11671
      vcstypeid_uc NUMBER;
1373 dpurdie 11672
   BEGIN
3959 dpurdie 11673
      -- Get the VCS_TYPE_ID for the ClearCase version control system. We do this so that we make no assumptions about
11674
      -- what the primary key value is for the ClearCase VCS entry.
11675
      BEGIN
11676
         SELECT vt.vcs_type_id
11677
         INTO vcstypeid_cc
11678
         FROM VCS_TYPE vt
11679
         WHERE vt.tag = 'CC';
11680
         EXCEPTION
11681
            WHEN NO_DATA_FOUND THEN
11682
               raise_application_error (-20000, 'Database is missing compulsory CC version control system tag!');
11683
      END;
1373 dpurdie 11684
 
3959 dpurdie 11685
      -- Get the VCS_TYPE_ID for the Uncontrolled version control system. We do this so that we make no assumptions about
11686
      -- what the primary key value is for the Uncontrolled VCS entry.
11687
      BEGIN
11688
         SELECT vt.vcs_type_id
11689
         INTO vcstypeid_uc
11690
         FROM VCS_TYPE vt
11691
         WHERE vt.tag = 'UC';
11692
         EXCEPTION
11693
            WHEN NO_DATA_FOUND THEN
11694
               raise_application_error (-20000, 'Database is missing compulsory UC version control system tag!');
11695
      END;
11696
 
11697
      -- Get the PKG_LABEL, SRC_PATH, VCS_TYPE_ID for the package version
11698
      -- As additional VCS types are introduced, we may have to extend what this SELECT statement returns
11699
      BEGIN
11700
         SELECT pv.pkg_label, pv.src_path,
11701
           (CASE WHEN pv.pkg_label = 'N/A' AND pv.vcs_type_id IS NULL THEN vcstypeid_uc
11702
                 WHEN pv.vcs_type_id IS NULL THEN vcstypeid_cc
11703
                 ELSE pv.vcs_type_id END) AS vcs_type_id
11704
         INTO label, srcpath, vcstypeid
11705
         FROM PACKAGE_VERSIONS pv
11706
         WHERE pv.pv_id = pvid;
11707
         EXCEPTION
11708
            WHEN NO_DATA_FOUND THEN
11709
               raise_application_error (-20000, 'Package Version Not Found!');
11710
      END;
11711
 
11712
      -- Get the VCS TAG for the VCS_TYPE_ID.
11713
      BEGIN
11714
         SELECT vt.tag
11715
         INTO vcstag
11716
         FROM VCS_TYPE vt
11717
         WHERE vt.vcs_type_id = vcstypeid;
11718
         EXCEPTION
11719
            WHEN NO_DATA_FOUND THEN
11720
               raise_application_error (-20000, 'Could not get VCS Tag for the package version!');
11721
      END;
11722
 
11723
      -- Return value depending upon which VCS Tag is being used.
11724
      -- As additional VCS types are introduced, we have to add additional WHEN clauses
11725
      CASE vcstag
11726
         WHEN 'CC' THEN
11727
            RETURN vcstag || '::' || srcpath || '::' || label;
11728
         WHEN 'SVN' THEN
11729
            RETURN vcstag || '::' || srcpath || '::' || label;
11730
         ELSE
11731
            RETURN vcstag || '::';
11732
      END CASE;
11733
 
1373 dpurdie 11734
   END;
3959 dpurdie 11735
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 11736
 
3959 dpurdie 11737
/*-------------------------------------------------------------------------------------------------------
11738
Name:        update_vcs_details
11739
Description: Updates the Version Control System (vcs) details specified in the vcstag
11740
             parameter for the specified package version.
11741
             The specified package vcstag is parsed and split into 3 fields:
11742
                vcs type, src path, label
11743
             These fields are then stored for the specified pv_id in the package_versions, table.
11744
             An action is recorded in the action log and provides information for tracking and
11745
             for restoring the previous vcs settings if a recovery is required.
11746
Paramters:
11747
             ipv_id:     Package version identifier
11748
             vcstag:     Full version control tag.
11749
                         Examples:
11750
                             "SVN::AUPERASVN01/DPG_SWBase/tools/trunk::daf_tools_25.1.7027.cr@1234"
11751
                            "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
11752
             user_id:    Identifier of the user that is performing this function.
11753
*/
11754
PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER)
1373 dpurdie 11755
   IS
3959 dpurdie 11756
      ivcs_type_id   NUMBER;
11757
      svcs_type      VARCHAR2(128);
11758
      ssrc_path      VARCHAR2(512);
11759
      spkg_label     VARCHAR2(512);
11760
      spattern       VARCHAR2(64);
11761
      saction_desc   VARCHAR2(2048);
11762
      old_vcs_type   VARCHAR2(128);
11763
      old_src_path   VARCHAR2(512);
11764
      old_pkg_label  VARCHAR2(512);
11765
      old_pkg_vcstag VARCHAR2(1024);
11766
      i              NUMBER;
11767
      vcount         NUMBER;
1373 dpurdie 11768
   BEGIN
3959 dpurdie 11769
     -- Split vcs tag into fields: vcs type, src path, label
11770
     -- Fields are separated by '::'
11771
     -- e.g "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
11772
     -- The below regular expression pattern has groups to achieve this.
1373 dpurdie 11773
 
3959 dpurdie 11774
     spattern:= '^([^:]*)::([^:]*)(::(.*))?$';
11775
 
11776
     --As Oracle 10g does not allow REGEXP_SUBSTR to return a group,
11777
     --REGEXP_REPLACE is used instead (Note: Oracle 11g has this enhancement).
11778
     SELECT REGEXP_REPLACE(vcstag,spattern, '\1') INTO svcs_type  FROM DUAL;
11779
     SELECT REGEXP_REPLACE(vcstag,spattern, '\2') INTO ssrc_path  FROM DUAL;
11780
     SELECT REGEXP_REPLACE(vcstag,spattern, '\4') INTO spkg_label FROM DUAL;
11781
 
11782
     -- Validate vcs type
11783
     BEGIN
11784
       SELECT vc.vcs_type_id INTO ivcs_type_id FROM vcs_type vc WHERE UPPER(svcs_type) = UPPER(vc.tag);
11785
     EXCEPTION
11786
       WHEN NO_DATA_FOUND THEN
11787
         raise_application_error (-20000, 'Invalid vcs type: ' || '"' || svcs_type || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11788
       --RAISE;
11789
     END;
11790
 
11791
     -- If Clearcase
11792
     IF (ivcs_type_id = 2) THEN
11793
       -- Validate source path
11794
       IF NOT REGEXP_LIKE(ssrc_path,'^(\\|\/)[a-z]+[0-9a-z_\.\-\\\/ -]*$','i') THEN
11795
         raise_application_error (-20000, 'Invalid CC src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11796
       END IF;
11797
 
11798
       -- Validate label
11799
       -- For clearcase the label must be specified. For subversion it is not required.
11800
       IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+$','i') THEN
11801
         raise_application_error (-20000, 'Invalid CC label:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
11802
       END IF;
11803
 
11804
     -- if Subversion
11805
     ELSIF (ivcs_type_id = 23) THEN
11806
       -- general validity
11807
       -- Not as picky as the RM Data entry
11808
       IF NOT REGEXP_LIKE(ssrc_path,'^([0-9a-z_\.\-]+)(\/([0-9a-z_\.\-]+))+$','i') THEN
11809
         raise_application_error (-20000, 'Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11810
       END IF;
11811
 
11812
       -- Validate Tag
11813
       -- May be a Peg or a Label
11814
       IF NOT REGEXP_LIKE(spkg_label,'^@?[0-9]+$','i') THEN
11815
           IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+($|@[0-9]+)','i') THEN
11816
             raise_application_error (-20000, 'Invalid SVN tag:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
11817
           END IF;
11818
       END IF;
11819
 
11820
        -- Check for suitable ending
11821
        IF NOT REGEXP_LIKE(ssrc_path,'(\/tags$)|(\/branches\/)|(\/trunk$)','i') THEN
11822
            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 || '"');
11823
        END IF;
11824
 
11825
       -- Check for combined use of tags, branches, trunk or repeats of each
11826
       -- Count occurrences of /tags or /branches/ or /trunk
11827
       vcount:=0;
11828
       i:=1;
11829
       WHILE i > 0 LOOP
11830
         i:=REGEXP_INSTR(ssrc_path,'(\/tags(\/|$))|(\/branches(\/|$))|(\/trunk(\/|$))',i,1,1,'i');
11831
         IF i > 0 THEN
11832
           -- if found then increment count
11833
           vcount:=vcount+1;
11834
           i:=i-1;  -- move index back to "/"
11835
         END IF;
11836
       END LOOP;
11837
 
11838
       IF vcount = 0  THEN
11839
         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 || '"');
11840
       END IF;
11841
 
11842
       IF vcount > 1  THEN
11843
         raise_application_error (-20000, 'Combined use of /trunk, /tags, or /branches/. Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11844
       END IF;
11845
 
11846
 
11847
     END IF;
11848
 
11849
     BEGIN
11850
       -- Get current vcs tag for specified package version
11851
       SELECT pv.src_path, pv.pkg_label, vc.tag as vcs_type
11852
       INTO old_src_path, old_pkg_label, old_vcs_type
11853
       FROM package_versions pv, vcs_type vc
11854
       WHERE pv.pv_id = ipv_id
11855
       AND pv.vcs_type_id = vc.vcs_type_id (+);
11856
 
11857
     EXCEPTION
11858
       WHEN NO_DATA_FOUND THEN
11859
         raise_application_error (-20000, 'Package version not found: ' || ipv_id);
11860
     END;
11861
 
11862
     old_pkg_vcstag:= old_vcs_type || '::' || old_src_path;
11863
     IF (old_pkg_label IS NOT NULL) THEN
11864
       old_pkg_vcstag:=old_pkg_vcstag || '::' || old_pkg_label;
11865
     END IF;
11866
 
11867
     -- Create action description
11868
     -- This description will contain the old and new tags.
11869
     -- Its purpose is to provide information for tracking and for restoring previous vcs settings if a recovery is required.
11870
     -- An example of the action description is below:
11871
     --   OldTag:CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr NewTag:SVN::DPG_SWBase/tools/tags/daf_tools_25.1.7027.cr
11872
     saction_desc:='OldTag:' || old_pkg_vcstag || ' ' || 'NewTag:' || vcstag;
11873
 
11874
     -- Store new vcs details
11875
     UPDATE package_versions SET
11876
       src_path = ssrc_path,
11877
       pkg_label = spkg_label,
11878
       vcs_type_id = ivcs_type_id
11879
     WHERE
11880
       pv_id = ipv_id;
11881
 
11882
     -- Store action in action log so that we can back track and also restore vcs settings if required.
11883
     log_action (ipv_id,'VcsConversion',user_id,saction_desc);
11884
 
11885
   END update_vcs_details;
11886
 
11887
/*-------------------------------------------------------------------------------------------------------
11888
Name:        isSVN
11889
Description: Determine if any of the packages versions are controlled under SVN
11890
			 Intended to be used to prevent users from releasing a package
11891
			 that has been migrated to SVN
11892
 
11893
Paramters:	pkgid:     Package ID
11894
 
11895
Returns:	Number of versions under SVN version control
11896
*/
11897
 
11898
FUNCTION isSVN( pkgid IN NUMBER )
11899
    RETURN NUMBER
11900
    IS
11901
    svncount   NUMBER  := 0;
11902
   BEGIN
11903
        SELECT COUNT(*) INTO svncount FROM PACKAGE_VERSIONS pv WHERE pv.PKG_ID = pkgid AND pv.VCS_TYPE_ID = 23;
11904
        RETURN (svncount);
1373 dpurdie 11905
   END;
3959 dpurdie 11906
 
11907
/*-------------------------------------------------------------------------------------------------------
11908
Name:        isSVNbyName
11909
Description: Determine if any of the packages versions are controlled under SVN
11910
			 Intended to be used to prevent users from releasing a package
11911
			 that has been migrated to SVN
11912
 
11913
Paramters:	pkgname:	Package Name
11914
 
11915
Returns:	Number of versions under SVN version control
11916
*/
11917
 
11918
FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) 
11919
    RETURN NUMBER
11920
IS
11921
   svncount   NUMBER  := 0;
11922
   BEGIN
11923
        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;
11924
        RETURN (svncount);
11925
   END;
11926
 
11927
   END;
4040 dpurdie 11928
 
1374 dpurdie 11929
/
1373 dpurdie 11930
 
4040 dpurdie 11931
/
11932
--------------------------------------------------------
11933
--  DDL for Package Body PK_WORK_IN_PROGRESS
11934
--------------------------------------------------------
11935
 
3959 dpurdie 11936
  CREATE OR REPLACE PACKAGE BODY "PK_WORK_IN_PROGRESS" IS
1373 dpurdie 11937
 
11938
/*
11939
------------------------------
11940
||  Last Modified:  S.Vukovic
3959 dpurdie 11941
||  Modified Date:  2/May/2005
1373 dpurdie 11942
||  Body Version:   1.0
11943
------------------------------
11944
*/
11945
 
11946
 
11947
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11948
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 11949
 
3959 dpurdie 11950
	oldPvId NUMBER;
11951
	ReleaseLocation VARCHAR2(4000);
11952
	sLocation VARCHAR2(4000) := NULL;
1373 dpurdie 11953
 
3959 dpurdie 11954
 
1373 dpurdie 11955
BEGIN
11956
	/*--------------- Business Rules Here -------------------*/
3959 dpurdie 11957
	/*-------------------------------------------------------*/
1373 dpurdie 11958
 
3959 dpurdie 11959
	BEGIN
11960
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
11961
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
11962
		  FROM WORK_IN_PROGRESS wip,
11963
		  	   RELEASE_TAGS rt,
11964
			   PROJECTS proj
11965
		 WHERE wip.PV_ID = newPvId
11966
		   AND wip.RTAG_ID = rt.RTAG_ID
11967
		   AND rt.OFFICIAL != 'Y'
11968
		   AND rt.PROJ_ID = proj.PROJ_ID;
1373 dpurdie 11969
 
3959 dpurdie 11970
		EXCEPTION
11971
	    	WHEN NO_DATA_FOUND THEN
11972
	       		sLocation := NULL;
11973
 
11974
	END;	   	   
1373 dpurdie 11975
 
11976
 
11977
 
3959 dpurdie 11978
	IF (sLocation IS NULL)  THEN
1373 dpurdie 11979
 
3959 dpurdie 11980
		-- Add to "Work in progress"
11981
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
11982
		VALUES( RtagId, newPvId, ViewId );
11983
 
11984
 
11985
	    /* LOG ACTION */
11986
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
11987
		  FROM PROJECTS proj,
11988
		  	   RELEASE_TAGS rt
11989
		 WHERE rt.PROJ_ID = proj.PROJ_ID
11990
		   AND rt.RTAG_ID = RtagId;
11991
 
11992
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
11993
 
11994
	ELSE
11995
 
11996
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
11997
 
1373 dpurdie 11998
	END IF;
11999
 
3959 dpurdie 12000
END;
12001
/*-------------------------------------------------------------------------------------------------------*/
12002
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 12003
 
3959 dpurdie 12004
	ReleaseLocation VARCHAR2(4000);
1373 dpurdie 12005
 
3959 dpurdie 12006
BEGIN
12007
 
12008
	/*--------------- Business Rules Here -------------------*/
1373 dpurdie 12009
	/*-------------------------------------------------------*/
12010
 
12011
 
3959 dpurdie 12012
	-- Get release location for logging pusposes
12013
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12014
	  FROM PROJECTS proj,
12015
	  	   RELEASE_TAGS rt
12016
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12017
	   AND rt.RTAG_ID = RtagId;
1373 dpurdie 12018
 
12019
 
3959 dpurdie 12020
	-- Delete from Work In Progress
12021
	DELETE
12022
	  FROM WORK_IN_PROGRESS wip
12023
	 WHERE wip.RTAG_ID = RtagId
12024
	   AND wip.PV_ID = PvId;
1373 dpurdie 12025
 
3959 dpurdie 12026
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 12027
 
3959 dpurdie 12028
 
12029
 
12030
 
1373 dpurdie 12031
END;
12032
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12033
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 12034
 
3959 dpurdie 12035
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
12036
	ReleaseLocation VARCHAR2(4000);
12037
	PvId NUMBER;
1373 dpurdie 12038
 
12039
BEGIN
3959 dpurdie 12040
 
1373 dpurdie 12041
	/*--------------- Business Rules Here -------------------*/
3959 dpurdie 12042
	IF (PvIdList IS NULL)
12043
	THEN
12044
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
12045
	END IF;
1373 dpurdie 12046
	/*-------------------------------------------------------*/
12047
 
12048
 
3959 dpurdie 12049
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
1373 dpurdie 12050
 
12051
 
3959 dpurdie 12052
	-- Get release location for logging pusposes
12053
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
12054
	  FROM PROJECTS proj,
12055
	  	   RELEASE_TAGS rt
12056
	 WHERE rt.PROJ_ID = proj.PROJ_ID
12057
	   AND rt.RTAG_ID = RtagId;
1373 dpurdie 12058
 
3959 dpurdie 12059
 
12060
	FOR i IN 1..nIdCollector.COUNT
12061
	LOOP
12062
		PvId := nIdCollector(i);
12063
 
12064
		-- Delete from Work In Progress
12065
		DELETE
12066
		  FROM WORK_IN_PROGRESS wip
12067
		 WHERE wip.RTAG_ID = RtagId
12068
		   AND wip.PV_ID = PvId;
12069
 
12070
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
12071
 
12072
	END LOOP;
12073
 
12074
 
1373 dpurdie 12075
END;
12076
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12077
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
12078
 
12079
	ReturnValue NUMBER;
12080
 
1373 dpurdie 12081
BEGIN
3959 dpurdie 12082
	SELECT wip.VIEW_ID INTO ReturnValue
12083
	  FROM WORK_IN_PROGRESS wip
12084
	 WHERE wip.RTAG_ID = RtagId
12085
	   AND wip.PV_ID = PvId;
1373 dpurdie 12086
 
3959 dpurdie 12087
	RETURN ReturnValue;
1373 dpurdie 12088
END;
12089
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12090
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
12091
 
12092
	IsBaseView CHAR(1);
12093
 
1373 dpurdie 12094
BEGIN
12095
 
3959 dpurdie 12096
	-- Check if the view is BASE VIEW
12097
	SELECT vi.BASE_VIEW INTO IsBaseView
12098
	  FROM VIEWS vi
12099
	 WHERE vi.VIEW_ID = ViewId;
12100
 
12101
	IF (IsBaseView = 'Y') THEN 
12102
		-- Get Base view content
12103
		OPEN RecordSet FOR
12104
		SELECT 0 AS PKG_STATE,
12105
			   NULL AS DEPRECATED_STATE,
12106
			   pv.pv_id, 
12107
			   pkg.pkg_name, 
12108
			   pv.pkg_version, 
12109
			   pv.dlocked, 
12110
			   pv.pv_description,
12111
			   pv.BUILD_TYPE
12112
		  FROM WORK_IN_PROGRESS rel,
12113
		       packages pkg,
12114
		       package_versions pv
12115
		 WHERE pv.pkg_id = pkg.pkg_id
12116
		   AND rel.pv_id = pv.pv_id
12117
		   AND rel.VIEW_ID = ViewId
12118
		   AND rel.RTAG_ID = RtagId
12119
		 ORDER BY UPPER(pkg.PKG_NAME);
12120
 
1373 dpurdie 12121
 
3959 dpurdie 12122
	ELSE	 
1373 dpurdie 12123
 
3959 dpurdie 12124
	 	-- Get non base view content
12125
		OPEN RecordSet FOR
12126
		SELECT 0 AS PKG_STATE,
12127
			   NULL AS DEPRECATED_STATE,
12128
			   pv.pv_id, 
12129
			   pkg.pkg_name, 
12130
			   pv.pkg_version, 
12131
			   pv.dlocked, 
12132
			   pv.pv_description,
12133
			   pv.BUILD_TYPE
12134
		  FROM WORK_IN_PROGRESS rel,
12135
		       packages pkg,
12136
		       package_versions pv,
12137
			   VIEW_DEF vd
12138
		 WHERE pv.pkg_id = pkg.pkg_id
12139
		   AND rel.pv_id = pv.pv_id
12140
		   AND vd.VIEW_ID = ViewId
12141
		   AND vd.PKG_ID = pv.PKG_ID
12142
		   AND rel.RTAG_ID = RtagId
12143
		 ORDER BY UPPER(pkg.PKG_NAME);
1373 dpurdie 12144
 
3959 dpurdie 12145
 
12146
	END IF;	 	
12147
 
12148
 
1373 dpurdie 12149
END;
12150
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12151
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
12152
 
1373 dpurdie 12153
BEGIN
12154
 
3959 dpurdie 12155
	UPDATE WORK_IN_PROGRESS wip SET
12156
	wip.VIEW_ID = NewViewId
12157
	WHERE wip.PV_ID = PvId
12158
	  AND wip.RTAG_ID = RtagId;
12159
 
1373 dpurdie 12160
END;
12161
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12162
END PK_WORK_IN_PROGRESS;
4040 dpurdie 12163
 
3959 dpurdie 12164
/
1373 dpurdie 12165
 
4040 dpurdie 12166
/
12167
--------------------------------------------------------
12168
--  DDL for Package Body RM_ISSUES
12169
--------------------------------------------------------
12170
 
3959 dpurdie 12171
  CREATE OR REPLACE PACKAGE BODY "RM_ISSUES" AS
1373 dpurdie 12172
 
3959 dpurdie 12173
-- Private Implementation -----------------------------------------------------
1373 dpurdie 12174
 
12175
 
3959 dpurdie 12176
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
12177
	AS
1373 dpurdie 12178
 
3959 dpurdie 12179
	BEGIN
12180
		-- start boundary case
12181
		IF ( XXstart < XX ) THEN
12182
			RETURN 1;
1373 dpurdie 12183
 
3959 dpurdie 12184
		ELSIF ( XXstart = XX ) THEN
1373 dpurdie 12185
 
3959 dpurdie 12186
			-- need to consider YY
12187
			IF ( YYstart < YY ) THEN
12188
				RETURN 1;
1373 dpurdie 12189
 
3959 dpurdie 12190
			ELSIF ( YYstart = YY ) THEN
1373 dpurdie 12191
 
3959 dpurdie 12192
					-- need to consider ZZ
12193
					IF ( ZZstart <= ZZ ) THEN
12194
						RETURN 1;
12195
 
12196
					ELSE
12197
						RETURN 0;
12198
					END IF;
12199
 
12200
			ELSE
12201
				RETURN 0;
12202
			END IF;
12203
		ELSE
12204
			RETURN 0;
12205
		END IF;
12206
	EXCEPTION
12207
		WHEN OTHERS THEN
12208
			RETURN -1;
12209
	END;
12210
 
12211
 
12212
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
12213
	AS
12214
 
12215
	BEGIN
12216
		-- end boundary case
12217
		IF ( XX < XXend ) THEN
12218
			RETURN 1;
12219
 
12220
		ELSIF ( XX = XXend ) THEN
12221
 
12222
			-- need to consider YY
12223
			IF ( YY < YYend ) THEN
12224
				RETURN 1;
12225
 
12226
			ELSIF ( YY = YYend ) THEN
12227
 
12228
					-- need to consider ZZ
12229
					IF ( ZZ <= ZZend ) THEN
12230
						RETURN 1;
12231
 
12232
					ELSE
12233
						RETURN 0;
12234
					END IF;
12235
			ELSE
12236
 
12237
				RETURN 0;
12238
			END IF;
12239
		ELSE
12240
			RETURN 0;
12241
		END IF;
12242
	EXCEPTION
12243
		WHEN OTHERS THEN
12244
			RETURN -1;
12245
	END;
12246
 
12247
	/*
12248
	-	version format:		XX.YY.ZZ.abc
12249
	*/
12250
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
12251
	AS
12252
		XXstart		NUMBER	:=	0;
12253
		XXend		NUMBER	:=	0;
12254
		XX			NUMBER	:=	0;
12255
		YYstart		NUMBER	:=	0;
12256
		YYend		NUMBER	:=	0;
12257
		YY			NUMBER	:=	0;
12258
		ZZstart		NUMBER	:=	0;
12259
		ZZend		NUMBER	:=	0;
12260
		ZZ			NUMBER	:=	0;
12261
		first_dot	NUMBER	:=	0;
12262
		second_dot	NUMBER	:=	0;
12263
		third_dot	NUMBER	:=	0;
12264
 
12265
		ProjExtstart	VARCHAR2(10);
12266
		ProjExtend		VARCHAR2(10);
12267
		ProjExt			VARCHAR2(10);
12268
 
12269
	BEGIN
12270
		-- strip the version number
12271
		first_dot :=  INSTR(version_start, '.', 1, 1);
12272
		second_dot :=  INSTR(version_start, '.', 1, 2);
12273
		third_dot :=  INSTR(version_start, '.', 1, 3);
12274
 
12275
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
12276
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12277
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12278
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
12279
 
12280
		first_dot :=  INSTR(version_end, '.', 1, 1);
12281
		second_dot :=  INSTR(version_end, '.', 1, 2);
12282
		third_dot :=  INSTR(version_end, '.', 1, 3);
12283
 
12284
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
12285
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12286
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12287
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
12288
 
12289
		first_dot :=  INSTR(version, '.', 1, 1);
12290
		second_dot :=  INSTR(version, '.', 1, 2);
12291
		third_dot :=  INSTR(version, '.', 1, 3);
12292
 
12293
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
12294
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12295
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12296
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
12297
 
12298
		-- only include versions if all project extensions are the same
12299
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
12300
 
12301
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
12302
				RETURN 1;
12303
			ELSE
12304
				RETURN 0;
12305
			END IF;
12306
		ELSE
12307
			RETURN 0;
12308
		END IF;
12309
 
12310
	EXCEPTION
12311
		WHEN OTHERS THEN
12312
			RETURN -1;
12313
	END;
12314
 
12315
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
12316
	AS
12317
	    pkg_id NUMBER;
12318
	BEGIN
12319
		SELECT
12320
			p.PKG_ID
12321
		INTO
12322
			pkg_id
12323
		FROM
12324
			PACKAGES p
12325
		WHERE
12326
			p.PKG_NAME = pkgName;
12327
 
12328
		RETURN pkg_id;
12329
	EXCEPTION
12330
	    WHEN OTHERS THEN
12331
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
12332
			RETURN -1;
12333
	END;
12334
 
12335
 
12336
-- Public Implementation ------------------------------------------------------
12337
 
12338
	/*
12339
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
12340
	--
12341
	-- INPUT PARAMETERS:
12342
	--
12343
	--		pkg_name  	-  	The name of the top level package to get issues for
12344
	--		version_start	-	The start version for the comparison
12345
	--		version_end	-	The end version for the comparison
12346
	*/
12347
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
12348
	AS
12349
		pkgId	NUMBER;
12350
	BEGIN
12351
		-- get pkg_id of the input package:
12352
		pkgId := GetPkgId( pkg_name );
12353
 
12354
		OPEN vCursor FOR
12355
		SELECT
12356
			  pv.PKG_ID,
12357
			  pv.PKG_VERSION,
12358
			  pv.PV_ID,
12359
			  i_pkg.ISS_ID,
12360
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
12361
			  pd.DPKG_ID,
12362
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
12363
			  pd.DPV_ID,
12364
			  i_dpkg.ISS_ID AS ISSUE_ID
12365
		FROM
12366
			 PACKAGE_VERSIONS pv
12367
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
12368
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
12369
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
12370
		WHERE
12371
   			 pv.PKG_ID = pkgId
12372
		AND
12373
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
12374
		AND
12375
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
12376
		ORDER BY
12377
			 pv.PKG_ID,
12378
			 pv.PV_ID,
12379
			 pd.DPKG_ID,
12380
			 pd.DPV_ID;
12381
	EXCEPTION
12382
		WHEN OTHERS THEN
12383
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
12384
	END;
12385
 
12386
 
12387
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
12388
 
12389
	/*
12390
	-- Proc: LoadIssuesTable
12391
	--
12392
	-- Populates Package_Issues table with details of issues from all dependent packages.
12393
	-- This will be for all package versions of the input pkg_name between the
12394
	-- version_start and version_end.
12395
	--
12396
	-- INPUT PARAMETERS:
12397
	--
12398
	--		pkg_name  	-  	The name of the top level package to get issues for
12399
	--		version_start	-	The start version for the comparison
12400
	--		version_end	-	The end version for the comparison
12401
	*/
12402
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
12403
	AS
12404
		pkgId	NUMBER;
12405
 
12406
		CURSOR pack_vers_cur IS
12407
			SELECT
12408
				pv.PV_ID,
12409
				pv.PKG_VERSION,
12410
				pv.PKG_ID,
12411
				p.PKG_NAME
12412
			FROM
12413
				PACKAGE_VERSIONS pv
12414
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
12415
			WHERE
12416
   				 pv.PKG_ID = pkgId
12417
			AND
12418
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
12419
 
12420
	BEGIN
12421
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12422
 
12423
		-- get the pkg_id we are finding issues for
12424
		pkgId := GetPkgId( pkg_name );
12425
 
12426
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
12427
		FOR pack_ver_rec IN  pack_vers_cur
12428
		LOOP
12429
			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 );
12430
			COMMIT;
12431
		END LOOP;
12432
 
12433
		-- The output cursor - shows the individual versions of the top level package then were reported on
12434
		OPEN vCursor FOR
12435
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12436
/*removed
12437
		SELECT
12438
			PKG_VERSION
12439
		FROM
12440
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
12441
*/
12442
 
12443
 
12444
	EXCEPTION
12445
		WHEN OTHERS THEN
12446
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
12447
	END;
12448
 
12449
 
12450
	/*
12451
	-- Proc: InsertIssuesForDepends
12452
	--
12453
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
12454
	--
12455
	-- INPUT PARAMETERS:
12456
	--
12457
	--		pvID  		-  	The package version id of the package to get issues for
12458
	--		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)
12459
	--		top_pkgName -  	The package name of the top level package
12460
	--		top_pvID  	-  	The package version id of the top level package
12461
	--		top_pkgVer  -  	The package version description of the top level package
12462
	*/
12463
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
12464
	AS
12465
		pkgId		NUMBER;
12466
		issCnt		NUMBER := 0;
12467
		pkgCheck	NUMBER := 0;
12468
		depCheck	NUMBER := 0;
12469
 
12470
		dpkgName	VARCHAR(50);
12471
		dpkgVersion	VARCHAR(50);
12472
 
12473
		CURSOR dep_packs_cur IS
12474
			SELECT
12475
				DPV_ID
12476
			FROM
12477
				PACKAGE_DEPENDENCIES
12478
			WHERE
12479
				PV_ID = pvID;
12480
 
12481
	BEGIN
12482
 
12483
		-- check to see if the package has been processed previously
12484
		SELECT
12485
			COUNT(*)
12486
		INTO
12487
			pkgCheck
12488
		FROM
12489
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12490
		WHERE
12491
			DPV_ID = pvID;
12492
 
12493
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
12494
 
12495
		-- Package not already processed (no cyclic dependency) - process it
12496
		IF ( pkgCheck = 0 ) THEN
12497
 
12498
			-- check to see if this package version has any issues assigned to it
12499
			SELECT
12500
				COUNT(*)
12501
			INTO
12502
				issCnt
12503
			FROM
12504
				CQ_ISSUES i
12505
			WHERE
12506
				i.PV_ID = pvID;
12507
 
12508
			dbms_output.put_line('issCnt: ' || issCnt );
12509
 
12510
			-- Always enter a marker row into the table even if there are no issues for the package.
12511
			-- This allows us to pick up any cyclic dependencies.
12512
			IF ( issCnt > 0 ) THEN
12513
				-- get issues and insert into RM_PACKAGE_ISSUES
12514
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12515
 
12516
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
12517
					SELECT DISTINCT
12518
						top_pkgID		AS PKG_ID,
12519
						top_pkgName		AS PKG_NAME,
12520
						top_pvID		AS PV_ID,
12521
						top_pkgVer		AS PKG_VERSION,
12522
						pv.PV_ID		AS DPV_ID,
12523
						p.PKG_NAME		AS DPKG_NAME,
12524
						pv.PKG_VERSION	AS DPKG_VERSION,
12525
						ci.ISS_DB,
12526
						ci.ISS_ID
12527
					FROM
12528
						PACKAGE_VERSIONS pv
12529
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
12530
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
12531
					WHERE
12532
						pv.PV_ID = pvID;
12533
 
12534
			ELSE
12535
				-- get the dpkg details - there will always be a row returned here
12536
				SELECT
12537
					p.PKG_NAME
12538
				INTO
12539
					dpkgName
12540
				FROM
12541
					PACKAGE_VERSIONS pv
12542
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
12543
				WHERE
12544
	   				 pv.PV_ID = pvID;
12545
 
12546
				SELECT
12547
					pv.PKG_VERSION
12548
				INTO
12549
					dpkgVersion
12550
				FROM
12551
					PACKAGE_VERSIONS pv
12552
				WHERE
12553
	   				 pv.PV_ID = pvID;
12554
 
12555
				-- enter a marker row
12556
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12557
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
12558
				VALUES (
12559
					top_pkgID,
12560
					top_pkgName,
12561
					top_pvID,
12562
					top_pkgVer,
12563
					pvID,
12564
					dpkgName,
12565
					dpkgVersion,
12566
					NULL,
12567
					NULL );
12568
 
12569
			END IF;
12570
 
12571
			-- If this package version has dependencies then recurse
12572
			SELECT
12573
				COUNT(*)
12574
			INTO
12575
				depCheck
12576
			FROM
12577
				PACKAGE_DEPENDENCIES
12578
			WHERE
12579
				PV_ID = pvID;
12580
 
12581
			IF ( depCheck > 0 ) THEN
12582
				-- get dependencies and call this function recursively for each one
12583
				FOR dep_rec IN  dep_packs_cur
12584
				LOOP
12585
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
12586
				END LOOP;
12587
 
12588
			END IF;
12589
 
12590
		END IF;
12591
 
12592
	/*EXCEPTION
12593
		WHEN OTHERS THEN
12594
			no exception handling required
12595
	*/
12596
	END;
12597
 
12598
END Rm_Issues;
4040 dpurdie 12599
 
1374 dpurdie 12600
/
1373 dpurdie 12601
 
4040 dpurdie 12602
/
12603
--------------------------------------------------------
12604
--  DDL for Procedure ADD_AUTOBUILD_FAILURE_INFO
12605
--------------------------------------------------------
12606
set define off;
12607
 
1373 dpurdie 12608
  CREATE OR REPLACE PROCEDURE "ADD_AUTOBUILD_FAILURE_INFO" (
12609
   nprojid     IN   NUMBER,
12610
   nviewid     IN   NUMBER,
12611
   suserlist   IN   VARCHAR2
12612
)
12613
IS
12614
   groupid   NUMBER;
12615
/******************************************************************************
12616
   NAME:       ADD_AUTOBUILD_FAILURE
12617
   PURPOSE:
12618
 
12619
   REVISIONS:
12620
   Ver        Date        Author           Description
12621
   ---------  ----------  ---------------  ------------------------------------
12622
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
12623
 
12624
   NOTES:
12625
 
12626
   Automatically available Auto Replace Keywords:
12627
      Object Name:     ADD_AUTOBUILD_FAILURE
12628
      Sysdate:         11/04/2006
12629
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
12630
      Username:         (set in TOAD Options, Procedure Editor)
12631
      Table Name:       (set in the "New PL/SQL Object" dialog)
12632
 
12633
******************************************************************************/
12634
BEGIN
12635
   BEGIN
12636
      SELECT group_email_id
12637
        INTO groupid
12638
        FROM autobuild_failure
12639
       WHERE proj_id = nprojid AND view_id = nviewid;
12640
   EXCEPTION
12641
      WHEN NO_DATA_FOUND
12642
      THEN
12643
         --  Create Next Sequence Id ---
12644
         SELECT seq_group_email_id.NEXTVAL
12645
           INTO groupid
12646
           FROM DUAL;
12647
 
12648
         INSERT INTO autobuild_failure
12649
                     (group_email_id, proj_id, view_id
12650
                     )
12651
              VALUES (groupid, nprojid, nviewid
12652
                     );
12653
   END;
12654
 
12655
   add_view_members (groupid, suserlist);
12656
END add_autobuild_failure_info;
4040 dpurdie 12657
 
1374 dpurdie 12658
/
1373 dpurdie 12659
 
4040 dpurdie 12660
/
12661
--------------------------------------------------------
12662
--  DDL for Procedure ADD_COMPONENT
12663
--------------------------------------------------------
12664
set define off;
12665
 
3959 dpurdie 12666
  CREATE OR REPLACE PROCEDURE "ADD_COMPONENT" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
12667
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
12668
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
12669
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
12670
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
12671
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
12672
                                           ) IS
12673
/* ---------------------------------------------------------------------------
12674
    Version: 3.0.0
12675
   --------------------------------------------------------------------------- */
1373 dpurdie 12676
 
12677
 
12678
BEGIN
12679
 
3959 dpurdie 12680
	 --- Insert into RELEASE_COMPONENTS
12681
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
12682
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
1373 dpurdie 12683
 
12684
 
3959 dpurdie 12685
 
12686
 
12687
END Add_Component;
4040 dpurdie 12688
 
1374 dpurdie 12689
/
1373 dpurdie 12690
 
4040 dpurdie 12691
/
12692
--------------------------------------------------------
12693
--  DDL for Procedure ADD_PACKAGE_INTEREST
12694
--------------------------------------------------------
12695
set define off;
12696
 
3959 dpurdie 12697
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
12698
	   	  		  								  nPkgIdList IN VARCHAR2,
12699
												  nUserId IN NUMBER
12700
	   	  		  								  ) IS
1373 dpurdie 12701
 
3959 dpurdie 12702
/******************************************************************************
12703
   NAME:       ADD_PACKAGE_INTEREST
12704
   PURPOSE:    
1373 dpurdie 12705
 
3959 dpurdie 12706
   REVISIONS:
12707
   Ver        Date        Author           Description
12708
   ---------  ----------  ---------------  ------------------------------------
12709
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
12710
 
12711
   NOTES:
12712
 
12713
   Automatically available Auto Replace Keywords:
12714
      Object Name:     ADD_PACKAGE_INTEREST
12715
      Sysdate:         12/05/2006
12716
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
12717
      Username:         (set in TOAD Options, Procedure Editor)
12718
      Table Name:       (set in the "New PL/SQL Object" dialog)
12719
 
12720
******************************************************************************/
12721
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
12722
   nPkgId NUMBER;
1373 dpurdie 12723
BEGIN
12724
 
3959 dpurdie 12725
	 npkgidcollector := in_list_number2 (nPkgIdList);
12726
 
12727
	FOR i IN 1..npkgidcollector.COUNT
12728
	LOOP
12729
		nPkgId := npkgidcollector(i);
1373 dpurdie 12730
 
3959 dpurdie 12731
	 --- Insert into PACKAGE_INTEREST TABLE
12732
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
12733
	 VALUES(nProjId, nPkgId, nUserId);
12734
	END LOOP;	 
12735
 
1373 dpurdie 12736
 
3959 dpurdie 12737
END ADD_PACKAGE_INTEREST;
4040 dpurdie 12738
 
3959 dpurdie 12739
/
1373 dpurdie 12740
 
4040 dpurdie 12741
/
12742
--------------------------------------------------------
12743
--  DDL for Procedure ADD_PACKAGE_INTEREST_TEST
12744
--------------------------------------------------------
12745
set define off;
12746
 
3959 dpurdie 12747
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST_TEST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
12748
	   	  		  								  nPkgIdList IN VARCHAR2,
12749
												  nUserId IN NUMBER
12750
	   	  		  								  ) IS
1373 dpurdie 12751
 
3959 dpurdie 12752
/******************************************************************************
12753
   NAME:       ADD_PACKAGE_INTEREST
12754
   PURPOSE:    
12755
 
12756
   REVISIONS:
12757
   Ver        Date        Author           Description
12758
   ---------  ----------  ---------------  ------------------------------------
12759
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
12760
 
12761
   NOTES:
12762
 
12763
   Automatically available Auto Replace Keywords:
12764
      Object Name:     ADD_PACKAGE_INTEREST
12765
      Sysdate:         12/05/2006
12766
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
12767
      Username:         (set in TOAD Options, Procedure Editor)
12768
      Table Name:       (set in the "New PL/SQL Object" dialog)
12769
 
12770
******************************************************************************/
12771
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
12772
   nPkgId NUMBER;
12773
BEGIN
12774
 
12775
	 npkgidcollector := in_list_number2 (nPkgIdList);
12776
 
12777
	FOR i IN 1..npkgidcollector.COUNT
12778
	LOOP
12779
		nPkgId := npkgidcollector(i);
12780
 
12781
	 --- Insert into PACKAGE_INTEREST TABLE
12782
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
12783
	 VALUES(nProjId, nPkgId, nUserId);
12784
	END LOOP;	 
12785
 
12786
 
12787
END ADD_PACKAGE_INTEREST_TEST;
4040 dpurdie 12788
 
1374 dpurdie 12789
/
1373 dpurdie 12790
 
4040 dpurdie 12791
/
12792
--------------------------------------------------------
12793
--  DDL for Procedure ADD_RUNTIME_DEPENDENCY
12794
--------------------------------------------------------
12795
set define off;
12796
 
3959 dpurdie 12797
  CREATE OR REPLACE PROCEDURE "ADD_RUNTIME_DEPENDENCY" ( NNpv_id IN NUMBER,
12798
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
12799
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
12800
                                                     NNuser_id IN NUMBER
12801
                                                    ) IS
1373 dpurdie 12802
/* ---------------------------------------------------------------------------
3959 dpurdie 12803
    Version: 3.1
1373 dpurdie 12804
   --------------------------------------------------------------------------- */
12805
 
3959 dpurdie 12806
    retRTD_ID NUMBER;
12807
 
12808
	CURSOR rtd_cur IS
12809
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
12810
    rtd_rec rtd_cur%ROWTYPE;
12811
 
1373 dpurdie 12812
BEGIN
3959 dpurdie 12813
    --- Seed database with package_name and version if required ---
12814
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
1373 dpurdie 12815
 
3959 dpurdie 12816
	OPEN rtd_cur;
12817
    FETCH rtd_cur INTO rtd_rec;
1373 dpurdie 12818
 
3959 dpurdie 12819
    IF rtd_cur%NOTFOUND
12820
    THEN
12821
		/* Make sure it does not exists already as runtime dependency */
1373 dpurdie 12822
 
3959 dpurdie 12823
		--- Add new Runtime Dependency ---
12824
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
12825
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
1373 dpurdie 12826
 
3959 dpurdie 12827
    	/* LOG ACTION */
12828
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
12829
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
12830
 
12831
	END IF;
12832
 
12833
 
12834
END Add_Runtime_Dependency;
4040 dpurdie 12835
 
1374 dpurdie 12836
/
1373 dpurdie 12837
 
4040 dpurdie 12838
/
12839
--------------------------------------------------------
12840
--  DDL for Procedure ADD_VIEW_MEMBERS
12841
--------------------------------------------------------
12842
set define off;
12843
 
3959 dpurdie 12844
  CREATE OR REPLACE PROCEDURE "ADD_VIEW_MEMBERS" (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
12845
 
12846
/******************************************************************************
12847
   NAME:       ADD_VIEW_MEMBERS
12848
   PURPOSE:    
12849
 
12850
   REVISIONS:
12851
   Ver        Date        Author           Description
12852
   ---------  ----------  ---------------  ------------------------------------
12853
   1.0        11/04/2006          1. Created this procedure.
12854
 
12855
   NOTES:
12856
 
12857
   Automatically available Auto Replace Keywords:
12858
      Object Name:     ADD_VIEW_MEMBERS
12859
      Sysdate:         11/04/2006
12860
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
12861
      Username:         (set in TOAD Options, Procedure Editor)
12862
      Table Name:       (set in the "New PL/SQL Object" dialog)
12863
 
12864
******************************************************************************/
12865
CURSOR user_cur IS
12866
	SELECT u.USER_ID
12867
	  FROM USERS u
12868
	 WHERE u.USER_ID IN (
12869
	 	   			   	SELECT * 
12870
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
12871
						);
12872
user_rec user_cur%ROWTYPE;
12873
 
12874
 
12875
BEGIN
12876
 
12877
	 OPEN user_cur;
12878
	 FETCH user_cur INTO user_rec;
12879
 
12880
	 WHILE user_cur%FOUND
12881
	 LOOP
12882
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
12883
	 	 VALUES ( nGroupId, user_rec.USER_ID);
12884
 
12885
	 	 FETCH user_cur INTO user_rec;	 
12886
	 END LOOP;	 
12887
 
12888
 
12889
 
12890
END ADD_VIEW_MEMBERS;
4040 dpurdie 12891
 
1374 dpurdie 12892
/
1373 dpurdie 12893
 
4040 dpurdie 12894
/
12895
--------------------------------------------------------
12896
--  DDL for Procedure BASIC_CLONE
12897
--------------------------------------------------------
12898
set define off;
12899
 
1373 dpurdie 12900
  CREATE OR REPLACE PROCEDURE "BASIC_CLONE" ( nFROMpv_id IN NUMBER,
12901
                        nTOpv_id IN NUMBER,
12902
                        nRtag_id IN NUMBER,
12903
                        nUser_id IN NUMBER,
12904
                        nTOpkg_id IN NUMBER DEFAULT NULL,
12905
                        enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
12906
 
12907
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
12908
   major NUMBER;
12909
   minor NUMBER;
12910
   patch NUMBER;
12911
   buildn NUMBER;
12912
   from_vcs_type_id NUMBER;
12913
BEGIN
12914
------------------------------ Version Control System ------------------------------------------
12915
   SELECT vcs_type_id
12916
      INTO from_vcs_type_id
12917
      FROM package_versions WHERE pv_id = nFROMpv_id;
12918
 
12919
   UPDATE package_versions
12920
      SET vcs_type_id = from_vcs_type_id
12921
      WHERE pv_id = nTOpv_id;
12922
------------------------------------- Limits ---------------------------------------------------
12923
   select major_limit, minor_limit, patch_limit, build_number_limit
12924
   into major, minor, patch, buildn
12925
   from package_versions where pv_id=nFROMpv_id;
12926
    UPDATE package_versions SET
12927
           major_limit = major,
12928
           minor_limit = minor,
12929
           patch_limit = patch,
12930
           build_number_limit = buildn
12931
     WHERE PV_ID = nTOpv_id;
12932
------------------------------------- Clone Dependencies ---------------------------------------------------
12933
   IF NOT nRtag_id IS NULL
12934
   THEN
12935
      -- Auto Update Dependencies --
12936
      INSERT INTO PACKAGE_DEPENDENCIES
12937
           SELECT nTOpv_id AS pv_id,
12938
                  DECODE(nUser_id,
12939
                         frc.modifier_id,
12940
                         frc.pv_id,
12941
                         DECODE(frc.dlocked,
12942
                                'Y',
12943
                                frc.pv_id,
12944
                                dep.dpv_id)
12945
                         ) AS dpv_id,
12946
                  nTOpkg_id AS pkg_id,
12947
                  dep.dpkg_id,
12948
                  dep.build_type,
12949
                  dep.display_order
12950
             FROM PACKAGE_DEPENDENCIES dep,
12951
                  PACKAGE_VERSIONS pv,
12952
                  (
12953
                  /* Full Release Contents used for reference*/
12954
                  SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
12955
                  FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
12956
                  WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
12957
                  ) frc
12958
            WHERE dep.pv_id = nFROMpv_id
12959
              AND dep.dpv_id = pv.pv_id
12960
              AND pv.pkg_id = frc.pkg_id(+)
12961
              AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
12962
   ELSE
12963
      -- Clone Dependencies --
12964
      INSERT INTO PACKAGE_DEPENDENCIES
12965
           SELECT nTOpv_id         AS pv_id,
12966
                  dep.dpv_id,
12967
                  nTOpkg_id        AS pkg_id,
12968
                  dep.dpkg_id,
12969
                  dep.build_type,
12970
                  dep.display_order
12971
             FROM PACKAGE_DEPENDENCIES dep
12972
            WHERE dep.pv_id = nFROMpv_id;
12973
 
12974
   END IF;
12975
 
12976
----------------------------------------- Clone Issues -------------------------------------------------------
12977
   IF enumISSUES_STATE_IMPORTED IS NULL
12978
   THEN
12979
        /* All Issues */
12980
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
12981
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
12982
              FROM CQ_ISSUES
12983
             WHERE pv_id = nFROMpv_id;
12984
   ELSE
12985
       /* Outstanding Issues Only */
12986
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
12987
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
12988
              FROM CQ_ISSUES
12989
             WHERE pv_id = nFROMpv_id
12990
               AND iss_state = enumISSUES_STATE_IMPORTED;
12991
   END IF;
12992
 
12993
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
12994
   INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
12995
       SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
12996
       FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
12997
 
12998
--------------------------------------- Clone Additional Notes ------------------------------------------------
12999
   INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
13000
        SELECT an.NOTE_ID,
13001
               nTOpv_id AS PV_ID,
13002
               an.NOTE_TITLE,
13003
               an.NOTE_BODY,
13004
               an.MOD_DATE,
13005
               an.MOD_USER
13006
          FROM ADDITIONAL_NOTES an
13007
         WHERE an.PV_ID = nFROMpv_id;
13008
 
13009
-------------------------------------------- Clone Unit Tests -------------------------------------------------
13010
   -- Clone only Automatic unit tests --
13011
   INSERT INTO UNIT_TESTS (
13012
                           TEST_ID,
13013
                           PV_ID,
13014
                           TEST_TYPES_FK,
13015
                           TEST_SUMMARY,
13016
                           COMPLETION_DATE,
13017
                           COMPLETED_BY,
13018
                           RESULTS_URL,
13019
                           RESULTS_ATTACHMENT_NAME,
13020
                           NUMOF_TEST
13021
                          )
13022
        SELECT ut.TEST_ID,
13023
               nTOpv_id AS PV_ID,
13024
               ut.TEST_TYPES_FK,
13025
               ut.TEST_SUMMARY,
13026
               Ora_Sysdate AS COMPLETION_DATE,
13027
               nUser_id AS COMPLETED_BY,
13028
               ut.RESULTS_URL,
13029
               ut.RESULTS_ATTACHMENT_NAME,
13030
               ut.NUMOF_TEST
13031
          FROM UNIT_TESTS ut
13032
         WHERE ut.PV_ID = nFROMpv_id
13033
           AND ut.TEST_TYPES_FK IN ( 5, 7 );
13034
 
13035
    -- Clone only Interactive Unit Tests --
13036
    INSERT INTO UNIT_TESTS (
13037
                            TEST_ID,
13038
                            PV_ID,
13039
                            TEST_TYPES_FK,
13040
                            TEST_SUMMARY
13041
                           )
13042
       SELECT ut.TEST_ID,
13043
              nTOpv_id AS PV_ID,
13044
              ut.TEST_TYPES_FK,
13045
              ut.TEST_SUMMARY
13046
         FROM UNIT_TESTS ut
13047
        WHERE ut.PV_ID = nFROMpv_id
13048
          AND ut.TEST_TYPES_FK IN (6);
13049
 
13050
-------------------------------------------- Clone Package Documents ------------------------------------------
13051
   INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
13052
        SELECT nTOpv_id AS PV_ID,
13053
               pd.test_id,
13054
               pd.doc_num,
13055
               pd.doc_id,
13056
               pd.IS_LATEST
13057
          FROM PACKAGE_DOCUMENTS pd
13058
         WHERE pd.PV_ID = nFROMpv_id;
13059
 
13060
-------------------------------------------- Clone Build Environments -----------------------------------------
13061
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
13062
    SELECT nTOpv_id AS PV_ID,
13063
           pkgbe.BE_ID,
13064
           pkgbe.BUILD_TYPE
13065
      FROM PACKAGE_BUILD_ENV pkgbe
13066
     WHERE pkgbe.PV_ID = nFROMpv_id;
13067
---------------------------------------------Clone Package Build Info------------------------------------------
13068
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
13069
    SELECT nTOpv_id AS PV_ID,
13070
           pkgbinfo.BM_ID,
13071
           pkgbinfo.BSA_ID
13072
      FROM PACKAGE_BUILD_INFO pkgbinfo
13073
     WHERE pkgbinfo.PV_ID = nFROMpv_id;
13074
---------------------------------------------Clone Package Version Processes-----------------------------------
13075
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
13076
    SELECT nTOpv_id AS PV_ID,
13077
           pp.PROC_ID
13078
      FROM PACKAGE_PROCESSES pp
13079
     WHERE pp.PV_ID = nFROMpv_id;
13080
---------------------------------------------Clone Licencing Associations-----------------------------------
13081
    PK_LICENCING.CLONE_LICENCING(nFROMpv_id, nTOpv_id, nUser_id);
13082
---------------------------------------------------------------------------------------------------------------
13083
 
13084
    /* LOG ACTION */
13085
    SELECT pv.PKG_VERSION INTO FromVersion
13086
      FROM PACKAGE_VERSIONS pv
13087
     WHERE pv.PV_ID = nFROMpv_id;
13088
 
13089
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
13090
                 'Details cloned from: '|| FromVersion );
13091
 
13092
---------------------------------------------------------------------------------------------------------------
13093
 
13094
END Basic_Clone;
4040 dpurdie 13095
 
1374 dpurdie 13096
/
1373 dpurdie 13097
 
4040 dpurdie 13098
/
13099
--------------------------------------------------------
13100
--  DDL for Procedure BUILD_TREE
13101
--------------------------------------------------------
13102
set define off;
13103
 
3959 dpurdie 13104
  CREATE OR REPLACE PROCEDURE "BUILD_TREE" ( nRtag_id IN NUMBER,
13105
	   	  		  					     retSessionNum OUT NUMBER ) IS
13106
 
1373 dpurdie 13107
/* ---------------------------------------------------------------------------
3959 dpurdie 13108
    Version: 3.0.0
1373 dpurdie 13109
   --------------------------------------------------------------------------- */
3959 dpurdie 13110
    rowCnt 			NUMBER := 0;						-- Iterations counter
13111
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
13112
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
13113
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
13114
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
13115
    sessionNum 		NUMBER;
13116
	levelNum		NUMBER;
13117
 
13118
BEGIN
13119
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
13120
 
13121
	/*
13122
	||	   Start UP THE TREE
13123
	*/
13124
 
13125
 
13126
	/* Packages with no dependencies */    
13127
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
13128
		SELECT sessionNum AS SESSION_NUM,
13129
			   iteration AS LEVEL_NUM,
13130
			   UP_THE_TREE AS DIRECTION,
13131
			   rc.pv_id, pv.pkg_id, pv.v_ext
13132
		  FROM release_content rc,
13133
		  	   package_versions pv
13134
		 WHERE rc.rtag_id = nRtag_id
13135
		   AND rc.pv_id = pv.pv_id
13136
		 MINUS
13137
		SELECT sessionNum AS SESSION_NUM, 
13138
			   iteration AS LEVEL_NUM,
13139
			   UP_THE_TREE AS DIRECTION,
13140
			   dep.pv_id, pv.pkg_id, pv.v_ext
13141
		  FROM package_dependencies dep,
13142
		  	   package_versions pv
13143
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
13144
		   AND dep.pv_id = pv.pv_id;
13145
 
13146
 
13147
	/* Browse UP the build tree */	   
13148
	iteration := iteration + 1;
13149
    LOOP
13150
 
13151
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
13152
			SELECT DISTINCT 
13153
			       sessionNum AS SESSION_NUM,
13154
			       iteration AS LEVEL_NUM,
13155
				   UP_THE_TREE AS DIRECTION, 
13156
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
13157
			  FROM (  
13158
			        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
13159
			          FROM package_dependencies dep,
13160
			               release_content rc,
13161
						   package_versions pv,
13162
						   package_versions dpv
13163
			         WHERE dep.pv_id = rc.pv_id
13164
			           AND rc.rtag_id = nRtag_id
13165
					   AND dep.pv_id = pv.pv_id
13166
					   AND dep.dpv_id = dpv.pv_id
13167
					) rdep,
13168
					temp_tree_browse ttb
13169
			 WHERE rdep.dpkg_id  = ttb.pkg_id
13170
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
13171
			   AND ttb.SESSION_NUM = sessionNum
13172
			   AND ttb.LEVEL_NUM = iteration - 1	
13173
			MINUS
13174
			/* Packages with all depencencies NOT matched */  
13175
			SELECT DISTINCT 
13176
			       sessionNum AS SESSION_NUM,
13177
			       iteration AS LEVEL_NUM, 
13178
				   UP_THE_TREE AS DIRECTION,
13179
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
13180
			  FROM (  
13181
			        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
13182
			          FROM package_dependencies dep,
13183
			               release_content rc,
13184
						   package_versions pv,
13185
						   package_versions dpv
13186
			         WHERE dep.pv_id = rc.pv_id
13187
			           AND rc.rtag_id = nRtag_id
13188
					   AND dep.pv_id = pv.pv_id
13189
					   AND dep.dpv_id = dpv.pv_id
13190
					) rdep,
13191
					(
13192
					 SELECT tb.*
13193
					   FROM temp_tree_browse tb
13194
					  WHERE tb.SESSION_NUM = sessionNum
13195
					) ttb
13196
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
13197
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
13198
			   AND ttb.SESSION_NUM IS NULL;
13199
 
13200
		rowCnt := SQL%ROWCOUNT;
13201
		IF rowCnt > 0 THEN
13202
           iteration := iteration + 1;
13203
		END IF;
13204
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
13205
    END LOOP;
13206
 
13207
	/*---------------------------------------------------------------------------------------------------------------------*/
13208
 
13209
	/*     Check for unresolved dependencies
13210
	||  
13211
	*/
13212
	/* UNRESOLVED */
13213
	 SELECT COUNT(*) INTO rowCnt
13214
	   FROM (
13215
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13216
			  FROM release_content rc,
13217
			  	   package_versions pv
13218
			 WHERE rc.rtag_id = nRtag_id
13219
			   AND rc.pv_id = pv.pv_id	   
13220
			MINUS
13221
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13222
			  FROM temp_tree_browse ttb
13223
			 WHERE ttb.session_num = sessionNum
13224
			);
13225
 
13226
 
13227
 
13228
	 IF rowCnt > 0 
13229
	 THEN
13230
	 	 /*     Circular dependencies detected.
13231
		 ||     Try to resolve build order from the top now.
13232
		 ||		Start DOWN THE TREE
13233
		 */
13234
 
13235
		iteration := 0; 
13236
		 /* Top Level packages */	
13237
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
13238
			SELECT sessionNum AS SESSION_NUM,
13239
			       iteration AS LEVEL_NUM,
13240
				   DOWN_THE_TREE AS DIRECTION,
13241
				   pv.pv_id, pv.pkg_id, pv.v_ext
13242
			  FROM (		   
13243
					/* Packages no one depends on ( Top level packages )*/
13244
					( 
13245
					/* All parents*/ 
13246
					SELECT pv.pkg_id, pv.v_ext
13247
			          FROM package_dependencies dep,
13248
			               release_content rc,
13249
						   package_versions pv
13250
			         WHERE dep.pv_id = rc.pv_id
13251
			           AND rc.rtag_id = nRtag_id
13252
					   AND dep.pv_id = pv.pv_id
13253
					 MINUS
13254
					 /* All children */
13255
					SELECT dpv.pkg_id, dpv.v_ext
13256
			          FROM package_dependencies dep,
13257
			               release_content rc,
13258
						   package_versions dpv
13259
			         WHERE dep.pv_id = rc.pv_id
13260
			           AND rc.rtag_id = nRtag_id
13261
					   AND dep.dpv_id = dpv.pv_id
13262
					 ) 
13263
					 MINUS
13264
					/* Packages with resolved dependencies from UP THE TREE */ 
13265
					SELECT ttb.pkg_id, ttb.v_ext
13266
					  FROM temp_tree_browse ttb
13267
					 WHERE ttb.session_num = sessionNum
13268
				  ) tpkg,
13269
				  package_versions pv,
13270
				  release_content rc
13271
			WHERE rc.rtag_id = nRtag_id
13272
			  AND rc.pv_id = pv.pv_id
13273
			  AND tpkg.pkg_id = pv.pkg_id
13274
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
13275
 
13276
 
13277
		 /* Keep taking packages which no one depende on */			  
13278
		 iteration := iteration - 1;  
13279
		 LOOP	  
13280
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
13281
					SELECT sessionNum AS SESSION_NUM,
13282
					       iteration AS LEVEL_NUM,
13283
					       DOWN_THE_TREE AS DIRECTION,
13284
					       pv.pv_id, pv.pkg_id, pv.v_ext
13285
					  FROM (		   
13286
					 	/* All Unresolved */
13287
					 	(
13288
					 	SELECT pv.pkg_id, pv.v_ext
13289
					 	  FROM release_content rc,
13290
					 	  	   package_versions pv
13291
					 	 WHERE rc.rtag_id = nRtag_id
13292
					 	   AND rc.pv_id = pv.pv_id	   
13293
					 	MINUS
13294
					 	SELECT ttb.pkg_id, ttb.v_ext
13295
					 	  FROM temp_tree_browse ttb
13296
					 	 WHERE ttb.session_num = sessionNum
13297
					 	)
13298
					 	 MINUS
13299
					 	(  
13300
					 	 /* Children of Unresolved */  
13301
					 	SELECT dpv.pkg_id, dpv.V_EXT
13302
					 	  FROM (
13303
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13304
					 			  FROM release_content rc,
13305
					 			  	   package_versions pv
13306
					 			 WHERE rc.rtag_id = nRtag_id
13307
					 			   AND rc.pv_id = pv.pv_id	   
13308
					 			MINUS
13309
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13310
					 			  FROM temp_tree_browse ttb
13311
					 			 WHERE ttb.session_num = sessionNum
13312
					 		   ) unr,
13313
					 		   package_dependencies dep,
13314
					 		   package_versions dpv
13315
					 	 WHERE unr.pv_id = dep.pv_id
13316
					 	   AND dep.dpv_id = dpv.pv_id
13317
					 	 )  
13318
					   ) tpkg,
13319
					   package_versions pv,
13320
					   release_content rc
13321
					WHERE rc.rtag_id = nRtag_id
13322
					  AND rc.pv_id = pv.pv_id
13323
					  AND tpkg.pkg_id = pv.pkg_id
13324
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
13325
 
13326
            rowCnt := SQL%ROWCOUNT;
13327
        	IF rowCnt > 0 THEN
13328
	           iteration := iteration - 1;
13329
			END IF;
13330
            EXIT WHEN (rowCnt < 1);
13331
     	END LOOP;
13332
 
13333
	 END IF;
13334
 
13335
 
13336
	/*---------------------------------------------------------------------------------------------------------------------*/
13337
 
13338
	/* 
13339
	|| 	 Save results from temp table
13340
	*/	
13341
	/* Clean up build_order table */
13342
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
13343
 
13344
	/* Save UP THE TREE */
13345
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
13346
		SELECT nRtag_id AS rtag_id,
13347
			   ttb.level_num AS step_num, 
13348
			   ttb.PV_ID
13349
		  FROM temp_tree_browse ttb
13350
		 WHERE ttb.session_num = sessionNum
13351
		   AND ttb.direction = UP_THE_TREE;	
13352
 
13353
	/*Get last step_num */
13354
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
13355
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
13356
 
13357
	/* UNRESOLVED */
13358
	 SELECT COUNT(*) INTO rowCnt
13359
	   FROM (
13360
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13361
			  FROM release_content rc,
13362
			  	   package_versions pv
13363
			 WHERE rc.rtag_id = nRtag_id
13364
			   AND rc.pv_id = pv.pv_id	   
13365
			MINUS
13366
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13367
			  FROM temp_tree_browse ttb
13368
			 WHERE ttb.session_num = sessionNum
13369
			);
13370
 
13371
 
13372
	IF rowCnt > 0
13373
	THEN
13374
		/* Save unresolved packages */
13375
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
13376
		    SELECT  nRtag_id AS rtag_id,
13377
				    levelNum AS step_num, 
13378
				    upv.PV_ID,
13379
					'Y' AS UNRESOLVED
13380
			   FROM (
13381
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13382
					  FROM release_content rc,
13383
					  	   package_versions pv
13384
					 WHERE rc.rtag_id = nRtag_id
13385
					   AND rc.pv_id = pv.pv_id	   
13386
					MINUS
13387
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13388
					  FROM temp_tree_browse ttb
13389
					 WHERE ttb.session_num = sessionNum
13390
					) upv;
13391
	END IF;	
13392
 
13393
	/* Save DOWN THE TREE */
13394
	levelNum := 1000;
13395
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
13396
		SELECT nRtag_id AS rtag_id,
13397
			   levelNum + ttb.level_num  AS step_num, 
13398
			   ttb.PV_ID
13399
		  FROM temp_tree_browse ttb
13400
		 WHERE ttb.session_num = sessionNum
13401
		   AND ttb.direction = DOWN_THE_TREE;
13402
 
13403
 
13404
	/*---------------------------------------------------------------------------------------------------------------------*/
13405
 
13406
	/* Clean up temp table */
13407
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
13408
 
13409
	retSessionNum := sessionNum;
13410
END Build_Tree;
4040 dpurdie 13411
 
3959 dpurdie 13412
/
1373 dpurdie 13413
 
4040 dpurdie 13414
/
13415
--------------------------------------------------------
13416
--  DDL for Procedure CHANGE_PACKAGE_STATE
13417
--------------------------------------------------------
13418
set define off;
13419
 
3959 dpurdie 13420
  CREATE OR REPLACE PROCEDURE "CHANGE_PACKAGE_STATE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
13421
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
13422
/* ---------------------------------------------------------------------------
13423
    Version: 4.0
13424
   --------------------------------------------------------------------------- */
1373 dpurdie 13425
 
13426
BEGIN
13427
 
3959 dpurdie 13428
    -- Unlock Package
13429
    UPDATE RELEASE_CONTENT rc SET
13430
    	rc.PKG_STATE = 0
13431
    WHERE rc.PV_ID = nPvId
13432
	AND rc.RTAG_ID = nRtagId;
1373 dpurdie 13433
 
3959 dpurdie 13434
    /* LOG ACTION */
13435
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
1373 dpurdie 13436
 
3959 dpurdie 13437
END Change_Package_State;
4040 dpurdie 13438
 
1374 dpurdie 13439
/
1373 dpurdie 13440
 
4040 dpurdie 13441
/
13442
--------------------------------------------------------
13443
--  DDL for Procedure CHANGE_RELEASE_MODE
13444
--------------------------------------------------------
13445
set define off;
13446
 
3959 dpurdie 13447
  CREATE OR REPLACE PROCEDURE "CHANGE_RELEASE_MODE" ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
13448
/* ---------------------------------------------------------------------------
13449
    Version: 3.0.0
13450
   --------------------------------------------------------------------------- */
1373 dpurdie 13451
 
3959 dpurdie 13452
	cMode CHAR(1) := NULL;  
13453
	nProjId NUMBER; 
1373 dpurdie 13454
 
13455
BEGIN
3959 dpurdie 13456
 
1373 dpurdie 13457
 
3959 dpurdie 13458
	/*
13459
	Author: Rupesh Solanki
13460
	Modified: 24th October 2006
13461
	Reason: Added the archive mode state into Release Manager 
13462
	||	1 - Open Mode
13463
	||	2 - Restrictive Mode
13464
	||	3 - Closed Mode
13465
	||	4 - CCB Mode
13466
	||	5 - Archive Mode
13467
	*/	
13468
	-- Get project Id
13469
	SELECT rt.PROJ_ID INTO nProjId
13470
	  FROM RELEASE_TAGS rt
13471
	 WHERE rt.RTAG_ID = nRtagId; 
13472
 
13473
	IF nModeCode = 1 THEN
13474
		-- Open Mode
13475
		cMode := 'N';
13476
 
13477
		/* LOG ACTION */
13478
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
13479
 
13480
	ELSIF nModeCode = 2 THEN
13481
		-- Restrictive Mode
13482
		cMode := 'R';
13483
 
13484
		/* LOG ACTION */
13485
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
13486
 
13487
	ELSIF nModeCode = 3 THEN
13488
		-- Closed Mode
13489
		cMode := 'Y';
13490
 
13491
		/* LOG ACTION */
13492
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
1373 dpurdie 13493
 
3959 dpurdie 13494
	ELSIF nModeCode = 4 THEN
13495
		-- CCB Mode
13496
		cMode := 'C';
13497
 
13498
		/* LOG ACTION */
13499
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
13500
 
13501
	ELSIF nModeCode = 5 THEN
13502
		-- Archive Mode
13503
		cMode := 'A';
13504
 
13505
		/* LOG ACTION */
13506
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
13507
 
13508
 
13509
	END IF;
13510
 
13511
 
13512
 
13513
	-- Now update table
13514
	IF NOT cMode IS NULL THEN
13515
		UPDATE RELEASE_TAGS rt SET
4211 dpurdie 13516
		rt.OFFICIAL = cMode,
13517
    rt.OFFICIAL_STAMP = ORA_SYSDATETIME,
13518
    rt.OFFICIAL_ID = UserId
3959 dpurdie 13519
		WHERE rt.RTAG_ID = nRtagId;
13520
 
13521
	END IF;
1373 dpurdie 13522
 
13523
 
3959 dpurdie 13524
END CHANGE_RELEASE_MODE;
4040 dpurdie 13525
 
1374 dpurdie 13526
/
1373 dpurdie 13527
 
4040 dpurdie 13528
/
13529
--------------------------------------------------------
13530
--  DDL for Procedure CHECK_NEW_PATCHES
13531
--------------------------------------------------------
13532
set define off;
13533
 
3959 dpurdie 13534
  CREATE OR REPLACE PROCEDURE "CHECK_NEW_PATCHES" (
13535
   nrtagid   IN   release_content.rtag_id%TYPE
1373 dpurdie 13536
)
13537
IS
13538
/* ---------------------------------------------------------------------------
3959 dpurdie 13539
    Version: 3.0
1373 dpurdie 13540
   --------------------------------------------------------------------------- */
13541
BEGIN
3959 dpurdie 13542
   /*--------------- Business Rules Here -------------------*/
13543
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
13544
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
13545
   END IF
13546
 
13547
   /*-------------------------------------------------------*/
13548
   UPDATE release_content rc
13549
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
13550
    WHERE rc.pv_id IN (
13551
             SELECT prod.pv_id
13552
               FROM (SELECT   pp.pv_id AS orig_parent_id,
13553
                              COUNT (*) AS num_of_patches
13554
                         FROM release_content rc, package_patches pp
13555
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
13556
                     GROUP BY pp.pv_id) orig,
13557
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
13558
                              COUNT (*) AS num_of_patches
13559
                         FROM release_content rc,
13560
                              package_patches pp,
13561
                              package_dependencies dep,
13562
                              package_versions pv,
13563
                              package_patches prodpp
13564
                        WHERE rc.pv_id = pp.pv_id
13565
                          AND rc.rtag_id = nrtagid
13566
                          AND pp.patch_id = dep.dpv_id
13567
                          AND dep.pv_id = pv.pv_id
13568
                          AND pv.is_patch = 'Y'
13569
                          AND pv.dlocked = 'Y'
13570
                          AND prodpp.patch_id = dep.pv_id
13571
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
13572
                    release_content rc
13573
              WHERE orig.orig_parent_id = prod.pv_id
13574
                AND orig.num_of_patches != prod.num_of_patches
13575
                AND rc.rtag_id = nrtagid
13576
                AND rc.pv_id = prod.pv_id
13577
                AND rc.pkg_state = 0
13578
             UNION
13579
             SELECT   prodpp.pv_id
13580
                 FROM release_content rc,
13581
                      package_patches pp,
13582
                      package_dependencies dep,
1373 dpurdie 13583
                      package_versions pv,
3959 dpurdie 13584
                      package_patches prodpp
13585
                WHERE rc.pv_id = pp.pv_id
13586
                  AND rc.rtag_id = nrtagid
13587
                  AND pp.patch_id = dep.dpv_id
1373 dpurdie 13588
                  AND dep.pv_id = pv.pv_id
3959 dpurdie 13589
                  AND pv.is_patch = 'Y'
13590
                  AND pv.dlocked = 'Y'
13591
                  AND prodpp.patch_id = dep.pv_id
13592
             GROUP BY prodpp.pv_id, pp.pv_id
13593
             MINUS
13594
             SELECT   pp.pv_id
13595
                 FROM release_content rc, package_patches pp
13596
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
13597
             GROUP BY pp.pv_id);
13598
END check_new_patches;
4040 dpurdie 13599
 
1374 dpurdie 13600
/
1373 dpurdie 13601
 
4040 dpurdie 13602
/
13603
--------------------------------------------------------
13604
--  DDL for Procedure CLEAN_ADVISORY_RIPPLE
13605
--------------------------------------------------------
13606
set define off;
13607
 
3959 dpurdie 13608
  CREATE OR REPLACE PROCEDURE "CLEAN_ADVISORY_RIPPLE" (nrtagid IN NUMBER)
13609
IS
13610
/******************************************************************************
13611
   NAME:       clean_advisory_ripple
1373 dpurdie 13612
 
3959 dpurdie 13613
   PURPOSE:    To delete entries from the advisory_ripple table based upon
13614
               an RTAG_ID only
1373 dpurdie 13615
 
3959 dpurdie 13616
               This is a tidy-up operation performed against the advisory_ripple
13617
               table, ensuring that the table does not have rtag_id/pv_id
13618
               combinations that cannot be found in the release's wip/pending/release
13619
               tabs.
13620
 
13621
******************************************************************************/
1373 dpurdie 13622
BEGIN
3959 dpurdie 13623
   -- Delete any invalid rtag_id/pv_id combination from the advisory_ripple table.
13624
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
13625
   -- work_in_progress, planned, or release_content table.
13626
   -- NOTE: Planned operations that represent pending additive/subtractive merge
13627
   -- operations are ignored because they have not been approved yet and so
13628
   -- cannot be said to be "in the release".
13629
   DELETE FROM advisory_ripple
13630
         WHERE rtag_id = nrtagid
13631
           AND pv_id not in
13632
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
13633
                 UNION
13634
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
13635
                 UNION
13636
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
13637
               );
13638
END clean_advisory_ripple;
4040 dpurdie 13639
 
3959 dpurdie 13640
/
1373 dpurdie 13641
 
4040 dpurdie 13642
/
13643
--------------------------------------------------------
13644
--  DDL for Procedure CLEAN_DO_NOT_RIPPLE
13645
--------------------------------------------------------
13646
set define off;
13647
 
3959 dpurdie 13648
  CREATE OR REPLACE PROCEDURE "CLEAN_DO_NOT_RIPPLE" (nrtagid IN NUMBER)
13649
IS
13650
/******************************************************************************
13651
   NAME:       clean_do_not_ripple
1373 dpurdie 13652
 
3959 dpurdie 13653
   PURPOSE:    To delete entries from the do_not_ripple table based upon
13654
               an RTAG_ID only
13655
 
13656
               This is a tidy-up operation performed against the do_not_ripple
13657
               table, ensuring that the table does not have rtag_id/pv_id
13658
               combinations that cannot be found in the release's wip/pending/release
13659
               tabs.
13660
 
13661
******************************************************************************/
13662
BEGIN
13663
   -- Delete any invalid rtag_id/pv_id combination from the do_not_ripple table.
13664
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
13665
   -- work_in_progress, planned, or release_content table.
13666
   -- NOTE: Planned operations that represent pending additive/subtractive merge
13667
   -- operations are ignored because they have not been approved yet and so
13668
   -- cannot be said to be "in the release".
13669
   DELETE FROM do_not_ripple
13670
         WHERE rtag_id = nrtagid
13671
           AND pv_id not in
13672
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
13673
                 UNION
13674
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
13675
                 UNION
13676
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
13677
               );
13678
END clean_do_not_ripple;
4040 dpurdie 13679
 
1374 dpurdie 13680
/
1373 dpurdie 13681
 
4040 dpurdie 13682
/
13683
--------------------------------------------------------
13684
--  DDL for Procedure CLEAR_ADVISORY_RIPPLE
13685
--------------------------------------------------------
13686
set define off;
13687
 
3959 dpurdie 13688
  CREATE OR REPLACE PROCEDURE "CLEAR_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
13689
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
13690
											 nUserId IN NUMBER ) IS
1373 dpurdie 13691
/* ---------------------------------------------------------------------------
3959 dpurdie 13692
    Version: 4.0
1373 dpurdie 13693
   --------------------------------------------------------------------------- */
13694
 
13695
BEGIN
13696
 
3959 dpurdie 13697
    -- Clear Advisory Ripple Package
13698
    DELETE FROM ADVISORY_RIPPLE
13699
	WHERE PV_ID = nPvId
13700
	AND RTAG_ID = nRtagId;
1373 dpurdie 13701
 
3959 dpurdie 13702
    /* LOG ACTION */
13703
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
13704
 
13705
	/*Rebuild_Environment(nRtagId);*/
1373 dpurdie 13706
 
3959 dpurdie 13707
END Clear_Advisory_Ripple;
4040 dpurdie 13708
 
1374 dpurdie 13709
/
1373 dpurdie 13710
 
4040 dpurdie 13711
/
13712
--------------------------------------------------------
13713
--  DDL for Procedure CLONED_PACKAGE_PROCESSES
13714
--------------------------------------------------------
13715
set define off;
13716
 
3959 dpurdie 13717
  CREATE OR REPLACE PROCEDURE "CLONED_PACKAGE_PROCESSES" 
13718
IS
1373 dpurdie 13719
 
3959 dpurdie 13720
proc_id NUMBER;
1373 dpurdie 13721
/******************************************************************************
3959 dpurdie 13722
   NAME:       DELETE_DO_NOT_RIPPLE
13723
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
13724
               IS RELEASED
1373 dpurdie 13725
 
13726
   REVISIONS:
13727
   Ver        Date        Author           Description
13728
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 13729
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 13730
 
13731
   NOTES:
13732
 
13733
   Automatically available Auto Replace Keywords:
3959 dpurdie 13734
      Object Name:     DELETE_DO_NOT_RIPPLE
13735
      Sysdate:         21/04/2006
13736
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
1373 dpurdie 13737
      Username:         (set in TOAD Options, Procedure Editor)
13738
      Table Name:       (set in the "New PL/SQL Object" dialog)
13739
 
13740
******************************************************************************/
3959 dpurdie 13741
   CURSOR ripple_cur
13742
   IS
13743
      select distinct proc_id, prod_id from deployment_manager.processes_config;
13744
 
13745
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 13746
BEGIN
3959 dpurdie 13747
   OPEN ripple_cur;
1373 dpurdie 13748
 
3959 dpurdie 13749
   FETCH ripple_cur
13750
    INTO ripple_rec;
1373 dpurdie 13751
 
3959 dpurdie 13752
   WHILE ripple_cur%FOUND
13753
   LOOP
13754
 
1373 dpurdie 13755
 
3959 dpurdie 13756
 
13757
insert into package_processes (PROC_ID, PV_ID) 
13758
values( ripple_rec.proc_id, ripple_rec.prod_id);
13759
 
13760
      FETCH ripple_cur
13761
       INTO ripple_rec;
13762
   END LOOP;
13763
END CLONED_PACKAGE_PROCESSES;
4040 dpurdie 13764
 
1374 dpurdie 13765
/
1373 dpurdie 13766
 
4040 dpurdie 13767
/
13768
--------------------------------------------------------
13769
--  DDL for Procedure CLONED_PROCESSES
13770
--------------------------------------------------------
13771
set define off;
13772
 
3959 dpurdie 13773
  CREATE OR REPLACE PROCEDURE "CLONED_PROCESSES" 
13774
IS
13775
 
13776
proc_id NUMBER;
13777
/******************************************************************************
13778
   NAME:       DELETE_DO_NOT_RIPPLE
13779
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
13780
               IS RELEASED
13781
 
13782
   REVISIONS:
13783
   Ver        Date        Author           Description
13784
   ---------  ----------  ---------------  ------------------------------------
13785
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
13786
 
13787
   NOTES:
13788
 
13789
   Automatically available Auto Replace Keywords:
13790
      Object Name:     DELETE_DO_NOT_RIPPLE
13791
      Sysdate:         21/04/2006
13792
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
13793
      Username:         (set in TOAD Options, Procedure Editor)
13794
      Table Name:       (set in the "New PL/SQL Object" dialog)
13795
 
13796
******************************************************************************/
13797
   CURSOR ripple_cur
13798
   IS
13799
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
13800
 
13801
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 13802
BEGIN
3959 dpurdie 13803
   OPEN ripple_cur;
1373 dpurdie 13804
 
3959 dpurdie 13805
   FETCH ripple_cur
13806
    INTO ripple_rec;
1373 dpurdie 13807
 
3959 dpurdie 13808
   WHILE ripple_cur%FOUND
13809
   LOOP
13810
 
13811
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
13812
 
13813
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
13814
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
1373 dpurdie 13815
 
3959 dpurdie 13816
      FETCH ripple_cur
13817
       INTO ripple_rec;
13818
   END LOOP;
13819
END CLONED_PROCESSES;
4040 dpurdie 13820
 
1374 dpurdie 13821
/
1373 dpurdie 13822
 
4040 dpurdie 13823
/
13824
--------------------------------------------------------
13825
--  DDL for Procedure DELETE_AUTOBUILD_FAILURE_INFO
13826
--------------------------------------------------------
13827
set define off;
13828
 
3959 dpurdie 13829
  CREATE OR REPLACE PROCEDURE "DELETE_AUTOBUILD_FAILURE_INFO" 
13830
IS
1373 dpurdie 13831
/******************************************************************************
3959 dpurdie 13832
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
13833
   PURPOSE:
1373 dpurdie 13834
 
13835
   REVISIONS:
3959 dpurdie 13836
   Ver        Date        Author           Description
1373 dpurdie 13837
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 13838
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
1373 dpurdie 13839
 
13840
   NOTES:
13841
 
13842
   Automatically available Auto Replace Keywords:
3959 dpurdie 13843
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
13844
      Sysdate:         2/06/2006
13845
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
1373 dpurdie 13846
      Username:         (set in TOAD Options, Procedure Editor)
13847
      Table Name:       (set in the "New PL/SQL Object" dialog)
13848
 
13849
******************************************************************************/
13850
BEGIN
3959 dpurdie 13851
   DELETE FROM autobuild_failure
13852
         WHERE group_email_id NOT IN (SELECT group_email_id
13853
                                        FROM members_group);
13854
END delete_autobuild_failure_info;
4040 dpurdie 13855
 
1374 dpurdie 13856
/
1373 dpurdie 13857
 
4040 dpurdie 13858
/
13859
--------------------------------------------------------
13860
--  DDL for Procedure DEPLOY_TO_RELEASE
13861
--------------------------------------------------------
13862
set define off;
13863
 
1373 dpurdie 13864
  CREATE OR REPLACE PROCEDURE "DEPLOY_TO_RELEASE" IS
13865
 
13866
/******************************************************************************
13867
 
13868
 
13869
******************************************************************************/
13870
 
13871
	CURSOR curInfo IS
13872
    SELECT DISTINCT
13873
        qry.DPV_ID
13874
     FROM (
13875
             SELECT dep.*,
13876
                    LEVEL AS LEVEL_NUM
13877
               FROM PACKAGE_DEPENDENCIES dep
13878
             START WITH dep.PV_ID IN ( 
13879
 
4308 dpurdie 13880
                        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
1373 dpurdie 13881
 
13882
                        ) 
13883
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
13884
 		) qry,
13885
 		PACKAGES pkg,
13886
		PACKAGE_VERSIONS pv
13887
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
13888
         and (pv.is_patch is null or pv.is_patch = 'N');
13889
    recInfo curInfo%ROWTYPE;
13890
 
13891
 
13892
BEGIN
13893
 
13894
	OPEN curInfo;
13895
    FETCH curInfo INTO recInfo;
13896
 
13897
	WHILE curInfo%FOUND
13898
	LOOP
13899
 
13900
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
13901
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
13902
 
13903
    FETCH curInfo INTO recInfo;
13904
 
13905
	END LOOP;
13906
 
13907
	CLOSE curInfo;
13908
 
13909
 
13910
 
13911
 
13912
END DEPLOY_TO_RELEASE; 
4040 dpurdie 13913
 
1374 dpurdie 13914
/
1373 dpurdie 13915
 
4040 dpurdie 13916
/
13917
--------------------------------------------------------
13918
--  DDL for Procedure DEPRECATE_PACKAGE
13919
--------------------------------------------------------
13920
set define off;
13921
 
3959 dpurdie 13922
  CREATE OR REPLACE PROCEDURE "DEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
13923
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
13924
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
13925
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
13926
											   nUserId IN NUMBER) IS
13927
ext VARCHAR2(50);
1373 dpurdie 13928
 
13929
 
13930
 
3959 dpurdie 13931
 
1373 dpurdie 13932
BEGIN
13933
 
3959 dpurdie 13934
	--Extract the package version extension
13935
	SELECT V_EXT into ext
13936
	FROM PACKAGE_VERSIONS
13937
	WHERE PV_ID = nPvId; 
13938
 
13939
    -- Deprecate Package
13940
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
13941
	VALUES (nRtagId, nPkgId, sComments, ext);
13942
 
13943
	IF ext IS NOT NULL THEN
13944
	   UPDATE RELEASE_CONTENT 
13945
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
13946
	   WHERE RTAG_ID = nRtagId
13947
	   AND PV_ID IN (SELECT PV.PV_ID 
13948
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
13949
				  	WHERE PKG.PKG_ID = PV.PKG_ID
13950
				  	AND PV.V_EXT = ext
13951
				  	AND PKG.PKG_ID = nPkgId
13952
				 	);						
13953
	ELSE
13954
	   UPDATE RELEASE_CONTENT 
13955
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
13956
	   WHERE RTAG_ID = nRtagId
13957
	   AND PV_ID IN (SELECT PV.PV_ID 
13958
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
13959
				  	WHERE PKG.PKG_ID = PV.PKG_ID
13960
				  	AND PV.V_EXT IS NULL
13961
				  	AND PKG.PKG_ID = nPkgId
13962
				 	);
13963
	END IF;
13964
 
13965
	UPDATE RELEASE_CONTENT
13966
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
13967
	WHERE RTAG_ID = nRtagId
13968
	AND PV_ID IN (		   SELECT DISTINCT
13969
 	 		  	 		   qry.PV_ID
13970
						        FROM (
13971
								 	  SELECT dep.*,
13972
									  LEVEL AS LEVEL_NUM
13973
									  FROM PACKAGE_DEPENDENCIES dep 
13974
 								START WITH dep.DPV_ID IN ( nPvId ) 
13975
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
13976
 								) qry,
13977
								PACKAGES pkg,
13978
								PACKAGE_VERSIONS pv,
13979
								RELEASE_CONTENT rc
13980
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
13981
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
13982
							 AND rc.DEPRECATED_STATE IS NULL
13983
				 );			 
1373 dpurdie 13984
 
13985
    /* LOG ACTION */
3959 dpurdie 13986
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
13987
 
1373 dpurdie 13988
 
3959 dpurdie 13989
END Deprecate_Package;
4040 dpurdie 13990
 
1374 dpurdie 13991
/
1373 dpurdie 13992
 
4040 dpurdie 13993
/
13994
--------------------------------------------------------
13995
--  DDL for Procedure DT_DROPUSEROBJECTBYID
13996
--------------------------------------------------------
13997
set define off;
13998
 
1373 dpurdie 13999
  CREATE OR REPLACE PROCEDURE "DT_DROPUSEROBJECTBYID" ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
4040 dpurdie 14000
 
1374 dpurdie 14001
/
1373 dpurdie 14002
 
4040 dpurdie 14003
/
14004
--------------------------------------------------------
14005
--  DDL for Procedure DT_SETPROPERTYBYID
14006
--------------------------------------------------------
14007
set define off;
14008
 
3959 dpurdie 14009
  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;
4040 dpurdie 14010
 
3959 dpurdie 14011
/
14012
 
4040 dpurdie 14013
/
14014
--------------------------------------------------------
14015
--  DDL for Procedure IGNORE_DEPENDENCY_WARNINGS
14016
--------------------------------------------------------
14017
set define off;
14018
 
3959 dpurdie 14019
  CREATE OR REPLACE PROCEDURE "IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
14020
                                                         nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
14021
                                                         sIgnoreIdList IN VARCHAR2,
14022
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
14023
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
14024
/* ---------------------------------------------------------------------------
14025
    Updates the ignore warnings table - this is really two functions in one.
14026
 
14027
    1) One function updates the table based on a list of dependent PV_IDs and a parent PV_ID
14028
       and is called from the RM website's SetIgnoreWarnings() function after a user changes
14029
       the ignore warnings checkboxes and submits the form.
14030
       This can (at time of writing this) only be done within releases that are not build
14031
       daemon enabled. The ignore warnings feature is a feature we would like to see the end
14032
       of in an ideal world.
14033
       The SetIgnoreWarnings() website function now calls Touch_Release so there is no need to
14034
       do so in this stored procedure, thereby making this stored procedure much more precise in
14035
       that it only updates the ignore_warnings table (action log table too although that is just
14036
       a log and doesn't affect any subsequent business rules behaviour) and it cares nothing
14037
       about website presentation layer states, etc.
14038
 
14039
    2) The other function updates the table for out of sync dependencies that have in fact
14040
       been satisfied by patches made to some other product in the release.
14041
       This seems to be a seldom used feature in current projects.
14042
       It is probably the most often taken path through this function given that it occurs when
14043
       this function is called from Rebuild_Environment, and that is called in many circumstances
14044
       from the RM website whenever the seems to be a possibility that the state of a package
14045
       in a release might have changed and therefore affects the state of other packages in
14046
       that same release.
14047
 
14048
    Parameter Usage:
14049
                        when called from    | when called from
14050
                        Rebuild_Environment | SetIgnoreWarnings()
14051
                        stored procedure.   | in the Website
14052
      --------------------------------------+----------------------------
14053
      nRtagId           RTAG_ID             | RTAG_ID
14054
      nPvId             NULL                | PV_ID
14055
      sIgnoreIdList     NULL                | list of dependent PV_ID's
14056
      bDoPatchIgnore    TRUE                | FALSE
14057
      nUserId           NULL                | current user ID
14058
   --------------------------------------------------------------------------- */
14059
 
14060
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
14061
ReleaseLocation VARCHAR2(4000);
14062
ActionTypeId NUMBER;
14063
 
1373 dpurdie 14064
BEGIN
14065
 
3959 dpurdie 14066
   IF (NOT bDoPatchIgnore) THEN
14067
      /* Manual Ignore Warnings - this execution path is the one taken when called from SetIgnoreWarnings() in the Website
14068
      */
14069
      oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
1373 dpurdie 14070
 
14071
 
3959 dpurdie 14072
      /* Log Action */
14073
      -- Get Release Location
14074
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
14075
        FROM PROJECTS proj,
14076
             RELEASE_TAGS rt
14077
       WHERE rt.PROJ_ID = proj.PROJ_ID
14078
         AND rt.RTAG_ID = nRtagId;
1373 dpurdie 14079
 
3959 dpurdie 14080
      -- Get Action Type Id for IGNORE_ON
14081
      SELECT act.ACTTYPE_ID INTO ActionTypeId
14082
        FROM ACTION_TYPE act
14083
       WHERE act.NAME = 'ignore_on';
14084
 
14085
      -- Get Ignored (Current MINUS Old)
14086
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
14087
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
14088
        FROM (
14089
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
14090
                FROM PACKAGE_VERSIONS pv
14091
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
14092
              MINUS
14093
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
14094
                FROM IGNORE_WARNINGS igw
14095
               WHERE igw.RTAG_ID = nRtagId
14096
                 AND igw.PV_ID = nPvId
14097
             ) qry,
14098
             PACKAGE_VERSIONS pv,
14099
             PACKAGES pkg,
14100
             RELEASE_CONTENT rc,
14101
             PACKAGE_VERSIONS rpv
14102
       WHERE pv.PKG_ID = pkg.PKG_ID
14103
         AND rc.RTAG_ID = nRtagId
14104
         AND rc.PV_ID = rpv.PV_ID
14105
         AND rpv.PKG_ID = pv.PKG_ID
14106
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
14107
         AND qry.DPV_ID = pv.PV_ID;
14108
 
14109
 
14110
      -- Get Action Type Id for IGNORE_OFF
14111
      SELECT act.ACTTYPE_ID INTO ActionTypeId
14112
        FROM ACTION_TYPE act
14113
       WHERE act.NAME = 'ignore_off';
14114
 
14115
      -- Get UnIgnored (Old MINUS Current)
14116
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
14117
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
14118
        FROM (
14119
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
14120
                FROM IGNORE_WARNINGS igw
14121
               WHERE igw.RTAG_ID = nRtagId
14122
                 AND igw.PV_ID = nPvId
14123
              MINUS
14124
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
14125
                FROM PACKAGE_VERSIONS pv
14126
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
14127
             ) qry,
14128
             PACKAGE_VERSIONS pv,
14129
             PACKAGES pkg,
14130
             RELEASE_CONTENT rc,
14131
             PACKAGE_VERSIONS rpv
14132
       WHERE pv.PKG_ID = pkg.PKG_ID
14133
         AND rc.RTAG_ID = nRtagId
14134
         AND rc.PV_ID = rpv.PV_ID
14135
         AND rpv.PKG_ID = pv.PKG_ID
14136
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
14137
         AND qry.DPV_ID = pv.PV_ID;
14138
 
14139
 
14140
      -- Delete Current Ignore Warnings
14141
      DELETE
14142
        FROM IGNORE_WARNINGS igw
14143
       WHERE igw.RTAG_ID = nRtagId
14144
         AND igw.PV_ID = nPvId
14145
         AND igw.IS_PATCH_IGNORE IS NULL;
14146
 
14147
 
14148
      IF (oIgnoreIdCollector.COUNT > 0) THEN
14149
         -- Insert Ignore Warnings
14150
         INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
14151
         SELECT nRtagId,
14152
                nPvId,
14153
                pv.PV_ID AS DPV_ID
14154
           FROM PACKAGE_VERSIONS pv
14155
          WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
14156
      END IF;
14157
 
14158
   ELSE
14159
      /* Patch Ignore Warnings - this execution path is the one taken when called from the Rebuild_Environment stored procedure */
14160
 
14161
      -- Delete Current Patch Ignore Warnings
14162
      DELETE
14163
        FROM IGNORE_WARNINGS igw
14164
       WHERE igw.RTAG_ID = nRtagId
14165
         AND igw.IS_PATCH_IGNORE = 'Y';
14166
 
14167
 
14168
      -- Delete Manual Ignores that need to be Patch Ignores
14169
      DELETE
14170
        FROM IGNORE_WARNINGS igw
14171
       WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
14172
             (
14173
              SELECT DISTINCT
14174
                     nRtagId,
14175
                     err.PV_ID,
14176
                     err.ERR_DPV AS DPV_ID
14177
               FROM  (
14178
                      /* Full Release Contents used for reference*/
14179
                      SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
14180
                        FROM release_content rel, package_versions rpv
14181
                       WHERE rel.pv_id = rpv.pv_id
14182
                         AND rtag_id = nRtagId
14183
                     ) frc,
14184
                     (
14185
                      /* DPV_IDs not fount in release*/
14186
                      SELECT dep.pv_id, dep.dpv_id AS err_dpv
14187
                        FROM package_dependencies dep
14188
                       WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14189
                         AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14190
                     ) err,
14191
                     (
14192
                      SELECT DISTINCT pp.PV_ID, dep.DPV_ID
14193
                        FROM PACKAGE_PATCHES pp,
14194
                             PACKAGE_DEPENDENCIES dep,
14195
                             RELEASE_CONTENT rc
14196
                       WHERE rc.RTAG_ID = nRtagId
14197
                         AND rc.PV_ID = pp.PV_ID
14198
                         AND dep.PV_ID = pp.PATCH_ID
14199
                     ) pp,
14200
                     package_versions errpkg,
14201
                     package_versions errpv
14202
               WHERE err.err_dpv = errpv.pv_id
14203
                 AND errpv.pkg_id = frc.pkg_id(+)
14204
                 AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14205
                 AND err.pv_id = errpkg.pv_id
14206
                 AND err.PV_ID = pp.PV_ID
14207
                 AND frc.PV_ID = pp.DPV_ID
14208
             );
14209
 
14210
      /*
14211
      ---------------------------------------------------
14212
      --  Make sure that select statement above and below are same
14213
      ---------------------------------------------------
14214
      */
14215
 
14216
      -- Insert Patch Ignores
14217
      INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
14218
      SELECT DISTINCT
14219
             nRtagId,
14220
             err.PV_ID,
14221
             err.ERR_DPV AS DPV_ID,
14222
             'Y'
14223
        FROM (
14224
              /* Full Release Contents used for reference*/
14225
              SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
14226
                FROM release_content rel, package_versions rpv
14227
               WHERE rel.pv_id = rpv.pv_id
14228
                 AND rtag_id = nRtagId
14229
             ) frc,
14230
             (
14231
               /* DPV_IDs not fount in release*/
14232
               SELECT dep.pv_id, dep.dpv_id AS err_dpv
14233
                 FROM package_dependencies dep
14234
                WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14235
                  AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14236
             ) err,
14237
             (
14238
              SELECT DISTINCT pp.PV_ID, dep.DPV_ID
14239
                FROM PACKAGE_PATCHES pp,
14240
                     PACKAGE_DEPENDENCIES dep,
14241
                     RELEASE_CONTENT rc
14242
               WHERE rc.RTAG_ID = nRtagId
14243
                 AND rc.PV_ID = pp.PV_ID
14244
                 AND dep.PV_ID = pp.PATCH_ID
14245
             ) pp,
14246
             package_versions errpkg,
14247
             package_versions errpv
14248
       WHERE err.err_dpv = errpv.pv_id
14249
         AND errpv.pkg_id = frc.pkg_id(+)
14250
         AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14251
         AND err.pv_id = errpkg.pv_id
14252
         AND err.PV_ID = pp.PV_ID
14253
         AND frc.PV_ID = pp.DPV_ID;
14254
 
14255
    END IF;
14256
 
14257
END Ignore_Dependency_Warnings;
4040 dpurdie 14258
 
1374 dpurdie 14259
/
1373 dpurdie 14260
 
4040 dpurdie 14261
/
14262
--------------------------------------------------------
14263
--  DDL for Procedure INSERT_INTO_PACKAGE_BUILD_INFO
14264
--------------------------------------------------------
14265
set define off;
14266
 
3959 dpurdie 14267
  CREATE OR REPLACE PROCEDURE "INSERT_INTO_PACKAGE_BUILD_INFO" IS
1373 dpurdie 14268
 
14269
/******************************************************************************
3959 dpurdie 14270
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
1373 dpurdie 14271
   PURPOSE:    
14272
 
14273
   REVISIONS:
14274
   Ver        Date        Author           Description
14275
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 14276
   1.0        6/12/2006          1. Created this procedure.
1373 dpurdie 14277
 
14278
   NOTES:
14279
 
14280
   Automatically available Auto Replace Keywords:
3959 dpurdie 14281
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
14282
      Sysdate:         6/12/2006
14283
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
1373 dpurdie 14284
      Username:         (set in TOAD Options, Procedure Editor)
14285
      Table Name:       (set in the "New PL/SQL Object" dialog)
14286
 
14287
******************************************************************************/
14288
 
14289
	CURSOR curInfo IS
3959 dpurdie 14290
    SELECT PV_ID
14291
	FROM PACKAGE_BUILD_ENV
14292
	WHERE BE_ID IN (11, 12);
1373 dpurdie 14293
    recInfo curInfo%ROWTYPE;
14294
 
14295
 
14296
BEGIN
14297
 
14298
	OPEN curInfo;
14299
    FETCH curInfo INTO recInfo;
14300
 
14301
	WHILE curInfo%FOUND
14302
	LOOP
14303
 
3959 dpurdie 14304
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
14305
		VALUES( recInfo.PV_ID, 2, 5);
14306
 
14307
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
14308
 
1373 dpurdie 14309
		FETCH curInfo INTO recInfo;
3959 dpurdie 14310
 
1373 dpurdie 14311
	END LOOP;
14312
 
14313
	CLOSE curInfo;
14314
 
14315
 
14316
 
14317
 
3959 dpurdie 14318
END INSERT_INTO_PACKAGE_BUILD_INFO;
4040 dpurdie 14319
 
1374 dpurdie 14320
/
1373 dpurdie 14321
 
4040 dpurdie 14322
/
14323
--------------------------------------------------------
14324
--  DDL for Procedure INSERT_MULTIPLE_STICKY_NOTES
14325
--------------------------------------------------------
14326
set define off;
14327
 
3959 dpurdie 14328
  CREATE OR REPLACE PROCEDURE "INSERT_MULTIPLE_STICKY_NOTES" IS
1373 dpurdie 14329
 
3959 dpurdie 14330
/******************************************************************************
14331
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
14332
   PURPOSE:    
1373 dpurdie 14333
 
3959 dpurdie 14334
   REVISIONS:
14335
   Ver        Date        Author           Description
14336
   ---------  ----------  ---------------  ------------------------------------
14337
   1.0        6/12/2006          1. Created this procedure.
1373 dpurdie 14338
 
3959 dpurdie 14339
   NOTES:
1373 dpurdie 14340
 
3959 dpurdie 14341
   Automatically available Auto Replace Keywords:
14342
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
14343
      Sysdate:         6/12/2006
14344
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
14345
      Username:         (set in TOAD Options, Procedure Editor)
14346
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 14347
 
3959 dpurdie 14348
******************************************************************************/
1373 dpurdie 14349
 
3959 dpurdie 14350
	CURSOR curInfo IS
14351
    SELECT PV_ID
14352
	FROM PACKAGE_BUILD_ENV
14353
	WHERE BE_ID IN (11, 12);
14354
    recInfo curInfo%ROWTYPE;
14355
 
14356
 
1373 dpurdie 14357
BEGIN
14358
 
3959 dpurdie 14359
	OPEN curInfo;
14360
    FETCH curInfo INTO recInfo;
14361
 
14362
	WHILE curInfo%FOUND
14363
	LOOP
1373 dpurdie 14364
 
3959 dpurdie 14365
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
14366
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
14367
 
14368
		FETCH curInfo INTO recInfo;
14369
 
14370
	END LOOP;
1373 dpurdie 14371
 
3959 dpurdie 14372
	CLOSE curInfo;
1373 dpurdie 14373
 
14374
 
14375
 
14376
 
3959 dpurdie 14377
END INSERT_MULTIPLE_STICKY_NOTES;
4040 dpurdie 14378
 
1374 dpurdie 14379
/
1373 dpurdie 14380
 
4040 dpurdie 14381
/
14382
--------------------------------------------------------
14383
--  DDL for Procedure LEVEL_N_CONFLICTS
14384
--------------------------------------------------------
14385
set define off;
14386
 
3959 dpurdie 14387
  CREATE OR REPLACE PROCEDURE "LEVEL_N_CONFLICTS" (
14388
   nnrtag_id       IN       NUMBER,
14389
   nnsession_num   IN       NUMBER,
14390
   nnrowcnt        OUT      NUMBER,
14391
   nniteration     IN       NUMBER
14392
)
14393
IS
1373 dpurdie 14394
/* ---------------------------------------------------------------------------
3959 dpurdie 14395
    Version: 3.0.1
1373 dpurdie 14396
   --------------------------------------------------------------------------- */
3959 dpurdie 14397
   previteration   NUMBER := nniteration - 1;
1373 dpurdie 14398
BEGIN
3959 dpurdie 14399
   /* ---------  LEVEL 1 CONFILCTS -----------
14400
   || Following states are used:
14401
   || 0 -> NOT FOUND
14402
   || 1 -> MAJOR
14403
   || 2 -> MINOR MINOR
14404
   */
14405
   INSERT INTO temp_env_states
14406
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
14407
                      pv.pv_id, pv.pkg_id, pv.v_ext,
14408
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
14409
                 FROM package_dependencies dep,
14410
                      package_versions dpv,
14411
                      package_versions pv,
14412
                      release_content rel,
14413
                      temp_env_states tes
14414
                WHERE rel.pv_id = dep.pv_id
14415
                  AND rel.rtag_id = nnrtag_id
14416
                  AND dep.pv_id = pv.pv_id
14417
                  AND dep.dpv_id = dpv.pv_id
14418
                  AND dpv.pkg_id = tes.pkg_id
14419
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
14420
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
14421
                  AND tes.session_num = nnsession_num
14422
                  AND tes.level_num = previteration
14423
                  AND (dep.pv_id, dep.dpv_id) IN 
14424
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
14425
                                                 || packages already stored in Temp Table.
14426
                                                 */
14427
                      (
14428
                         SELECT pd.pv_id, pd.dpv_id
14429
                           FROM package_dependencies pd, release_content rc
14430
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
14431
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
14432
                         MINUS
14433
                         SELECT igw.pv_id, igw.dpv_id
14434
                           FROM ignore_warnings igw
14435
                          WHERE igw.rtag_id = nnrtag_id);
1373 dpurdie 14436
 
3959 dpurdie 14437
   nnrowcnt := SQL%ROWCOUNT;
14438
END level_n_conflicts;
4040 dpurdie 14439
 
1374 dpurdie 14440
/
1373 dpurdie 14441
 
4040 dpurdie 14442
/
14443
--------------------------------------------------------
14444
--  DDL for Procedure LEVEL_ONE_CONFLICTS
14445
--------------------------------------------------------
14446
set define off;
14447
 
1373 dpurdie 14448
  CREATE OR REPLACE PROCEDURE "LEVEL_ONE_CONFLICTS" (
14449
   nnrtag_id       IN   NUMBER,
14450
   nnsession_num   IN   NUMBER
14451
)
14452
IS
14453
BEGIN
14454
   /* ---------  LEVEL 1 CONFILCTS -----------
14455
   || Following states are used:
14456
   || 0 -> NOT FOUND
14457
   || 1 -> MAJOR
14458
   || 2 -> MINOR MINOR
14459
   */
14460
   INSERT INTO temp_env_states
14461
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
14462
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
14463
                      DECODE (frc.v_nmm,
14464
                              NULL, 0,
14465
                              errpv.v_nmm, DECODE (frc.v_mm,
14466
                                                   errpv.v_mm, NULL,
14467
                                                   2
14468
                                                  ),
14469
                              1
14470
                             ) AS MESSAGE
14471
                 FROM (
14472
                       /* Full Release Contents used for reference*/
14473
                        SELECT rel.rtag_id, rpv.pv_id, rpv.pkg_id,
14474
                                NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
14475
                                rpv.pkg_version, rpv.v_nmm, rpv.v_mm,
14476
                                (SELECT COUNT(*)
14477
                                   FROM ADVISORY_RIPPLE avr
14478
                                  WHERE avr.rtag_id = rel.rtag_id
14479
                                    AND avr.pv_id = rel.pv_id
14480
                                ) AS IsAvr
14481
                          FROM release_content rel,
14482
                                package_versions rpv
14483
                          WHERE rel.pv_id = rpv.pv_id
14484
                             AND rtag_id = nnrtag_id
14485
                      ) frc,
14486
 
14487
                      (
14488
                       /* DPV_IDs not found in release (excluding those from pegged versions whose dependencies will not
14489
                          necessarily be satisfied in the release) */
14490
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
14491
                         FROM package_dependencies dep,
14492
                              package_versions dep_dpv
14493
                        WHERE dep.dpv_id = dep_dpv.pv_id
14494
                          AND dep.pv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
14495
                          AND NOT dep.pv_id IN (SELECT pegv.pv_id FROM PEGGED_VERSIONS pegv WHERE pegv.rtag_id = nnrtag_id)
14496
                          AND NOT dep.dpv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
14497
                       MINUS
14498
                       /* MINUS Dependencies to be ignored */
14499
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
14500
                         FROM ignore_warnings igw,
14501
                              package_versions igw_dpv
14502
                        WHERE igw.dpv_id = igw_dpv.pv_id
14503
                          AND igw.rtag_id = nnrtag_id
14504
                      ) err,
14505
                      package_versions errpkg,
14506
                      package_versions errpv
14507
                WHERE err.err_dpv = errpv.pv_id
14508
                  AND errpv.pkg_id = frc.pkg_id(+)
14509
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14510
                  AND err.pv_id = errpkg.pv_id
14511
                  AND frc.IsAvr = 0;
14512
END level_one_conflicts;
4040 dpurdie 14513
 
1374 dpurdie 14514
/
1373 dpurdie 14515
 
4040 dpurdie 14516
/
14517
--------------------------------------------------------
14518
--  DDL for Procedure LOCK_PACKAGE
14519
--------------------------------------------------------
14520
set define off;
14521
 
1373 dpurdie 14522
  CREATE OR REPLACE PROCEDURE "LOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14523
											 nUserId IN NUMBER ) IS
14524
/* ---------------------------------------------------------------------------
14525
    Version: 4.0
14526
   --------------------------------------------------------------------------- */
14527
 
14528
BEGIN
14529
 
14530
    -- Lock Package
14531
    UPDATE PACKAGE_VERSIONS pv SET
14532
    	pv.DLOCKED = 'Y'
14533
    WHERE pv.PV_ID = nPvId;
14534
 
14535
    /* LOG ACTION */
14536
   	Log_Action ( nPvId, 'lock_package', nUserId );
14537
 
14538
END Lock_Package;
4040 dpurdie 14539
 
1374 dpurdie 14540
/
1373 dpurdie 14541
 
4040 dpurdie 14542
/
14543
--------------------------------------------------------
14544
--  DDL for Procedure LOG_ACTION
14545
--------------------------------------------------------
14546
set define off;
14547
 
3959 dpurdie 14548
  CREATE OR REPLACE PROCEDURE "LOG_ACTION" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14549
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
14550
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
14551
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
1373 dpurdie 14552
/* ---------------------------------------------------------------------------
14553
    Version: 3.0
14554
   --------------------------------------------------------------------------- */
14555
 
3959 dpurdie 14556
    ActionTypeId NUMBER;
1373 dpurdie 14557
 
14558
BEGIN
14559
 
3959 dpurdie 14560
    -- Get Action Type FK
14561
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14562
      FROM ACTION_TYPE act
14563
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14564
 
14565
 
3959 dpurdie 14566
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
14567
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
1373 dpurdie 14568
 
14569
 
3959 dpurdie 14570
END Log_Action;
4040 dpurdie 14571
 
1374 dpurdie 14572
/
1373 dpurdie 14573
 
4040 dpurdie 14574
/
14575
--------------------------------------------------------
14576
--  DDL for Procedure LOG_ACTION_BULK
14577
--------------------------------------------------------
14578
set define off;
14579
 
3959 dpurdie 14580
  CREATE OR REPLACE PROCEDURE "LOG_ACTION_BULK" ( nPvIdList IN VARCHAR2,
14581
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
14582
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
14583
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
1373 dpurdie 14584
/* ---------------------------------------------------------------------------
3959 dpurdie 14585
    Version: 3.0
1373 dpurdie 14586
   --------------------------------------------------------------------------- */
14587
 
3959 dpurdie 14588
    ActionTypeId NUMBER;
14589
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
1373 dpurdie 14590
 
14591
BEGIN
14592
 
3959 dpurdie 14593
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
1373 dpurdie 14594
 
3959 dpurdie 14595
    -- Get Action Type FK
14596
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14597
      FROM ACTION_TYPE act
14598
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14599
 
3959 dpurdie 14600
    -- Log Action
14601
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
14602
    SELECT nUserId,
14603
    	   ORA_SYSDATETIME,
14604
           pv.PV_ID,
14605
           sAdditionalComments,
14606
           ActionTypeId
14607
      FROM PACKAGE_VERSIONS pv
14608
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
1373 dpurdie 14609
 
14610
 
3959 dpurdie 14611
END Log_Action_Bulk;
4040 dpurdie 14612
 
1374 dpurdie 14613
/
1373 dpurdie 14614
 
4040 dpurdie 14615
/
14616
--------------------------------------------------------
14617
--  DDL for Procedure LOG_DAEMON_ACTION
14618
--------------------------------------------------------
14619
set define off;
14620
 
3959 dpurdie 14621
  CREATE OR REPLACE PROCEDURE "LOG_DAEMON_ACTION" ( nRconId IN NUMBER,
14622
												 enumActionTypeName IN VARCHAR2,
14623
		                                         nUserId IN NUMBER,
14624
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
14625
/* ---------------------------------------------------------------------------
14626
    Version: 3.0
14627
   --------------------------------------------------------------------------- */
1373 dpurdie 14628
 
3959 dpurdie 14629
    ActionTypeId NUMBER;
1373 dpurdie 14630
 
14631
BEGIN
14632
 
3959 dpurdie 14633
    -- Get Action Type FK
14634
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14635
      FROM ACTION_TYPE act
14636
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14637
 
14638
 
3959 dpurdie 14639
    INSERT INTO DAEMON_ACTION_LOG
14640
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
1373 dpurdie 14641
 
14642
 
3959 dpurdie 14643
END Log_Daemon_Action;
4040 dpurdie 14644
 
1374 dpurdie 14645
/
1373 dpurdie 14646
 
4040 dpurdie 14647
/
14648
--------------------------------------------------------
14649
--  DDL for Procedure LOG_PROJECT_ACTION
14650
--------------------------------------------------------
14651
set define off;
14652
 
3959 dpurdie 14653
  CREATE OR REPLACE PROCEDURE "LOG_PROJECT_ACTION" ( nProjId IN NUMBER,
14654
												 enumActionTypeName IN VARCHAR2,
14655
		                                         nUserId IN NUMBER,
14656
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
14657
												 nRtagId IN NUMBER  ) IS
1373 dpurdie 14658
/* ---------------------------------------------------------------------------
3959 dpurdie 14659
    Version: 3.0
1373 dpurdie 14660
   --------------------------------------------------------------------------- */
14661
 
3959 dpurdie 14662
    ActionTypeId NUMBER;
1373 dpurdie 14663
 
14664
BEGIN
14665
 
3959 dpurdie 14666
    -- Get Action Type FK
14667
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14668
      FROM ACTION_TYPE act
14669
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14670
 
14671
 
3959 dpurdie 14672
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
14673
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
1373 dpurdie 14674
 
14675
 
3959 dpurdie 14676
END Log_Project_Action;
4040 dpurdie 14677
 
1374 dpurdie 14678
/
1373 dpurdie 14679
 
4040 dpurdie 14680
/
14681
--------------------------------------------------------
14682
--  DDL for Procedure NEW_ADDITIONAL_NOTE
14683
--------------------------------------------------------
14684
set define off;
14685
 
3959 dpurdie 14686
  CREATE OR REPLACE PROCEDURE "NEW_ADDITIONAL_NOTE" ( pnPv_id IN NUMBER,
14687
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
14688
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
14689
                                                  pnUser_id IN NUMBER,
14690
                                                  outErrCode OUT NUMBER
14691
                                                 ) IS
1373 dpurdie 14692
/* ---------------------------------------------------------------------------
3959 dpurdie 14693
    Version: 3.0.0
1373 dpurdie 14694
   --------------------------------------------------------------------------- */
14695
 
14696
    newID NUMBER;
14697
 
14698
	CURSOR an_duplicate_cur IS
3959 dpurdie 14699
        SELECT note_id
1373 dpurdie 14700
          FROM ADDITIONAL_NOTES
14701
         WHERE pv_id = pnPv_id
14702
           AND note_title = psNote_title;
14703
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
14704
 
14705
BEGIN
14706
	outErrCode := -1;		-- Set default return error code to ERROR state
14707
 
14708
	OPEN an_duplicate_cur;
14709
    FETCH an_duplicate_cur INTO an_duplicate_rec;
14710
 
3959 dpurdie 14711
    IF an_duplicate_cur%NOTFOUND
1373 dpurdie 14712
    THEN
3959 dpurdie 14713
		/* No duplicate titles */
14714
		-- Get new ID --
14715
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
14716
 
14717
		--- Add Additional Note ---
14718
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
14719
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
1373 dpurdie 14720
		outErrCode := 0;		-- Set return to SUCCESS
14721
	END IF;
14722
 
14723
	CLOSE an_duplicate_cur;
3959 dpurdie 14724
END New_Additional_Note;
4040 dpurdie 14725
 
1374 dpurdie 14726
/
1373 dpurdie 14727
 
4040 dpurdie 14728
/
14729
--------------------------------------------------------
14730
--  DDL for Procedure NEW_PACKAGE_NAME
14731
--------------------------------------------------------
14732
set define off;
14733
 
3959 dpurdie 14734
  CREATE OR REPLACE PROCEDURE "NEW_PACKAGE_NAME" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
14735
                                               retPKG_ID OUT NUMBER ) IS
1373 dpurdie 14736
/* ---------------------------------------------------------------------------
3959 dpurdie 14737
    Version: 3.0.0
1373 dpurdie 14738
   --------------------------------------------------------------------------- */
14739
 
3959 dpurdie 14740
    CURSOR packages_cur IS
14741
        SELECT pkg.pkg_id
14742
          FROM packages pkg
14743
         WHERE pkg.pkg_name = SSpkg_name;
14744
    packages_rec packages_cur%ROWTYPE;
1373 dpurdie 14745
 
14746
 
14747
BEGIN
14748
 
3959 dpurdie 14749
    /* ---------------------------------------------------- */
14750
    /* Find if package name exists                          */
14751
    /* ---------------------------------------------------- */
1373 dpurdie 14752
 
3959 dpurdie 14753
    OPEN packages_cur;
14754
    FETCH packages_cur INTO packages_rec;
1373 dpurdie 14755
 
3959 dpurdie 14756
    IF packages_cur%NOTFOUND
14757
    THEN
14758
        -- Create new pkg_name --
14759
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
1373 dpurdie 14760
 
3959 dpurdie 14761
        INSERT INTO packages ( pkg_id, pkg_name )
14762
        VALUES ( retPKG_ID, SSpkg_name );
1373 dpurdie 14763
 
3959 dpurdie 14764
    ELSE
14765
        retPKG_ID := packages_rec.pkg_id;
1373 dpurdie 14766
 
3959 dpurdie 14767
    END IF;
1373 dpurdie 14768
 
14769
 
3959 dpurdie 14770
    CLOSE packages_cur;
1373 dpurdie 14771
 
3959 dpurdie 14772
END New_Package_Name;
4040 dpurdie 14773
 
1374 dpurdie 14774
/
1373 dpurdie 14775
 
4040 dpurdie 14776
/
14777
--------------------------------------------------------
14778
--  DDL for Procedure NEW_PATCH
14779
--------------------------------------------------------
14780
set define off;
14781
 
1373 dpurdie 14782
  CREATE OR REPLACE PROCEDURE "NEW_PATCH" ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
14783
 	   	  		  					  	NNparent_id IN NUMBER,
14784
                                        sPatchIdList IN VARCHAR2,
14785
										NNuser_id IN NUMBER ) IS
14786
/* ---------------------------------------------------------------------------
14787
    Version: 3.5
14788
   --------------------------------------------------------------------------- */
14789
 
14790
    patchPv_id    NUMBER;
14791
	parPkg_id	  NUMBER;
14792
    LastInstallOrder NUMBER;
14793
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
14794
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
14795
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
14796
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
14797
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
14798
 
14799
	CURSOR parent_cur IS
14800
        SELECT pv.*, pkg.pkg_name
14801
          FROM package_versions pv,
14802
		       packages pkg
14803
         WHERE pv.pv_id = NNparent_id
14804
		   AND pv.pkg_id = pkg.pkg_id;
14805
    parent_rec parent_cur%ROWTYPE;
14806
 
14807
    CURSOR patch_cur IS
14808
        SELECT pv.*, pg.pkg_name
14809
          FROM package_versions pv,
14810
		       packages pg
14811
         WHERE pv.pkg_id = parPkg_id
14812
		   AND pv.pkg_version = SSpatch_version
14813
		   AND pv.pkg_id = pg.pkg_id;
14814
    patch_rec patch_cur%ROWTYPE;
14815
 
14816
	CURSOR releases_cur IS
14817
        SELECT rc.pv_id
14818
		  FROM release_content rc
14819
		 WHERE rc.pv_id = patch_rec.pv_id;
14820
    releases_rec releases_cur%ROWTYPE;
14821
 
14822
 
14823
BEGIN
14824
 
14825
	-- Get Last Install Order
14826
    SELECT Count(*) INTO LastInstallOrder
14827
	  FROM PACKAGE_PATCHES pp
14828
	 WHERE pp.PV_ID = NNparent_id;
14829
 
14830
 
14831
    -- Get parent details
14832
	OPEN parent_cur;
14833
    FETCH parent_cur INTO parent_rec;
14834
	parPkg_id := parent_rec.pkg_id;
14835
 
14836
 
14837
	-- Find if patch exists in database
14838
    OPEN patch_cur;
14839
    FETCH patch_cur INTO patch_rec;
14840
 
14841
 
14842
    -- Parent must be official
14843
    IF parent_rec.dlocked = 'Y' THEN
14844
 
14845
	    IF patch_cur%NOTFOUND
14846
	    THEN
14847
        	isPatchDlocked := 'N';
14848
 
14849
	        -- Create new patch version --
14850
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
14851
 
14852
 
14853
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
14854
 
14855
	        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, src_path, pv_description, owner_id, is_patch, LAST_PV_ID, bs_id, is_autobuildable, ripple_field )
14856
				   VALUES (
14857
						   patchPv_id,
14858
	                       parPkg_id,
14859
	                       SSpatch_version,
14860
	                       isPatchDlocked,
14861
	                       ORA_SYSDATE,
14862
	                       NNuser_id,
14863
	                       ORA_SYSDATETIME,
14864
	                       NNuser_id,
14865
	                       SSV_MM,
14866
	                       SSV_NMM,
14867
	                       SSV_EXT,
14868
	                       parent_rec.src_path,
14869
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
14870
	                       NNuser_id,
14871
						   'Y',
14872
                           patchPv_id,
14873
						   parent_rec.bs_id,
14874
						   parent_rec.is_autobuildable,
14875
						   parent_rec.ripple_field
14876
 
14877
						   );
14878
 
14879
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
14880
		    	   ( SELECT NNparent_id AS pv_id,
14881
				            pv.pv_id AS patch_id,
14882
	                        LastInstallOrder + 1 AS INSTALL_ORDER
14883
				       FROM package_versions pv
14884
					  WHERE pv.pv_id = patchPv_id
14885
					    AND pv.is_patch = 'Y' );
14886
 
14887
	        /* LOG ACTION */
14888
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
14889
        			     'Patch version created: '|| SSpatch_version );
14890
 
14891
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
14892
        			     'New patch created and attached: '|| SSpatch_version );
14893
 
14894
 
14895
	    ELSE
14896
 
14897
		    patchPv_id := patch_rec.pv_id;
14898
	    	isPatchDlocked := patch_rec.dlocked;
14899
 
14900
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
14901
		    OPEN releases_cur;
14902
		    FETCH releases_cur INTO releases_rec;
14903
 
14904
			IF releases_cur%NOTFOUND
14905
	   		THEN
14906
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
14907
				UPDATE package_versions SET
14908
					   is_patch = 'Y'
14909
					   WHERE pv_id = patchPv_id;
14910
 
14911
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
14912
			    	   ( SELECT NNparent_id AS pv_id,
14913
					            pv.pv_id AS patch_id,
14914
	                            LastInstallOrder + 1 AS INSTALL_ORDER
14915
					       FROM package_versions pv
14916
						  WHERE pv.pv_id = patchPv_id
14917
						    AND pv.is_patch = 'Y' );
14918
 
14919
			END IF;
14920
 
14921
			CLOSE releases_cur;
14922
 
14923
            /* LOG ACTION */
14924
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
14925
        			     'Patch version was found and attached: '|| SSpatch_version );
14926
 
14927
	    END IF;
14928
 
14929
 
14930
 
14931
 
14932
    END IF;
14933
 
14934
 
14935
 
14936
    /* Create Patch Dependencies */
14937
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
14938
 
14939
 
14940
    -- Make sure patch is unofficial before altering its dependencies
14941
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
14942
    	-- Delete Existing Dependencies
14943
        DELETE
14944
          FROM PACKAGE_DEPENDENCIES dep
14945
         WHERE dep.PV_ID = patchPv_id;
14946
 
14947
 
14948
        -- Insert new dependencies
14949
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
14950
        SELECT patchPv_id AS PV_ID,
14951
        	   pv.PV_ID AS DPV_ID,
14952
               parPkg_id AS PKG_ID,
14953
               pv.PKG_ID AS DPKG_ID,
14954
               'L' AS BUILD_TYPE
14955
          FROM PACKAGE_VERSIONS pv
14956
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
14957
 
14958
 
14959
    END IF;
14960
 
14961
 
14962
    CLOSE parent_cur;
14963
    CLOSE patch_cur;
14964
END New_Patch;
4040 dpurdie 14965
 
1374 dpurdie 14966
/
1373 dpurdie 14967
 
4040 dpurdie 14968
/
14969
--------------------------------------------------------
14970
--  DDL for Procedure NEW_UNIT_TEST
14971
--------------------------------------------------------
14972
set define off;
14973
 
3959 dpurdie 14974
  CREATE OR REPLACE PROCEDURE "NEW_UNIT_TEST" ( nPv_id IN NUMBER,
14975
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
14976
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
14977
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
14978
                                            sDpkg_path IN VARCHAR2,
14979
                                            sResults IN VARCHAR2,
14980
                                            sCompletion_date IN VARCHAR2,
14981
                                            nCompleted_by IN NUMBER,
14982
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
14983
											enumTEST_TYPE_NOT_DONE IN NUMBER,
14984
											outFileName OUT VARCHAR2
14985
                                           ) IS
14986
/* ---------------------------------------------------------------------------
14987
    Version: 3.2.0
14988
   --------------------------------------------------------------------------- */
1373 dpurdie 14989
 
3959 dpurdie 14990
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 14991
 
3959 dpurdie 14992
    newID NUMBER;
14993
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
14994
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
1373 dpurdie 14995
 
3959 dpurdie 14996
BEGIN
1373 dpurdie 14997
 
3959 dpurdie 14998
	-- Get new ID --
14999
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
1373 dpurdie 15000
 
3959 dpurdie 15001
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
15002
       	ResultsURL := sResults;
15003
       ELSE
15004
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
15005
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
15006
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
15007
           END IF;
15008
       END IF;
1373 dpurdie 15009
 
3959 dpurdie 15010
	-- Remove NOT_DONE entry if exists
15011
	DELETE FROM UNIT_TESTS
15012
	 WHERE pv_id = nPv_id
15013
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
1373 dpurdie 15014
 
3959 dpurdie 15015
	--- Add Additional Note ---
15016
    INSERT INTO UNIT_TESTS ( TEST_ID,
15017
								PV_ID,
15018
								TEST_TYPES_FK,
15019
								TEST_SUMMARY,
15020
								COMPLETION_DATE,
15021
								COMPLETED_BY,
15022
								RESULTS_URL,
15023
								RESULTS_ATTACHMENT_NAME,
15024
								NUMOF_TEST )
15025
    VALUES (
15026
       	newID,
15027
           nPv_id,
15028
           nTestTypeId,
15029
           sTest_summary,
15030
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
15031
           nCompleted_by,
15032
           ResultsURL,
15033
           ResultsAttachment,
15034
		   sNumOfTest );
1373 dpurdie 15035
 
3959 dpurdie 15036
END New_Unit_Test;
4040 dpurdie 15037
 
1374 dpurdie 15038
/
1373 dpurdie 15039
 
1374 dpurdie 15040
/
4040 dpurdie 15041
--------------------------------------------------------
15042
--  DDL for Procedure OLE
15043
--------------------------------------------------------
15044
set define off;
1373 dpurdie 15045
 
3959 dpurdie 15046
  CREATE OR REPLACE PROCEDURE "OLE" 
15047
IS retval VARCHAR2(40);   
15048
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
15049
DBMS_OUTPUT.PUT_LINE(retval);
4040 dpurdie 15050
 
3959 dpurdie 15051
/
1373 dpurdie 15052
 
4040 dpurdie 15053
/
15054
--------------------------------------------------------
15055
--  DDL for Procedure PAOLO_BUILD_TREE
15056
--------------------------------------------------------
15057
set define off;
15058
 
3959 dpurdie 15059
  CREATE OR REPLACE PROCEDURE "PAOLO_BUILD_TREE" ( nRtag_id IN NUMBER ) IS
1373 dpurdie 15060
 
3959 dpurdie 15061
    sessionNumber NUMBER := 0;
15062
    iteration NUMBER := 1; 
15063
    rowCnt NUMBER := 0;
15064
    maxIterations 	NUMBER := 50;
15065
 
1373 dpurdie 15066
BEGIN
3959 dpurdie 15067
 
15068
 
15069
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
15070
    SELECT sessionNumber, iteration, rc.PV_ID
15071
      FROM RELEASE_CONTENT rc
15072
     WHERE rc.RTAG_ID = nRtag_id;
15073
 
15074
    iteration := iteration + 1;
15075
    LOOP
15076
 
15077
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
15078
		SELECT sessionNumber,     
15079
               iteration,
15080
               dep.DPV_ID
15081
          FROM TEMP_TREE_BROWSE ttb,
15082
               PACKAGE_DEPENDENCIES dep
15083
         WHERE dep.PV_ID = ttb.PV_ID 
15084
           AND ttb.LEVEL_NUM = iteration - 1 
15085
 
15086
         MINUS  
15087
 
15088
        SELECT sessionNumber, iteration, ttb.PV_ID
15089
          FROM TEMP_TREE_BROWSE ttb;   
15090
 
15091
 
15092
 
15093
 
15094
		rowCnt := SQL%ROWCOUNT;
15095
		IF rowCnt > 0 THEN
15096
           iteration := iteration + 1;
15097
		END IF;
15098
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
15099
    END LOOP; 
15100
 
15101
END PAOLO_Build_Tree;
4040 dpurdie 15102
 
1374 dpurdie 15103
/
1373 dpurdie 15104
 
4040 dpurdie 15105
/
15106
--------------------------------------------------------
15107
--  DDL for Procedure REBUILD_ENVIRONMENT
15108
--------------------------------------------------------
15109
set define off;
15110
 
1373 dpurdie 15111
  CREATE OR REPLACE PROCEDURE "REBUILD_ENVIRONMENT" ( NNrtag_id IN NUMBER ) IS
15112
 
15113
/* ---------------------------------------------------------------------------
15114
    Version: 3.3
15115
   --------------------------------------------------------------------------- */
15116
    rowCnt NUMBER := 0;
15117
    iteration NUMBER := 2;          -- Iterations counter
15118
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
15119
                                    -- This will prevent infinite loops if cyrcular dependencies are found
15120
    sessionNum NUMBER;
15121
BEGIN
15122
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
15123
 
15124
 
15125
    -- Redo Patch Ignore warnings
15126
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
15127
 
15128
 
15129
    Level_One_Conflicts ( NNrtag_id, sessionNum );
15130
 
15131
    LOOP
15132
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
15133
        iteration := iteration + 1;
15134
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
15135
    END LOOP;
15136
 
15137
    Update_Package_States ( NNrtag_id, sessionNum );
15138
 
15139
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
15140
 
15141
    -- Flag Packages with New Patches Available
15142
    Check_New_Patches ( NNrtag_id );
15143
 
15144
	Clean_Do_Not_Ripple( NNrtag_id );
15145
 
15146
 
15147
	/* Circular Dependency Flag */
15148
    /*
15149
	IF iteration > maxIterations
15150
	THEN
15151
		UPDATE release_tags SET
15152
		   	   circular_dependency = 'Y'
15153
		 WHERE rtag_id = NNrtag_id;
15154
	ELSE
15155
		UPDATE release_tags SET
15156
		   	   circular_dependency = NULL
15157
		 WHERE rtag_id = NNrtag_id;
15158
	END IF;
15159
    */
15160
END Rebuild_Environment;
4040 dpurdie 15161
 
1374 dpurdie 15162
/
1373 dpurdie 15163
 
4040 dpurdie 15164
/
15165
--------------------------------------------------------
15166
--  DDL for Procedure RELEASE_MANAGER_MAILOUT
15167
--------------------------------------------------------
15168
set define off;
15169
 
3959 dpurdie 15170
  CREATE OR REPLACE PROCEDURE "RELEASE_MANAGER_MAILOUT" (
15171
  sender      IN VARCHAR2,
15172
  recipient   IN VARCHAR2,
15173
  ccrecipient IN VARCHAR2,
15174
  subject     IN VARCHAR2,
15175
  message     IN VARCHAR2
15176
  ) IS
15177
 
15178
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
15179
  connection utl_smtp.connection;
15180
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
15181
  header VARCHAR2(1000);
15182
 
15183
BEGIN
15184
 
15185
  --
15186
  -- Start the connection.
15187
  --
15188
  connection := utl_smtp.open_connection(mailhost,25);
15189
 
15190
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
15191
     'From: '||sender||''||crlf||
15192
  'Subject: '||subject||crlf||
15193
       'To: '||recipient||crlf||
15194
       'CC: '||ccrecipient;
15195
 
15196
  --
15197
  -- Handshake with the SMTP server
15198
  --
15199
  utl_smtp.helo(connection, mailhost);
15200
  utl_smtp.mail(connection, sender);
15201
  utl_smtp.rcpt(connection, recipient);
15202
  utl_smtp.rcpt(connection, ccrecipient);
15203
  utl_smtp.open_data(connection);
15204
  --
15205
  -- Write the header
15206
  --
15207
  utl_smtp.write_data(connection, header);
15208
  --
15209
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
15210
  --
15211
  utl_smtp.write_data(connection, crlf ||message);
15212
  utl_smtp.close_data(connection);
15213
  utl_smtp.quit(connection);
15214
 
15215
EXCEPTION
15216
  WHEN UTL_SMTP.INVALID_OPERATION THEN
15217
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
15218
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
15219
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
15220
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
15221
    dbms_output.put_line(' Errors in code for SMTP transaction.');
15222
 
15223
END RELEASE_MANAGER_MAILOUT;
4040 dpurdie 15224
 
3959 dpurdie 15225
/
15226
 
4040 dpurdie 15227
/
15228
--------------------------------------------------------
15229
--  DDL for Procedure REMOVE_COMPONENTS
15230
--------------------------------------------------------
15231
set define off;
15232
 
3959 dpurdie 15233
  CREATE OR REPLACE PROCEDURE "REMOVE_COMPONENTS" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
15234
/* ---------------------------------------------------------------------------
15235
    Version: 3.0.0
15236
   --------------------------------------------------------------------------- */
15237
 
15238
 
15239
BEGIN
15240
 
15241
	 --- Delete From RELEASE_COMPONENTS
15242
	 DELETE FROM RELEASE_COMPONENTS
15243
	 WHERE PV_ID = nPvId;
15244
 
15245
END Remove_Components;
4040 dpurdie 15246
 
3959 dpurdie 15247
/
15248
 
4040 dpurdie 15249
/
15250
--------------------------------------------------------
15251
--  DDL for Procedure REMOVE_DOCUMENT
15252
--------------------------------------------------------
15253
set define off;
15254
 
3959 dpurdie 15255
  CREATE OR REPLACE PROCEDURE "REMOVE_DOCUMENT" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15256
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
15257
                                              nUserId IN NUMBER ) IS
15258
/* ---------------------------------------------------------------------------
15259
    Version: 3.0
15260
   --------------------------------------------------------------------------- */
15261
 
15262
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
15263
 
15264
BEGIN
15265
 
15266
	-- Get Doc Num
15267
    SELECT pd.DOC_NUM INTO DocNumber
15268
      FROM PACKAGE_DOCUMENTS pd
15269
     WHERE pd.PV_ID = nPvId
15270
       AND pd.DOC_ID = nDocId;
15271
 
15272
 
15273
	-- Delete Document
15274
    DELETE
15275
      FROM PACKAGE_DOCUMENTS pd
15276
     WHERE pd.PV_ID = nPvId
15277
       AND pd.DOC_ID = nDocId;
15278
 
15279
 
15280
    /* LOG ACTION */
15281
   	Log_Action ( nPvId, 'document_remove', nUserId,
15282
   			     'Document number: '|| DocNumber );
15283
 
15284
 
15285
END Remove_Document;
4040 dpurdie 15286
 
3959 dpurdie 15287
/
15288
 
4040 dpurdie 15289
/
15290
--------------------------------------------------------
15291
--  DDL for Procedure REMOVE_PACKAGE_INTEREST
15292
--------------------------------------------------------
15293
set define off;
15294
 
3959 dpurdie 15295
  CREATE OR REPLACE PROCEDURE "REMOVE_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
15296
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
15297
												  	nUserId IN NUMBER
15298
	   	  		  									) IS
15299
 
1373 dpurdie 15300
/******************************************************************************
3959 dpurdie 15301
   NAME:       REMOVE_PACKAGE_INTEREST
15302
   PURPOSE:    To remove interest in a given package per project
1373 dpurdie 15303
 
15304
   REVISIONS:
15305
   Ver        Date        Author           Description
15306
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 15307
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
1373 dpurdie 15308
 
15309
   NOTES:
15310
 
15311
   Automatically available Auto Replace Keywords:
3959 dpurdie 15312
      Object Name:     REMOVE_PACKAGE_INTEREST
15313
      Sysdate:         12/05/2006
15314
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
1373 dpurdie 15315
      Username:         (set in TOAD Options, Procedure Editor)
15316
      Table Name:       (set in the "New PL/SQL Object" dialog)
15317
 
15318
******************************************************************************/
15319
BEGIN
15320
 
3959 dpurdie 15321
	 --Delete from PACKAGE_INTEREST
15322
	 DELETE FROM PACKAGE_INTEREST
15323
	 WHERE PROJ_ID = nProjId
15324
	 AND PKG_ID = nPkgId
15325
	 AND USER_ID = nUserId;
15326
 
15327
END REMOVE_PACKAGE_INTEREST;
4040 dpurdie 15328
 
1374 dpurdie 15329
/
1373 dpurdie 15330
 
4040 dpurdie 15331
/
15332
--------------------------------------------------------
15333
--  DDL for Procedure REMOVE_PATCH
15334
--------------------------------------------------------
15335
set define off;
15336
 
3959 dpurdie 15337
  CREATE OR REPLACE PROCEDURE "REMOVE_PATCH" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
15338
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
15339
                                           nUserId IN NUMBER ) IS
1373 dpurdie 15340
/* ---------------------------------------------------------------------------
3959 dpurdie 15341
    Version: 4.0
1373 dpurdie 15342
   --------------------------------------------------------------------------- */
15343
 
3959 dpurdie 15344
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
1373 dpurdie 15345
 
3959 dpurdie 15346
CURSOR curPatch IS
15347
	SELECT pp.PV_ID,
15348
		   pp.PATCH_ID,
15349
	       ROWNUM AS NEW_INSTALL_ORDER
15350
	  FROM PACKAGE_PATCHES pp
15351
	 WHERE pp.PV_ID = nPvId
15352
	ORDER BY pp.INSTALL_ORDER;
15353
recPatch curPatch%ROWTYPE;
15354
 
1373 dpurdie 15355
BEGIN
15356
 
3959 dpurdie 15357
	 -- Delete Patch
15358
     DELETE
15359
       FROM PACKAGE_PATCHES pp
15360
      WHERE pp.PV_ID = nPvId
15361
        AND pp.PATCH_ID = nPatchId;
1373 dpurdie 15362
 
15363
 
3959 dpurdie 15364
	-- Redo Install Order
15365
    OPEN curPatch;
15366
	FETCH curPatch INTO recPatch;
15367
 
15368
	WHILE curPatch%FOUND
15369
	LOOP
15370
 
15371
		UPDATE PACKAGE_PATCHES pp SET
15372
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
15373
		WHERE pp.PV_ID = nPvId
15374
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
15375
 
15376
		FETCH curPatch INTO recPatch;
15377
	END LOOP;
15378
 
15379
	CLOSE curPatch;
15380
 
15381
 
15382
 
15383
 
15384
    /* LOG ACTION */
15385
    SELECT pv.PKG_VERSION INTO PatchVersion
1373 dpurdie 15386
      FROM PACKAGE_VERSIONS pv
3959 dpurdie 15387
     WHERE pv.PV_ID = nPatchId;
1373 dpurdie 15388
 
3959 dpurdie 15389
   	Log_Action ( nPvId, 'patch_remove', nUserId,
15390
   			     'Version: '|| PatchVersion );
1373 dpurdie 15391
 
3959 dpurdie 15392
END Remove_Patch;
4040 dpurdie 15393
 
1374 dpurdie 15394
/
1373 dpurdie 15395
 
4040 dpurdie 15396
/
15397
--------------------------------------------------------
15398
--  DDL for Procedure REMOVE_PROJECT_VIEW_OWNER
15399
--------------------------------------------------------
15400
set define off;
15401
 
3959 dpurdie 15402
  CREATE OR REPLACE PROCEDURE "REMOVE_PROJECT_VIEW_OWNER" (nProjId IN NUMBER,
15403
	   	  		  						 			  nViewId IN NUMBER,
15404
										 			  sUserIdList IN VARCHAR2,
15405
										 			  nUserId IN NUMBER ) IS
1373 dpurdie 15406
 
3959 dpurdie 15407
GroupId NUMBER;													  
15408
 
15409
 
15410
 
1373 dpurdie 15411
/******************************************************************************
3959 dpurdie 15412
   NAME:       UPDATE_VIEW
15413
   PURPOSE:    
1373 dpurdie 15414
 
15415
   REVISIONS:
3959 dpurdie 15416
   Ver        Date        Author           		Description
1373 dpurdie 15417
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 15418
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
1373 dpurdie 15419
 
15420
   NOTES:
15421
 
15422
   Automatically available Auto Replace Keywords:
3959 dpurdie 15423
      Object Name:     UPDATE_VIEW
15424
      Sysdate:         10/04/2006
15425
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
1373 dpurdie 15426
      Username:         (set in TOAD Options, Procedure Editor)
15427
      Table Name:       (set in the "New PL/SQL Object" dialog)
15428
 
15429
******************************************************************************/
15430
 
15431
BEGIN
3959 dpurdie 15432
	 SELECT GROUP_EMAIL_ID into GroupId
15433
	 FROM AUTOBUILD_FAILURE
15434
	 WHERE PROJ_ID = nProjId
15435
	 AND VIEW_ID = nViewId;
15436
 
15437
	 DELETE FROM MEMBERS_GROUP
15438
	 WHERE GROUP_EMAIL_ID = GroupId
15439
	 AND USER_ID IN (
15440
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
15441
	 );
15442
 
1373 dpurdie 15443
 
3959 dpurdie 15444
 
15445
END REMOVE_PROJECT_VIEW_OWNER;
4040 dpurdie 15446
 
3959 dpurdie 15447
/
1373 dpurdie 15448
 
4040 dpurdie 15449
/
15450
--------------------------------------------------------
15451
--  DDL for Procedure REMOVE_RELEASE_CONTENT
15452
--------------------------------------------------------
15453
set define off;
15454
 
3959 dpurdie 15455
  CREATE OR REPLACE PROCEDURE "REMOVE_RELEASE_CONTENT" ( sPvIdList IN VARCHAR2,
15456
													 sNotPvIdList IN VARCHAR2,
15457
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
15458
/* ---------------------------------------------------------------------------
15459
    Version: 3.0
15460
   --------------------------------------------------------------------------- */
1373 dpurdie 15461
 
3959 dpurdie 15462
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
15463
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
1373 dpurdie 15464
 
3959 dpurdie 15465
BEGIN
15466
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
15467
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
15468
 
15469
    -- Delete From Release Content
15470
    DELETE
15471
      FROM RELEASE_CONTENT
15472
	 WHERE rtag_id = nRTagId
15473
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
15474
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
15475
 
15476
 
15477
 
15478
END Remove_Release_Content;
4040 dpurdie 15479
 
1374 dpurdie 15480
/
3959 dpurdie 15481
 
4040 dpurdie 15482
/
15483
--------------------------------------------------------
15484
--  DDL for Procedure REMOVE_RUNTIME
15485
--------------------------------------------------------
15486
set define off;
15487
 
3959 dpurdie 15488
  CREATE OR REPLACE PROCEDURE "REMOVE_RUNTIME" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15489
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
15490
                                             nUserId IN NUMBER ) IS
15491
/* ---------------------------------------------------------------------------
15492
    Version: 3.0
15493
   --------------------------------------------------------------------------- */
15494
 
15495
   RuntimeDependency VARCHAR2(4000);
15496
 
15497
BEGIN
15498
 
15499
	-- Get Runtime dependency
15500
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
15501
	  FROM RUNTIME_DEPENDENCIES rtd,
15502
	  	   PACKAGES pkg,
15503
	       PACKAGE_VERSIONS pv
15504
	 WHERE rtd.PV_ID = nPvId
15505
	   AND pv.PKG_ID = pkg.PKG_ID
15506
	   AND rtd.RTD_ID = pv.PV_ID
15507
	   AND rtd.RTD_ID = nRuntimeId;
15508
 
15509
 
15510
	-- Delete Document
15511
    DELETE
15512
      FROM RUNTIME_DEPENDENCIES rtd
15513
     WHERE rtd.PV_ID = nPvId
15514
       AND rtd.RTD_ID = nRuntimeId;
15515
 
15516
 
15517
    /* LOG ACTION */
15518
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
15519
   			     'Runtime package: '|| RuntimeDependency );
15520
 
15521
 
15522
END Remove_Runtime;
4040 dpurdie 15523
 
3959 dpurdie 15524
/
15525
 
4040 dpurdie 15526
/
15527
--------------------------------------------------------
15528
--  DDL for Procedure RENAME_PACKAGE_VERSION
15529
--------------------------------------------------------
15530
set define off;
15531
 
3959 dpurdie 15532
  CREATE OR REPLACE PROCEDURE "RENAME_PACKAGE_VERSION" ( NNpv_id IN NUMBER,
4211 dpurdie 15533
                                  SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15534
                                  cBuildType IN CHAR,
15535
                                  cChangeType IN CHAR,
15536
                                  NNuser_id IN NUMBER,
15537
                                  errMessage OUT VARCHAR2 ) IS
3959 dpurdie 15538
/* ---------------------------------------------------------------------------
15539
    Version: 3.2
15540
   --------------------------------------------------------------------------- */
15541
 
15542
    sPackageVersion VARCHAR2(4000);
4211 dpurdie 15543
    sLabel VARCHAR2(4000) := NULL;
15544
    sChangeType VARCHAR2(100) := NULL;
15545
    uChangeType CHAR := cChangeType;
3959 dpurdie 15546
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
15547
 
15548
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
15549
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
15550
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
15551
 
15552
    CURSOR package_versions_cur IS
15553
        SELECT pv_id
4211 dpurdie 15554
          FROM package_versions
15555
         WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
15556
           AND pkg_version = SSpkg_version;
3959 dpurdie 15557
    package_versions_rec package_versions_cur%ROWTYPE;
15558
 
15559
 
15560
BEGIN
15561
 
15562
    /* ---------------------------------------------------- */
15563
    /* Find if package_version exists                       */
15564
    /* ---------------------------------------------------- */
15565
 
4211 dpurdie 15566
    errMessage := NULL;
3959 dpurdie 15567
 
4211 dpurdie 15568
    -- Get previous version
15569
    SELECT pv.PKG_VERSION INTO OldPkgVersion
3959 dpurdie 15570
      FROM PACKAGE_VERSIONS pv
15571
     WHERE pv.PV_ID = NNpv_id;
15572
 
4211 dpurdie 15573
    sPackageVersion := SSpkg_version;
3959 dpurdie 15574
 
4211 dpurdie 15575
    IF OldPkgVersion != sPackageVersion THEN
3959 dpurdie 15576
 
4211 dpurdie 15577
        OPEN package_versions_cur;
15578
        FETCH package_versions_cur INTO package_versions_rec;
3959 dpurdie 15579
 
4211 dpurdie 15580
        IF package_versions_cur%NOTFOUND
15581
        THEN
3959 dpurdie 15582
 
4211 dpurdie 15583
            -- Split current version in parts
15584
            Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
3959 dpurdie 15585
 
15586
 
4211 dpurdie 15587
                -- Automated built config
15588
                IF ( cBuildType = 'M' ) THEN
15589
                    uChangeType := 'F';
15590
                END IF;  
15591
 
15592
                -- Automated version numbering
15593
                -- Make sure that version is still unique
15594
                IF (uChangeType != 'F') THEN
15595
                    sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;
15596
                END IF;
3959 dpurdie 15597
 
4211 dpurdie 15598
                -- Packge version not found, hence rename it.
15599
                UPDATE package_versions
15600
                   SET pkg_version = sPackageVersion,
15601
                       v_mm = SSV_MM,
15602
                       v_nmm = SSV_NMM,
15603
                       v_ext = SSV_EXT,
15604
                       modified_stamp = ORA_SYSDATETIME,
15605
                       modifier_id = NNuser_id,
15606
                       build_type = cBuildType,
15607
                       change_type = uChangeType,
15608
                       pkg_label = NULL
15609
                 WHERE pv_id = NNpv_id;
15610
 
15611
                sLabel := GET_AUTOMATED_LABEL( NNpv_id );
15612
                UPDATE PACKAGE_VERSIONS pv SET
15613
                    pv.PKG_LABEL = sLabel
15614
                WHERE pv_id = NNpv_id;
3959 dpurdie 15615
 
15616
 
4211 dpurdie 15617
              /* LOG ACTION */
15618
              IF (cChangeType = 'F') THEN
15619
                  Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| sPackageVersion );
15620
              ELSE 
15621
 
15622
                  IF cChangeType = 'M' THEN
15623
                    sChangeType := 'Major Change';
15624
                  ELSIF cChangeType = 'N' THEN 
15625
                    sChangeType := 'Minor Change';
15626
                  ELSIF cChangeType = 'P' THEN 
15627
                    sChangeType := 'Patch Change';
15628
                  ELSE
15629
                    sChangeType := 'Unknown Change';
15630
                  END IF;
3959 dpurdie 15631
 
4211 dpurdie 15632
                  Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| sPackageVersion || ',' || sChangeType );
15633
              END IF;
3959 dpurdie 15634
 
4211 dpurdie 15635
        ELSE
15636
            -- Package version exists. Cannot proceed.
15637
            errMessage := 'enum_MSG_VERSION_EXISTS';
3959 dpurdie 15638
 
4211 dpurdie 15639
        END IF;
3959 dpurdie 15640
 
4211 dpurdie 15641
        CLOSE package_versions_cur;
3959 dpurdie 15642
 
4211 dpurdie 15643
    END IF;
3959 dpurdie 15644
 
15645
END Rename_Package_Version;
4040 dpurdie 15646
 
3959 dpurdie 15647
/
15648
 
4040 dpurdie 15649
/
15650
--------------------------------------------------------
15651
--  DDL for Procedure RESET_IGNORE_WARNINGS
15652
--------------------------------------------------------
15653
set define off;
15654
 
3959 dpurdie 15655
  CREATE OR REPLACE PROCEDURE "RESET_IGNORE_WARNINGS" ( sPvIdList IN VARCHAR2,
15656
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
15657
/* ---------------------------------------------------------------------------
15658
    Version: 5.0
15659
   --------------------------------------------------------------------------- */
15660
 
15661
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
15662
 
15663
BEGIN
15664
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
15665
 
15666
    -- Remove Ignore Warnings
15667
     DELETE
15668
       FROM ignore_warnings
15669
	  WHERE (rtag_id, pv_id, dpv_id) IN
15670
	     (
15671
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
15672
	        FROM ignore_warnings igw,
15673
	             package_versions dpv,
15674
	             package_versions pv
15675
	       WHERE igw.dpv_id = dpv.pv_id
15676
	         AND igw.rtag_id = nRTagId
15677
	         AND dpv.pkg_id = pv.pkg_id
15678
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
15679
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
15680
         );
15681
 
15682
END Reset_Ignore_Warnings;
4040 dpurdie 15683
 
3959 dpurdie 15684
/
15685
 
4040 dpurdie 15686
/
15687
--------------------------------------------------------
15688
--  DDL for Procedure RIPPLE_PACKAGE
15689
--------------------------------------------------------
15690
set define off;
15691
 
3959 dpurdie 15692
  CREATE OR REPLACE PROCEDURE "RIPPLE_PACKAGE" (
15693
        sPvIdList IN VARCHAR2,
15694
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
15695
        nUserId IN NUMBER
15696
    ) IS
15697
/* ---------------------------------------------------------------------------
15698
    Version: 4.1
15699
   --------------------------------------------------------------------------- */
15700
 
15701
BEGIN
15702
 
15703
    IF (sPvIdList IS NULL) THEN
15704
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
15705
    END IF;
15706
 
15707
    -- Ripple Package
15708
    DELETE FROM DO_NOT_RIPPLE
15709
    WHERE RTAG_ID = nRtagId
15710
    AND PV_ID IN (
15711
        SELECT *
15712
        FROM THE (
15713
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
15714
            AS RELMGR_NUMBER_TAB_t )
15715
            FROM DUAL
15716
        )
15717
    );
15718
 
15719
    /* LOG ACTION */
15720
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
15721
 
15722
END Ripple_Package;
4040 dpurdie 15723
 
3959 dpurdie 15724
/
15725
 
4040 dpurdie 15726
/
15727
--------------------------------------------------------
15728
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS
15729
--------------------------------------------------------
15730
set define off;
15731
 
15732
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
3959 dpurdie 15733
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15734
                                                          NNuser_id IN NUMBER,
15735
                                                          retPV_ID OUT NUMBER,
15736
                                                          nCloneFromPvId IN NUMBER DEFAULT NULL,
15737
                                                          nBuildType IN CHAR DEFAULT 'M',
15738
                                                          nChangeType IN CHAR DEFAULT 'F') IS
15739
/* ---------------------------------------------------------------------------
15740
    Version: 4.0
15741
   --------------------------------------------------------------------------- */
15742
 
15743
    parPkg_id   NUMBER;
15744
    parPv_id    NUMBER;
15745
    cloneFrom_pv_id NUMBER;
15746
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
15747
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
15748
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
15749
    spackageversion VARCHAR2 (4000);
4211 dpurdie 15750
    slabel VARCHAR2 (4000) := NULL;
3959 dpurdie 15751
 
15752
    CURSOR packages_cur IS
15753
        SELECT pkg_id FROM PACKAGES
15754
        WHERE pkg_name = SSpkg_name;
15755
    packages_rec packages_cur%ROWTYPE;
15756
 
15757
    CURSOR package_versions_cur IS
15758
        SELECT pv_id FROM PACKAGE_VERSIONS
15759
        WHERE pkg_id = parPkg_id
15760
        AND pkg_version = SSpkg_version;
15761
    package_versions_rec package_versions_cur%ROWTYPE;
15762
 
15763
    CURSOR clone_package_versions_cur IS
15764
        SELECT MAX(pv_id) AS pv_id
15765
          FROM PACKAGE_VERSIONS
15766
         WHERE pkg_id = parPkg_id
15767
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
15768
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
15769
 
15770
BEGIN
15771
    /* -------------------------------------------- */
15772
    /* Find if pkg_name exists and seed if required */
15773
    /* -------------------------------------------- */
15774
    OPEN packages_cur;
15775
    FETCH packages_cur INTO packages_rec;
15776
 
15777
    IF packages_cur%NOTFOUND
15778
    THEN
15779
        /* INSERT into packages table */
15780
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
15781
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
15782
 
15783
    ELSE
15784
        parPkg_id := packages_rec.pkg_id;
15785
 
15786
    END IF;
15787
 
15788
    CLOSE packages_cur;
15789
 
15790
 
15791
    /* ---------------------------------------------------- */
15792
    /* Find if package_version exists and seed if required  */
15793
    /* ---------------------------------------------------- */
15794
    OPEN package_versions_cur;
15795
    FETCH package_versions_cur INTO package_versions_rec;
15796
 
15797
    IF package_versions_cur%NOTFOUND
15798
    THEN
15799
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
15800
 
15801
        /* Generate automated version Number */
15802
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
15803
        spackageversion := SSpkg_version;
15804
 
4211 dpurdie 15805
        IF ( nChangeType <> 'F' )
3959 dpurdie 15806
        THEN
15807
            spackageversion := '(' || parPv_id || ')' || SSV_EXT;
15808
        END If;
15809
 
15810
        /* LOG ACTION */
15811
        Log_Action ( parPv_id, 'new_version', NNuser_id,
15812
                     'New package version: '|| spackageversion );
15813
 
15814
 
15815
        /* Find similar pkg_name + ext to clone from */
15816
        OPEN clone_package_versions_cur;
15817
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
15818
 
15819
 
15820
        IF NOT clone_package_versions_rec.pv_id IS NULL
15821
        THEN
15822
            /* CLONE details from similar version  OR  from nCloneFromPvId */
15823
            IF ( NOT nCloneFromPvId IS NULL) THEN
15824
                cloneFrom_pv_id := nCloneFromPvId;
15825
            ELSE
15826
                cloneFrom_pv_id := clone_package_versions_rec.pv_id;
15827
            END IF;
15828
 
15829
            -- Clone Package Version Details --
15830
            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,
15831
                                           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  )
15832
                SELECT parPv_id         AS pv_id,
15833
                       parPkg_id        AS pkg_id,
15834
                       spackageversion  AS pkg_version,
15835
                       'N'              AS dlocked,
15836
                       Ora_Sysdate      AS created_stamp,
15837
                       NNuser_id        AS creator_id,
15838
                       Ora_Sysdatetime  AS modified_stamp,
15839
                       NNuser_id        AS modifier_id,
15840
                       SSV_MM           AS V_MM,
15841
                       SSV_NMM          AS V_NMM,
15842
                       SSV_EXT          AS V_EXT,
15843
                       pv.src_path,
15844
                       pv.pv_description,
15845
                       pv.PV_OVERVIEW,
15846
                       cloneFrom_pv_id  AS LAST_PV_ID,
15847
                       pv.owner_id,
15848
                       nBuildType       AS BUILD_TYPE,
15849
                       pv.IS_BUILD_ENV_REQUIRED,
15850
                       pv.BS_ID,
15851
                       pv.is_autobuildable,
15852
                       pv.IS_DEPLOYABLE, 
15853
                       pv.ripple_field,
15854
                       nChangeType       AS change_type
15855
                  FROM PACKAGE_VERSIONS pv
15856
                 WHERE pv.pv_id = cloneFrom_pv_id;
15857
 
15858
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
15859
 
15860
        ELSE
15861
            /* BRAND NEW version + ext */
15862
            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 )
15863
            VALUES (
15864
                    parPv_id,
15865
                    parPkg_id,
15866
                    spackageversion,
15867
                    'N',
15868
                    Ora_Sysdate,
15869
                    NNuser_id,
15870
                    Ora_Sysdatetime,
15871
                    NNuser_id,
15872
                    SSV_MM,
15873
                    SSV_NMM,
15874
                    SSV_EXT,
15875
                    NNuser_id,
15876
                    parPv_id,
15877
                    nBuildType,
15878
                    'b',
15879
                    nChangeType
15880
                   );
15881
 
15882
        END IF;
15883
 
4211 dpurdie 15884
        /* Insert initial package label */
15885
        slabel := get_automated_label (parPv_id);
15886
        UPDATE package_versions pv
15887
        SET pv.pkg_label = slabel
15888
        WHERE pv.pv_id = parPv_id;
15889
 
3959 dpurdie 15890
        CLOSE clone_package_versions_cur;
15891
        retPV_ID := parPv_id;
15892
 
15893
    ELSE
15894
        retPV_ID := package_versions_rec.pv_id;
15895
 
15896
    END IF;
15897
 
15898
    CLOSE package_versions_cur;
15899
 
15900
END Seed_Package_Names_Versions;
4040 dpurdie 15901
 
3959 dpurdie 15902
/
15903
 
4040 dpurdie 15904
/
15905
--------------------------------------------------------
15906
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS2
15907
--------------------------------------------------------
15908
set define off;
1373 dpurdie 15909
 
15910
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS2" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
15911
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15912
                                                          NNuser_id IN NUMBER,
15913
                                                          retPV_ID OUT NUMBER,
15914
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
15915
/* ---------------------------------------------------------------------------
15916
    Version: 4.0
15917
   --------------------------------------------------------------------------- */
15918
 
15919
    parPkg_id   NUMBER;
15920
    parPv_id    NUMBER;
15921
    cloneFrom_pv_id NUMBER;
15922
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
15923
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
15924
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
15925
 
15926
    CURSOR packages_cur IS
15927
        SELECT pkg_id FROM PACKAGES
15928
        WHERE pkg_name = SSpkg_name;
15929
    packages_rec packages_cur%ROWTYPE;
15930
 
15931
    CURSOR package_versions_cur IS
15932
        SELECT pv_id FROM PACKAGE_VERSIONS
15933
        WHERE pkg_id = parPkg_id
15934
        AND pkg_version = SSpkg_version;
15935
    package_versions_rec package_versions_cur%ROWTYPE;
15936
 
15937
    CURSOR clone_package_versions_cur IS
15938
        SELECT MAX(pv_id) AS pv_id
15939
          FROM PACKAGE_VERSIONS
15940
         WHERE pkg_id = parPkg_id
15941
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
15942
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
15943
 
15944
BEGIN
15945
    /* -------------------------------------------- */
15946
    /* Find if pkg_name exists and seed if required */
15947
    /* -------------------------------------------- */
15948
    OPEN packages_cur;
15949
    FETCH packages_cur INTO packages_rec;
15950
 
15951
    IF packages_cur%NOTFOUND
15952
    THEN
15953
        /* INSERT into packages table */
15954
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
15955
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
15956
 
15957
    ELSE
15958
        parPkg_id := packages_rec.pkg_id;
15959
 
15960
    END IF;
15961
 
15962
    CLOSE packages_cur;
15963
 
15964
 
15965
 
15966
    /* ---------------------------------------------------- */
15967
    /* Find if package_version exists and seed if required  */
15968
    /* ---------------------------------------------------- */
15969
    OPEN package_versions_cur;
15970
    FETCH package_versions_cur INTO package_versions_rec;
15971
 
15972
    IF package_versions_cur%NOTFOUND
15973
    THEN
15974
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
15975
 
15976
        /* LOG ACTION */
15977
        Log_Action ( parPv_id, 'new_version', NNuser_id,
15978
        			 'New package version: '|| SSpkg_version );
15979
 
15980
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
15981
 
15982
 
15983
 
15984
 
15985
 
15986
            /* CLONE details from similar version  OR  from nCloneFromPvId */
15987
			IF ( NOT nCloneFromPvId IS NULL) THEN
15988
            	cloneFrom_pv_id := nCloneFromPvId;
15989
			ELSE
15990
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
15991
			END IF;
15992
 
15993
            -- Clone Package Version Details --
15994
            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,
15995
                                           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 )
15996
                SELECT parPv_id         AS pv_id,
15997
                       parPkg_id        AS pkg_id,
15998
                       SSpkg_version    AS pkg_version,
15999
                       'N'              AS dlocked,
16000
                       Ora_Sysdate      AS created_stamp,
16001
                       NNuser_id        AS creator_id,
16002
                       Ora_Sysdatetime  AS modified_stamp,
16003
                       NNuser_id        AS modifier_id,
16004
                       SSV_MM           AS V_MM,
16005
                       SSV_NMM          AS V_NMM,
16006
                       SSV_EXT          AS V_EXT,
16007
                       pv.src_path,
16008
                       pv.pv_description,
16009
                       pv.PV_OVERVIEW,
16010
                       cloneFrom_pv_id 	AS LAST_PV_ID,
16011
                       pv.owner_id,
16012
					   pv.BUILD_TYPE,
16013
					   pv.IS_BUILD_ENV_REQUIRED,
16014
					   pv.bs_id,
16015
					   pv.is_autobuildable,
16016
					   pv.IS_DEPLOYABLE,
16017
					   pv.ripple_field
16018
                  FROM PACKAGE_VERSIONS pv
16019
                 WHERE pv.pv_id = cloneFrom_pv_id;
16020
 
16021
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
16022
 
16023
        retPV_ID := parPv_id;
16024
 
16025
    ELSE
16026
        retPV_ID := package_versions_rec.pv_id;
16027
 
16028
    END IF;
16029
 
16030
    CLOSE package_versions_cur;
16031
 
16032
 
16033
 
16034
 
16035
END Seed_Package_Names_Versions2;
4040 dpurdie 16036
 
1374 dpurdie 16037
/
1373 dpurdie 16038
 
4040 dpurdie 16039
/
16040
--------------------------------------------------------
16041
--  DDL for Procedure SET_ADVISORY_RIPPLE
16042
--------------------------------------------------------
16043
set define off;
16044
 
3959 dpurdie 16045
  CREATE OR REPLACE PROCEDURE "SET_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
1373 dpurdie 16046
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
16047
											 nUserId IN NUMBER ) IS
16048
/* ---------------------------------------------------------------------------
16049
    Version: 4.0
16050
   --------------------------------------------------------------------------- */
16051
 
16052
BEGIN
16053
 
3959 dpurdie 16054
    -- Set Advisory Ripple Package
16055
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
16056
	VALUES (nRtagId, nPvId);
1373 dpurdie 16057
 
16058
    /* LOG ACTION */
3959 dpurdie 16059
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
1373 dpurdie 16060
 
16061
	/*Rebuild_Environment(nRtagId);*/
16062
 
3959 dpurdie 16063
END Set_Advisory_Ripple;
4040 dpurdie 16064
 
1374 dpurdie 16065
/
1373 dpurdie 16066
 
4040 dpurdie 16067
/
16068
--------------------------------------------------------
16069
--  DDL for Procedure SET_PACKAGE_BUILD_ENV
16070
--------------------------------------------------------
16071
set define off;
16072
 
3959 dpurdie 16073
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
16074
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
1373 dpurdie 16075
/* ---------------------------------------------------------------------------
3959 dpurdie 16076
    Last Modified: Rupesh Solanki
16077
	Version: 3.0.1
1373 dpurdie 16078
   --------------------------------------------------------------------------- */
16079
 
16080
 
16081
BEGIN
16082
 
3959 dpurdie 16083
   -- Delete Current Build Env settings
16084
   DELETE FROM PACKAGE_BUILD_ENV
16085
   WHERE pv_id = nPvId;
16086
 
16087
   -- Delet Current Package Build Info Settings
16088
   DELETE FROM PACKAGE_BUILD_INFO
16089
   WHERE pv_id = nPvId;
1373 dpurdie 16090
 
3959 dpurdie 16091
   -- Reset flag to N
16092
   UPDATE PACKAGE_VERSIONS SET
16093
	   IS_BUILD_ENV_REQUIRED = 'N'
16094
   WHERE PV_ID = nPvId;
1373 dpurdie 16095
 
16096
 
3959 dpurdie 16097
   -- Set new Build Env
16098
   IF NOT sBuildEnvIdList IS NULL THEN
16099
   	  -- Insert into PACKAGE_BUILD_ENV
16100
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
16101
	  SELECT nPvId AS PV_ID,
16102
	  		 be.BE_ID
16103
	    FROM BUILD_ENVIRONMENTS be
16104
	   WHERE be.BE_ID IN (
16105
	   		 		  	   SELECT *
16106
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
16107
	   		 		  	 );
16108
 
16109
   	  -- Insert into PACKAGE_BUILD_INFO
16110
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
16111
	  SELECT nPvId AS PV_ID,
16112
	  		 be.BM_ID
16113
	    FROM BUILD_MACHINES be
16114
	   WHERE be.BM_ID IN (
16115
	   		 		  	   SELECT *
16116
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
16117
	   		 		  	 );						 
1373 dpurdie 16118
 
3959 dpurdie 16119
	   -- Set flag to Y
16120
	   UPDATE PACKAGE_VERSIONS SET
16121
		   IS_BUILD_ENV_REQUIRED = 'Y'
16122
	   WHERE PV_ID = nPvId;
1373 dpurdie 16123
 
3959 dpurdie 16124
   END IF;
1373 dpurdie 16125
 
16126
 
3959 dpurdie 16127
END Set_Package_Build_Env;
4040 dpurdie 16128
 
1374 dpurdie 16129
/
1373 dpurdie 16130
 
4040 dpurdie 16131
/
16132
--------------------------------------------------------
16133
--  DDL for Procedure SET_PACKAGE_BUILD_ENV_TEMP
16134
--------------------------------------------------------
16135
set define off;
16136
 
1373 dpurdie 16137
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV_TEMP" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
16138
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
16139
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
16140
														 ) IS
16141
/* ---------------------------------------------------------------------------
16142
    Last Modified: Rupesh Solanki
16143
	Version: 3.0.1
16144
   --------------------------------------------------------------------------- */
16145
 
16146
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
16147
   BsId NUMBER;
16148
   HackBsId NUMBER;
16149
 
16150
 
16151
BEGIN
16152
 
16153
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
16154
 
16155
   -- Delete Current Build Env settings
16156
   DELETE FROM PACKAGE_BUILD_ENV
16157
   WHERE pv_id = nPvId;
16158
 
16159
   -- Delet Current Package Build Info Settings
16160
   DELETE FROM PACKAGE_BUILD_INFO
16161
   WHERE pv_id = nPvId;
16162
 
16163
   -- Reset flag to N
16164
   UPDATE PACKAGE_VERSIONS SET
16165
	   IS_BUILD_ENV_REQUIRED = 'N'
16166
   WHERE PV_ID = nPvId;
16167
 
16168
 
16169
   -- Set new Build Env
16170
   IF NOT sBuildEnvIdList IS NULL THEN
16171
	FOR i IN 1..nBsCollector.COUNT
16172
	LOOP   
16173
 
16174
	BsId := nBsCollector(i);
16175
 
16176
	IF nBuildStandard = 2 THEN
16177
	   IF BsId = 1 THEN
16178
	   	  HackBsId := 11;
16179
	   ELSE
16180
	   	  HackBsId := 12;
16181
	   END IF;
16182
 
16183
   	  -- Insert into PACKAGE_BUILD_ENV
16184
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
16185
	  SELECT nPvId AS PV_ID,
16186
	  		 be.BE_ID
16187
	    FROM BUILD_ENVIRONMENTS be
16188
	   WHERE be.BE_ID IN ( HackBsId );
16189
 
16190
   	  -- Insert into PACKAGE_BUILD_INFO
16191
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
16192
	  SELECT nPvId AS PV_ID,
16193
	  		 be.BM_ID
16194
	    FROM BUILD_MACHINES be
16195
	   WHERE be.BM_ID IN ( BsId );						 
16196
 
16197
	   -- Set flag to Y
16198
	   UPDATE PACKAGE_VERSIONS SET
16199
		   IS_BUILD_ENV_REQUIRED = 'Y'
16200
	   WHERE PV_ID = nPvId;	
16201
 
16202
 
16203
	ELSE
16204
 
16205
   	  -- Insert into PACKAGE_BUILD_ENV
16206
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
16207
	  SELECT nPvId AS PV_ID,
16208
	  		 be.BE_ID
16209
	    FROM BUILD_ENVIRONMENTS be
16210
	   WHERE be.BE_ID IN ( BsId );
16211
 
16212
   	  -- Insert into PACKAGE_BUILD_INFO
16213
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
16214
	  SELECT nPvId AS PV_ID,
16215
	  		 be.BM_ID
16216
	    FROM BUILD_MACHINES be
16217
	   WHERE be.BM_ID IN ( BsId );						 
16218
 
16219
	   -- Set flag to Y
16220
	   UPDATE PACKAGE_VERSIONS SET
16221
		   IS_BUILD_ENV_REQUIRED = 'Y'
16222
	   WHERE PV_ID = nPvId;
16223
 
16224
	END IF;  
16225
 
16226
 
16227
	END LOOP;	   
16228
 
16229
   END IF;
16230
 
16231
 
16232
END Set_Package_Build_Env_Temp;
4040 dpurdie 16233
 
1374 dpurdie 16234
/
1373 dpurdie 16235
 
4040 dpurdie 16236
/
16237
--------------------------------------------------------
16238
--  DDL for Procedure SET_TO_AUTOBUILDABLE
16239
--------------------------------------------------------
16240
set define off;
16241
 
3959 dpurdie 16242
  CREATE OR REPLACE PROCEDURE "SET_TO_AUTOBUILDABLE" (
16243
   nrtagid     IN   NUMBER,
16244
   spvidlist   IN   VARCHAR2
16245
)
16246
IS
16247
/******************************************************************************
16248
   NAME:       SET_TO_AUTOBUILDABLE
16249
   PURPOSE:
1373 dpurdie 16250
 
3959 dpurdie 16251
   REVISIONS:
16252
   Ver        Date        Author           Description
16253
   ---------  ----------  ---------------  ------------------------------------
16254
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
1373 dpurdie 16255
 
3959 dpurdie 16256
   NOTES:
1373 dpurdie 16257
 
3959 dpurdie 16258
   Automatically available Auto Replace Keywords:
16259
      Object Name:     SET_TO_AUTOBUILDABLE
16260
      Sysdate:         15/12/2006
16261
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
16262
      Username:         (set in TOAD Options, Procedure Editor)
16263
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16264
 
3959 dpurdie 16265
******************************************************************************/
16266
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
16267
   PvId NUMBER;
1373 dpurdie 16268
BEGIN
16269
 
3959 dpurdie 16270
   npvidcollector := in_list_number2 (spvidlist);
16271
 
16272
   UPDATE package_versions
16273
      SET is_autobuildable = 'N'
16274
    WHERE pv_id IN (SELECT pv_id
16275
                      FROM release_content
16276
                     WHERE rtag_id = nrtagid);
1373 dpurdie 16277
 
3959 dpurdie 16278
 
16279
 
16280
   	FOR i IN 1..npvidcollector.COUNT
16281
	LOOP
16282
		PvId := npvidcollector(i);
1373 dpurdie 16283
 
3959 dpurdie 16284
		UPDATE package_versions
16285
		set is_autobuildable = 'Y'
16286
		where pv_id = PvId;
1373 dpurdie 16287
 
3959 dpurdie 16288
	END LOOP;
16289
 
16290
 
16291
END set_to_autobuildable;
4040 dpurdie 16292
 
3959 dpurdie 16293
/
1373 dpurdie 16294
 
4040 dpurdie 16295
/
16296
--------------------------------------------------------
16297
--  DDL for Procedure SHIFT_INSTALL_ORDER
16298
--------------------------------------------------------
16299
set define off;
16300
 
3959 dpurdie 16301
  CREATE OR REPLACE PROCEDURE "SHIFT_INSTALL_ORDER" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
16302
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
16303
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
16304
/* ---------------------------------------------------------------------------
16305
    Version: 3.0
16306
   --------------------------------------------------------------------------- */
1373 dpurdie 16307
 
3959 dpurdie 16308
currInstallOrder NUMBER;
16309
FromInstallOrder NUMBER;
1373 dpurdie 16310
 
3959 dpurdie 16311
BEGIN
1373 dpurdie 16312
 
3959 dpurdie 16313
	 -- Get Current Install Order
16314
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
16315
       FROM PACKAGE_PATCHES pp
16316
      WHERE pp.PV_ID = nPvId
16317
        AND pp.PATCH_ID = nPatchId;
1373 dpurdie 16318
 
16319
 
3959 dpurdie 16320
	 IF currInstallOrder > nToInstallOrder
16321
	 THEN
1373 dpurdie 16322
 
3959 dpurdie 16323
		FromInstallOrder := nToInstallOrder;
1373 dpurdie 16324
 
3959 dpurdie 16325
	    -- Shift others Up
16326
		UPDATE PACKAGE_PATCHES pp SET
16327
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
16328
		 WHERE pp.PV_ID = nPvId
16329
           AND pp.PATCH_ID != nPatchId
16330
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
1373 dpurdie 16331
 
16332
 
3959 dpurdie 16333
	 ELSIF currInstallOrder < nToInstallOrder
16334
	 THEN
1373 dpurdie 16335
 
3959 dpurdie 16336
		FromInstallOrder := currInstallOrder + 1;
1373 dpurdie 16337
 
3959 dpurdie 16338
		-- Shift others Down
16339
        UPDATE PACKAGE_PATCHES pp SET
16340
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
16341
		 WHERE pp.PV_ID = nPvId
16342
           AND pp.PATCH_ID != nPatchId
16343
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
1373 dpurdie 16344
 
3959 dpurdie 16345
	 END IF;
1373 dpurdie 16346
 
16347
 
3959 dpurdie 16348
	 -- Move Patch to new install order
16349
     UPDATE PACKAGE_PATCHES pp SET
16350
		    pp.INSTALL_ORDER = nToInstallOrder
16351
	  WHERE pp.PV_ID = nPvId
16352
	    AND pp.PATCH_ID = nPatchId;
1373 dpurdie 16353
 
16354
 
3959 dpurdie 16355
END Shift_Install_Order;
4040 dpurdie 16356
 
1374 dpurdie 16357
/
1373 dpurdie 16358
 
4040 dpurdie 16359
/
16360
--------------------------------------------------------
16361
--  DDL for Procedure SPLIT_VERSION
16362
--------------------------------------------------------
16363
set define off;
16364
 
3959 dpurdie 16365
  CREATE OR REPLACE PROCEDURE "SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
16366
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
16367
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
16368
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
1373 dpurdie 16369
/* ---------------------------------------------------------------------------
3959 dpurdie 16370
    Version: 3.0.0
1373 dpurdie 16371
   --------------------------------------------------------------------------- */
16372
 
3959 dpurdie 16373
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
16374
        INDEX BY BINARY_INTEGER;
1373 dpurdie 16375
 
3959 dpurdie 16376
    version_components VERSION_COMPONENTS_TYPE;
16377
    lastDot NUMBER := 0;
16378
    currDot NUMBER := 0;
1373 dpurdie 16379
 
16380
BEGIN
3959 dpurdie 16381
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
1373 dpurdie 16382
 
3959 dpurdie 16383
    IF ( currDot > 0 )
1373 dpurdie 16384
    THEN
3959 dpurdie 16385
        -- YES dot separator found --
16386
        SSV_EXT := GET_V_EXT( SSpkg_version );
1373 dpurdie 16387
 
3959 dpurdie 16388
        IF NOT SSV_EXT IS NULL
1373 dpurdie 16389
        THEN
3959 dpurdie 16390
            lastDot := currDot;
16391
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
1373 dpurdie 16392
 
3959 dpurdie 16393
            IF ( currDot > 0 )
16394
            THEN
16395
                -- XXXX.M.E
16396
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
16397
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
16398
            ELSE
16399
                -- XXXX.E
16400
                SSV_MM := NULL;
16401
                SSV_NMM := SSpkg_version;
16402
            END IF;
1373 dpurdie 16403
 
16404
        ELSE
3959 dpurdie 16405
            -- XXXX.M
16406
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
16407
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
1373 dpurdie 16408
 
16409
        END IF;
16410
 
16411
    ELSE
3959 dpurdie 16412
        -- NO dot separator found --
16413
        -- XXXXXX
16414
        SSV_MM  := NULL;
16415
        SSV_NMM := SSpkg_version;
16416
        SSV_EXT := NULL;
1373 dpurdie 16417
 
16418
    END IF;
16419
 
3959 dpurdie 16420
END Split_Version;
4040 dpurdie 16421
 
1374 dpurdie 16422
/
1373 dpurdie 16423
 
4040 dpurdie 16424
/
16425
--------------------------------------------------------
16426
--  DDL for Procedure SWITCH_REPRODUCIBLE_PACKAGE
16427
--------------------------------------------------------
16428
set define off;
16429
 
3959 dpurdie 16430
  CREATE OR REPLACE PROCEDURE "SWITCH_REPRODUCIBLE_PACKAGE" (nPvId IN NUMBER, nUserId IN NUMBER)IS
16431
Auto CHAR;
16432
/******************************************************************************
16433
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
16434
   PURPOSE:    
1373 dpurdie 16435
 
3959 dpurdie 16436
   REVISIONS:
16437
   Ver        Date        Author           Description
16438
   ---------  ----------  ---------------  ------------------------------------
16439
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
1373 dpurdie 16440
 
3959 dpurdie 16441
   NOTES:
1373 dpurdie 16442
 
3959 dpurdie 16443
   Automatically available Auto Replace Keywords:
16444
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
16445
      Sysdate:         14/12/2006
16446
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
16447
      Username:         (set in TOAD Options, Procedure Editor)
16448
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16449
 
3959 dpurdie 16450
******************************************************************************/
1373 dpurdie 16451
BEGIN
16452
 
3959 dpurdie 16453
	 SELECT IS_AUTOBUILDABLE into Auto
16454
	 FROM PACKAGE_VERSIONS 
16455
	 WHERE PV_ID = nPvId;
1373 dpurdie 16456
 
3959 dpurdie 16457
	 IF Auto = 'N' Then
16458
 
16459
	 	UPDATE PACKAGE_VERSIONS
16460
	 	SET IS_AUTOBUILDABLE = 'Y'
16461
	 	WHERE PV_ID = nPvId;
16462
 
16463
 
16464
	 	/* LOG ACTION */
16465
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
16466
 
16467
	 Else
16468
 
16469
		 UPDATE PACKAGE_VERSIONS
16470
		 SET IS_AUTOBUILDABLE = 'N'
16471
		 WHERE PV_ID = nPvId;
16472
 
16473
 
16474
	 	 /* LOG ACTION */
16475
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
16476
 
16477
	 End If;
16478
 
16479
 
1373 dpurdie 16480
 
3959 dpurdie 16481
 
1373 dpurdie 16482
 
16483
 
16484
 
16485
 
3959 dpurdie 16486
END SWITCH_REPRODUCIBLE_PACKAGE;
4040 dpurdie 16487
 
1374 dpurdie 16488
/
1373 dpurdie 16489
 
4040 dpurdie 16490
/
16491
--------------------------------------------------------
16492
--  DDL for Procedure SYNC_PROJECTS_NEW_VERSION
16493
--------------------------------------------------------
16494
set define off;
16495
 
3959 dpurdie 16496
  CREATE OR REPLACE PROCEDURE "SYNC_PROJECTS_NEW_VERSION" ( nPv_id 				IN NUMBER,
16497
														  sSyncRtagsInList		IN VARCHAR2,
16498
				                                          nUser_id 				IN NUMBER ) IS
1373 dpurdie 16499
/* ---------------------------------------------------------------------------
16500
    Version: 3.0.0
16501
   --------------------------------------------------------------------------- */
16502
 
3959 dpurdie 16503
	CURSOR sync_rtags_cur IS
16504
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
16505
		  FROM release_content rc,
16506
		  	   package_versions pv,
16507
		       package_versions opv
16508
		 WHERE rc.pv_id = pv.pv_id
16509
		   AND opv.pkg_id = pv.pkg_id
16510
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
16511
		   AND opv.pv_id = nPv_id
16512
		   AND rtag_id IN ( SELECT *
16513
		   	   		   	      FROM THE (
16514
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
16515
					       		   	    FROM dual
16516
									   )
16517
						  );
16518
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
1373 dpurdie 16519
 
16520
BEGIN
16521
 
3959 dpurdie 16522
	OPEN sync_rtags_cur;
16523
	FETCH sync_rtags_cur INTO sync_rtags_rec;
1373 dpurdie 16524
 
3959 dpurdie 16525
	WHILE sync_rtags_cur%FOUND
16526
	LOOP
16527
		DELETE FROM RELEASE_CONTENT
16528
		 WHERE rtag_id = sync_rtags_rec.rtag_id
16529
	       AND pv_id = sync_rtags_rec.pv_id;
1373 dpurdie 16530
 
3959 dpurdie 16531
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
16532
	   		   VALUES ( sync_rtags_rec.rtag_id,
16533
		       		  	nPv_id,
16534
						sync_rtags_rec.BASE_VIEW_ID,
16535
	           			Ora_Sysdate,
16536
	           			nUser_id,
16537
 
16538
	      	   		   );
1373 dpurdie 16539
 
3959 dpurdie 16540
-- 		UPDATE RELEASE_CONTENT
16541
-- 	       SET pv_id = nPv_id,
16542
-- 	           insert_stamp = Ora_Sysdate,
16543
-- 	           insertor_id = nUser_id
16544
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
16545
-- 	       AND pv_id = sync_rtags_rec.pv_id;
1373 dpurdie 16546
 
3959 dpurdie 16547
		FETCH sync_rtags_cur INTO sync_rtags_rec;
16548
	END LOOP;
1373 dpurdie 16549
 
3959 dpurdie 16550
	CLOSE sync_rtags_cur;
16551
 
16552
END Sync_Projects_New_Version;
4040 dpurdie 16553
 
1374 dpurdie 16554
/
1373 dpurdie 16555
 
4040 dpurdie 16556
/
16557
--------------------------------------------------------
16558
--  DDL for Procedure TEST
16559
--------------------------------------------------------
16560
set define off;
16561
 
3959 dpurdie 16562
  CREATE OR REPLACE PROCEDURE "TEST" 
16563
IS
1373 dpurdie 16564
 
3959 dpurdie 16565
proc_id NUMBER;
16566
/******************************************************************************
16567
   NAME:       DELETE_DO_NOT_RIPPLE
16568
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
16569
               IS RELEASED
1373 dpurdie 16570
 
3959 dpurdie 16571
   REVISIONS:
16572
   Ver        Date        Author           Description
16573
   ---------  ----------  ---------------  ------------------------------------
16574
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 16575
 
3959 dpurdie 16576
   NOTES:
16577
 
16578
   Automatically available Auto Replace Keywords:
16579
      Object Name:     DELETE_DO_NOT_RIPPLE
16580
      Sysdate:         21/04/2006
16581
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
16582
      Username:         (set in TOAD Options, Procedure Editor)
16583
      Table Name:       (set in the "New PL/SQL Object" dialog)
16584
 
16585
******************************************************************************/
16586
   CURSOR ripple_cur
16587
   IS
16588
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
16589
 
16590
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 16591
BEGIN
3959 dpurdie 16592
   OPEN ripple_cur;
1373 dpurdie 16593
 
3959 dpurdie 16594
   FETCH ripple_cur
16595
    INTO ripple_rec;
1373 dpurdie 16596
 
3959 dpurdie 16597
   WHILE ripple_cur%FOUND
16598
   LOOP
16599
 
16600
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
16601
 
16602
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
16603
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
1373 dpurdie 16604
 
3959 dpurdie 16605
      FETCH ripple_cur
16606
       INTO ripple_rec;
16607
   END LOOP;
16608
END test;
4040 dpurdie 16609
 
1374 dpurdie 16610
/
1373 dpurdie 16611
 
4040 dpurdie 16612
/
16613
--------------------------------------------------------
16614
--  DDL for Procedure TEST_MARCO
16615
--------------------------------------------------------
16616
set define off;
16617
 
3959 dpurdie 16618
  CREATE OR REPLACE PROCEDURE "TEST_MARCO" IS
1373 dpurdie 16619
/******************************************************************************
3959 dpurdie 16620
   NAME:       TEST_MARCO
1373 dpurdie 16621
   PURPOSE:    
16622
 
16623
   REVISIONS:
16624
   Ver        Date        Author           Description
16625
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 16626
   1.0        2/03/2007          1. Created this procedure.
1373 dpurdie 16627
 
16628
   NOTES:
16629
 
16630
   Automatically available Auto Replace Keywords:
3959 dpurdie 16631
      Object Name:     TEST_MARCO
16632
      Sysdate:         2/03/2007
16633
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
1373 dpurdie 16634
      Username:         (set in TOAD Options, Procedure Editor)
16635
      Table Name:       (set in the "New PL/SQL Object" dialog)
16636
 
16637
******************************************************************************/
16638
 
3959 dpurdie 16639
parPv_id    NUMBER;
16640
parPkg_id   NUMBER;
16641
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
16642
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
16643
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
1373 dpurdie 16644
BEGIN
16645
 
3959 dpurdie 16646
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
1373 dpurdie 16647
 
3959 dpurdie 16648
        /* LOG ACTION */
16649
        Log_Action ( parPv_id, 'new_version', 3764,
16650
        			 'New package version: '|| parPv_id || '.' );
16651
 
16652
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
1373 dpurdie 16653
 
3959 dpurdie 16654
     -- Clone Package Version Details --
16655
            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,
16656
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
16657
                SELECT parPv_id         AS pv_id,
16658
                       pv.pkg_id        AS pkg_id,
16659
                       parPv_id || '.'    AS pkg_version,
16660
                       'N'              AS dlocked,
16661
                       Ora_Sysdate      AS created_stamp,
16662
                       3764        AS creator_id,
16663
                       Ora_Sysdatetime  AS modified_stamp,
16664
                       3764        AS modifier_id,
16665
                       SSV_MM          AS V_MM,
16666
                       SSV_NMM         AS V_NMM,
16667
                       SSV_EXT          AS V_EXT,
16668
                       pv.src_path,
16669
                       pv.pv_description,
16670
                       pv.PV_OVERVIEW,
16671
                       112982 	AS LAST_PV_ID,
16672
                       pv.owner_id,
16673
					   pv.BUILD_TYPE,
16674
					   pv.IS_BUILD_ENV_REQUIRED,
16675
					   pv.bs_id,
16676
					   pv.is_autobuildable,
16677
					   pv.IS_DEPLOYABLE
16678
                  FROM PACKAGE_VERSIONS pv
16679
                 WHERE pv.pv_id = 112982;		
1373 dpurdie 16680
 
3959 dpurdie 16681
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
1373 dpurdie 16682
 
16683
 
3959 dpurdie 16684
END TEST_MARCO;
4040 dpurdie 16685
 
3959 dpurdie 16686
/
1373 dpurdie 16687
 
4040 dpurdie 16688
/
16689
--------------------------------------------------------
16690
--  DDL for Procedure TOUCH_RELEASE
16691
--------------------------------------------------------
16692
set define off;
16693
 
3959 dpurdie 16694
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE" ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
16695
/* ---------------------------------------------------------------------------
16696
    The purpose of this procedure is to flag in the database that the specified
16697
    release has changed to an extent that the procedure Rebuild_Environment
16698
    should be called at the next opportunity in order that the package state
16699
    icons are all re-evaluated.
16700
    The package state icons are controlled using the pkg_state column in the
16701
    release_content table, and Rebuild_Environment updates that column.
16702
    It will be through user action in the website that Rebuild_Environment will
16703
    be called, for example:
16704
      a) when setting/clearing ignore warnings checkboxes
16705
      b) when someone opens a page upon a rtag/pvid and rebuild_en flag is set
16706
      c) when someone opens the build order report form
16707
      d) when someone modifies dependencies of a package
16708
      + other scenarios (?)
16709
   --------------------------------------------------------------------------- */
16710
BEGIN
16711
   -- Touch Release for Rebuild
16712
   UPDATE RELEASE_TAGS rt SET
16713
          rt.REBUILD_ENV = 'Y',
16714
          rt.REBUILD_STAMP = 0
16715
    WHERE rt.RTAG_ID = nRtagId;
1373 dpurdie 16716
 
3959 dpurdie 16717
END Touch_Release;
4040 dpurdie 16718
 
1374 dpurdie 16719
/
1373 dpurdie 16720
 
4040 dpurdie 16721
/
16722
--------------------------------------------------------
16723
--  DDL for Procedure TOUCH_RELEASE_BULK
16724
--------------------------------------------------------
16725
set define off;
16726
 
1373 dpurdie 16727
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE_BULK" ( nRtagIdList IN VARCHAR2 ) IS
16728
/* ---------------------------------------------------------------------------
16729
    Version: 3.0
16730
   --------------------------------------------------------------------------- */
16731
 
16732
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16733
 
16734
BEGIN
16735
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
16736
 
16737
	 -- Touch Release for Rebuild
16738
     UPDATE RELEASE_TAGS rt SET
16739
     	rt.REBUILD_ENV = 'Y',
16740
        rt.REBUILD_STAMP = 0
16741
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
16742
 
16743
 
16744
END Touch_Release_Bulk;
4040 dpurdie 16745
 
1374 dpurdie 16746
/
1373 dpurdie 16747
 
4040 dpurdie 16748
/
16749
--------------------------------------------------------
16750
--  DDL for Procedure TO_INSERT_VTREE_ID
16751
--------------------------------------------------------
16752
set define off;
16753
 
3959 dpurdie 16754
  CREATE OR REPLACE PROCEDURE "TO_INSERT_VTREE_ID" IS
1373 dpurdie 16755
 
3959 dpurdie 16756
/******************************************************************************
16757
   NAME:       TO_INSERT_VTREE_ID
16758
   PURPOSE:    
1373 dpurdie 16759
 
3959 dpurdie 16760
   REVISIONS:
16761
   Ver        Date        Author           Description
16762
   ---------  ----------  ---------------  ------------------------------------
16763
   1.0        2/02/2007          1. Created this procedure.
1373 dpurdie 16764
 
3959 dpurdie 16765
   NOTES:
1373 dpurdie 16766
 
3959 dpurdie 16767
   Automatically available Auto Replace Keywords:
16768
      Object Name:     TO_INSERT_VTREE_ID
16769
      Sysdate:         2/02/2007
16770
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
16771
      Username:         (set in TOAD Options, Procedure Editor)
16772
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16773
 
3959 dpurdie 16774
******************************************************************************/
16775
VTreeId NUMBER;																			  																	   
1373 dpurdie 16776
 
16777
 
3959 dpurdie 16778
	CURSOR curInfo IS
16779
    SELECT RTAG_ID
16780
	FROM RELEASE_TAGS
16781
	WHERE VTREE_ID IS NULL;
16782
    recInfo curInfo%ROWTYPE;
16783
 
16784
 
1373 dpurdie 16785
BEGIN
16786
 
3959 dpurdie 16787
	OPEN curInfo;
16788
    FETCH curInfo INTO recInfo;
16789
 
16790
	WHILE curInfo%FOUND
16791
	LOOP
16792
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
1373 dpurdie 16793
 
3959 dpurdie 16794
		UPDATE RELEASE_TAGS
16795
		SET VTREE_ID = VTreeId
16796
		WHERE RTAG_ID = recInfo.RTAG_ID;
1373 dpurdie 16797
 
3959 dpurdie 16798
		FETCH curInfo INTO recInfo;
16799
	END LOOP;
1373 dpurdie 16800
 
3959 dpurdie 16801
	CLOSE curInfo;
1373 dpurdie 16802
 
3959 dpurdie 16803
END TO_INSERT_VTREE_ID;
4040 dpurdie 16804
 
1374 dpurdie 16805
/
1373 dpurdie 16806
 
4040 dpurdie 16807
/
16808
--------------------------------------------------------
16809
--  DDL for Procedure UNDEPRECATE_PACKAGE
16810
--------------------------------------------------------
16811
set define off;
16812
 
1373 dpurdie 16813
  CREATE OR REPLACE PROCEDURE "UNDEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
16814
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
16815
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
16816
											   	 nUserId IN NUMBER) IS
16817
 
16818
ext VARCHAR2(50);
16819
PvIdList VARCHAR2(32767);
16820
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16821
PvId NUMBER;
16822
sComments VARCHAR2(32767);
16823
 
16824
BEGIN
16825
 
16826
 
16827
 
16828
	--Extract the package extension
16829
	SELECT V_EXT into ext 
16830
	FROM PACKAGE_VERSIONS 
16831
	WHERE PV_ID = nPvId;
16832
 
16833
	--SELECT COMMENTS into sComments 
16834
	--FROM DEPRECATED_PACKAGES
16835
	--WHERE RTAG_ID = nRtagId
16836
	--AND V_EXT = ext
16837
	--AND PKG_ID = nPkgId;
16838
 
16839
	--SELECT PV_ID into PvIdList FROM
16840
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
16841
	--AND PKG_STATE = 6
16842
	--AND PV_ID NOT IN nPvId;
16843
 
16844
 
16845
	IF ext IS NOT NULL THEN
16846
       -- Undeprecate Package
16847
       DELETE FROM DEPRECATED_PACKAGES 
16848
	   WHERE RTAG_ID = nRtagId 
16849
	   AND PKG_ID = nPkgId
16850
	   AND V_EXT = ext;	
16851
 
16852
		UPDATE RELEASE_CONTENT 
16853
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
16854
		WHERE RTAG_ID = nRtagId
16855
		AND PV_ID IN (SELECT PV.PV_ID 
16856
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
16857
					  WHERE PKG.PKG_ID = PV.PKG_ID
16858
					  AND PKG.PKG_ID = nPkgId
16859
					  AND PV.V_EXT = ext
16860
					  UNION
16861
					  SELECT DISTINCT
16862
	 	 		  	 		   qry.PV_ID
16863
							        FROM (
16864
									 	  SELECT dep.*,
16865
										  LEVEL AS LEVEL_NUM
16866
										  FROM PACKAGE_DEPENDENCIES dep
16867
	 								START WITH dep.DPV_ID IN ( nPvId )
16868
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
16869
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
16870
	 								) qry,
16871
									PACKAGES pkg,
16872
									PACKAGE_VERSIONS pv,
16873
									RELEASE_CONTENT rc
16874
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
16875
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
16876
 
16877
					 );	 
16878
 
16879
	ELSE
16880
       -- Undeprecate Package
16881
       DELETE FROM DEPRECATED_PACKAGES 
16882
	   WHERE RTAG_ID = nRtagId 
16883
	   AND PKG_ID = nPkgId
16884
	   AND V_EXT IS NULL;	
16885
 
16886
		UPDATE RELEASE_CONTENT 
16887
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
16888
		WHERE RTAG_ID = nRtagId
16889
		AND PV_ID IN (SELECT PV.PV_ID 
16890
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
16891
					  WHERE PKG.PKG_ID = PV.PKG_ID
16892
					  AND PKG.PKG_ID = nPkgId
16893
					  AND PV.V_EXT IS NULL
16894
					  UNION
16895
					  SELECT DISTINCT
16896
	 	 		  	 		   qry.PV_ID
16897
							        FROM (
16898
									 	  SELECT dep.*,
16899
										  LEVEL AS LEVEL_NUM
16900
										  FROM PACKAGE_DEPENDENCIES dep
16901
	 								START WITH dep.DPV_ID IN ( nPvId )
16902
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
16903
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
16904
	 								) qry,
16905
									PACKAGES pkg,
16906
									PACKAGE_VERSIONS pv,
16907
									RELEASE_CONTENT rc
16908
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
16909
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
16910
 
16911
					 );	 	   
16912
 
16913
	END IF;
16914
 
16915
	--IF PvIdList IS NOT NULL THEN
16916
 
16917
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
16918
 
16919
	 --  FOR i IN 1..nIdCollector.COUNT
16920
	 --  LOOP
16921
	--	   PvId := nIdCollector(i);
16922
 
16923
 
16924
 
16925
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
16926
	--		END LOOP;
16927
	--END IF;
16928
 
16929
	Rebuild_environment(nRtagId);			 
16930
 
16931
 
16932
 
16933
END Undeprecate_Package;
4040 dpurdie 16934
 
1374 dpurdie 16935
/
1373 dpurdie 16936
 
4040 dpurdie 16937
/
16938
--------------------------------------------------------
16939
--  DDL for Procedure UNLOCK_PACKAGE
16940
--------------------------------------------------------
16941
set define off;
16942
 
3959 dpurdie 16943
  CREATE OR REPLACE PROCEDURE "UNLOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
16944
											 nUserId IN NUMBER ) IS
16945
/* ---------------------------------------------------------------------------
16946
    Author: Rupesh Solanki
16947
 
16948
	Version: 4.0
16949
   --------------------------------------------------------------------------- */
16950
   STATE CHAR;
16951
 
16952
BEGIN
16953
 
16954
	SELECT DLOCKED INTO STATE
16955
	FROM PACKAGE_VERSIONS
16956
	WHERE PV_ID = nPvId; 
1373 dpurdie 16957
 
3959 dpurdie 16958
	IF STATE = 'A' THEN --It was made official for autobuilds
16959
		-- Unlock Package
16960
		UPDATE PACKAGE_VERSIONS pv SET
16961
		pv.DLOCKED = 'P'
16962
		WHERE pv.PV_ID = nPvId;	
16963
	ELSE
16964
		-- Unlock Package
16965
		UPDATE PACKAGE_VERSIONS pv SET
16966
		pv.DLOCKED = 'N'
16967
		WHERE pv.PV_ID = nPvId;	
16968
 
16969
	END IF;	   
16970
 
16971
    /* LOG ACTION */
16972
   	Log_Action ( nPvId, 'unlock_package', nUserId );
16973
 
16974
END Unlock_Package;
4040 dpurdie 16975
 
3959 dpurdie 16976
/
16977
 
4040 dpurdie 16978
/
16979
--------------------------------------------------------
16980
--  DDL for Procedure UNRIPPLE_PACKAGE
16981
--------------------------------------------------------
16982
set define off;
16983
 
3959 dpurdie 16984
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE" (
16985
        sPvIdList IN VARCHAR2,
16986
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
16987
        nUserId IN NUMBER
16988
    ) IS
16989
/* ---------------------------------------------------------------------------
16990
    Version: 4.1
16991
   --------------------------------------------------------------------------- */
16992
 
16993
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16994
 
16995
BEGIN
16996
 
16997
    IF (sPvIdList IS NULL) THEN
16998
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
16999
    END IF;
17000
 
17001
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
17002
 
17003
    -- UnRipple Package
17004
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
17005
    SELECT nRtagId, pv.PV_ID
17006
    FROM PACKAGE_VERSIONS pv
17007
    WHERE pv.PV_ID IN (
17008
        SELECT *
17009
        FROM TABLE (
17010
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
17011
        )
17012
    );
17013
 
17014
    /* LOG ACTION */
17015
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
17016
 
17017
END UnRipple_Package;
4040 dpurdie 17018
 
3959 dpurdie 17019
/
17020
 
4040 dpurdie 17021
/
17022
--------------------------------------------------------
17023
--  DDL for Procedure UNRIPPLE_PACKAGE_INDIRECT
17024
--------------------------------------------------------
17025
set define off;
17026
 
3959 dpurdie 17027
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE_INDIRECT" (
17028
        nPvId IN NUMBER,
17029
        nRtagId IN NUMBER,
17030
        nUserId IN NUMBER,
17031
        nrootCausePvId IN NUMBER,
17032
        srootCause IN VARCHAR2,
17033
        srootFile IN VARCHAR2
17034
    ) IS
17035
    ReleaseLocation VARCHAR2(4000);
17036
BEGIN
17037
 
17038
    -- UnRipple Package
17039
    delete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;
17040
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);
17041
 
17042
    /* LOG ACTION */
17043
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
17044
              FROM PROJECTS proj,
17045
                   RELEASE_TAGS rt
17046
             WHERE rt.RTAG_ID = nRtagId
17047
               AND rt.PROJ_ID = proj.PROJ_ID;
17048
 
17049
    /* LOG ACTION */
17050
    Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );
17051
 
17052
END UnRipple_Package_Indirect;
4040 dpurdie 17053
 
3959 dpurdie 17054
/
17055
 
4040 dpurdie 17056
/
17057
--------------------------------------------------------
17058
--  DDL for Procedure UPDATE_ADDITIONAL_NOTE
17059
--------------------------------------------------------
17060
set define off;
17061
 
3959 dpurdie 17062
  CREATE OR REPLACE PROCEDURE "UPDATE_ADDITIONAL_NOTE" ( pnNote_id IN NUMBER,
17063
													 pnPv_id IN NUMBER,
17064
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
17065
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
17066
                                                     pnUser_id IN NUMBER,
17067
                                                     outErrCode OUT NUMBER
17068
                                                    ) IS
17069
/* ---------------------------------------------------------------------------
17070
    Version: 3.0.1
17071
   --------------------------------------------------------------------------- */
17072
 
17073
    newID NUMBER;
17074
 
17075
    /* Disallow duplicate Note Titles */
17076
	CURSOR an_duplicate_cur IS
17077
        SELECT COUNT(*) AS cnt_note
17078
          FROM ADDITIONAL_NOTES
17079
         WHERE pv_id = pnPv_id
17080
           AND note_id != pnNote_id
17081
           AND note_title = psNote_title;
17082
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
17083
 
17084
BEGIN
17085
	outErrCode := -1;		-- Set default return error code to ERROR state
17086
 
17087
	OPEN an_duplicate_cur;
17088
    FETCH an_duplicate_cur INTO an_duplicate_rec;
17089
 
17090
    IF an_duplicate_rec.cnt_note < 1
17091
    THEN
17092
		--- Update Additional Note ---
17093
	    UPDATE ADDITIONAL_NOTES SET
17094
		       note_title = psNote_title,
17095
		       note_body = psNote_body,
17096
		       mod_date = Ora_Sysdate,
17097
		       mod_user = pnUser_id
17098
         WHERE note_id = pnNote_id
17099
           AND pv_id = pnPv_id;
17100
		outErrCode := 0;		-- Set return to SUCCESS
17101
	END IF;
17102
 
17103
	CLOSE an_duplicate_cur;
17104
END Update_Additional_Note;
4040 dpurdie 17105
 
3959 dpurdie 17106
/
17107
 
4040 dpurdie 17108
/
17109
--------------------------------------------------------
17110
--  DDL for Procedure UPDATE_DEPRECATION_STATE
17111
--------------------------------------------------------
17112
set define off;
17113
 
3959 dpurdie 17114
  CREATE OR REPLACE PROCEDURE "UPDATE_DEPRECATION_STATE" (nnrtag_id IN NUMBER) AS
17115
 
17116
recno NUMBER;
17117
 
17118
CURSOR deprecate_cur IS
17119
 
17120
SELECT rc.pv_id
17121
FROM release_content rc
17122
WHERE rtag_id = nnrtag_id
17123
 AND deprecated_state IN(7);
17124
 
17125
deprecate_rec deprecate_cur % rowtype;
17126
 
17127
BEGIN
17128
 
17129
  OPEN deprecate_cur;
17130
 
17131
  FETCH deprecate_cur
17132
  INTO deprecate_rec;
17133
 
17134
  WHILE deprecate_cur % FOUND
17135
  LOOP
17136
 
17137
    SELECT COUNT(*)
17138
    INTO recno
17139
    FROM package_dependencies pd,
17140
      release_content rc
17141
    WHERE pd.pv_id = deprecate_rec.pv_id
17142
     AND rc.pv_id = pd.dpv_id
17143
     AND rc.rtag_id = nnrtag_id
17144
     AND rc.deprecated_state IN(6,   7);
17145
 
17146
    IF recno = 0 THEN
17147
 
17148
      UPDATE release_content
17149
      SET pkg_id = NULL, deprecated_state = NULL
17150
      WHERE pv_id = deprecate_rec.pv_id
17151
       AND rtag_id = nnrtag_id;
17152
 
17153
    END IF;
17154
 
17155
    FETCH deprecate_cur
17156
    INTO deprecate_rec;
17157
  END LOOP;
17158
 
17159
END;
4040 dpurdie 17160
 
3959 dpurdie 17161
/
17162
 
4040 dpurdie 17163
/
17164
--------------------------------------------------------
17165
--  DDL for Procedure UPDATE_MISC_VIEW
17166
--------------------------------------------------------
17167
set define off;
17168
 
3959 dpurdie 17169
  CREATE OR REPLACE PROCEDURE "UPDATE_MISC_VIEW" IS
1373 dpurdie 17170
/******************************************************************************
3959 dpurdie 17171
   NAME:       UPDATE_MISC_VIEW
17172
   PURPOSE:    
1373 dpurdie 17173
 
17174
   REVISIONS:
17175
   Ver        Date        Author           Description
17176
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 17177
   1.0        16/03/2007          1. Created this procedure.
1373 dpurdie 17178
 
17179
   NOTES:
17180
 
17181
   Automatically available Auto Replace Keywords:
3959 dpurdie 17182
      Object Name:     UPDATE_MISC_VIEW
17183
      Sysdate:         16/03/2007
17184
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
1373 dpurdie 17185
      Username:         (set in TOAD Options, Procedure Editor)
17186
      Table Name:       (set in the "New PL/SQL Object" dialog)
17187
 
17188
******************************************************************************/
3959 dpurdie 17189
   CURSOR view_cur /*Create a record set to store the ripple data*/
17190
   IS
17191
   	 SELECT pkg.pkg_id, rc.base_view_id 
17192
	 FROM package_versions pv, packages pkg, release_content rc
17193
	 where rc.rtag_id = 2362
17194
	 and rc.pv_id = pv.pv_id
17195
	 and pv.pkg_id = pkg.pkg_id;
17196
   view_rec   view_cur%ROWTYPE;
17197
 
17198
 
17199
 
1373 dpurdie 17200
BEGIN
3959 dpurdie 17201
   OPEN view_cur;
1373 dpurdie 17202
 
3959 dpurdie 17203
   FETCH view_cur
17204
    INTO view_rec;
1373 dpurdie 17205
 
3959 dpurdie 17206
   WHILE view_cur%FOUND
17207
   LOOP
1373 dpurdie 17208
 
3959 dpurdie 17209
 
17210
	   update release_content
17211
	   set base_view_id = view_rec.base_view_id
17212
	   where rtag_id = 8027
17213
	   and pv_id IN 
17214
	   (
17215
	   	select pv.pv_id from release_content rc, package_versions pv
17216
		where rc.rtag_id = 8027
17217
		and pv.pv_id = rc.pv_id
17218
		and pv.pkg_id = view_rec.pkg_id 
17219
 
17220
	   );
17221
 
17222
 
1373 dpurdie 17223
 
3959 dpurdie 17224
 
17225
 
17226
 
17227
 
17228
 
1373 dpurdie 17229
 
3959 dpurdie 17230
   FETCH view_cur
17231
   		 INTO view_rec;
17232
   END LOOP;	 
1373 dpurdie 17233
 
17234
 
17235
 
17236
 
3959 dpurdie 17237
 
17238
END UPDATE_MISC_VIEW; 
4040 dpurdie 17239
 
1374 dpurdie 17240
/
1373 dpurdie 17241
 
4040 dpurdie 17242
/
17243
--------------------------------------------------------
17244
--  DDL for Procedure UPDATE_PACKAGE_DEPENDENCY
17245
--------------------------------------------------------
17246
set define off;
17247
 
3959 dpurdie 17248
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_DEPENDENCY" ( NNpv_id IN NUMBER,
17249
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
17250
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
17251
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
17252
                                                        NNuser_id IN NUMBER,
17253
                                                        NNdelete_old_dependency IN NUMBER
17254
                                                       ) IS
1373 dpurdie 17255
/* ---------------------------------------------------------------------------
3959 dpurdie 17256
    Version: 3.3
1373 dpurdie 17257
   --------------------------------------------------------------------------- */
17258
 
3959 dpurdie 17259
    retPV_ID NUMBER;
17260
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
17261
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
17262
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
17263
    NNpkg_id NUMBER;
17264
    NNdpkg_id NUMBER;
1373 dpurdie 17265
 
17266
BEGIN
3959 dpurdie 17267
    --- Seed database with package_name and version if required ---
17268
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
1373 dpurdie 17269
 
3959 dpurdie 17270
    -- get v_ext,pkg_id of current dependency
17271
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
17272
      FROM PACKAGE_VERSIONS
17273
     WHERE pv_id = retPV_ID;
1373 dpurdie 17274
 
3959 dpurdie 17275
    -- get pkg_id of parent package
17276
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
17277
      FROM PACKAGE_VERSIONS
17278
     WHERE pv_id = NNpv_id;
1373 dpurdie 17279
 
17280
 
3959 dpurdie 17281
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
17282
    	( (PvIsPatch IS NOT NULL) )THEN
1373 dpurdie 17283
 
3959 dpurdie 17284
	    IF NNdelete_old_dependency = 1 THEN
17285
	        /* Used for CUSTOM dependency add/edit */
1373 dpurdie 17286
 
3959 dpurdie 17287
	        --- Remove old dependency ---
17288
            IF (PvIsPatch IS NULL) THEN
17289
            	-- Do it for Packages
17290
		        DELETE FROM PACKAGE_DEPENDENCIES
17291
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
17292
		            (
17293
		            SELECT dep.*
17294
		              FROM PACKAGE_DEPENDENCIES dep,
17295
		                   PACKAGE_VERSIONS dpv,
17296
		                   PACKAGE_VERSIONS pv
17297
		             WHERE dep.dpv_id = dpv.pv_id
17298
		               AND dep.pv_id = NNpv_id
17299
		               AND pv.pv_id = retPV_ID
17300
		               AND dpv.pkg_id = pv.pkg_id
17301
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
17302
		            );
17303
            ELSE
17304
            	-- Do it for Patches
17305
                DELETE FROM PACKAGE_DEPENDENCIES
17306
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
17307
		            (
17308
		            SELECT dep.*
17309
		              FROM PACKAGE_DEPENDENCIES dep
17310
		             WHERE dep.dpv_id = retPV_ID
17311
		               AND dep.pv_id = NNpv_id
17312
		            );
17313
			END IF;
1373 dpurdie 17314
 
3959 dpurdie 17315
	    END IF;
1373 dpurdie 17316
 
3959 dpurdie 17317
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
17318
 
17319
	    --- Add new dependency ---
17320
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
17321
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
17322
 
17323
	END IF;
17324
 
17325
END Update_Package_Dependency;
4040 dpurdie 17326
 
1374 dpurdie 17327
/
1373 dpurdie 17328
 
4040 dpurdie 17329
/
17330
--------------------------------------------------------
17331
--  DDL for Procedure UPDATE_PACKAGE_STATES
17332
--------------------------------------------------------
17333
set define off;
17334
 
3959 dpurdie 17335
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_STATES" ( NNrtag_id IN NUMBER,
17336
                                                    NNsession_num IN NUMBER ) IS
17337
/* =============  STATE RULES =================== */
17338
/*
17339
   MNR   MRR   MN   MR    |   pkg_state
17340
   ------------------------------------
17341
 
17342
 
17343
 
17344
 
17345
   ------------------------------------
17346
 
17347
 
17348
 
17349
 
17350
   ------------------------------------
17351
    1     0     0     0   |      MINOR_READY
17352
    1     0     0     1   |      MAJOR
17353
    1     0     1     0   |      MINOR
17354
    1     0     1     1   |      MAJOR
17355
   ------------------------------------
17356
    1     1     0     0   |      MAJOR_READY
17357
    1     1     0     1   |      MAJOR
17358
    1     1     1     0   |      MAJOR
17359
    1     1     1     1   |      MAJOR
17360
   ------------------------------------
17361
*/
17362
BEGIN
17363
    /*----------------------------------------------
17364
    ||              MINOR READY
17365
    */----------------------------------------------
1373 dpurdie 17366
 
3959 dpurdie 17367
    UPDATE release_content
17368
       SET pkg_state = 4
17369
     WHERE rtag_id = NNrtag_id
17370
       AND pv_id IN
17371
           (
17372
           SELECT DISTINCT pv_id
17373
           FROM temp_env_states
17374
           WHERE session_num = NNsession_num
17375
             AND level_num = 1
17376
             AND tes_state = 2
17377
           );
1373 dpurdie 17378
 
3959 dpurdie 17379
    /*----------------------------------------------
17380
    ||              MAJOR READY
17381
    */----------------------------------------------
17382
    UPDATE release_content
17383
       SET pkg_state = 3
17384
     WHERE rtag_id = NNrtag_id
17385
       AND pv_id IN
17386
           (
17387
           SELECT DISTINCT pv_id
17388
           FROM temp_env_states
17389
           WHERE session_num = NNsession_num
17390
             AND level_num = 1
17391
             AND tes_state IN (0,1)
17392
           );
1373 dpurdie 17393
 
3959 dpurdie 17394
    /*----------------------------------------------
17395
    ||                MINOR
17396
    */----------------------------------------------
17397
    UPDATE release_content
17398
       SET pkg_state = 2
17399
     WHERE rtag_id = NNrtag_id
17400
       AND pv_id IN
17401
           (
17402
           SELECT DISTINCT pv_id
17403
            FROM temp_env_states
17404
            WHERE session_num = NNsession_num
17405
              AND level_num >= 2
17406
              AND tes_state = 2
17407
            MINUS
17408
           SELECT pv_id
17409
             FROM release_content
17410
            WHERE rtag_id = NNrtag_id
17411
              AND pkg_state = 3
17412
           );
1373 dpurdie 17413
 
3959 dpurdie 17414
    /*----------------------------------------------
17415
    ||                MAJOR
17416
    */----------------------------------------------
17417
    UPDATE release_content
17418
       SET pkg_state = 1
17419
     WHERE rtag_id = NNrtag_id
17420
       AND pv_id IN
17421
           (
17422
           SELECT DISTINCT pv_id
17423
           FROM temp_env_states
17424
           WHERE session_num = NNsession_num
17425
             AND level_num >= 2
17426
             AND tes_state IN (0,1)
17427
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
17428
           UNION
17429
           SELECT DISTINCT tes.pv_id
17430
           FROM temp_env_states tes,
17431
                release_content rc
17432
           WHERE tes.session_num = NNsession_num
17433
             AND tes.level_num >= 2
17434
             AND tes.tes_state = 2
17435
             AND rtag_id = NNrtag_id
17436
             AND rc.pv_id = tes.pv_id
17437
             AND rc.pkg_state = 3
17438
           );
1373 dpurdie 17439
 
3959 dpurdie 17440
    /*----------------------------------------------
17441
    ||                 OK
17442
    */----------------------------------------------
17443
    UPDATE release_content
17444
       SET pkg_state = 0
17445
     WHERE rtag_id = NNrtag_id
17446
       AND pv_id IN
17447
           (
17448
           SELECT rc.pv_id
17449
             FROM release_content rc
17450
            WHERE rc.rtag_id = NNrtag_id
17451
              AND NOT rc.pv_id IN
17452
                    (
17453
                     SELECT DISTINCT pv_id
17454
                     FROM temp_env_states WHERE session_num = NNsession_num
17455
                    )
17456
           );
1373 dpurdie 17457
 
3959 dpurdie 17458
      Update_Deprecation_State (NNrtag_id);
1373 dpurdie 17459
 
3959 dpurdie 17460
    /*----------------------------------------------
17461
    ||              PEGGED VERSIONS DEPENDENT
17462
    */----------------------------------------------
17463
    UPDATE release_content
17464
       SET pkg_state = 10
17465
     WHERE rtag_id = NNrtag_id
17466
       AND pv_id IN
17467
           (
17468
           SELECT DISTINCT pv_id
17469
           FROM pegged_versions pegv
17470
           WHERE pegv.rtag_id = NNrtag_id
17471
           );
1373 dpurdie 17472
 
3959 dpurdie 17473
    /*----------------------------------------------
17474
    ||              ADVISORY RIPPLE
17475
    */----------------------------------------------
17476
    UPDATE release_content
17477
       SET pkg_state = 8
17478
     WHERE rtag_id = NNrtag_id
17479
       AND pv_id IN
17480
           (
17481
           SELECT DISTINCT pv_id
17482
           FROM advisory_ripple ar
17483
           WHERE ar.rtag_id = NNrtag_id
17484
           )
17485
       AND pv_id IN
17486
           (
17487
           SELECT DISTINCT pv_id
17488
           FROM release_content rc
17489
           WHERE rc.rtag_id = NNrtag_id
17490
           );
1373 dpurdie 17491
 
3959 dpurdie 17492
END Update_Package_States;
4040 dpurdie 17493
 
3959 dpurdie 17494
/
1373 dpurdie 17495
 
4040 dpurdie 17496
/
17497
--------------------------------------------------------
17498
--  DDL for Procedure UPDATE_PROCESSES
17499
--------------------------------------------------------
17500
set define off;
17501
 
3959 dpurdie 17502
  CREATE OR REPLACE PROCEDURE "UPDATE_PROCESSES" 
17503
IS
1373 dpurdie 17504
 
3959 dpurdie 17505
proc_id NUMBER;
17506
/******************************************************************************
17507
   NAME:       DELETE_DO_NOT_RIPPLE
17508
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
17509
               IS RELEASED
1373 dpurdie 17510
 
3959 dpurdie 17511
   REVISIONS:
17512
   Ver        Date        Author           Description
17513
   ---------  ----------  ---------------  ------------------------------------
17514
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 17515
 
3959 dpurdie 17516
   NOTES:
1373 dpurdie 17517
 
3959 dpurdie 17518
   Automatically available Auto Replace Keywords:
17519
      Object Name:     DELETE_DO_NOT_RIPPLE
17520
      Sysdate:         21/04/2006
17521
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
17522
      Username:         (set in TOAD Options, Procedure Editor)
17523
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 17524
 
3959 dpurdie 17525
******************************************************************************/
17526
   CURSOR ripple_cur
17527
   IS
17528
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
1373 dpurdie 17529
 
3959 dpurdie 17530
   ripple_rec   ripple_cur%ROWTYPE;
17531
BEGIN
17532
   OPEN ripple_cur;
17533
 
17534
   FETCH ripple_cur
17535
    INTO ripple_rec;
17536
 
17537
   WHILE ripple_cur%FOUND
17538
   LOOP
17539
 
17540
 
17541
update deployment_manager.processes_config 
17542
set proc_id = ripple_rec.proc_id
17543
where pkg_health_tag = ripple_rec.proc_name
17544
and cmd_interface IS NULL
17545
and pkg_owner IS NULL
17546
and is_interface IS NULL; 
17547
 
17548
 
17549
      FETCH ripple_cur
17550
       INTO ripple_rec;
17551
   END LOOP;
17552
END UPDATE_PROCESSES;
4040 dpurdie 17553
 
1374 dpurdie 17554
/
1373 dpurdie 17555
 
4040 dpurdie 17556
/
17557
--------------------------------------------------------
17558
--  DDL for Procedure UPDATE_RUNTIME_DEPENDENCY
17559
--------------------------------------------------------
17560
set define off;
17561
 
3959 dpurdie 17562
  CREATE OR REPLACE PROCEDURE "UPDATE_RUNTIME_DEPENDENCY" ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
17563
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
17564
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
17565
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
17566
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
17567
													    NNuser_id IN NUMBER ) IS
1373 dpurdie 17568
/* ---------------------------------------------------------------------------
3959 dpurdie 17569
    Version: 3.0.1
1373 dpurdie 17570
   --------------------------------------------------------------------------- */
17571
 
3959 dpurdie 17572
    retRTD_ID	NUMBER;
17573
	CURSOR rtd_cur IS
17574
	    SELECT pv.pkg_version, pkg.pkg_name
17575
		  FROM runtime_dependencies rtd,
17576
		       package_versions pv,
17577
			   packages pkg
17578
		 WHERE rtd.rtd_id = pv.pv_id
17579
		   AND pv.pkg_id = pkg.pkg_id
17580
		   AND rtd.pv_id = NNpv_id
17581
		   AND rtd.rtd_id = NNrtd_id;
17582
	   rtd_rec rtd_cur%ROWTYPE;
1373 dpurdie 17583
 
3959 dpurdie 17584
	CURSOR old_rtd_cur IS
17585
	    SELECT pv.pv_id
17586
		  FROM package_versions pv
17587
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
17588
		 	   			 	    FROM package_versions rtdpv
17589
							   WHERE rtdpv.pv_id = NNrtd_id )
17590
		   AND pv.pkg_version = SSrtd_version;
17591
	old_rtd_rec old_rtd_cur%ROWTYPE;
1373 dpurdie 17592
 
3959 dpurdie 17593
 
1373 dpurdie 17594
BEGIN
17595
 
3959 dpurdie 17596
    -- Get current runtime dependency details
17597
	OPEN rtd_cur;
17598
    FETCH rtd_cur INTO rtd_rec;
1373 dpurdie 17599
 
17600
 
17601
 
17602
 
3959 dpurdie 17603
	IF rtd_rec.pkg_version != SSrtd_version THEN
17604
           -- Version has changed, hence create new runtime dependency --
17605
	    /* NOTE: You must create new version as updating just a version will affect
17606
		        all packages using this runtime dependency and user does not expect that.
17607
		        It is safer to create new version */
17608
		OPEN old_rtd_cur;
17609
		FETCH old_rtd_cur INTO old_rtd_rec;
1373 dpurdie 17610
 
17611
 
3959 dpurdie 17612
		IF old_rtd_cur%NOTFOUND
17613
		THEN
17614
			-- Version not found, hence Create New version --
17615
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
1373 dpurdie 17616
 
3959 dpurdie 17617
			-- Update runtime dependency table --
17618
			UPDATE runtime_dependencies SET
17619
				   rtd_id = retRTD_ID,
17620
				   rtd_url = SSrtd_url,
17621
				   rtd_comments = SSrtd_comments
17622
			 WHERE pv_id = NNpv_id
17623
			   AND rtd_id = NNrtd_id;
1373 dpurdie 17624
 
3959 dpurdie 17625
		ELSE
17626
			-- Update runtime dependency table --
17627
			UPDATE runtime_dependencies SET
17628
				   rtd_id = old_rtd_rec.pv_id,
17629
				   rtd_url = SSrtd_url,
17630
				   rtd_comments = SSrtd_comments
17631
			 WHERE pv_id = NNpv_id
17632
			   AND rtd_id = NNrtd_id;
17633
 
17634
		END IF;
17635
 
17636
 
17637
		CLOSE old_rtd_cur;
17638
 
17639
	ELSE
17640
		--  Version has not changed, hence update everithing except	version --
17641
		UPDATE runtime_dependencies SET
17642
			   rtd_url = SSrtd_url,
17643
			   rtd_comments = SSrtd_comments
17644
		 WHERE pv_id = NNpv_id
17645
		   AND rtd_id = NNrtd_id;
17646
 
17647
 
17648
 
17649
	END IF;
17650
 
17651
 
17652
	CLOSE rtd_cur;
17653
 
17654
END Update_Runtime_Dependency;
4040 dpurdie 17655
 
1374 dpurdie 17656
/
1373 dpurdie 17657
 
4040 dpurdie 17658
/
17659
--------------------------------------------------------
17660
--  DDL for Procedure UPDATE_UNIT_TEST
17661
--------------------------------------------------------
17662
set define off;
17663
 
3959 dpurdie 17664
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST" ( nTest_id IN NUMBER,
17665
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
17666
											   nPv_id IN NUMBER,
17667
											   nUserId IN NUMBER,
17668
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
17669
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
17670
	                                           sCompletion_date IN VARCHAR2,
17671
											   sDpkg_path IN VARCHAR2,
17672
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
17673
											   sResults IN VARCHAR2,
17674
											   outFileName OUT VARCHAR2
17675
                                              ) IS
1373 dpurdie 17676
/* ---------------------------------------------------------------------------
3959 dpurdie 17677
    Version: 3.1.0
1373 dpurdie 17678
   --------------------------------------------------------------------------- */
3959 dpurdie 17679
 
17680
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 17681
 
3959 dpurdie 17682
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
17683
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
1373 dpurdie 17684
 
3959 dpurdie 17685
 
1373 dpurdie 17686
BEGIN
17687
 
3959 dpurdie 17688
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
17689
       	ResultsURL := sResults;
17690
       ELSE
17691
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
17692
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
17693
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
17694
           END IF;
17695
       END IF;
1373 dpurdie 17696
 
3959 dpurdie 17697
	--- Update Unit Test ---
17698
    UPDATE UNIT_TESTS SET
17699
           TEST_SUMMARY = sTest_summary,
17700
		   NUMOF_TEST = sNumof_test,
17701
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
17702
		   COMPLETED_BY = nUserId,
17703
		   RESULTS_URL = ResultsURL,
17704
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
17705
     WHERE TEST_ID = nTest_id
17706
       AND PV_ID = nPv_id;
1373 dpurdie 17707
 
3959 dpurdie 17708
END Update_Unit_Test;
4040 dpurdie 17709
 
3959 dpurdie 17710
/
1373 dpurdie 17711
 
4040 dpurdie 17712
/
17713
--------------------------------------------------------
17714
--  DDL for Procedure UPDATE_UNIT_TEST_ACCEPTANCE
17715
--------------------------------------------------------
17716
set define off;
17717
 
3959 dpurdie 17718
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_ACCEPTANCE" ( pnTest_id IN NUMBER,
17719
														  pnPv_id IN NUMBER,
17720
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
17721
														  sAcceptanceDate IN VARCHAR2,
17722
														  sAcceptedBy IN NUMBER,
17723
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
17724
														  cUpdateAcceptedStateOnly IN CHAR
17725
					                                     ) IS
17726
/* ---------------------------------------------------------------------------
17727
    Version: 3.0.0
17728
   --------------------------------------------------------------------------- */
1373 dpurdie 17729
 
17730
 
17731
 
3959 dpurdie 17732
BEGIN
17733
	IF cUpdateAcceptedStateOnly = 'Y'
17734
	THEN
17735
		--- Update Accepted State Only ---
17736
		IF ( sAccepted IS NULL )
17737
		THEN
17738
			-- Clear alleptance
17739
			UPDATE UNIT_TESTS SET
17740
		           TEST_ACCEPTED = NULL,
17741
		           ACCEPTANCE_DATE = NULL,
17742
				   ACCEPTED_BY = NULL,
17743
				   REVIEW_COMMENTS = NULL
17744
		     WHERE TEST_ID = pnTest_id
17745
		       AND PV_ID = pnPv_id;
17746
 
17747
	    ELSE
17748
			UPDATE UNIT_TESTS SET
17749
		           TEST_ACCEPTED = sAccepted,
17750
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
17751
				   ACCEPTED_BY = sAcceptedBy
17752
		     WHERE TEST_ID = pnTest_id
17753
		       AND PV_ID = pnPv_id;
17754
 
17755
		END IF;
17756
 
17757
 
17758
	ELSE
17759
		--- Update Unit Test Acceptance ---
17760
	    UPDATE UNIT_TESTS SET
17761
	           TEST_ACCEPTED = sAccepted,
17762
			   REVIEW_COMMENTS = sReviewComments,
17763
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
17764
			   ACCEPTED_BY = sAcceptedBy
17765
	     WHERE TEST_ID = pnTest_id
17766
	       AND PV_ID = pnPv_id;
17767
 
17768
	END IF;
17769
 
17770
END Update_Unit_Test_Acceptance;
4040 dpurdie 17771
 
1374 dpurdie 17772
/
1373 dpurdie 17773
 
4040 dpurdie 17774
/
17775
--------------------------------------------------------
17776
--  DDL for Procedure UPDATE_UNIT_TEST_TEST
17777
--------------------------------------------------------
17778
set define off;
17779
 
3959 dpurdie 17780
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_TEST" ( nTest_id IN NUMBER,
17781
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
17782
											   nPv_id IN NUMBER,
17783
											   nUserId IN NUMBER,
17784
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
17785
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
17786
	                                           sCompletion_date IN VARCHAR2,
17787
											   sDpkg_path IN VARCHAR2,
17788
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
17789
											   sResults IN VARCHAR2,
17790
											   outFileName OUT VARCHAR2
17791
                                              ) IS
1373 dpurdie 17792
/* ---------------------------------------------------------------------------
3959 dpurdie 17793
    Version: 3.1.0
1373 dpurdie 17794
   --------------------------------------------------------------------------- */
3959 dpurdie 17795
 
17796
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 17797
 
3959 dpurdie 17798
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
17799
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
17800
 
17801
 
1373 dpurdie 17802
BEGIN
17803
 
3959 dpurdie 17804
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
17805
       	ResultsURL := sResults;
17806
       ELSE
17807
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
17808
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
17809
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
17810
           END IF;
17811
       END IF;
1373 dpurdie 17812
 
3959 dpurdie 17813
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
17814
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
17815
    		sResults_url:= 'doc' || '/' || 
17816
			;
17817
        END IF;*/
17818
	--- Update Unit Test ---
17819
    UPDATE UNIT_TESTS SET
17820
           TEST_SUMMARY = sTest_summary,
17821
		   NUMOF_TEST = sNumof_test,
17822
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
17823
		   COMPLETED_BY = nUserId,
17824
		   RESULTS_URL = ResultsURL,
17825
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
17826
     WHERE TEST_ID = nTest_id
17827
       AND PV_ID = nPv_id;
1373 dpurdie 17828
 
3959 dpurdie 17829
END Update_Unit_Test_Test;
4040 dpurdie 17830
 
17831
/
17832
 
17833
/
17834
--------------------------------------------------------
17835
--  DDL for Synonymn APPLICATIONS
17836
--------------------------------------------------------
17837
 
17838
  CREATE OR REPLACE SYNONYM "APPLICATIONS" FOR "APPLICATIONS";
17839
/
17840
--------------------------------------------------------
17841
--  DDL for Synonymn APPLICATION_PAGES
17842
--------------------------------------------------------
17843
 
17844
  CREATE OR REPLACE SYNONYM "APPLICATION_PAGES" FOR "APPLICATION_PAGES";
17845
/
17846
--------------------------------------------------------
17847
--  DDL for Synonymn CONTROL_OBJECTS
17848
--------------------------------------------------------
17849
 
17850
  CREATE OR REPLACE SYNONYM "CONTROL_OBJECTS" FOR "CONTROL_OBJECTS";
17851
/
17852
--------------------------------------------------------
17853
--  DDL for Synonymn DATA_PERMISSIONS
17854
--------------------------------------------------------
17855
 
17856
  CREATE OR REPLACE SYNONYM "DATA_PERMISSIONS" FOR "DATA_PERMISSIONS";
17857
/
17858
--------------------------------------------------------
17859
--  DDL for Synonymn DATA_TABLES
17860
--------------------------------------------------------
17861
 
17862
  CREATE OR REPLACE SYNONYM "DATA_TABLES" FOR "DATA_TABLES";
17863
/
17864
--------------------------------------------------------
17865
--  DDL for Synonymn PAGE_CONTROL_OBJECTS
17866
--------------------------------------------------------
17867
 
17868
  CREATE OR REPLACE SYNONYM "PAGE_CONTROL_OBJECTS" FOR "PAGE_CONTROL_OBJECTS";
17869
/
17870
--------------------------------------------------------
17871
--  DDL for Synonymn PERMISSION_TYPES
17872
--------------------------------------------------------
17873
 
17874
  CREATE OR REPLACE SYNONYM "PERMISSION_TYPES" FOR "PERMISSION_TYPES";
17875
/
17876
--------------------------------------------------------
17877
--  DDL for Synonymn PK_AMUTILS
17878
--------------------------------------------------------
17879
 
17880
  CREATE OR REPLACE SYNONYM "PK_AMUTILS" FOR "PK_AMUTILS";
17881
/
17882
--------------------------------------------------------
17883
--  DDL for Synonymn PK_SECURITY
17884
--------------------------------------------------------
17885
 
17886
  CREATE OR REPLACE SYNONYM "PK_SECURITY" FOR "PK_SECURITY";
17887
/
17888
--------------------------------------------------------
17889
--  DDL for Synonymn ROLES
17890
--------------------------------------------------------
17891
 
17892
  CREATE OR REPLACE SYNONYM "ROLES" FOR "ROLES";
17893
/
17894
--------------------------------------------------------
17895
--  DDL for Synonymn ROLE_PRIVILEGES
17896
--------------------------------------------------------
17897
 
17898
  CREATE OR REPLACE SYNONYM "ROLE_PRIVILEGES" FOR "ROLE_PRIVILEGES";
17899
/
17900
--------------------------------------------------------
17901
--  DDL for Synonymn USERS
17902
--------------------------------------------------------
17903
 
17904
  CREATE OR REPLACE SYNONYM "USERS" FOR "USERS";
17905
/
17906
--------------------------------------------------------
17907
--  DDL for Synonymn USER_APPLICATIONS
17908
--------------------------------------------------------
17909
 
17910
  CREATE OR REPLACE SYNONYM "USER_APPLICATIONS" FOR "USER_APPLICATIONS";
17911
/
17912
--------------------------------------------------------
17913
--  DDL for Synonymn USER_ROLES
17914
--------------------------------------------------------
17915
 
17916
  CREATE OR REPLACE SYNONYM "USER_ROLES" FOR "USER_ROLES";
17917
/