Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
1374 dpurdie 1
--------------------------------------------------------
4308 dpurdie 2
--  File created - Tuesday-June-03-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
 
4308 dpurdie 42
   CREATE SEQUENCE  "SEQ_ADDITIONAL_NOTES"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 35029 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
 
4308 dpurdie 60
   CREATE SEQUENCE  "SEQ_CR_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 85781 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 61
/
62
--------------------------------------------------------
63
--  DDL for Sequence SEQ_DAEMON_INSTRUCTION_ID
64
--------------------------------------------------------
65
 
4308 dpurdie 66
   CREATE SEQUENCE  "SEQ_DAEMON_INSTRUCTION_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 149782 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
 
4308 dpurdie 90
   CREATE SEQUENCE  "SEQ_PKG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 59385 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 91
/
92
--------------------------------------------------------
93
--  DDL for Sequence SEQ_PROJ_ID
94
--------------------------------------------------------
95
 
4308 dpurdie 96
   CREATE SEQUENCE  "SEQ_PROJ_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 781 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 97
/
98
--------------------------------------------------------
99
--  DDL for Sequence SEQ_PV_ID
100
--------------------------------------------------------
101
 
4308 dpurdie 102
   CREATE SEQUENCE  "SEQ_PV_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 976908 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 103
/
104
--------------------------------------------------------
105
--  DDL for Sequence SEQ_RCON_ID
106
--------------------------------------------------------
107
 
4308 dpurdie 108
   CREATE SEQUENCE  "SEQ_RCON_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 24903 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 109
/
110
--------------------------------------------------------
111
--  DDL for Sequence SEQ_RTAG_ID
112
--------------------------------------------------------
113
 
4308 dpurdie 114
   CREATE SEQUENCE  "SEQ_RTAG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 29943 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 115
/
116
--------------------------------------------------------
117
--  DDL for Sequence SEQ_SCHEDULED_ID
118
--------------------------------------------------------
119
 
4308 dpurdie 120
   CREATE SEQUENCE  "SEQ_SCHEDULED_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 26581 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 121
/
122
--------------------------------------------------------
123
--  DDL for Sequence SEQ_SESSION_NUM
124
--------------------------------------------------------
125
 
4308 dpurdie 126
   CREATE SEQUENCE  "SEQ_SESSION_NUM"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 997862 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 127
/
128
--------------------------------------------------------
129
--  DDL for Sequence SEQ_UNIT_TESTS
130
--------------------------------------------------------
131
 
4308 dpurdie 132
   CREATE SEQUENCE  "SEQ_UNIT_TESTS"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 348883 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
 
4211 dpurdie 150
   CREATE SEQUENCE  "SEQ_VIEW_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 5321 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 151
/
152
--------------------------------------------------------
153
--  DDL for Sequence SEQ_VTREE_ID
154
--------------------------------------------------------
155
 
4308 dpurdie 156
   CREATE SEQUENCE  "SEQ_VTREE_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 26762 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, 
1028
	"KEEP_ALIVE" DATE
1029
   ) ;
1030
/
1031
--------------------------------------------------------
1032
--  DDL for Table RUN_LEVEL_SCHEDULE
1033
--------------------------------------------------------
1034
 
1035
  CREATE TABLE "RUN_LEVEL_SCHEDULE" 
1036
   (	"SCHEDULED_ID" NUMBER, 
1037
	"SCHEDULED_PAUSE" DATE, 
1038
	"SCHEDULED_RESUME" DATE, 
1039
	"REPEAT" CHAR(1), 
1040
	"INDEFINITE_PAUSE" CHAR(1)
1041
   ) ;
1042
/
1043
--------------------------------------------------------
1044
--  DDL for Table TEMP_ENV_STATES
1045
--------------------------------------------------------
1046
 
1047
  CREATE TABLE "TEMP_ENV_STATES" 
1048
   (	"SESSION_NUM" NUMBER, 
1049
	"LEVEL_NUM" NUMBER, 
1050
	"PV_ID" NUMBER, 
1051
	"PKG_ID" NUMBER, 
1052
	"V_EXT" VARCHAR2(50), 
1053
	"TES_STATE" NUMBER
1054
   ) ;
1055
/
1056
--------------------------------------------------------
1057
--  DDL for Table TEMP_SASH
1058
--------------------------------------------------------
1059
 
1060
  CREATE TABLE "TEMP_SASH" 
1061
   (	"RTAG_ID" NUMBER, 
1062
	"PROJ_ID" NUMBER
1063
   ) ;
1064
/
1065
--------------------------------------------------------
1066
--  DDL for Table TEMP_TREE_BROWSE
1067
--------------------------------------------------------
1068
 
1069
  CREATE TABLE "TEMP_TREE_BROWSE" 
1070
   (	"SESSION_NUM" NUMBER, 
1071
	"LEVEL_NUM" NUMBER, 
1072
	"PV_ID" NUMBER, 
1073
	"PKG_ID" NUMBER, 
1074
	"V_EXT" VARCHAR2(50), 
1075
	"DIRECTION" NUMBER
1076
   ) ;
1077
/
1078
--------------------------------------------------------
1079
--  DDL for Table TEST_TYPES
1080
--------------------------------------------------------
1081
 
1082
  CREATE TABLE "TEST_TYPES" 
1083
   (	"TEST_TYPE_ID" NUMBER, 
1084
	"TEST_TYPE_NAME" VARCHAR2(50), 
1085
	"DISPLAY_ORDER" NUMBER
1086
   ) ;
1087
/
1088
--------------------------------------------------------
1089
--  DDL for Table UNIT_TESTS
1090
--------------------------------------------------------
1091
 
1092
  CREATE TABLE "UNIT_TESTS" 
1093
   (	"TEST_ID" NUMBER, 
1094
	"PV_ID" NUMBER, 
1095
	"TEST_TYPES_FK" NUMBER, 
1096
	"TEST_SUMMARY" VARCHAR2(4000), 
1097
	"COMPLETION_DATE" DATE, 
1098
	"COMPLETED_BY" NUMBER, 
1099
	"RESULTS_URL" VARCHAR2(2000), 
1100
	"RESULTS_ATTACHMENT_NAME" VARCHAR2(2000), 
1101
	"TEST_ACCEPTED" CHAR(1), 
1102
	"ACCEPTANCE_DATE" DATE, 
1103
	"ACCEPTED_BY" NUMBER, 
1104
	"REVIEW_COMMENTS" VARCHAR2(4000), 
1105
	"NUMOF_TEST" VARCHAR2(50)
1106
   ) ;
1107
/
1108
--------------------------------------------------------
1109
--  DDL for Table VALIDATION_RULES
1110
--------------------------------------------------------
1111
 
1112
  CREATE TABLE "VALIDATION_RULES" 
1113
   (	"FIELD_NAME" VARCHAR2(1000), 
1114
	"IS_REQUIRED" CHAR(1), 
1115
	"IS_NUMERIC" CHAR(1), 
1116
	"MIN_NUMERIC_VALUE" NUMBER, 
1117
	"MAX_NUMERIC_VALUE" NUMBER, 
1118
	"IS_DATE" CHAR(1), 
1119
	"START_DATE" DATE, 
1120
	"END_DATE" DATE, 
1121
	"MIN_STRING_LENGTH" NUMBER, 
1122
	"MAX_STRING_LENGTH" NUMBER, 
1123
	"REGEXP" VARCHAR2(4000), 
1124
	"REGEXP_DESCRIPTION" VARCHAR2(50)
1125
   ) ;
1126
/
1127
--------------------------------------------------------
1128
--  DDL for Table VCS_TYPE
1129
--------------------------------------------------------
1130
 
1131
  CREATE TABLE "VCS_TYPE" 
1132
   (	"VCS_TYPE_ID" NUMBER, 
1133
	"NAME" VARCHAR2(128), 
1134
	"TAG" VARCHAR2(32)
1135
   ) ;
1136
/
1137
--------------------------------------------------------
1138
--  DDL for Table VIEWS
1139
--------------------------------------------------------
1140
 
1141
  CREATE TABLE "VIEWS" 
1142
   (	"VIEW_ID" NUMBER, 
1143
	"VIEW_NAME" VARCHAR2(30), 
1144
	"OWNER_ID" NUMBER, 
1145
	"BASE_VIEW" CHAR(1), 
1146
	"PUBLIC_READ" CHAR(1)
1147
   ) ;
1148
/
1149
--------------------------------------------------------
1150
--  DDL for Table VIEW_DEF
1151
--------------------------------------------------------
1152
 
1153
  CREATE TABLE "VIEW_DEF" 
1154
   (	"VIEW_ID" NUMBER, 
1155
	"PKG_ID" NUMBER
1156
   ) ;
1157
/
1158
--------------------------------------------------------
1159
--  DDL for Table VIEW_SETTINGS
1160
--------------------------------------------------------
1161
 
1162
  CREATE TABLE "VIEW_SETTINGS" 
1163
   (	"USER_ID" NUMBER, 
1164
	"VIEW_ID" NUMBER
1165
   ) ;
1166
/
1167
--------------------------------------------------------
1168
--  DDL for Table VTREES
1169
--------------------------------------------------------
1170
 
1171
  CREATE TABLE "VTREES" 
1172
   (	"VTREE_ID" NUMBER, 
1173
	"PROJ_ID" NUMBER, 
1174
	"VTREE_NAME" VARCHAR2(50), 
1175
	"HIDE" CHAR(1)
1176
   ) ;
1177
/
1178
--------------------------------------------------------
1179
--  DDL for Table VTREES_WORLD
1180
--------------------------------------------------------
1181
 
1182
  CREATE TABLE "VTREES_WORLD" 
1183
   (	"WORLD_ID" NUMBER, 
1184
	"VTREE_ID" NUMBER
1185
   ) ;
1186
/
1187
--------------------------------------------------------
1188
--  DDL for Table WORK_IN_PROGRESS
1189
--------------------------------------------------------
1190
 
1191
  CREATE TABLE "WORK_IN_PROGRESS" 
1192
   (	"RTAG_ID" NUMBER, 
1193
	"PV_ID" NUMBER, 
1194
	"VIEW_ID" NUMBER
1195
   ) ;
1196
/
1197
--------------------------------------------------------
1198
--  DDL for Table WORLDS
1199
--------------------------------------------------------
1200
 
1201
  CREATE TABLE "WORLDS" 
1202
   (	"WORLD_ID" NUMBER, 
1203
	"WORLD_NAME" VARCHAR2(30), 
1204
	"WORLD_DESC" VARCHAR2(255)
1205
   ) ;
1206
/
1207
--------------------------------------------------------
1208
--  DDL for View ENVIRONMENT_VIEW
1209
--------------------------------------------------------
1210
 
1211
  CREATE OR REPLACE VIEW "ENVIRONMENT_VIEW" ("ENV_AREA", "PV_ID", "RTAG_ID", "VIEW_ID", "PKG_STATE", "DEPRECATED_STATE", "INSERTOR_ID", "INSERT_STAMP", "OPERATION") AS 
1212
  SELECT 2 AS ENV_AREA,
1213
    rc.PV_ID,
1214
    rc.RTAG_ID,
1215
    rc.BASE_VIEW_ID AS VIEW_ID,
1216
    rc.PKG_STATE,
1217
 rc.DEPRECATED_STATE,
1218
    rc.INSERTOR_ID,
1219
    rc.INSERT_STAMP,
1220
    ' ' AS OPERATION
1221
  FROM RELEASE_CONTENT rc
1222
UNION
1223
SELECT 0 AS ENV_AREA,
1224
    wip.PV_ID,
1225
    wip.RTAG_ID,
1226
    wip.VIEW_ID,
1227
    NULL AS PKG_STATE,
1228
 NULL AS DEPRECATED_STATE,
1229
    NULL AS INSERTOR_ID,
1230
    NULL AS INSERT_STAMP,
1231
    ' ' AS OPERATION
1232
  FROM WORK_IN_PROGRESS wip
1233
UNION
1234
SELECT 1 AS ENV_AREA,
1235
    pl.PV_ID,
1236
    pl.RTAG_ID,
1237
    pl.VIEW_ID,
1238
    NULL AS PKG_STATE,
1239
 NULL AS DEPRECATED_STATE,
1240
    NULL AS INSERTOR_ID,
1241
    NULL AS INSERT_STAMP,
1242
    pl.operation
1243
FROM PLANNED pl;
1244
/
1245
--------------------------------------------------------
1246
--  DDL for View RM_PKG_ISSUES_ID
1247
--------------------------------------------------------
1248
 
1249
  CREATE OR REPLACE VIEW "RM_PKG_ISSUES_ID" ("ISS_ID", "PKG_VERSION") AS 
1250
  SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PACKAGE_ISSUES WHERE ISS_ID IS NOT NULL
1251
 
1252
;
1253
/
1254
--------------------------------------------------------
4211 dpurdie 1255
--  DDL for Index PK_LICENCES
4040 dpurdie 1256
--------------------------------------------------------
1257
 
4211 dpurdie 1258
  CREATE UNIQUE INDEX "PK_LICENCES" ON "LICENCES" ("LICENCE") 
4040 dpurdie 1259
  ;
1260
/
1261
--------------------------------------------------------
4211 dpurdie 1262
--  DDL for Index UNQ_PKG_BUILD_ENV
4040 dpurdie 1263
--------------------------------------------------------
1264
 
4211 dpurdie 1265
  CREATE UNIQUE INDEX "UNQ_PKG_BUILD_ENV" ON "PACKAGE_BUILD_ENV" ("PV_ID", "BE_ID") 
4040 dpurdie 1266
  ;
1267
/
1268
--------------------------------------------------------
4211 dpurdie 1269
--  DDL for Index UNQ_PACKAGES
4040 dpurdie 1270
--------------------------------------------------------
1271
 
4211 dpurdie 1272
  CREATE UNIQUE INDEX "UNQ_PACKAGES" ON "PACKAGES" ("PKG_NAME") 
4040 dpurdie 1273
  ;
1274
/
1275
--------------------------------------------------------
1276
--  DDL for Index CODE_REVIEW_URL_PK
1277
--------------------------------------------------------
1278
 
1279
  CREATE UNIQUE INDEX "CODE_REVIEW_URL_PK" ON "CODE_REVIEW_URL" ("CR_ID") 
1280
  ;
1281
/
1282
--------------------------------------------------------
4211 dpurdie 1283
--  DDL for Index INX_UT_COMPLETED
4040 dpurdie 1284
--------------------------------------------------------
1285
 
4211 dpurdie 1286
  CREATE INDEX "INX_UT_COMPLETED" ON "UNIT_TESTS" ("COMPLETION_DATE", "COMPLETED_BY") 
4040 dpurdie 1287
  ;
1288
/
1289
--------------------------------------------------------
4308 dpurdie 1290
--  DDL for Index INX_PV_ID_PKGDOC
1291
--------------------------------------------------------
4040 dpurdie 1292
 
4211 dpurdie 1293
  CREATE INDEX "INX_PV_ID_PKGDOC" ON "PACKAGE_DOCUMENTS" ("PV_ID") 
4040 dpurdie 1294
  ;
1295
/
4308 dpurdie 1296
--------------------------------------------------------
1297
--  DDL for Index UNQ_VIEW_SETTINGS
1298
--------------------------------------------------------
4040 dpurdie 1299
 
4211 dpurdie 1300
  CREATE UNIQUE INDEX "UNQ_VIEW_SETTINGS" ON "VIEW_SETTINGS" ("USER_ID", "VIEW_ID") 
4040 dpurdie 1301
  ;
1302
/
4308 dpurdie 1303
--------------------------------------------------------
1304
--  DDL for Index INX_PP_PV_ID
1305
--------------------------------------------------------
4040 dpurdie 1306
 
4211 dpurdie 1307
  CREATE INDEX "INX_PP_PV_ID" ON "PACKAGE_PATCHES" ("PV_ID") 
4040 dpurdie 1308
  ;
1309
/
4308 dpurdie 1310
--------------------------------------------------------
1311
--  DDL for Index PK_VIEWS
1312
--------------------------------------------------------
4040 dpurdie 1313
 
4211 dpurdie 1314
  CREATE UNIQUE INDEX "PK_VIEWS" ON "VIEWS" ("VIEW_ID") 
4040 dpurdie 1315
  ;
1316
/
4308 dpurdie 1317
--------------------------------------------------------
1318
--  DDL for Index PK_PACKAGES
1319
--------------------------------------------------------
4040 dpurdie 1320
 
4211 dpurdie 1321
  CREATE UNIQUE INDEX "PK_PACKAGES" ON "PACKAGES" ("PKG_ID") 
4040 dpurdie 1322
  ;
1323
/
4308 dpurdie 1324
--------------------------------------------------------
1325
--  DDL for Index PK_TEST_TYPES
1326
--------------------------------------------------------
4040 dpurdie 1327
 
4211 dpurdie 1328
  CREATE UNIQUE INDEX "PK_TEST_TYPES" ON "TEST_TYPES" ("TEST_TYPE_ID") 
4040 dpurdie 1329
  ;
1330
/
4308 dpurdie 1331
--------------------------------------------------------
1332
--  DDL for Index UNQ_ACTTYPE_ID
1333
--------------------------------------------------------
4040 dpurdie 1334
 
4211 dpurdie 1335
  CREATE UNIQUE INDEX "UNQ_ACTTYPE_ID" ON "ACTION_TYPE" ("ACTTYPE_ID") 
4040 dpurdie 1336
  ;
1337
/
4308 dpurdie 1338
--------------------------------------------------------
1339
--  DDL for Index INX_PROJ_ACTION_DATE_TIME
1340
--------------------------------------------------------
4040 dpurdie 1341
 
4211 dpurdie 1342
  CREATE INDEX "INX_PROJ_ACTION_DATE_TIME" ON "PROJECT_ACTION_LOG" ("ACTION_DATETIME") 
4040 dpurdie 1343
  ;
1344
/
4308 dpurdie 1345
--------------------------------------------------------
1346
--  DDL for Index INX_RC_PKG_STATE
1347
--------------------------------------------------------
4040 dpurdie 1348
 
4211 dpurdie 1349
  CREATE INDEX "INX_RC_PKG_STATE" ON "RELEASE_CONTENT" ("PKG_STATE") 
4040 dpurdie 1350
  ;
1351
/
4308 dpurdie 1352
--------------------------------------------------------
1353
--  DDL for Index PROCESSES_PK
1354
--------------------------------------------------------
4040 dpurdie 1355
 
4211 dpurdie 1356
  CREATE UNIQUE INDEX "PROCESSES_PK" ON "PROCESSES" ("PROC_ID") 
4040 dpurdie 1357
  ;
1358
/
4308 dpurdie 1359
--------------------------------------------------------
1360
--  DDL for Index INX_PACKAGE_DEPS_DPV_ID
1361
--------------------------------------------------------
4040 dpurdie 1362
 
4211 dpurdie 1363
  CREATE INDEX "INX_PACKAGE_DEPS_DPV_ID" ON "PACKAGE_DEPENDENCIES" ("DPV_ID") 
4040 dpurdie 1364
  ;
1365
/
4308 dpurdie 1366
--------------------------------------------------------
1367
--  DDL for Index INX_PACKAGES_PKG_VERSION
1368
--------------------------------------------------------
4040 dpurdie 1369
 
4211 dpurdie 1370
  CREATE INDEX "INX_PACKAGES_PKG_VERSION" ON "PACKAGE_VERSIONS" ("PKG_VERSION") 
4040 dpurdie 1371
  ;
1372
/
4308 dpurdie 1373
--------------------------------------------------------
1374
--  DDL for Index UNQ_PACKAGE_METRICS
1375
--------------------------------------------------------
4040 dpurdie 1376
 
4211 dpurdie 1377
  CREATE UNIQUE INDEX "UNQ_PACKAGE_METRICS" ON "PACKAGE_METRICS" ("PV_ID") 
4040 dpurdie 1378
  ;
1379
/
4308 dpurdie 1380
--------------------------------------------------------
1381
--  DDL for Index UNQ_PLATFORM
1382
--------------------------------------------------------
4040 dpurdie 1383
 
4211 dpurdie 1384
  CREATE UNIQUE INDEX "UNQ_PLATFORM" ON "PLATFORMS" ("NAME") 
4040 dpurdie 1385
  ;
1386
/
4308 dpurdie 1387
--------------------------------------------------------
1388
--  DDL for Index UNQ_VIEWS
1389
--------------------------------------------------------
4040 dpurdie 1390
 
4211 dpurdie 1391
  CREATE UNIQUE INDEX "UNQ_VIEWS" ON "VIEWS" ("VIEW_NAME", "OWNER_ID") 
4040 dpurdie 1392
  ;
1393
/
4308 dpurdie 1394
--------------------------------------------------------
4211 dpurdie 1395
--  DDL for Index PRODUCT_STATES_PK
4040 dpurdie 1396
--------------------------------------------------------
1397
 
4211 dpurdie 1398
  CREATE UNIQUE INDEX "PRODUCT_STATES_PK" ON "PRODUCT_STATES" ("STATE_ID") 
4040 dpurdie 1399
  ;
1400
/
1401
--------------------------------------------------------
4211 dpurdie 1402
--  DDL for Index PK_MESSAGE_BOARD
4040 dpurdie 1403
--------------------------------------------------------
1404
 
4211 dpurdie 1405
  CREATE UNIQUE INDEX "PK_MESSAGE_BOARD" ON "MESSAGE_BOARD" ("MSG_ID") 
4040 dpurdie 1406
  ;
1407
/
4308 dpurdie 1408
--------------------------------------------------------
1409
--  DDL for Index PK_BUILD_MACHINE_CONFIG
1410
--------------------------------------------------------
4040 dpurdie 1411
 
4211 dpurdie 1412
  CREATE UNIQUE INDEX "PK_BUILD_MACHINE_CONFIG" ON "BUILD_MACHINE_CONFIG" ("BMCON_ID") 
4040 dpurdie 1413
  ;
1414
/
4308 dpurdie 1415
--------------------------------------------------------
1416
--  DDL for Index INX_MSGBOARD
1417
--------------------------------------------------------
4040 dpurdie 1418
 
4211 dpurdie 1419
  CREATE INDEX "INX_MSGBOARD" ON "MESSAGE_BOARD" ("EXPIRY_DATE", "DUE_DATE") 
4040 dpurdie 1420
  ;
1421
/
4308 dpurdie 1422
--------------------------------------------------------
1423
--  DDL for Index PK_VTREES
1424
--------------------------------------------------------
4040 dpurdie 1425
 
4211 dpurdie 1426
  CREATE UNIQUE INDEX "PK_VTREES" ON "VTREES" ("VTREE_ID") 
4040 dpurdie 1427
  ;
1428
/
4308 dpurdie 1429
--------------------------------------------------------
1430
--  DDL for Index UNQ_UT_PART1
1431
--------------------------------------------------------
4040 dpurdie 1432
 
4211 dpurdie 1433
  CREATE UNIQUE INDEX "UNQ_UT_PART1" ON "UNIT_TESTS" ("PV_ID", "TEST_ID") 
4040 dpurdie 1434
  ;
1435
/
4308 dpurdie 1436
--------------------------------------------------------
1437
--  DDL for Index UNQ_BUILD_ENV
1438
--------------------------------------------------------
4040 dpurdie 1439
 
4211 dpurdie 1440
  CREATE UNIQUE INDEX "UNQ_BUILD_ENV" ON "BUILD_ENVIRONMENTS" ("BE_NAME") 
4040 dpurdie 1441
  ;
1442
/
1443
--------------------------------------------------------
4211 dpurdie 1444
--  DDL for Index INX_ACTION_DATE_TIME
4040 dpurdie 1445
--------------------------------------------------------
1446
 
4211 dpurdie 1447
  CREATE INDEX "INX_ACTION_DATE_TIME" ON "ACTION_LOG" ("ACTION_DATETIME") 
4040 dpurdie 1448
  ;
1449
/
1450
--------------------------------------------------------
4308 dpurdie 1451
--  DDL for Index UNQ_BUILD_MACHINE_CONFIG02
1452
--------------------------------------------------------
4040 dpurdie 1453
 
4211 dpurdie 1454
  CREATE UNIQUE INDEX "UNQ_BUILD_MACHINE_CONFIG02" ON "BUILD_MACHINE_CONFIG" ("MACHINE_HOSTNAME") 
4040 dpurdie 1455
  ;
1456
/
4308 dpurdie 1457
--------------------------------------------------------
1458
--  DDL for Index BUILD_MACHINES_PK
1459
--------------------------------------------------------
4040 dpurdie 1460
 
4211 dpurdie 1461
  CREATE UNIQUE INDEX "BUILD_MACHINES_PK" ON "BUILD_MACHINES" ("BM_ID") 
4040 dpurdie 1462
  ;
1463
/
4308 dpurdie 1464
--------------------------------------------------------
1465
--  DDL for Index INX_TTB_SESSION
1466
--------------------------------------------------------
4040 dpurdie 1467
 
4211 dpurdie 1468
  CREATE INDEX "INX_TTB_SESSION" ON "TEMP_TREE_BROWSE" ("SESSION_NUM") 
4040 dpurdie 1469
  ;
1470
/
4308 dpurdie 1471
--------------------------------------------------------
1472
--  DDL for Index UNQ_RTD
1473
--------------------------------------------------------
4040 dpurdie 1474
 
4211 dpurdie 1475
  CREATE INDEX "UNQ_RTD" ON "RUNTIME_DEPENDENCIES" ("PV_ID", "RTD_ID") 
4040 dpurdie 1476
  ;
1477
/
4308 dpurdie 1478
--------------------------------------------------------
4211 dpurdie 1479
--  DDL for Index INX_RL_RTAG_ID
4040 dpurdie 1480
--------------------------------------------------------
1481
 
4211 dpurdie 1482
  CREATE INDEX "INX_RL_RTAG_ID" ON "RELEASE_LINKS" ("RTAG_ID") 
4040 dpurdie 1483
  ;
1484
/
1485
--------------------------------------------------------
4211 dpurdie 1486
--  DDL for Index UNQ_VIEW_DEF
4040 dpurdie 1487
--------------------------------------------------------
1488
 
4211 dpurdie 1489
  CREATE UNIQUE INDEX "UNQ_VIEW_DEF" ON "VIEW_DEF" ("VIEW_ID", "PKG_ID") 
4040 dpurdie 1490
  ;
1491
/
1492
--------------------------------------------------------
4211 dpurdie 1493
--  DDL for Index INX_PACKAGES_PKG_NAME
4040 dpurdie 1494
--------------------------------------------------------
1495
 
4211 dpurdie 1496
  CREATE INDEX "INX_PACKAGES_PKG_NAME" ON "PACKAGE_VERSIONS" ("PKG_ID") 
4040 dpurdie 1497
  ;
1498
/
1499
--------------------------------------------------------
4211 dpurdie 1500
--  DDL for Index INX_PCOMP_FK_PV_ID
4040 dpurdie 1501
--------------------------------------------------------
1502
 
4211 dpurdie 1503
  CREATE INDEX "INX_PCOMP_FK_PV_ID" ON "PRODUCT_COMPONENTS" ("PV_ID") 
4040 dpurdie 1504
  ;
1505
/
1506
--------------------------------------------------------
4211 dpurdie 1507
--  DDL for Index DAEMON_INSTRUCTIONS_UK1
4040 dpurdie 1508
--------------------------------------------------------
1509
 
4211 dpurdie 1510
  CREATE UNIQUE INDEX "DAEMON_INSTRUCTIONS_UK1" ON "DAEMON_INSTRUCTIONS" ("OP_CODE", "RTAG_ID", "PV_ID") 
4040 dpurdie 1511
  ;
1512
/
1513
--------------------------------------------------------
4211 dpurdie 1514
--  DDL for Index INX_FILE_NAME
4040 dpurdie 1515
--------------------------------------------------------
1516
 
4211 dpurdie 1517
  CREATE INDEX "INX_FILE_NAME" ON "RELEASE_COMPONENTS" (UPPER("FILE_NAME")) 
4040 dpurdie 1518
  ;
1519
/
1520
--------------------------------------------------------
4211 dpurdie 1521
--  DDL for Index INX_IS_PATCH_IGNORE
4040 dpurdie 1522
--------------------------------------------------------
1523
 
4211 dpurdie 1524
  CREATE INDEX "INX_IS_PATCH_IGNORE" ON "IGNORE_WARNINGS" ("IS_PATCH_IGNORE") 
4040 dpurdie 1525
  ;
1526
/
1527
--------------------------------------------------------
4211 dpurdie 1528
--  DDL for Index UNQ_BUILD_ENV_DOCS
4040 dpurdie 1529
--------------------------------------------------------
1530
 
4211 dpurdie 1531
  CREATE UNIQUE INDEX "UNQ_BUILD_ENV_DOCS" ON "BUILD_ENV_DOCUMENTS" ("BE_ID", "DOC_NUM") 
4040 dpurdie 1532
  ;
1533
/
1534
--------------------------------------------------------
4211 dpurdie 1535
--  DDL for Index INX_PROJ_ACTION_LOG_PROJ
4040 dpurdie 1536
--------------------------------------------------------
1537
 
4211 dpurdie 1538
  CREATE INDEX "INX_PROJ_ACTION_LOG_PROJ" ON "PROJECT_ACTION_LOG" ("PROJ_ID") 
4040 dpurdie 1539
  ;
1540
/
1541
--------------------------------------------------------
1542
--  DDL for Index INX_TTB_LEVEL_NUM
1543
--------------------------------------------------------
1544
 
1545
  CREATE INDEX "INX_TTB_LEVEL_NUM" ON "TEMP_TREE_BROWSE" ("LEVEL_NUM") 
1546
  ;
1547
/
1548
--------------------------------------------------------
4211 dpurdie 1549
--  DDL for Index UNQ_WORK_IN_PROGRESS
4040 dpurdie 1550
--------------------------------------------------------
1551
 
4211 dpurdie 1552
  CREATE UNIQUE INDEX "UNQ_WORK_IN_PROGRESS" ON "WORK_IN_PROGRESS" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1553
  ;
1554
/
1555
--------------------------------------------------------
4211 dpurdie 1556
--  DDL for Index INX_PACKAGES_V_NMM
4040 dpurdie 1557
--------------------------------------------------------
1558
 
4211 dpurdie 1559
  CREATE INDEX "INX_PACKAGES_V_NMM" ON "PACKAGE_VERSIONS" ("V_NMM") 
4040 dpurdie 1560
  ;
1561
/
1562
--------------------------------------------------------
4211 dpurdie 1563
--  DDL for Index UNQ_PLANNED
4040 dpurdie 1564
--------------------------------------------------------
1565
 
4211 dpurdie 1566
  CREATE INDEX "UNQ_PLANNED" ON "PLANNED" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1567
  ;
1568
/
1569
--------------------------------------------------------
4211 dpurdie 1570
--  DDL for Index INX_TES_PKGEXT
4040 dpurdie 1571
--------------------------------------------------------
1572
 
4211 dpurdie 1573
  CREATE INDEX "INX_TES_PKGEXT" ON "TEMP_ENV_STATES" ("PKG_ID", "V_EXT") 
4040 dpurdie 1574
  ;
1575
/
4308 dpurdie 1576
--------------------------------------------------------
1577
--  DDL for Index UNQ_BUILD_MACHINE_CONFIG01
1578
--------------------------------------------------------
4040 dpurdie 1579
 
4211 dpurdie 1580
  CREATE UNIQUE INDEX "UNQ_BUILD_MACHINE_CONFIG01" ON "BUILD_MACHINE_CONFIG" (LOWER("DISPLAY_NAME")) 
4040 dpurdie 1581
  ;
1582
/
1583
--------------------------------------------------------
4211 dpurdie 1584
--  DDL for Index UNQ_RELEASE_LINKS
4040 dpurdie 1585
--------------------------------------------------------
1586
 
4211 dpurdie 1587
  CREATE UNIQUE INDEX "UNQ_RELEASE_LINKS" ON "RELEASE_LINKS" ("RTAG_ID", "REF_RTAG_ID") 
4040 dpurdie 1588
  ;
1589
/
4308 dpurdie 1590
--------------------------------------------------------
1591
--  DDL for Index UNQ_PKG_DOC
1592
--------------------------------------------------------
4040 dpurdie 1593
 
4211 dpurdie 1594
  CREATE UNIQUE INDEX "UNQ_PKG_DOC" ON "PACKAGE_DOCUMENTS" ("PV_ID", "DOC_NUM") 
4040 dpurdie 1595
  ;
1596
/
1597
--------------------------------------------------------
4211 dpurdie 1598
--  DDL for Index DAEMON_INSTRUCTIONS_PK
4040 dpurdie 1599
--------------------------------------------------------
1600
 
4211 dpurdie 1601
  CREATE UNIQUE INDEX "DAEMON_INSTRUCTIONS_PK" ON "DAEMON_INSTRUCTIONS" ("DAEMON_INSTRUCTIONS_ID") 
4040 dpurdie 1602
  ;
1603
/
4308 dpurdie 1604
--------------------------------------------------------
1605
--  DDL for Index INX_DAEMON_INST_SCHED_DATETIME
1606
--------------------------------------------------------
4040 dpurdie 1607
 
4211 dpurdie 1608
  CREATE INDEX "INX_DAEMON_INST_SCHED_DATETIME" ON "DAEMON_INSTRUCTIONS" ("SCHEDULED_DATETIME") 
4040 dpurdie 1609
  ;
1610
/
1611
--------------------------------------------------------
4211 dpurdie 1612
--  DDL for Index INX_TTB_PKG
4040 dpurdie 1613
--------------------------------------------------------
1614
 
4211 dpurdie 1615
  CREATE INDEX "INX_TTB_PKG" ON "TEMP_TREE_BROWSE" ("PKG_ID", "V_EXT") 
4040 dpurdie 1616
  ;
1617
/
1618
--------------------------------------------------------
4211 dpurdie 1619
--  DDL for Index UNQ_VALIDATION_RULES
4040 dpurdie 1620
--------------------------------------------------------
1621
 
4211 dpurdie 1622
  CREATE UNIQUE INDEX "UNQ_VALIDATION_RULES" ON "VALIDATION_RULES" ("FIELD_NAME") 
4040 dpurdie 1623
  ;
1624
/
4308 dpurdie 1625
--------------------------------------------------------
1626
--  DDL for Index BUILD_STANDARDS_ADDENDUM_PK
1627
--------------------------------------------------------
4040 dpurdie 1628
 
4211 dpurdie 1629
  CREATE UNIQUE INDEX "BUILD_STANDARDS_ADDENDUM_PK" ON "BUILD_STANDARDS_ADDENDUM" ("BSA_ID") 
4040 dpurdie 1630
  ;
1631
/
1632
--------------------------------------------------------
4211 dpurdie 1633
--  DDL for Index INX_PV_OWNER_ID
4040 dpurdie 1634
--------------------------------------------------------
1635
 
4211 dpurdie 1636
  CREATE INDEX "INX_PV_OWNER_ID" ON "PACKAGE_VERSIONS" ("OWNER_ID") 
4040 dpurdie 1637
  ;
1638
/
1639
--------------------------------------------------------
4211 dpurdie 1640
--  DDL for Index INX_TES_TES_STATE
4040 dpurdie 1641
--------------------------------------------------------
1642
 
4211 dpurdie 1643
  CREATE INDEX "INX_TES_TES_STATE" ON "TEMP_ENV_STATES" ("TES_STATE") 
4040 dpurdie 1644
  ;
1645
/
1646
--------------------------------------------------------
4308 dpurdie 1647
--  DDL for Index UNQ_AN_PART1
1648
--------------------------------------------------------
4040 dpurdie 1649
 
4211 dpurdie 1650
  CREATE UNIQUE INDEX "UNQ_AN_PART1" ON "ADDITIONAL_NOTES" ("PV_ID", "NOTE_ID") 
4040 dpurdie 1651
  ;
1652
/
4308 dpurdie 1653
--------------------------------------------------------
4211 dpurdie 1654
--  DDL for Index UNQ_RELEASE_CONTENTS
4040 dpurdie 1655
--------------------------------------------------------
1656
 
4211 dpurdie 1657
  CREATE UNIQUE INDEX "UNQ_RELEASE_CONTENTS" ON "RELEASE_CONTENT" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1658
  ;
1659
/
4308 dpurdie 1660
--------------------------------------------------------
1661
--  DDL for Index INX_ACTION_LOG_PV_ID
1662
--------------------------------------------------------
4040 dpurdie 1663
 
4211 dpurdie 1664
  CREATE INDEX "INX_ACTION_LOG_PV_ID" ON "ACTION_LOG" ("PV_ID") 
4040 dpurdie 1665
  ;
1666
/
1667
--------------------------------------------------------
4211 dpurdie 1668
--  DDL for Index UNQ_TEST_TYPE_NAME
4040 dpurdie 1669
--------------------------------------------------------
1670
 
4211 dpurdie 1671
  CREATE UNIQUE INDEX "UNQ_TEST_TYPE_NAME" ON "TEST_TYPES" ("TEST_TYPE_NAME") 
4040 dpurdie 1672
  ;
1673
/
1674
--------------------------------------------------------
4308 dpurdie 1675
--  DDL for Index PKNOTE_MANAGER1
1676
--------------------------------------------------------
4040 dpurdie 1677
 
4211 dpurdie 1678
  CREATE UNIQUE INDEX "PKNOTE_MANAGER1" ON "NOTE_MANAGER" ("NID") 
4040 dpurdie 1679
  ;
1680
/
4308 dpurdie 1681
--------------------------------------------------------
1682
--  DDL for Index INX_PACKAGES_V_MM
1683
--------------------------------------------------------
4040 dpurdie 1684
 
4211 dpurdie 1685
  CREATE INDEX "INX_PACKAGES_V_MM" ON "PACKAGE_VERSIONS" ("V_MM") 
4040 dpurdie 1686
  ;
1687
/
4308 dpurdie 1688
--------------------------------------------------------
1689
--  DDL for Index INX_CODE_REVIEW
1690
--------------------------------------------------------
4040 dpurdie 1691
 
4211 dpurdie 1692
  CREATE UNIQUE INDEX "INX_CODE_REVIEW" ON "CODE_REVIEWS" ("PV_ID") 
4040 dpurdie 1693
  ;
1694
/
4308 dpurdie 1695
--------------------------------------------------------
4211 dpurdie 1696
--  DDL for Index UNQ_VTREES
4040 dpurdie 1697
--------------------------------------------------------
1698
 
4211 dpurdie 1699
  CREATE UNIQUE INDEX "UNQ_VTREES" ON "VTREES" ("PROJ_ID", "VTREE_NAME") 
4040 dpurdie 1700
  ;
1701
/
4308 dpurdie 1702
--------------------------------------------------------
1703
--  DDL for Index INX_PACKAGE_DEPS_PKG_ID
1704
--------------------------------------------------------
4040 dpurdie 1705
 
4211 dpurdie 1706
  CREATE INDEX "INX_PACKAGE_DEPS_PKG_ID" ON "PACKAGE_DEPENDENCIES" ("PKG_ID") 
4040 dpurdie 1707
  ;
1708
/
1709
--------------------------------------------------------
4211 dpurdie 1710
--  DDL for Index UNQ_PROJECTS
4040 dpurdie 1711
--------------------------------------------------------
1712
 
4211 dpurdie 1713
  CREATE UNIQUE INDEX "UNQ_PROJECTS" ON "PROJECTS" ("PROJ_NAME") 
4040 dpurdie 1714
  ;
1715
/
4308 dpurdie 1716
--------------------------------------------------------
1717
--  DDL for Index INX_PACKAGES_V_EXT
1718
--------------------------------------------------------
4040 dpurdie 1719
 
4211 dpurdie 1720
  CREATE INDEX "INX_PACKAGES_V_EXT" ON "PACKAGE_VERSIONS" ("V_EXT") 
4040 dpurdie 1721
  ;
1722
/
1723
--------------------------------------------------------
4211 dpurdie 1724
--  DDL for Index PK_PROJECTS
4040 dpurdie 1725
--------------------------------------------------------
1726
 
4211 dpurdie 1727
  CREATE UNIQUE INDEX "PK_PROJECTS" ON "PROJECTS" ("PROJ_ID") 
4040 dpurdie 1728
  ;
1729
/
4308 dpurdie 1730
--------------------------------------------------------
1731
--  DDL for Index INX_TES_PV
1732
--------------------------------------------------------
4040 dpurdie 1733
 
4211 dpurdie 1734
  CREATE INDEX "INX_TES_PV" ON "TEMP_ENV_STATES" ("PV_ID") 
4040 dpurdie 1735
  ;
1736
/
1737
--------------------------------------------------------
4211 dpurdie 1738
--  DDL for Index UNQ_VTREE_WORLD
4040 dpurdie 1739
--------------------------------------------------------
1740
 
4211 dpurdie 1741
  CREATE UNIQUE INDEX "UNQ_VTREE_WORLD" ON "VTREES_WORLD" ("WORLD_ID", "VTREE_ID") 
4040 dpurdie 1742
  ;
1743
/
1744
--------------------------------------------------------
4308 dpurdie 1745
--  DDL for Index UNQ_IGW
1746
--------------------------------------------------------
4040 dpurdie 1747
 
4211 dpurdie 1748
  CREATE UNIQUE INDEX "UNQ_IGW" ON "IGNORE_WARNINGS" ("RTAG_ID", "PV_ID", "DPV_ID") 
4040 dpurdie 1749
  ;
1750
/
4308 dpurdie 1751
--------------------------------------------------------
1752
--  DDL for Index INX_DAEMON_INST_RTAG_ID
1753
--------------------------------------------------------
4040 dpurdie 1754
 
4211 dpurdie 1755
  CREATE INDEX "INX_DAEMON_INST_RTAG_ID" ON "DAEMON_INSTRUCTIONS" ("RTAG_ID") 
4040 dpurdie 1756
  ;
1757
/
4308 dpurdie 1758
--------------------------------------------------------
1759
--  DDL for Index PK_NOTIFICATION_HISTORY
1760
--------------------------------------------------------
4040 dpurdie 1761
 
4211 dpurdie 1762
  CREATE UNIQUE INDEX "PK_NOTIFICATION_HISTORY" ON "NOTIFICATION_HISTORY" ("RTAG_ID", "PV_ID", "USER_ID") 
4040 dpurdie 1763
  ;
1764
/
4308 dpurdie 1765
--------------------------------------------------------
1766
--  DDL for Index UNQ_PACKAGE_DEPENDENCIES
1767
--------------------------------------------------------
4040 dpurdie 1768
 
4211 dpurdie 1769
  CREATE UNIQUE INDEX "UNQ_PACKAGE_DEPENDENCIES" ON "PACKAGE_DEPENDENCIES" ("PV_ID", "DPV_ID") 
4040 dpurdie 1770
  ;
1771
/
4308 dpurdie 1772
--------------------------------------------------------
1773
--  DDL for Index INX_PACKAGE_DEPS_PV_ID
1774
--------------------------------------------------------
4040 dpurdie 1775
 
4211 dpurdie 1776
  CREATE INDEX "INX_PACKAGE_DEPS_PV_ID" ON "PACKAGE_DEPENDENCIES" ("PV_ID") 
4040 dpurdie 1777
  ;
1778
/
4308 dpurdie 1779
--------------------------------------------------------
4211 dpurdie 1780
--  DDL for Index BUILD_STANDARDS_PK
4040 dpurdie 1781
--------------------------------------------------------
1782
 
4211 dpurdie 1783
  CREATE UNIQUE INDEX "BUILD_STANDARDS_PK" ON "BUILD_STANDARDS" ("BS_ID") 
4040 dpurdie 1784
  ;
1785
/
4308 dpurdie 1786
--------------------------------------------------------
1787
--  DDL for Index UNQ_CQ
1788
--------------------------------------------------------
4040 dpurdie 1789
 
1790
  CREATE UNIQUE INDEX "UNQ_CQ" ON "CQ_ISSUES" ("PV_ID", "ISS_ID", "ISS_DB") 
1791
  ;
1792
/
1793
--------------------------------------------------------
4211 dpurdie 1794
--  DDL for Index UNQ_PACKAGE_VERSIONS
4040 dpurdie 1795
--------------------------------------------------------
1796
 
4211 dpurdie 1797
  CREATE UNIQUE INDEX "UNQ_PACKAGE_VERSIONS" ON "PACKAGE_VERSIONS" ("PKG_ID", "PKG_VERSION") 
4040 dpurdie 1798
  ;
1799
/
4308 dpurdie 1800
--------------------------------------------------------
1801
--  DDL for Index INX_PV_ID_TEST_ID_PKGDOC
1802
--------------------------------------------------------
4040 dpurdie 1803
 
4211 dpurdie 1804
  CREATE INDEX "INX_PV_ID_TEST_ID_PKGDOC" ON "PACKAGE_DOCUMENTS" ("PV_ID", "TEST_ID") 
4040 dpurdie 1805
  ;
1806
/
1807
--------------------------------------------------------
4211 dpurdie 1808
--  DDL for Index UNQ_PACKAGE_PATCHES
4040 dpurdie 1809
--------------------------------------------------------
1810
 
4211 dpurdie 1811
  CREATE UNIQUE INDEX "UNQ_PACKAGE_PATCHES" ON "PACKAGE_PATCHES" ("PATCH_ID") 
4040 dpurdie 1812
  ;
1813
/
1814
--------------------------------------------------------
4308 dpurdie 1815
--  DDL for Index UNQ_REL_COMPONENTS
1816
--------------------------------------------------------
4040 dpurdie 1817
 
4211 dpurdie 1818
  CREATE UNIQUE INDEX "UNQ_REL_COMPONENTS" ON "RELEASE_COMPONENTS" ("PV_ID", "FILE_NAME", "FILE_PATH") 
4040 dpurdie 1819
  ;
1820
/
4308 dpurdie 1821
--------------------------------------------------------
1822
--  DDL for Index PK_PACKAGE_VERSIONS
1823
--------------------------------------------------------
4040 dpurdie 1824
 
4211 dpurdie 1825
  CREATE UNIQUE INDEX "PK_PACKAGE_VERSIONS" ON "PACKAGE_VERSIONS" ("PV_ID") 
4040 dpurdie 1826
  ;
1827
/
4308 dpurdie 1828
--------------------------------------------------------
1829
--  DDL for Index UNQ_RELEASE_METRICS
1830
--------------------------------------------------------
4040 dpurdie 1831
 
4211 dpurdie 1832
  CREATE UNIQUE INDEX "UNQ_RELEASE_METRICS" ON "RELEASE_METRICS" ("RTAG_ID") 
4040 dpurdie 1833
  ;
1834
/
4308 dpurdie 1835
--------------------------------------------------------
1836
--  DDL for Index UNQ_BUILD_ORDER
1837
--------------------------------------------------------
4040 dpurdie 1838
 
4211 dpurdie 1839
  CREATE UNIQUE INDEX "UNQ_BUILD_ORDER" ON "BUILD_ORDER" ("RTAG_ID", "PV_ID", "STEP_NUM") 
4040 dpurdie 1840
  ;
1841
/
4308 dpurdie 1842
--------------------------------------------------------
1843
--  DDL for Index PK_BUILD_ENVIRONMENTS
1844
--------------------------------------------------------
4040 dpurdie 1845
 
4211 dpurdie 1846
  CREATE UNIQUE INDEX "PK_BUILD_ENVIRONMENTS" ON "BUILD_ENVIRONMENTS" ("BE_ID") 
4040 dpurdie 1847
  ;
1848
/
4308 dpurdie 1849
--------------------------------------------------------
1850
--  DDL for Index INX_PACKAGE_DEPS_DPKG_ID
1851
--------------------------------------------------------
4040 dpurdie 1852
 
4211 dpurdie 1853
  CREATE INDEX "INX_PACKAGE_DEPS_DPKG_ID" ON "PACKAGE_DEPENDENCIES" ("DPKG_ID") 
4040 dpurdie 1854
  ;
1855
/
4308 dpurdie 1856
--------------------------------------------------------
1857
--  DDL for Index INX_RL_REFRTAG_ID
1858
--------------------------------------------------------
4040 dpurdie 1859
 
4211 dpurdie 1860
  CREATE INDEX "INX_RL_REFRTAG_ID" ON "RELEASE_LINKS" ("REF_RTAG_ID") 
4040 dpurdie 1861
  ;
1862
/
4308 dpurdie 1863
--------------------------------------------------------
1864
--  DDL for Index INX_RC_BASE_VIEW_ID
1865
--------------------------------------------------------
4040 dpurdie 1866
 
4211 dpurdie 1867
  CREATE INDEX "INX_RC_BASE_VIEW_ID" ON "RELEASE_CONTENT" ("BASE_VIEW_ID") 
4040 dpurdie 1868
  ;
1869
/
4308 dpurdie 1870
--------------------------------------------------------
1871
--  DDL for Index INX_DAEMON_INST_PV_ID
1872
--------------------------------------------------------
4211 dpurdie 1873
 
1874
  CREATE INDEX "INX_DAEMON_INST_PV_ID" ON "DAEMON_INSTRUCTIONS" ("PV_ID") 
1875
  ;
1876
/
4308 dpurdie 1877
--------------------------------------------------------
4040 dpurdie 1878
--  DDL for Index UNQ_PROJECT_EXT
1879
--------------------------------------------------------
1880
 
1881
  CREATE UNIQUE INDEX "UNQ_PROJECT_EXT" ON "PROJECT_EXTENTIONS" ("PROJ_ID", "EXT_NAME") 
1882
  ;
1883
/
4308 dpurdie 1884
--------------------------------------------------------
1885
--  DDL for Index VCS_TYPE_PK
1886
--------------------------------------------------------
4040 dpurdie 1887
 
4211 dpurdie 1888
  CREATE UNIQUE INDEX "VCS_TYPE_PK" ON "VCS_TYPE" ("VCS_TYPE_ID") 
4040 dpurdie 1889
  ;
1890
/
1891
--------------------------------------------------------
4211 dpurdie 1892
--  DDL for Index INX_PC_FILE_NAME
4040 dpurdie 1893
--------------------------------------------------------
1894
 
4211 dpurdie 1895
  CREATE INDEX "INX_PC_FILE_NAME" ON "PRODUCT_COMPONENTS" (UPPER("FILE_NAME")) 
4040 dpurdie 1896
  ;
1897
/
4308 dpurdie 1898
--------------------------------------------------------
1899
--  DDL for Index PK_RELEASE_TAGS
1900
--------------------------------------------------------
4040 dpurdie 1901
 
4211 dpurdie 1902
  CREATE UNIQUE INDEX "PK_RELEASE_TAGS" ON "RELEASE_TAGS" ("RTAG_ID") 
4040 dpurdie 1903
  ;
1904
/
1905
--------------------------------------------------------
4211 dpurdie 1906
--  DDL for Index FK_PROJ_ID_RELEASE_TAGS
4040 dpurdie 1907
--------------------------------------------------------
1908
 
4211 dpurdie 1909
  CREATE INDEX "FK_PROJ_ID_RELEASE_TAGS" ON "RELEASE_TAGS" ("PROJ_ID") 
4040 dpurdie 1910
  ;
1911
/
1912
--------------------------------------------------------
4211 dpurdie 1913
--  DDL for Index INX_RCOMP_PV_ID
4040 dpurdie 1914
--------------------------------------------------------
1915
 
4211 dpurdie 1916
  CREATE INDEX "INX_RCOMP_PV_ID" ON "RELEASE_COMPONENTS" ("PV_ID") 
4040 dpurdie 1917
  ;
1918
/
4308 dpurdie 1919
--------------------------------------------------------
1920
--  DDL for Index MICROSOFT_PK_DTPROPERTIES
1921
--------------------------------------------------------
4040 dpurdie 1922
 
4211 dpurdie 1923
  CREATE UNIQUE INDEX "MICROSOFT_PK_DTPROPERTIES" ON "MICROSOFTDTPROPERTIES" ("ID", "PROPERTY") 
4040 dpurdie 1924
  ;
1925
/
1926
--------------------------------------------------------
4308 dpurdie 1927
--  DDL for Index INX_UT_PV_TEST_TYPE
1928
--------------------------------------------------------
4040 dpurdie 1929
 
4211 dpurdie 1930
  CREATE INDEX "INX_UT_PV_TEST_TYPE" ON "UNIT_TESTS" ("PV_ID", "TEST_TYPES_FK") 
4040 dpurdie 1931
  ;
1932
/
4308 dpurdie 1933
--------------------------------------------------------
1934
--  DDL for Index PK_WORLDS
1935
--------------------------------------------------------
4040 dpurdie 1936
 
4211 dpurdie 1937
  CREATE UNIQUE INDEX "PK_WORLDS" ON "WORLDS" ("WORLD_ID") 
4040 dpurdie 1938
  ;
1939
/
4308 dpurdie 1940
--------------------------------------------------------
1941
--  DDL for Index UNQ_AN_PART2
1942
--------------------------------------------------------
4040 dpurdie 1943
 
4211 dpurdie 1944
  CREATE UNIQUE INDEX "UNQ_AN_PART2" ON "ADDITIONAL_NOTES" ("PV_ID", "NOTE_TITLE") 
4040 dpurdie 1945
  ;
1946
/
4308 dpurdie 1947
--------------------------------------------------------
4211 dpurdie 1948
--  Constraints for Table RELEASE_TAGS
4040 dpurdie 1949
--------------------------------------------------------
1950
 
4211 dpurdie 1951
  ALTER TABLE "RELEASE_TAGS" ADD CONSTRAINT "PK_RELEASE_TAGS" PRIMARY KEY ("RTAG_ID") ENABLE;
1952
  ALTER TABLE "RELEASE_TAGS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
1953
  ALTER TABLE "RELEASE_TAGS" MODIFY ("PARENT_RTAG_ID" NOT NULL ENABLE);
1954
  ALTER TABLE "RELEASE_TAGS" MODIFY ("REBUILD_STAMP" NOT NULL ENABLE);
1955
  ALTER TABLE "RELEASE_TAGS" MODIFY ("REBUILD_ENV" NOT NULL ENABLE);
1956
  ALTER TABLE "RELEASE_TAGS" MODIFY ("OFFICIAL" NOT NULL ENABLE);
1957
  ALTER TABLE "RELEASE_TAGS" MODIFY ("RTAG_NAME" NOT NULL ENABLE);
1958
  ALTER TABLE "RELEASE_TAGS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 1959
/
1960
--------------------------------------------------------
4308 dpurdie 1961
--  Constraints for Table RIPPLE_FIELD_STATES
1962
--------------------------------------------------------
4040 dpurdie 1963
 
4211 dpurdie 1964
  ALTER TABLE "RIPPLE_FIELD_STATES" MODIFY ("STATE_ACRONYM" NOT NULL DISABLE);
1965
  ALTER TABLE "RIPPLE_FIELD_STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
4040 dpurdie 1966
/
4308 dpurdie 1967
--------------------------------------------------------
4211 dpurdie 1968
--  Constraints for Table RUNTIME_DEPENDENCIES
4040 dpurdie 1969
--------------------------------------------------------
1970
 
4211 dpurdie 1971
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("MOD_USER" NOT NULL ENABLE);
1972
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
1973
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 1974
/
4308 dpurdie 1975
--------------------------------------------------------
1976
--  Constraints for Table PACKAGE_PROCESSES
1977
--------------------------------------------------------
4040 dpurdie 1978
 
4211 dpurdie 1979
  ALTER TABLE "PACKAGE_PROCESSES" MODIFY ("PROC_ID" NOT NULL ENABLE);
1980
  ALTER TABLE "PACKAGE_PROCESSES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 1981
/
1982
--------------------------------------------------------
4211 dpurdie 1983
--  Constraints for Table DO_NOT_RIPPLE
4040 dpurdie 1984
--------------------------------------------------------
1985
 
4211 dpurdie 1986
  ALTER TABLE "DO_NOT_RIPPLE" MODIFY ("RTAG_ID" NOT NULL ENABLE);
1987
  ALTER TABLE "DO_NOT_RIPPLE" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 1988
/
1989
--------------------------------------------------------
4211 dpurdie 1990
--  Constraints for Table RELEASE_COMPONENTS
4040 dpurdie 1991
--------------------------------------------------------
1992
 
4211 dpurdie 1993
  ALTER TABLE "RELEASE_COMPONENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 1994
/
4308 dpurdie 1995
--------------------------------------------------------
1996
--  Constraints for Table VIEW_SETTINGS
1997
--------------------------------------------------------
4211 dpurdie 1998
 
1999
  ALTER TABLE "VIEW_SETTINGS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2000
  ALTER TABLE "VIEW_SETTINGS" MODIFY ("USER_ID" NOT NULL ENABLE);
2001
/
4040 dpurdie 2002
--------------------------------------------------------
4211 dpurdie 2003
--  Constraints for Table WORLDS
4040 dpurdie 2004
--------------------------------------------------------
2005
 
4211 dpurdie 2006
  ALTER TABLE "WORLDS" ADD CONSTRAINT "PK_WORLDS" PRIMARY KEY ("WORLD_ID") ENABLE;
2007
  ALTER TABLE "WORLDS" MODIFY ("WORLD_NAME" NOT NULL ENABLE);
2008
  ALTER TABLE "WORLDS" MODIFY ("WORLD_ID" NOT NULL ENABLE);
4040 dpurdie 2009
/
2010
--------------------------------------------------------
4211 dpurdie 2011
--  Constraints for Table UNIT_TESTS
4040 dpurdie 2012
--------------------------------------------------------
2013
 
4211 dpurdie 2014
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_TYPES_FK" NOT NULL ENABLE);
2015
  ALTER TABLE "UNIT_TESTS" MODIFY ("PV_ID" NOT NULL ENABLE);
2016
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_ID" NOT NULL ENABLE);
4040 dpurdie 2017
/
2018
--------------------------------------------------------
4211 dpurdie 2019
--  Constraints for Table PACKAGE_DOCUMENTS
4040 dpurdie 2020
--------------------------------------------------------
2021
 
4211 dpurdie 2022
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("DOC_NUM" NOT NULL ENABLE);
2023
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("DOC_ID" NOT NULL ENABLE);
2024
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2025
/
2026
--------------------------------------------------------
4211 dpurdie 2027
--  Constraints for Table PACKAGE_BUILD_INFO
4040 dpurdie 2028
--------------------------------------------------------
2029
 
4211 dpurdie 2030
  ALTER TABLE "PACKAGE_BUILD_INFO" MODIFY ("BM_ID" NOT NULL ENABLE);
2031
  ALTER TABLE "PACKAGE_BUILD_INFO" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2032
/
2033
--------------------------------------------------------
2034
--  Constraints for Table ADVISORY_RIPPLE
2035
--------------------------------------------------------
2036
 
2037
  ALTER TABLE "ADVISORY_RIPPLE" MODIFY ("PV_ID" NOT NULL ENABLE);
2038
  ALTER TABLE "ADVISORY_RIPPLE" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2039
/
2040
--------------------------------------------------------
4211 dpurdie 2041
--  Constraints for Table PRODUCT_STATES
4040 dpurdie 2042
--------------------------------------------------------
2043
 
4211 dpurdie 2044
  ALTER TABLE "PRODUCT_STATES" ADD CONSTRAINT "PRODUCT_STATES_PK" PRIMARY KEY ("STATE_ID") ENABLE;
2045
  ALTER TABLE "PRODUCT_STATES" MODIFY ("STATE" NOT NULL ENABLE);
2046
  ALTER TABLE "PRODUCT_STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
4040 dpurdie 2047
/
4308 dpurdie 2048
--------------------------------------------------------
2049
--  Constraints for Table PRODUCT_COMPONENTS
2050
--------------------------------------------------------
4040 dpurdie 2051
 
4211 dpurdie 2052
  ALTER TABLE "PRODUCT_COMPONENTS" MODIFY ("OS_ID" NOT NULL ENABLE);
2053
  ALTER TABLE "PRODUCT_COMPONENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2054
/
4308 dpurdie 2055
--------------------------------------------------------
2056
--  Constraints for Table PACKAGE_PATCHES
2057
--------------------------------------------------------
4040 dpurdie 2058
 
4211 dpurdie 2059
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("INSTALL_ORDER" NOT NULL ENABLE);
2060
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("PATCH_ID" NOT NULL ENABLE);
2061
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2062
/
4308 dpurdie 2063
--------------------------------------------------------
2064
--  Constraints for Table RUN_LEVEL_SCHEDULE
2065
--------------------------------------------------------
4040 dpurdie 2066
 
4211 dpurdie 2067
  ALTER TABLE "RUN_LEVEL_SCHEDULE" ADD PRIMARY KEY ("SCHEDULED_ID") ENABLE;
2068
  ALTER TABLE "RUN_LEVEL_SCHEDULE" MODIFY ("SCHEDULED_ID" NOT NULL ENABLE);
4040 dpurdie 2069
/
2070
--------------------------------------------------------
4211 dpurdie 2071
--  Constraints for Table MICROSOFTDTPROPERTIES
4040 dpurdie 2072
--------------------------------------------------------
2073
 
4211 dpurdie 2074
  ALTER TABLE "MICROSOFTDTPROPERTIES" ADD CONSTRAINT "MICROSOFT_PK_DTPROPERTIES" PRIMARY KEY ("ID", "PROPERTY") ENABLE;
2075
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("VERSION" CONSTRAINT "MICROSOFT_NN_VERSION" NOT NULL ENABLE);
2076
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("PROPERTY" CONSTRAINT "MICROSOFT_NN_PROPERTY" NOT NULL ENABLE);
2077
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("ID" CONSTRAINT "MICROSOFT_NN_ID" NOT NULL ENABLE);
4040 dpurdie 2078
/
2079
--------------------------------------------------------
4211 dpurdie 2080
--  Constraints for Table NOTE_MANAGER
4040 dpurdie 2081
--------------------------------------------------------
2082
 
4211 dpurdie 2083
  ALTER TABLE "NOTE_MANAGER" ADD CONSTRAINT "PKNOTE_MANAGER1" PRIMARY KEY ("NID") ENABLE;
2084
  ALTER TABLE "NOTE_MANAGER" MODIFY ("NID" NOT NULL ENABLE);
4040 dpurdie 2085
/
2086
--------------------------------------------------------
4308 dpurdie 2087
--  Constraints for Table BUILD_SERVICE_CONFIG
2088
--------------------------------------------------------
4040 dpurdie 2089
 
4211 dpurdie 2090
  ALTER TABLE "BUILD_SERVICE_CONFIG" MODIFY ("CONFIG" NOT NULL ENABLE);
2091
  ALTER TABLE "BUILD_SERVICE_CONFIG" MODIFY ("SERVICE" NOT NULL ENABLE);
4040 dpurdie 2092
/
4308 dpurdie 2093
--------------------------------------------------------
2094
--  Constraints for Table GBE_MACHTYPE
2095
--------------------------------------------------------
4040 dpurdie 2096
 
4211 dpurdie 2097
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("BM_ID" NOT NULL ENABLE);
2098
  ALTER TABLE "GBE_MACHTYPE" ADD PRIMARY KEY ("GBE_ID") ENABLE;
2099
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("GBE_VALUE" NOT NULL ENABLE);
2100
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("GBE_ID" NOT NULL ENABLE);
4040 dpurdie 2101
/
4308 dpurdie 2102
--------------------------------------------------------
4211 dpurdie 2103
--  Constraints for Table ACTION_LOG
4040 dpurdie 2104
--------------------------------------------------------
2105
 
4211 dpurdie 2106
  ALTER TABLE "ACTION_LOG" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
2107
  ALTER TABLE "ACTION_LOG" MODIFY ("PV_ID" NOT NULL ENABLE);
2108
  ALTER TABLE "ACTION_LOG" MODIFY ("ACTION_DATETIME" NOT NULL ENABLE);
2109
  ALTER TABLE "ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2110
/
4308 dpurdie 2111
--------------------------------------------------------
2112
--  Constraints for Table ADDITIONAL_NOTES
2113
--------------------------------------------------------
4040 dpurdie 2114
 
4211 dpurdie 2115
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("MOD_USER" NOT NULL ENABLE);
2116
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2117
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("NOTE_TITLE" NOT NULL ENABLE);
2118
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("PV_ID" NOT NULL ENABLE);
2119
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("NOTE_ID" NOT NULL ENABLE);
4040 dpurdie 2120
/
2121
--------------------------------------------------------
4308 dpurdie 2122
--  Constraints for Table BUILD_STANDARDS_ADDENDUM
2123
--------------------------------------------------------
4040 dpurdie 2124
 
2125
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_PK" PRIMARY KEY ("BSA_ID") ENABLE;
2126
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BS_ID" NOT NULL ENABLE);
2127
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BSA_NAME" NOT NULL ENABLE);
2128
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BSA_ID" NOT NULL ENABLE);
2129
/
4308 dpurdie 2130
--------------------------------------------------------
4211 dpurdie 2131
--  Constraints for Table TEST_TYPES
4040 dpurdie 2132
--------------------------------------------------------
2133
 
4211 dpurdie 2134
  ALTER TABLE "TEST_TYPES" ADD CONSTRAINT "PK_TEST_TYPES" PRIMARY KEY ("TEST_TYPE_ID") ENABLE;
2135
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_NAME" NOT NULL ENABLE);
2136
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2137
/
2138
--------------------------------------------------------
4211 dpurdie 2139
--  Constraints for Table TEMP_ENV_STATES
4040 dpurdie 2140
--------------------------------------------------------
2141
 
4211 dpurdie 2142
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("TES_STATE" NOT NULL ENABLE);
2143
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2144
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("PV_ID" NOT NULL ENABLE);
2145
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("LEVEL_NUM" NOT NULL ENABLE);
2146
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("SESSION_NUM" NOT NULL ENABLE);
4040 dpurdie 2147
/
2148
--------------------------------------------------------
4211 dpurdie 2149
--  Constraints for Table VTREES_WORLD
4040 dpurdie 2150
--------------------------------------------------------
2151
 
4211 dpurdie 2152
  ALTER TABLE "VTREES_WORLD" MODIFY ("VTREE_ID" NOT NULL ENABLE);
2153
  ALTER TABLE "VTREES_WORLD" MODIFY ("WORLD_ID" NOT NULL ENABLE);
4040 dpurdie 2154
/
2155
--------------------------------------------------------
4211 dpurdie 2156
--  Constraints for Table RELEASE_CONFIG
4040 dpurdie 2157
--------------------------------------------------------
2158
 
4211 dpurdie 2159
  ALTER TABLE "RELEASE_CONFIG" ADD PRIMARY KEY ("RCON_ID") ENABLE;
2160
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2161
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("RCON_ID" NOT NULL ENABLE);
4040 dpurdie 2162
/
2163
--------------------------------------------------------
4211 dpurdie 2164
--  Constraints for Table VIEWS
4040 dpurdie 2165
--------------------------------------------------------
2166
 
4211 dpurdie 2167
  ALTER TABLE "VIEWS" ADD CONSTRAINT "PK_VIEWS" PRIMARY KEY ("VIEW_ID") ENABLE;
2168
  ALTER TABLE "VIEWS" MODIFY ("PUBLIC_READ" NOT NULL ENABLE);
2169
  ALTER TABLE "VIEWS" MODIFY ("BASE_VIEW" NOT NULL ENABLE);
2170
  ALTER TABLE "VIEWS" MODIFY ("OWNER_ID" NOT NULL ENABLE);
2171
  ALTER TABLE "VIEWS" MODIFY ("VIEW_NAME" NOT NULL ENABLE);
2172
  ALTER TABLE "VIEWS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
4040 dpurdie 2173
/
2174
--------------------------------------------------------
4211 dpurdie 2175
--  Constraints for Table JIRA_ISSUES
4040 dpurdie 2176
--------------------------------------------------------
2177
 
4211 dpurdie 2178
  ALTER TABLE "JIRA_ISSUES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2179
/
4308 dpurdie 2180
--------------------------------------------------------
2181
--  Constraints for Table PLATFORMS
2182
--------------------------------------------------------
4040 dpurdie 2183
 
4211 dpurdie 2184
  ALTER TABLE "PLATFORMS" MODIFY ("NAME" NOT NULL ENABLE);
2185
  ALTER TABLE "PLATFORMS" MODIFY ("CODE" NOT NULL ENABLE);
4040 dpurdie 2186
/
2187
--------------------------------------------------------
2188
--  Constraints for Table IGNORE_WARNINGS
2189
--------------------------------------------------------
2190
 
2191
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("DPV_ID" NOT NULL ENABLE);
2192
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("PV_ID" NOT NULL ENABLE);
2193
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2194
/
2195
--------------------------------------------------------
4211 dpurdie 2196
--  Constraints for Table DASH_BOARD
4040 dpurdie 2197
--------------------------------------------------------
2198
 
4211 dpurdie 2199
  ALTER TABLE "DASH_BOARD" MODIFY ("TOTAL_PACKAGES" NOT NULL ENABLE);
2200
  ALTER TABLE "DASH_BOARD" MODIFY ("AUTOMATED_PACKAGES" NOT NULL ENABLE);
2201
  ALTER TABLE "DASH_BOARD" MODIFY ("LAST_BUILD_TIME" NOT NULL ENABLE);
2202
  ALTER TABLE "DASH_BOARD" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2203
  ALTER TABLE "DASH_BOARD" MODIFY ("PROJ_ID" NOT NULL ENABLE);
4040 dpurdie 2204
/
2205
--------------------------------------------------------
4211 dpurdie 2206
--  Constraints for Table ACTION_TYPE
4040 dpurdie 2207
--------------------------------------------------------
2208
 
4211 dpurdie 2209
  ALTER TABLE "ACTION_TYPE" ADD CONSTRAINT "UNQ_ACTTYPE_ID" PRIMARY KEY ("ACTTYPE_ID") ENABLE;
2210
  ALTER TABLE "ACTION_TYPE" MODIFY ("NAME" NOT NULL ENABLE);
2211
  ALTER TABLE "ACTION_TYPE" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2212
/
2213
--------------------------------------------------------
4211 dpurdie 2214
--  Constraints for Table PACKAGE_VERSIONS
4040 dpurdie 2215
--------------------------------------------------------
2216
 
4211 dpurdie 2217
  ALTER TABLE "PACKAGE_VERSIONS" ADD CONSTRAINT "PK_PACKAGE_VERSIONS" PRIMARY KEY ("PV_ID") ENABLE;
2218
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("BUILD_TYPE" NOT NULL ENABLE);
2219
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("LAST_PV_ID" NOT NULL ENABLE);
2220
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("OWNER_ID" NOT NULL ENABLE);
2221
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("CREATOR_ID" NOT NULL ENABLE);
2222
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("MODIFIER_ID" NOT NULL ENABLE);
2223
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("DLOCKED" NOT NULL ENABLE);
2224
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PKG_VERSION" NOT NULL ENABLE);
2225
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PKG_ID" NOT NULL ENABLE);
2226
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2227
/
2228
--------------------------------------------------------
4211 dpurdie 2229
--  Constraints for Table PACKAGE_INTEREST
4040 dpurdie 2230
--------------------------------------------------------
2231
 
4211 dpurdie 2232
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("USER_ID" NOT NULL ENABLE);
2233
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2234
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("PKG_ID" NOT NULL ENABLE);
4040 dpurdie 2235
/
2236
--------------------------------------------------------
4211 dpurdie 2237
--  Constraints for Table RELEASE_CONTENT
4040 dpurdie 2238
--------------------------------------------------------
2239
 
4211 dpurdie 2240
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("PKG_STATE" NOT NULL ENABLE);
2241
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("INSERTOR_ID" NOT NULL ENABLE);
2242
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("INSERT_STAMP" NOT NULL ENABLE);
2243
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("BASE_VIEW_ID" NOT NULL ENABLE);
2244
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("PV_ID" NOT NULL ENABLE);
2245
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2246
/
2247
--------------------------------------------------------
4211 dpurdie 2248
--  Constraints for Table RELEASE_METRICS
4040 dpurdie 2249
--------------------------------------------------------
2250
 
4211 dpurdie 2251
  ALTER TABLE "RELEASE_METRICS" ADD CONSTRAINT "UNQ_RELEASE_METRICS" UNIQUE ("RTAG_ID") ENABLE;
2252
  ALTER TABLE "RELEASE_METRICS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2253
/
2254
--------------------------------------------------------
4211 dpurdie 2255
--  Constraints for Table PROJECT_EXTENTIONS
4040 dpurdie 2256
--------------------------------------------------------
2257
 
4211 dpurdie 2258
  ALTER TABLE "PROJECT_EXTENTIONS" MODIFY ("EXT_NAME" NOT NULL ENABLE);
4040 dpurdie 2259
/
2260
--------------------------------------------------------
4211 dpurdie 2261
--  Constraints for Table ABT_ACTION_LOG
4040 dpurdie 2262
--------------------------------------------------------
2263
 
4211 dpurdie 2264
  ALTER TABLE "ABT_ACTION_LOG" MODIFY ("RCON_ID" NOT NULL ENABLE);
4040 dpurdie 2265
/
2266
--------------------------------------------------------
4211 dpurdie 2267
--  Constraints for Table DAEMON_ACTION_LOG
4040 dpurdie 2268
--------------------------------------------------------
2269
 
4211 dpurdie 2270
  ALTER TABLE "DAEMON_ACTION_LOG" MODIFY ("RCON_ID" NOT NULL ENABLE);
2271
  ALTER TABLE "DAEMON_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2272
/
2273
--------------------------------------------------------
4211 dpurdie 2274
--  Constraints for Table PACKAGE_METRICS
4040 dpurdie 2275
--------------------------------------------------------
2276
 
4211 dpurdie 2277
  ALTER TABLE "PACKAGE_METRICS" ADD CONSTRAINT "UNQ_PACKAGE_METRICS" UNIQUE ("PV_ID") ENABLE;
2278
  ALTER TABLE "PACKAGE_METRICS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2279
/
2280
--------------------------------------------------------
4211 dpurdie 2281
--  Constraints for Table CODE_REVIEW_URL
4040 dpurdie 2282
--------------------------------------------------------
2283
 
4211 dpurdie 2284
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PK" PRIMARY KEY ("CR_ID") ENABLE;
2285
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("DATE_OF_REVIEW" NOT NULL ENABLE);
2286
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("URL" NOT NULL ENABLE);
2287
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2288
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("PV_ID" NOT NULL ENABLE);
2289
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("CR_ID" NOT NULL ENABLE);
4040 dpurdie 2290
/
2291
--------------------------------------------------------
4211 dpurdie 2292
--  Constraints for Table AUTOBUILD_FAILURE
4040 dpurdie 2293
--------------------------------------------------------
2294
 
4211 dpurdie 2295
  ALTER TABLE "AUTOBUILD_FAILURE" ADD PRIMARY KEY ("GROUP_EMAIL_ID") ENABLE;
2296
  ALTER TABLE "AUTOBUILD_FAILURE" MODIFY ("GROUP_EMAIL_ID" NOT NULL ENABLE);
4040 dpurdie 2297
/
2298
--------------------------------------------------------
4211 dpurdie 2299
--  Constraints for Table BUILD_MACHINE_CONFIG
4040 dpurdie 2300
--------------------------------------------------------
2301
 
4211 dpurdie 2302
  ALTER TABLE "BUILD_MACHINE_CONFIG" ADD CONSTRAINT "PK_BUILD_MACHINE_CONFIG" PRIMARY KEY ("BMCON_ID") ENABLE;
2303
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("GBE_ID" NOT NULL ENABLE);
2304
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("MACHINE_HOSTNAME" NOT NULL ENABLE);
2305
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("DISPLAY_NAME" NOT NULL ENABLE);
2306
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("BMCON_ID" NOT NULL ENABLE);
4040 dpurdie 2307
/
2308
--------------------------------------------------------
4211 dpurdie 2309
--  Constraints for Table VIEW_DEF
4040 dpurdie 2310
--------------------------------------------------------
2311
 
4211 dpurdie 2312
  ALTER TABLE "VIEW_DEF" MODIFY ("PKG_ID" NOT NULL ENABLE);
2313
  ALTER TABLE "VIEW_DEF" MODIFY ("VIEW_ID" NOT NULL ENABLE);
4040 dpurdie 2314
/
2315
--------------------------------------------------------
4211 dpurdie 2316
--  Constraints for Table BUILD_STANDARDS
4040 dpurdie 2317
--------------------------------------------------------
2318
 
4211 dpurdie 2319
  ALTER TABLE "BUILD_STANDARDS" ADD CONSTRAINT "BUILD_STANDARDS_PK" PRIMARY KEY ("BS_ID") ENABLE;
2320
  ALTER TABLE "BUILD_STANDARDS" MODIFY ("BS_NAME" NOT NULL ENABLE);
2321
  ALTER TABLE "BUILD_STANDARDS" MODIFY ("BS_ID" NOT NULL ENABLE);
4040 dpurdie 2322
/
4308 dpurdie 2323
--------------------------------------------------------
2324
--  Constraints for Table PACKAGE_BUILD_ENV
2325
--------------------------------------------------------
4040 dpurdie 2326
 
4211 dpurdie 2327
  ALTER TABLE "PACKAGE_BUILD_ENV" MODIFY ("BE_ID" NOT NULL ENABLE);
2328
  ALTER TABLE "PACKAGE_BUILD_ENV" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2329
/
2330
--------------------------------------------------------
4211 dpurdie 2331
--  Constraints for Table VTREES
4040 dpurdie 2332
--------------------------------------------------------
2333
 
4211 dpurdie 2334
  ALTER TABLE "VTREES" ADD CONSTRAINT "PK_VTREES" PRIMARY KEY ("VTREE_ID") ENABLE;
2335
  ALTER TABLE "VTREES" MODIFY ("HIDE" NOT NULL ENABLE);
2336
  ALTER TABLE "VTREES" MODIFY ("VTREE_NAME" NOT NULL ENABLE);
2337
  ALTER TABLE "VTREES" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2338
  ALTER TABLE "VTREES" MODIFY ("VTREE_ID" NOT NULL ENABLE);
4040 dpurdie 2339
/
2340
--------------------------------------------------------
4308 dpurdie 2341
--  Constraints for Table NOTIFICATION_HISTORY
2342
--------------------------------------------------------
4040 dpurdie 2343
 
4211 dpurdie 2344
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "PK_NOTIFICATION_HISTORY" PRIMARY KEY ("RTAG_ID", "PV_ID", "USER_ID") ENABLE;
2345
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
2346
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("USER_ID" NOT NULL ENABLE);
2347
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("PV_ID" NOT NULL ENABLE);
2348
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2349
/
4308 dpurdie 2350
--------------------------------------------------------
2351
--  Constraints for Table RELEASE_LINKS
2352
--------------------------------------------------------
4040 dpurdie 2353
 
4211 dpurdie 2354
  ALTER TABLE "RELEASE_LINKS" MODIFY ("REF_RTAG_ID" NOT NULL ENABLE);
2355
  ALTER TABLE "RELEASE_LINKS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2356
/
4308 dpurdie 2357
--------------------------------------------------------
2358
--  Constraints for Table PACKAGES
2359
--------------------------------------------------------
4040 dpurdie 2360
 
4211 dpurdie 2361
  ALTER TABLE "PACKAGES" ADD CONSTRAINT "PK_PACKAGES" PRIMARY KEY ("PKG_ID") ENABLE;
2362
  ALTER TABLE "PACKAGES" MODIFY ("PKG_NAME" NOT NULL ENABLE);
2363
  ALTER TABLE "PACKAGES" MODIFY ("PKG_ID" NOT NULL ENABLE);
4040 dpurdie 2364
/
4308 dpurdie 2365
--------------------------------------------------------
2366
--  Constraints for Table REPEAT_SCHEDULE
2367
--------------------------------------------------------
4040 dpurdie 2368
 
4211 dpurdie 2369
  ALTER TABLE "REPEAT_SCHEDULE" ADD PRIMARY KEY ("RPT_ID") ENABLE;
4040 dpurdie 2370
/
4308 dpurdie 2371
--------------------------------------------------------
2372
--  Constraints for Table PROJECTS
2373
--------------------------------------------------------
4040 dpurdie 2374
 
4211 dpurdie 2375
  ALTER TABLE "PROJECTS" ADD CONSTRAINT "PK_PROJECTS" PRIMARY KEY ("PROJ_ID") ENABLE;
2376
  ALTER TABLE "PROJECTS" MODIFY ("PROJ_NAME" NOT NULL ENABLE);
2377
  ALTER TABLE "PROJECTS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
4040 dpurdie 2378
/
4308 dpurdie 2379
--------------------------------------------------------
2380
--  Constraints for Table LICENCING
2381
--------------------------------------------------------
4040 dpurdie 2382
 
4211 dpurdie 2383
  ALTER TABLE "LICENCING" MODIFY ("LICENCE" NOT NULL ENABLE);
2384
  ALTER TABLE "LICENCING" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2385
/
4308 dpurdie 2386
--------------------------------------------------------
2387
--  Constraints for Table MESSAGE_BOARD
2388
--------------------------------------------------------
4040 dpurdie 2389
 
4211 dpurdie 2390
  ALTER TABLE "MESSAGE_BOARD" ADD CONSTRAINT "PK_MESSAGE_BOARD" PRIMARY KEY ("MSG_ID") ENABLE;
2391
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("SUBMITION_DATE" NOT NULL ENABLE);
2392
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_DETAILS" NOT NULL ENABLE);
2393
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_ID" NOT NULL ENABLE);
4040 dpurdie 2394
/
4308 dpurdie 2395
--------------------------------------------------------
2396
--  Constraints for Table PROJECT_ACTION_LOG
2397
--------------------------------------------------------
4040 dpurdie 2398
 
2399
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
2400
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2401
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("ACTION_DATETIME" NOT NULL ENABLE);
2402
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
2403
/
4308 dpurdie 2404
--------------------------------------------------------
2405
--  Constraints for Table ARCHIVE_DATA
2406
--------------------------------------------------------
4040 dpurdie 2407
 
4211 dpurdie 2408
  ALTER TABLE "ARCHIVE_DATA" MODIFY ("PV_ID" NOT NULL ENABLE);
2409
  ALTER TABLE "ARCHIVE_DATA" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2410
/
4308 dpurdie 2411
--------------------------------------------------------
2412
--  Constraints for Table VALIDATION_RULES
2413
--------------------------------------------------------
4040 dpurdie 2414
 
4211 dpurdie 2415
  ALTER TABLE "VALIDATION_RULES" MODIFY ("IS_REQUIRED" NOT NULL ENABLE);
2416
  ALTER TABLE "VALIDATION_RULES" MODIFY ("FIELD_NAME" NOT NULL ENABLE);
4040 dpurdie 2417
/
4308 dpurdie 2418
--------------------------------------------------------
2419
--  Constraints for Table LICENCES
2420
--------------------------------------------------------
4040 dpurdie 2421
 
4211 dpurdie 2422
  ALTER TABLE "LICENCES" ADD CONSTRAINT "PK_LICENCES" PRIMARY KEY ("LICENCE") ENABLE;
2423
  ALTER TABLE "LICENCES" MODIFY ("NAME" NOT NULL ENABLE);
2424
  ALTER TABLE "LICENCES" MODIFY ("LICENCE" NOT NULL ENABLE);
4040 dpurdie 2425
/
4308 dpurdie 2426
--------------------------------------------------------
2427
--  Constraints for Table MEMBERS_GROUP
2428
--------------------------------------------------------
4040 dpurdie 2429
 
4211 dpurdie 2430
  ALTER TABLE "MEMBERS_GROUP" MODIFY ("GROUP_EMAIL_ID" NOT NULL ENABLE);
4040 dpurdie 2431
/
4308 dpurdie 2432
--------------------------------------------------------
2433
--  Constraints for Table CQ_ISSUES
2434
--------------------------------------------------------
4040 dpurdie 2435
 
4211 dpurdie 2436
  ALTER TABLE "CQ_ISSUES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2437
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_STATE" NOT NULL ENABLE);
2438
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_ID" NOT NULL ENABLE);
2439
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_DB" NOT NULL ENABLE);
2440
  ALTER TABLE "CQ_ISSUES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2441
/
4308 dpurdie 2442
--------------------------------------------------------
2443
--  Constraints for Table ARCHIVE_ACTION_LOG
2444
--------------------------------------------------------
4040 dpurdie 2445
 
4211 dpurdie 2446
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("DESCRIPTION" NOT NULL ENABLE);
2447
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2448
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
2449
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2450
/
4308 dpurdie 2451
--------------------------------------------------------
4211 dpurdie 2452
--  Constraints for Table CODE_REVIEWS
4040 dpurdie 2453
--------------------------------------------------------
2454
 
4211 dpurdie 2455
  ALTER TABLE "CODE_REVIEWS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2456
/
4308 dpurdie 2457
--------------------------------------------------------
2458
--  Constraints for Table PLANNED
2459
--------------------------------------------------------
4040 dpurdie 2460
 
4211 dpurdie 2461
  ALTER TABLE "PLANNED" ADD CONSTRAINT "UNIQUE_PV_RTAG" UNIQUE ("PV_ID", "RTAG_ID") ENABLE;
2462
  ALTER TABLE "PLANNED" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2463
  ALTER TABLE "PLANNED" MODIFY ("PV_ID" NOT NULL ENABLE);
2464
  ALTER TABLE "PLANNED" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2465
/
4308 dpurdie 2466
--------------------------------------------------------
2467
--  Constraints for Table VCS_TYPE
2468
--------------------------------------------------------
4040 dpurdie 2469
 
4211 dpurdie 2470
  ALTER TABLE "VCS_TYPE" ADD CONSTRAINT "VCS_TYPE_PK" PRIMARY KEY ("VCS_TYPE_ID") ENABLE;
2471
  ALTER TABLE "VCS_TYPE" MODIFY ("TAG" NOT NULL ENABLE);
2472
  ALTER TABLE "VCS_TYPE" MODIFY ("NAME" NOT NULL ENABLE);
2473
  ALTER TABLE "VCS_TYPE" MODIFY ("VCS_TYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2474
/
4308 dpurdie 2475
--------------------------------------------------------
2476
--  Constraints for Table BUILD_MACHINES
2477
--------------------------------------------------------
4040 dpurdie 2478
 
4211 dpurdie 2479
  ALTER TABLE "BUILD_MACHINES" ADD CONSTRAINT "BUILD_MACHINES_PK" PRIMARY KEY ("BM_ID") ENABLE;
2480
  ALTER TABLE "BUILD_MACHINES" MODIFY ("BM_NAME" NOT NULL ENABLE);
2481
  ALTER TABLE "BUILD_MACHINES" MODIFY ("BM_ID" NOT NULL ENABLE);
4040 dpurdie 2482
/
4308 dpurdie 2483
--------------------------------------------------------
2484
--  Constraints for Table PEGGED_VERSIONS
2485
--------------------------------------------------------
4040 dpurdie 2486
 
4211 dpurdie 2487
  ALTER TABLE "PEGGED_VERSIONS" MODIFY ("PV_ID" NOT NULL ENABLE);
2488
  ALTER TABLE "PEGGED_VERSIONS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2489
/
4308 dpurdie 2490
--------------------------------------------------------
2491
--  Constraints for Table DAEMON_INSTRUCTIONS
2492
--------------------------------------------------------
4040 dpurdie 2493
 
4211 dpurdie 2494
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_UK1" UNIQUE ("OP_CODE", "RTAG_ID", "PV_ID") ENABLE;
2495
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_PK" PRIMARY KEY ("DAEMON_INSTRUCTIONS_ID") ENABLE;
2496
  ALTER TABLE "DAEMON_INSTRUCTIONS" MODIFY ("OP_CODE" NOT NULL ENABLE);
2497
  ALTER TABLE "DAEMON_INSTRUCTIONS" MODIFY ("DAEMON_INSTRUCTIONS_ID" NOT NULL ENABLE);
4040 dpurdie 2498
/
2499
--------------------------------------------------------
4211 dpurdie 2500
--  Constraints for Table WORK_IN_PROGRESS
4040 dpurdie 2501
--------------------------------------------------------
2502
 
4211 dpurdie 2503
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2504
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("PV_ID" NOT NULL ENABLE);
2505
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2506
/
2507
--------------------------------------------------------
4308 dpurdie 2508
--  Constraints for Table BUILD_ENV_DOCUMENTS
2509
--------------------------------------------------------
4040 dpurdie 2510
 
4211 dpurdie 2511
  ALTER TABLE "BUILD_ENV_DOCUMENTS" MODIFY ("DOC_NUM" NOT NULL ENABLE);
2512
  ALTER TABLE "BUILD_ENV_DOCUMENTS" MODIFY ("BE_ID" NOT NULL ENABLE);
4040 dpurdie 2513
/
4308 dpurdie 2514
--------------------------------------------------------
4211 dpurdie 2515
--  Constraints for Table BUILD_ORDER
4040 dpurdie 2516
--------------------------------------------------------
2517
 
4211 dpurdie 2518
  ALTER TABLE "BUILD_ORDER" MODIFY ("PV_ID" NOT NULL ENABLE);
2519
  ALTER TABLE "BUILD_ORDER" MODIFY ("STEP_NUM" NOT NULL ENABLE);
2520
  ALTER TABLE "BUILD_ORDER" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2521
/
4308 dpurdie 2522
--------------------------------------------------------
2523
--  Constraints for Table PACKAGE_DEPENDENCIES
2524
--------------------------------------------------------
4040 dpurdie 2525
 
4211 dpurdie 2526
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("BUILD_TYPE" NOT NULL ENABLE);
2527
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("DPKG_ID" NOT NULL ENABLE);
2528
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2529
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("DPV_ID" NOT NULL ENABLE);
2530
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2531
/
4308 dpurdie 2532
--------------------------------------------------------
2533
--  Constraints for Table PROCESSES
2534
--------------------------------------------------------
4040 dpurdie 2535
 
4211 dpurdie 2536
  ALTER TABLE "PROCESSES" ADD CONSTRAINT "PROCESSES_PK" PRIMARY KEY ("PROC_ID") ENABLE;
2537
  ALTER TABLE "PROCESSES" MODIFY ("PROC_NAME" NOT NULL ENABLE);
2538
  ALTER TABLE "PROCESSES" MODIFY ("PROC_ID" NOT NULL ENABLE);
4040 dpurdie 2539
/
4308 dpurdie 2540
--------------------------------------------------------
2541
--  Constraints for Table BUILD_ENVIRONMENTS
2542
--------------------------------------------------------
4040 dpurdie 2543
 
4211 dpurdie 2544
  ALTER TABLE "BUILD_ENVIRONMENTS" ADD CONSTRAINT "PK_BUILD_ENVIRONMENTS" PRIMARY KEY ("BE_ID") ENABLE;
2545
  ALTER TABLE "BUILD_ENVIRONMENTS" MODIFY ("BE_NAME" NOT NULL ENABLE);
2546
  ALTER TABLE "BUILD_ENVIRONMENTS" MODIFY ("BE_ID" NOT NULL ENABLE);
4040 dpurdie 2547
/
4308 dpurdie 2548
--------------------------------------------------------
2549
--  Constraints for Table DEPRECATED_PACKAGES
2550
--------------------------------------------------------
4040 dpurdie 2551
 
4211 dpurdie 2552
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("COMMENTS" NOT NULL ENABLE);
2553
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2554
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2555
/
2556
--------------------------------------------------------
2557
--  Ref Constraints for Table ABT_ACTION_LOG
2558
--------------------------------------------------------
2559
 
2560
  ALTER TABLE "ABT_ACTION_LOG" ADD FOREIGN KEY ("RCON_ID")
2561
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2562
/
2563
--------------------------------------------------------
2564
--  Ref Constraints for Table ACTION_LOG
2565
--------------------------------------------------------
2566
 
2567
  ALTER TABLE "ACTION_LOG" ADD CONSTRAINT "REFACTION_TYPE48" FOREIGN KEY ("ACTTYPE_ID")
2568
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2569
/
2570
--------------------------------------------------------
2571
--  Ref Constraints for Table ADDITIONAL_NOTES
2572
--------------------------------------------------------
2573
 
2574
  ALTER TABLE "ADDITIONAL_NOTES" ADD CONSTRAINT "FK_ADDITION_REF_PV_ID" FOREIGN KEY ("PV_ID")
2575
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2576
/
2577
--------------------------------------------------------
2578
--  Ref Constraints for Table ADVISORY_RIPPLE
2579
--------------------------------------------------------
2580
 
2581
  ALTER TABLE "ADVISORY_RIPPLE" ADD FOREIGN KEY ("RTAG_ID")
2582
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2583
  ALTER TABLE "ADVISORY_RIPPLE" ADD FOREIGN KEY ("PV_ID")
2584
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2585
/
2586
--------------------------------------------------------
2587
--  Ref Constraints for Table AUTOBUILD_FAILURE
2588
--------------------------------------------------------
2589
 
2590
  ALTER TABLE "AUTOBUILD_FAILURE" ADD FOREIGN KEY ("PROJ_ID")
2591
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2592
  ALTER TABLE "AUTOBUILD_FAILURE" ADD FOREIGN KEY ("VIEW_ID")
2593
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2594
/
2595
--------------------------------------------------------
2596
--  Ref Constraints for Table BUILD_ENV_DOCUMENTS
2597
--------------------------------------------------------
2598
 
2599
  ALTER TABLE "BUILD_ENV_DOCUMENTS" ADD CONSTRAINT "FK_BUILD_E_DOCS_REF_BUILD_ENV" FOREIGN KEY ("BE_ID")
2600
	  REFERENCES "BUILD_ENVIRONMENTS" ("BE_ID") ENABLE;
2601
/
2602
--------------------------------------------------------
2603
--  Ref Constraints for Table BUILD_MACHINE_CONFIG
2604
--------------------------------------------------------
2605
 
2606
  ALTER TABLE "BUILD_MACHINE_CONFIG" ADD CONSTRAINT "FK_BM_GBE_ID" FOREIGN KEY ("GBE_ID")
2607
	  REFERENCES "GBE_MACHTYPE" ("GBE_ID") ENABLE;
2608
/
2609
--------------------------------------------------------
2610
--  Ref Constraints for Table BUILD_ORDER
2611
--------------------------------------------------------
2612
 
2613
  ALTER TABLE "BUILD_ORDER" ADD CONSTRAINT "FK_BO_PV_ID" FOREIGN KEY ("PV_ID")
2614
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") DISABLE;
2615
  ALTER TABLE "BUILD_ORDER" ADD CONSTRAINT "FK_BO_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2616
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2617
/
2618
--------------------------------------------------------
2619
--  Ref Constraints for Table BUILD_STANDARDS_ADDENDUM
2620
--------------------------------------------------------
2621
 
2622
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_R01" FOREIGN KEY ("BS_ID")
2623
	  REFERENCES "BUILD_STANDARDS" ("BS_ID") ENABLE;
2624
/
2625
--------------------------------------------------------
2626
--  Ref Constraints for Table CODE_REVIEWS
2627
--------------------------------------------------------
2628
 
2629
  ALTER TABLE "CODE_REVIEWS" ADD CONSTRAINT "FK_CODE_REV_REF_PV_ID" FOREIGN KEY ("PV_ID")
2630
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2631
/
2632
--------------------------------------------------------
2633
--  Ref Constraints for Table CODE_REVIEW_URL
2634
--------------------------------------------------------
2635
 
2636
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PACKAGE_V_FK1" FOREIGN KEY ("PV_ID")
2637
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2638
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PROJECT_V_FK1" FOREIGN KEY ("PROJ_ID")
2639
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2640
/
2641
--------------------------------------------------------
2642
--  Ref Constraints for Table CQ_ISSUES
2643
--------------------------------------------------------
2644
 
2645
  ALTER TABLE "CQ_ISSUES" ADD CONSTRAINT "FK_CQ_PV_ID" FOREIGN KEY ("PV_ID")
2646
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2647
/
2648
--------------------------------------------------------
2649
--  Ref Constraints for Table DAEMON_ACTION_LOG
2650
--------------------------------------------------------
2651
 
2652
  ALTER TABLE "DAEMON_ACTION_LOG" ADD FOREIGN KEY ("RCON_ID")
2653
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2654
  ALTER TABLE "DAEMON_ACTION_LOG" ADD FOREIGN KEY ("ACTTYPE_ID")
2655
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2656
/
2657
--------------------------------------------------------
2658
--  Ref Constraints for Table DAEMON_INSTRUCTIONS
2659
--------------------------------------------------------
2660
 
2661
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_PV_ID_FK" FOREIGN KEY ("PV_ID")
2662
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2663
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_RTAG_ID_FK" FOREIGN KEY ("RTAG_ID")
2664
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2665
/
2666
--------------------------------------------------------
2667
--  Ref Constraints for Table DASH_BOARD
2668
--------------------------------------------------------
2669
 
2670
  ALTER TABLE "DASH_BOARD" ADD FOREIGN KEY ("PROJ_ID")
2671
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2672
  ALTER TABLE "DASH_BOARD" ADD FOREIGN KEY ("RTAG_ID")
2673
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2674
/
2675
--------------------------------------------------------
2676
--  Ref Constraints for Table DO_NOT_RIPPLE
2677
--------------------------------------------------------
2678
 
2679
  ALTER TABLE "DO_NOT_RIPPLE" ADD FOREIGN KEY ("PV_ID")
2680
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2681
  ALTER TABLE "DO_NOT_RIPPLE" ADD FOREIGN KEY ("RTAG_ID")
2682
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2683
/
2684
--------------------------------------------------------
2685
--  Ref Constraints for Table GBE_MACHTYPE
2686
--------------------------------------------------------
2687
 
2688
  ALTER TABLE "GBE_MACHTYPE" ADD CONSTRAINT "GBE_MACHTYPE_BUILD_MACHIN_FK1" FOREIGN KEY ("BM_ID")
2689
	  REFERENCES "BUILD_MACHINES" ("BM_ID") ENABLE;
2690
/
2691
--------------------------------------------------------
2692
--  Ref Constraints for Table IGNORE_WARNINGS
2693
--------------------------------------------------------
2694
 
2695
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_DPV_ID" FOREIGN KEY ("DPV_ID")
2696
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2697
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_PV_ID" FOREIGN KEY ("PV_ID")
2698
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2699
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2700
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2701
/
2702
--------------------------------------------------------
2703
--  Ref Constraints for Table JIRA_ISSUES
2704
--------------------------------------------------------
2705
 
2706
  ALTER TABLE "JIRA_ISSUES" ADD CONSTRAINT "FK_JIRA_PV_ID" FOREIGN KEY ("PV_ID")
2707
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2708
/
2709
--------------------------------------------------------
2710
--  Ref Constraints for Table LICENCING
2711
--------------------------------------------------------
2712
 
2713
  ALTER TABLE "LICENCING" ADD FOREIGN KEY ("PV_ID")
2714
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2715
  ALTER TABLE "LICENCING" ADD FOREIGN KEY ("LICENCE")
2716
	  REFERENCES "LICENCES" ("LICENCE") ENABLE;
2717
/
2718
--------------------------------------------------------
2719
--  Ref Constraints for Table MEMBERS_GROUP
2720
--------------------------------------------------------
2721
 
2722
  ALTER TABLE "MEMBERS_GROUP" ADD FOREIGN KEY ("GROUP_EMAIL_ID")
2723
	  REFERENCES "AUTOBUILD_FAILURE" ("GROUP_EMAIL_ID") ENABLE;
2724
/
2725
--------------------------------------------------------
2726
--  Ref Constraints for Table NOTIFICATION_HISTORY
2727
--------------------------------------------------------
2728
 
2729
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "FK_NH_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2730
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2731
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "FK_NK_PV_ID" FOREIGN KEY ("PV_ID")
2732
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") DISABLE;
2733
/
2734
--------------------------------------------------------
2735
--  Ref Constraints for Table PACKAGE_BUILD_ENV
2736
--------------------------------------------------------
2737
 
2738
  ALTER TABLE "PACKAGE_BUILD_ENV" ADD CONSTRAINT "FK_PKG_BUILD_E_REF_BUILD_ENV" FOREIGN KEY ("BE_ID")
2739
	  REFERENCES "BUILD_ENVIRONMENTS" ("BE_ID") ENABLE;
2740
  ALTER TABLE "PACKAGE_BUILD_ENV" ADD CONSTRAINT "FK_PKG_BUILD_E_REF_PKG_VERSION" FOREIGN KEY ("PV_ID")
2741
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2742
/
2743
--------------------------------------------------------
2744
--  Ref Constraints for Table PACKAGE_BUILD_INFO
2745
--------------------------------------------------------
2746
 
2747
  ALTER TABLE "PACKAGE_BUILD_INFO" ADD FOREIGN KEY ("PV_ID")
2748
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2749
  ALTER TABLE "PACKAGE_BUILD_INFO" ADD FOREIGN KEY ("BM_ID")
2750
	  REFERENCES "BUILD_MACHINES" ("BM_ID") ENABLE;
2751
/
2752
--------------------------------------------------------
2753
--  Ref Constraints for Table PACKAGE_DOCUMENTS
2754
--------------------------------------------------------
2755
 
2756
  ALTER TABLE "PACKAGE_DOCUMENTS" ADD CONSTRAINT "FK_PKGDOCS_REF_PV" FOREIGN KEY ("PV_ID")
2757
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2758
/
2759
--------------------------------------------------------
2760
--  Ref Constraints for Table PACKAGE_INTEREST
2761
--------------------------------------------------------
2762
 
2763
  ALTER TABLE "PACKAGE_INTEREST" ADD FOREIGN KEY ("PROJ_ID")
2764
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2765
/
2766
--------------------------------------------------------
2767
--  Ref Constraints for Table PACKAGE_METRICS
2768
--------------------------------------------------------
2769
 
2770
  ALTER TABLE "PACKAGE_METRICS" ADD CONSTRAINT "FK_PACKAGE_METRICS_PV_ID" FOREIGN KEY ("PV_ID")
2771
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2772
/
2773
--------------------------------------------------------
2774
--  Ref Constraints for Table PACKAGE_PATCHES
2775
--------------------------------------------------------
2776
 
2777
  ALTER TABLE "PACKAGE_PATCHES" ADD CONSTRAINT "FK_PP_PATCH_ID" FOREIGN KEY ("PATCH_ID")
2778
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2779
  ALTER TABLE "PACKAGE_PATCHES" ADD CONSTRAINT "FK_PP_PV_ID" FOREIGN KEY ("PV_ID")
2780
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2781
/
2782
--------------------------------------------------------
2783
--  Ref Constraints for Table PACKAGE_PROCESSES
2784
--------------------------------------------------------
2785
 
2786
  ALTER TABLE "PACKAGE_PROCESSES" ADD CONSTRAINT "PACKAGE_PROCESSES_R01" FOREIGN KEY ("PV_ID")
2787
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2788
  ALTER TABLE "PACKAGE_PROCESSES" ADD CONSTRAINT "PACKAGE_PROCESSES_R02" FOREIGN KEY ("PROC_ID")
2789
	  REFERENCES "PROCESSES" ("PROC_ID") ENABLE;
2790
/
2791
--------------------------------------------------------
2792
--  Ref Constraints for Table PACKAGE_VERSIONS
2793
--------------------------------------------------------
2794
 
2795
  ALTER TABLE "PACKAGE_VERSIONS" ADD CONSTRAINT "PACKAGE_VERSIONS_VCS_TYPE" FOREIGN KEY ("VCS_TYPE_ID")
2796
	  REFERENCES "VCS_TYPE" ("VCS_TYPE_ID") ENABLE;
2797
  ALTER TABLE "PACKAGE_VERSIONS" ADD FOREIGN KEY ("BS_ID")
2798
	  REFERENCES "BUILD_STANDARDS" ("BS_ID") ENABLE;
2799
/
2800
--------------------------------------------------------
2801
--  Ref Constraints for Table PEGGED_VERSIONS
2802
--------------------------------------------------------
2803
 
2804
  ALTER TABLE "PEGGED_VERSIONS" ADD CONSTRAINT "PEGGED_VERSIONS_PACKAG_FK1" FOREIGN KEY ("PV_ID")
2805
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2806
  ALTER TABLE "PEGGED_VERSIONS" ADD CONSTRAINT "PEGGED_VERSIONS_RELEAS_FK1" FOREIGN KEY ("RTAG_ID")
2807
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2808
/
2809
--------------------------------------------------------
2810
--  Ref Constraints for Table PLANNED
2811
--------------------------------------------------------
2812
 
2813
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFPACKAGE_VERSIONS54" FOREIGN KEY ("PV_ID")
2814
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2815
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFRELEASE_TAGS53" FOREIGN KEY ("RTAG_ID")
2816
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2817
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFVIEWS55" FOREIGN KEY ("VIEW_ID")
2818
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2819
/
2820
--------------------------------------------------------
2821
--  Ref Constraints for Table PLANNED_VERSIONS
2822
--------------------------------------------------------
2823
 
2824
  ALTER TABLE "PLANNED_VERSIONS" ADD FOREIGN KEY ("PKG_ID")
2825
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2826
/
2827
--------------------------------------------------------
2828
--  Ref Constraints for Table PRODUCT_COMPONENTS
2829
--------------------------------------------------------
2830
 
2831
  ALTER TABLE "PRODUCT_COMPONENTS" ADD CONSTRAINT "REFPACKAGE_VERSIONS49" FOREIGN KEY ("PV_ID")
2832
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2833
/
2834
--------------------------------------------------------
2835
--  Ref Constraints for Table PROJECT_ACTION_LOG
2836
--------------------------------------------------------
2837
 
2838
  ALTER TABLE "PROJECT_ACTION_LOG" ADD CONSTRAINT "REFACTION_TYPE63" FOREIGN KEY ("ACTTYPE_ID")
2839
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2840
  ALTER TABLE "PROJECT_ACTION_LOG" ADD FOREIGN KEY ("RTAG_ID")
2841
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") DISABLE;
2842
/
2843
--------------------------------------------------------
2844
--  Ref Constraints for Table RELEASE_COMPONENTS
2845
--------------------------------------------------------
2846
 
2847
  ALTER TABLE "RELEASE_COMPONENTS" ADD CONSTRAINT "FK_RCONT_PV_ID" FOREIGN KEY ("PV_ID")
2848
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2849
/
2850
--------------------------------------------------------
2851
--  Ref Constraints for Table RELEASE_CONFIG
2852
--------------------------------------------------------
2853
 
2854
  ALTER TABLE "RELEASE_CONFIG" ADD FOREIGN KEY ("RTAG_ID")
2855
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2856
  ALTER TABLE "RELEASE_CONFIG" ADD FOREIGN KEY ("GBE_ID")
2857
	  REFERENCES "GBE_MACHTYPE" ("GBE_ID") ENABLE;
2858
/
2859
--------------------------------------------------------
2860
--  Ref Constraints for Table RELEASE_CONTENT
2861
--------------------------------------------------------
2862
 
2863
  ALTER TABLE "RELEASE_CONTENT" ADD FOREIGN KEY ("PKG_ID")
2864
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2865
  ALTER TABLE "RELEASE_CONTENT" ADD FOREIGN KEY ("PRODUCT_STATE")
2866
	  REFERENCES "PRODUCT_STATES" ("STATE_ID") ENABLE;
2867
/
2868
--------------------------------------------------------
2869
--  Ref Constraints for Table RELEASE_LINKS
2870
--------------------------------------------------------
2871
 
2872
  ALTER TABLE "RELEASE_LINKS" ADD CONSTRAINT "REFRELEASE_TAGS56" FOREIGN KEY ("RTAG_ID")
2873
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2874
  ALTER TABLE "RELEASE_LINKS" ADD CONSTRAINT "REFRELEASE_TAGS58" FOREIGN KEY ("REF_RTAG_ID")
2875
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2876
/
2877
--------------------------------------------------------
2878
--  Ref Constraints for Table RELEASE_METRICS
2879
--------------------------------------------------------
2880
 
2881
  ALTER TABLE "RELEASE_METRICS" ADD CONSTRAINT "FK_RELEASE_METRICS_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2882
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2883
/
2884
--------------------------------------------------------
2885
--  Ref Constraints for Table RUNTIME_DEPENDENCIES
2886
--------------------------------------------------------
2887
 
2888
  ALTER TABLE "RUNTIME_DEPENDENCIES" ADD CONSTRAINT "FK_RTD_PV_ID" FOREIGN KEY ("PV_ID")
2889
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2890
  ALTER TABLE "RUNTIME_DEPENDENCIES" ADD CONSTRAINT "FK_RTD_RTD_ID" FOREIGN KEY ("RTD_ID")
2891
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2892
/
2893
--------------------------------------------------------
2894
--  Ref Constraints for Table RUN_LEVEL
2895
--------------------------------------------------------
2896
 
2897
  ALTER TABLE "RUN_LEVEL" ADD FOREIGN KEY ("RCON_ID")
2898
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2899
  ALTER TABLE "RUN_LEVEL" ADD FOREIGN KEY ("CURRENT_PKG_ID_BEING_BUILT")
2900
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2901
/
2902
--------------------------------------------------------
2903
--  Ref Constraints for Table UNIT_TESTS
2904
--------------------------------------------------------
2905
 
2906
  ALTER TABLE "UNIT_TESTS" ADD CONSTRAINT "FK_UT_REF_PV_ID" FOREIGN KEY ("PV_ID")
2907
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2908
  ALTER TABLE "UNIT_TESTS" ADD CONSTRAINT "FK_UT_REF_TEST_TYPES" FOREIGN KEY ("TEST_TYPES_FK")
2909
	  REFERENCES "TEST_TYPES" ("TEST_TYPE_ID") ENABLE;
2910
/
2911
--------------------------------------------------------
2912
--  Ref Constraints for Table VTREES_WORLD
2913
--------------------------------------------------------
2914
 
2915
  ALTER TABLE "VTREES_WORLD" ADD CONSTRAINT "FK_VW_REF_VTREE_ID" FOREIGN KEY ("VTREE_ID")
2916
	  REFERENCES "VTREES" ("VTREE_ID") ENABLE;
2917
  ALTER TABLE "VTREES_WORLD" ADD CONSTRAINT "FK_VW_REF_WORLD_ID" FOREIGN KEY ("WORLD_ID")
2918
	  REFERENCES "WORLDS" ("WORLD_ID") ENABLE;
2919
/
2920
--------------------------------------------------------
2921
--  Ref Constraints for Table WORK_IN_PROGRESS
2922
--------------------------------------------------------
2923
 
2924
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFPACKAGE_VERSIONS51" FOREIGN KEY ("PV_ID")
2925
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2926
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFRELEASE_TAGS50" FOREIGN KEY ("RTAG_ID")
2927
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2928
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFVIEWS52" FOREIGN KEY ("VIEW_ID")
2929
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2930
/
2931
--------------------------------------------------------
2932
--  DDL for Function CAN_EDIT_PKG_IN_PROJECT
2933
--------------------------------------------------------
2934
 
1373 dpurdie 2935
  CREATE OR REPLACE FUNCTION "CAN_EDIT_PKG_IN_PROJECT" ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
2936
 
2937
/* ---------------------------------------------------------------------------
2938
    Version: 3.0.0
2939
   --------------------------------------------------------------------------- */
2940
 
2941
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
2942
	ProjId NUMBER;
2943
	RowCount NUMBER;
2944
	cReleaseMode CHAR(1);
2945
 
2946
BEGIN
2947
 
2948
	--RETURN 1;
2949
 
2950
 
2951
	/*--------------- Business Rules Here -------------------*/
2952
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
2953
		RETURN 0;
2954
	END IF;
2955
	/*-------------------------------------------------------*/
2956
 
2957
 
2958
 
2959
 
2960
 
2961
 
2962
	/*-- First Check. See if package is used through release reference --*/
2963
	SELECT COUNT(rc.PV_ID) INTO RowCount
2964
	  FROM (
2965
	  		SELECT rl.REF_RTAG_ID
2966
			  FROM RELEASE_LINKS rl
2967
			 WHERE rl.RTAG_ID = nRtagId
2968
	  		) rl,
2969
			RELEASE_CONTENT rc
2970
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
2971
	    AND rc.PV_ID = nPvId;			
2972
 
2973
 
2974
	-- Decide if package can be edited  
2975
	IF RowCount > 0 THEN
2976
		-- Package is referenced from other release, hence cannot be edited
2977
		RETURN 0;	
2978
 
2979
	ELSE
2980
 
2981
		-- Check is only done for releases in restrictive mode
2982
		SELECT rt.OFFICIAL INTO cReleaseMode
2983
		  FROM RELEASE_TAGS rt
2984
		 WHERE rt.RTAG_ID = nRtagId;
2985
 
2986
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
2987
			-- Do not do any firther checking,
2988
			-- Package is editable here
2989
			RETURN 1;
2990
		END IF;	
2991
 
2992
	END IF;
2993
 
2994
 
2995
 
2996
 
2997
	/*-- Further checking --*/
2998
	-- Get proj_id
2999
	SELECT rt.PROJ_ID  INTO  ProjId
3000
	  FROM RELEASE_TAGS rt
3001
	 WHERE rt.RTAG_ID = nRtagId;
3002
 
3003
 
3004
 
3005
	BEGIN
3006
 
3007
		-- Get v_ext
3008
		SELECT pv.V_EXT  INTO  Vext
3009
		  FROM PACKAGE_VERSIONS pv
3010
		 WHERE pv.PV_ID = nPvId;  
3011
 
3012
		EXCEPTION
3013
	    	WHEN NO_DATA_FOUND THEN
3014
	       		Vext := NULL;
3015
 
3016
	END;	 
3017
 
3018
 
3019
	--Temp Hack for Step Project
3020
	IF ProjId != 281 THEN
3021
		-- Find if package can be edited in this project
3022
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
3023
	 		FROM PROJECT_EXTENTIONS pe
3024
			WHERE pe.PROJ_ID != ProjId  
3025
	  		AND pe.EXT_NAME = VExt;
3026
	END IF;		
3027
 
3028
 
3029
	-- Decide if package can be edited  
3030
	IF RowCount > 0 THEN
3031
		-- Package extension is found in other projects, hece NOT EDITABLE
3032
		RETURN 0;
3033
	ELSE
3034
		RETURN 1;	
3035
	END IF;
3036
 
3037
 
3038
END CAN_EDIT_PKG_IN_PROJECT;
4040 dpurdie 3039
 
1374 dpurdie 3040
/
1373 dpurdie 3041
 
4040 dpurdie 3042
/
3043
--------------------------------------------------------
3044
--  DDL for Function DT_ADDUSEROBJECT
3045
--------------------------------------------------------
3046
 
3959 dpurdie 3047
  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 3048
 
3959 dpurdie 3049
/
3050
 
4040 dpurdie 3051
/
3052
--------------------------------------------------------
3053
--  DDL for Function GET_AUTOMATED_LABEL
3054
--------------------------------------------------------
3055
 
3959 dpurdie 3056
  CREATE OR REPLACE FUNCTION "GET_AUTOMATED_LABEL" ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
3057
 
3058
/* ---------------------------------------------------------------------------
3059
    Version: 3.0.0
3060
   --------------------------------------------------------------------------- */
3061
 
4211 dpurdie 3062
  sPkgName VARCHAR2(4000);
3063
  sPkgVersion VARCHAR2(4000);
3064
  sVext VARCHAR2(4000);
3065
  cChangeType CHAR;
3066
  cBuildType CHAR;
3067
 
3959 dpurdie 3068
 
1373 dpurdie 3069
BEGIN
3070
 
3959 dpurdie 3071
	-- Get package details
4211 dpurdie 3072
	SELECT pkg.PKG_NAME, pv.V_EXT, pv.build_type, pv.change_type, pv.pkg_version INTO sPkgName, sVext,cBuildType, cChangeType, sPkgVersion  
3959 dpurdie 3073
	  FROM PACKAGE_VERSIONS pv,
3074
	  	   PACKAGES pkg
3075
	 WHERE pv.PKG_ID = pkg.PKG_ID
3076
	   AND pv.PV_ID = nPvId;
3077
 
4211 dpurdie 3078
  -- Generate Label for manually built package
3079
  If cBuildType = 'M' Then
3080
    return (sPkgName ||'_'|| sPkgVersion );
3081
  End If;
3959 dpurdie 3082
 
4211 dpurdie 3083
  -- Generate Label for automated build with specified package version
3084
  IF cchangetype = 'F' Then
3085
    return (sPkgName ||'_'|| sPkgVersion ||'.WIP');
3086
  End If;
3087
 
3959 dpurdie 3088
	-- Generate Label for automated build
3089
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
3090
 
3091
END GET_AUTOMATED_LABEL;
4040 dpurdie 3092
 
1374 dpurdie 3093
/
1373 dpurdie 3094
 
4040 dpurdie 3095
/
3096
--------------------------------------------------------
3097
--  DDL for Function GET_BUILD_NUMBER
3098
--------------------------------------------------------
3099
 
1373 dpurdie 3100
  CREATE OR REPLACE FUNCTION "GET_BUILD_NUMBER" (s_version IN VARCHAR2) RETURN VARCHAR2
3101
IS
3102
/* ---------------------------------------------------------------------------
3103
    Version: 1.0.0
3104
   --------------------------------------------------------------------------- */
3105
BEGIN
3106
    IF is_number(s_version) AND LENGTH(s_version) > 3
3107
    THEN
3108
        RETURN MOD(TO_NUMBER(s_version), 1000);
3109
    ELSE
3110
        RETURN 0;
3111
    END IF;
3112
END get_build_number;
4040 dpurdie 3113
 
1374 dpurdie 3114
/
1373 dpurdie 3115
 
4040 dpurdie 3116
/
3117
--------------------------------------------------------
3118
--  DDL for Function GET_PATCH_VERSION
3119
--------------------------------------------------------
3120
 
3959 dpurdie 3121
  CREATE OR REPLACE FUNCTION "GET_PATCH_VERSION" (s_version IN VARCHAR2) RETURN VARCHAR2
1373 dpurdie 3122
IS
3123
/* ---------------------------------------------------------------------------
3959 dpurdie 3124
    Version: 1.0.0
1373 dpurdie 3125
   --------------------------------------------------------------------------- */
3126
BEGIN
3959 dpurdie 3127
    IF is_number(s_version) AND LENGTH(s_version) > 3
1373 dpurdie 3128
    THEN
3959 dpurdie 3129
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
1373 dpurdie 3130
    ELSE
3959 dpurdie 3131
        RETURN s_version;
1373 dpurdie 3132
    END IF;
3959 dpurdie 3133
END get_patch_version;
4040 dpurdie 3134
 
1374 dpurdie 3135
/
1373 dpurdie 3136
 
4040 dpurdie 3137
/
3138
--------------------------------------------------------
3139
--  DDL for Function GET_PV_FIRST_MODIFIED
3140
--------------------------------------------------------
3141
 
3959 dpurdie 3142
  CREATE OR REPLACE FUNCTION "GET_PV_FIRST_MODIFIED" (v_pv_id NUMBER) RETURN DATE IS
3143
  ret DATE;
1373 dpurdie 3144
BEGIN
3959 dpurdie 3145
  SELECT q.modified_stamp
3146
    INTO ret
3147
    FROM (
3148
            SELECT level AS lvl, pvc.pv_id, pvc.modified_stamp, pvc.change_type
3149
              FROM package_versions pvc
3150
              START WITH pvc.pv_id = v_pv_id
3151
            CONNECT BY NOCYCLE pvc.pv_id = PRIOR pvc.last_pv_id
3152
          ) Q
3153
  WHERE q.change_type IS NOT NULL
3154
    AND rownum = 1
3155
  ORDER BY q.lvl;
3156
 
3157
  RETURN ret;
3158
END;
4040 dpurdie 3159
 
1374 dpurdie 3160
/
1373 dpurdie 3161
 
4040 dpurdie 3162
/
3163
--------------------------------------------------------
3164
--  DDL for Function GET_V_EXT
3165
--------------------------------------------------------
3166
 
3959 dpurdie 3167
  CREATE OR REPLACE FUNCTION "GET_V_EXT" (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
3168
 
1373 dpurdie 3169
/* ---------------------------------------------------------------------------
3959 dpurdie 3170
    Version: 3.0.0
1373 dpurdie 3171
   --------------------------------------------------------------------------- */
3959 dpurdie 3172
 
3173
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
3174
    lastDot NUMBER;
3175
 
1373 dpurdie 3176
BEGIN
3959 dpurdie 3177
    lastDot := INSTR (SSpkg_version, '.', -1);
3178
 
3179
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
1373 dpurdie 3180
    THEN
3959 dpurdie 3181
        -- YES dot separator found --
3182
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
3183
 
3184
        IF IS_VERSION_EXTENSION ( SSV_EXT )
3185
        THEN
3186
            RETURN SSV_EXT;
3187
        ELSE
3188
            RETURN NULL;
3189
        END IF;
3190
 
1373 dpurdie 3191
    ELSE
3959 dpurdie 3192
        -- NO dot separator found --
3193
        RETURN NULL;
1373 dpurdie 3194
    END IF;
3959 dpurdie 3195
 
3196
END GET_V_EXT;
4040 dpurdie 3197
 
1374 dpurdie 3198
/
1373 dpurdie 3199
 
4040 dpurdie 3200
/
3201
--------------------------------------------------------
3202
--  DDL for Function IN_LIST_NUMBER
3203
--------------------------------------------------------
3204
 
3959 dpurdie 3205
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
1373 dpurdie 3206
 
3207
/* ---------------------------------------------------------------------------
3208
    Version: 3.0.0
3209
   --------------------------------------------------------------------------- */
3210
 
3211
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
3212
	pos				   NUMBER;
3959 dpurdie 3213
	in_list			   VARCHAR2(4000) := sInList || ',';
1373 dpurdie 3214
 
3215
BEGIN
3216
 
3217
	IF NOT sInList IS NULL
3218
	THEN
3219
		LOOP
3220
	        EXIT WHEN in_list IS NULL;
3221
	        pos := INSTR ( in_list, ',' );
3222
	        sync_rtags.extend;
3223
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3224
	        in_list := SUBSTR ( in_list, pos+1 );
3225
		END LOOP;
3226
	END IF;
3227
 
3228
	RETURN sync_rtags;
3959 dpurdie 3229
END IN_LIST_NUMBER;
4040 dpurdie 3230
 
1374 dpurdie 3231
/
1373 dpurdie 3232
 
4040 dpurdie 3233
/
3234
--------------------------------------------------------
3235
--  DDL for Function IN_LIST_NUMBER2
3236
--------------------------------------------------------
3237
 
3959 dpurdie 3238
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER2" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
1373 dpurdie 3239
 
3240
/* ---------------------------------------------------------------------------
3241
    Version: 3.0.0
3242
   --------------------------------------------------------------------------- */
3243
 
3244
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
3245
	pos				   NUMBER;
3959 dpurdie 3246
	in_list			   VARCHAR2(32767) := sInList || ',';
1373 dpurdie 3247
 
3248
BEGIN
3249
 
3250
	IF NOT sInList IS NULL
3251
	THEN
3252
		LOOP
3253
	        EXIT WHEN in_list IS NULL;
3254
	        pos := INSTR ( in_list, ',' );
3255
	        sync_rtags.extend;
3256
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3257
	        in_list := SUBSTR ( in_list, pos+1 );
3258
		END LOOP;
3259
	END IF;
3260
 
3261
	RETURN sync_rtags;
3959 dpurdie 3262
END IN_LIST_NUMBER2;
4040 dpurdie 3263
 
1374 dpurdie 3264
/
1373 dpurdie 3265
 
4040 dpurdie 3266
/
3267
--------------------------------------------------------
3268
--  DDL for Function IN_LIST_VARCHAR2
3269
--------------------------------------------------------
3270
 
1373 dpurdie 3271
  CREATE OR REPLACE FUNCTION "IN_LIST_VARCHAR2" ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
3272
 
3273
/* ---------------------------------------------------------------------------
3274
    Version: 3.1
3275
   --------------------------------------------------------------------------- */
3276
 
3277
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
3278
	pos				   NUMBER;
3279
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
3280
	val				   VARCHAR2(4000);
3281
 
3282
BEGIN
3283
 
3284
	IF NOT sInList IS NULL
3285
	THEN
3286
		LOOP
3287
	        EXIT WHEN in_list IS NULL;
3288
	        pos := INSTR ( in_list, cSeparator );
3289
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3290
 
3291
			IF (NOT val IS NULL) THEN
3292
		        cItemCollection.extend;
3293
		        cItemCollection(cItemCollection.count) := val;
3294
			END IF;
3295
 
3296
	        in_list := SUBSTR ( in_list, pos+1 );
3297
		END LOOP;
3298
	END IF;
3299
 
3300
	RETURN cItemCollection;
3301
END IN_LIST_VARCHAR2;
4040 dpurdie 3302
 
1374 dpurdie 3303
/
1373 dpurdie 3304
 
4040 dpurdie 3305
/
3306
--------------------------------------------------------
3307
--  DDL for Function IS_NUMBER
3308
--------------------------------------------------------
3309
 
3959 dpurdie 3310
  CREATE OR REPLACE FUNCTION "IS_NUMBER" (p_val IN VARCHAR2) RETURN BOOLEAN
3311
IS
3312
   temp_num NUMBER;
3313
/* ---------------------------------------------------------------------------
3314
    Version: 1.0.0
3315
   --------------------------------------------------------------------------- */
3316
BEGIN
3317
   temp_num := TO_NUMBER(p_val);
3318
   RETURN true;
3319
EXCEPTION WHEN VALUE_ERROR THEN
3320
   RETURN false;
3321
END IS_NUMBER;
4040 dpurdie 3322
 
3959 dpurdie 3323
/
1373 dpurdie 3324
 
4040 dpurdie 3325
/
3326
--------------------------------------------------------
3327
--  DDL for Function IS_VERSION_EXTENSION
3328
--------------------------------------------------------
3329
 
3959 dpurdie 3330
  CREATE OR REPLACE FUNCTION "IS_VERSION_EXTENSION" (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
3331
IS
3332
/* ---------------------------------------------------------------------------
3333
    Version: 3.0.0
3334
   --------------------------------------------------------------------------- */
1373 dpurdie 3335
 
3959 dpurdie 3336
BEGIN
3337
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
3338
    THEN
3339
        RETURN FALSE;
3340
    ELSE
3341
        RETURN TRUE;
3342
    END IF;
1373 dpurdie 3343
 
3959 dpurdie 3344
END IS_VERSION_EXTENSION;
4040 dpurdie 3345
 
1374 dpurdie 3346
/
1373 dpurdie 3347
 
4040 dpurdie 3348
/
3349
--------------------------------------------------------
3350
--  DDL for Function ORA_SYSDATE
3351
--------------------------------------------------------
3352
 
3959 dpurdie 3353
  CREATE OR REPLACE FUNCTION "ORA_SYSDATE" 
3354
RETURN DATE
1373 dpurdie 3355
IS
3959 dpurdie 3356
/* ---------------------------------------------------------------------------
3357
    Version: 3.0.0
3358
   --------------------------------------------------------------------------- */
3359
BEGIN
1373 dpurdie 3360
 
3959 dpurdie 3361
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
3362
END ORA_SYSDATE;
4040 dpurdie 3363
 
3959 dpurdie 3364
/
1373 dpurdie 3365
 
4040 dpurdie 3366
/
3367
--------------------------------------------------------
3368
--  DDL for Function ORA_SYSDATETIME
3369
--------------------------------------------------------
3370
 
3959 dpurdie 3371
  CREATE OR REPLACE FUNCTION "ORA_SYSDATETIME" 
3372
RETURN DATE
3373
IS
3374
/* ---------------------------------------------------------------------------
3375
    Version: 3.0.0
3376
   --------------------------------------------------------------------------- */
3377
BEGIN
1373 dpurdie 3378
 
3959 dpurdie 3379
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
3380
END ORA_SYSDATETIME;
4040 dpurdie 3381
 
3959 dpurdie 3382
/
1373 dpurdie 3383
 
4040 dpurdie 3384
/
3385
--------------------------------------------------------
3386
--  DDL for Function PERL_DBD_TESTFUNC
3387
--------------------------------------------------------
3388
 
3959 dpurdie 3389
  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 3390
 
1374 dpurdie 3391
/
1373 dpurdie 3392
 
4040 dpurdie 3393
/
3394
--------------------------------------------------------
3395
--  DDL for Function RELEASE_MODE
3396
--------------------------------------------------------
3397
 
3959 dpurdie 3398
  CREATE OR REPLACE FUNCTION "RELEASE_MODE" ( nRtagId IN NUMBER ) RETURN CHAR IS
1373 dpurdie 3399
 
3959 dpurdie 3400
/* ---------------------------------------------------------------------------
3401
    Version: 3.0.0
3402
   --------------------------------------------------------------------------- */
1373 dpurdie 3403
 
3959 dpurdie 3404
   returnValue CHAR(1);
1373 dpurdie 3405
 
3959 dpurdie 3406
BEGIN
1373 dpurdie 3407
 
3959 dpurdie 3408
    /*--------------- Business Rules Here -------------------*/
3409
	/*-------------------------------------------------------*/
3410
 
3411
	-- Get release mode
3412
	SELECT rt.OFFICIAL INTO returnValue
3413
	  FROM RELEASE_TAGS rt
3414
	 WHERE rt.RTAG_ID = nRtagId;
3415
 
3416
	RETURN returnValue;
3417
 
3418
END RELEASE_MODE;
4040 dpurdie 3419
 
1374 dpurdie 3420
/
1373 dpurdie 3421
 
4040 dpurdie 3422
/
3423
--------------------------------------------------------
3424
--  DDL for Package PK_APP_UTILS
3425
--------------------------------------------------------
3426
 
1373 dpurdie 3427
  CREATE OR REPLACE PACKAGE "PK_APP_UTILS" IS
3428
/*
3429
------------------------------
3430
||  Last Modified:  S.Vukovic
3431
||  Modified Date:  26/Apr/2005
3432
||  Spec Version:   1.0
3433
------------------------------
3434
*/
3435
 
3436
	TYPE typeCur IS REF CURSOR;
3437
 
3438
    /*================================================================================================*/
3439
 
3440
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
3441
 
3442
	/*================================================================================================*/
3443
 
3444
END PK_APP_UTILS;
4040 dpurdie 3445
 
1374 dpurdie 3446
/
1373 dpurdie 3447
 
4040 dpurdie 3448
/
3449
--------------------------------------------------------
3450
--  DDL for Package PK_ARCHIVE
3451
--------------------------------------------------------
3452
 
3959 dpurdie 3453
  CREATE OR REPLACE PACKAGE "PK_ARCHIVE" 
1373 dpurdie 3454
IS
3959 dpurdie 3455
/*
3456
------------------------------
3457
||  Author:  Rupesh Solanki
3458
||  Date:    26 October 2006
3459
||  Version:   1.0
3460
------------------------------
3461
*/
1373 dpurdie 3462
 
3959 dpurdie 3463
   /*================================================================================================*/
3464
   PROCEDURE populate_packages_table;
3465
 
3466
   PROCEDURE populate_archive_data_table (
3467
      nrtagid   IN   release_tags.rtag_id%TYPE
3468
   );
1373 dpurdie 3469
 
3959 dpurdie 3470
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
1373 dpurdie 3471
 
3959 dpurdie 3472
   PROCEDURE migrate_rtag_to_archive_schema (
3473
      nrtagid   IN   release_tags.rtag_id%TYPE
3474
   );
1373 dpurdie 3475
 
3959 dpurdie 3476
   PROCEDURE clean_up_archive_data_table (
3477
      nrtagid   IN   release_tags.rtag_id%TYPE
3478
   );
1373 dpurdie 3479
 
3959 dpurdie 3480
   PROCEDURE write_action_log (
3481
      nuserid   IN   NUMBER,
3482
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 3483
   );
3484
/*================================================================================================*/
3959 dpurdie 3485
END pk_archive;
4040 dpurdie 3486
 
1374 dpurdie 3487
/
1373 dpurdie 3488
 
4040 dpurdie 3489
/
3490
--------------------------------------------------------
3491
--  DDL for Package PK_BUILDAPI
3492
--------------------------------------------------------
3493
 
1373 dpurdie 3494
  CREATE OR REPLACE PACKAGE "PK_BUILDAPI" 
3495
IS
3496
   /*================================================================================================*/
3497
   PROCEDURE add_product_component (
3498
      npvid           IN   NUMBER,
3499
      sosname         IN   VARCHAR2,
3500
      sorigfilepath   IN   VARCHAR2,
3501
      sfilename       IN   VARCHAR2,
3502
      sdestfilepath   IN   VARCHAR2,
3503
      nbytesize       IN   NUMBER,
3504
      scrccksum       IN   VARCHAR2
3505
   );
3506
 
3507
   PROCEDURE remove_all_product_components (
3508
      npvid     IN   NUMBER,
3509
      sosname   IN   VARCHAR2
3510
   );
3511
 
3512
   /*================================================================================================*/
3513
   FUNCTION get_osid (sosname IN VARCHAR2)
3514
      RETURN NUMBER;
3515
 
4308 dpurdie 3516
  /*================================================================================================*/
3517
    PROCEDURE update_build_service_info (
1373 dpurdie 3518
      sdatabaseserver   IN   VARCHAR2,
3519
      sarchiveserver    IN   VARCHAR2,
3520
      smailserver       IN   VARCHAR2,
3521
      smailsender       IN   VARCHAR2,
4211 dpurdie 3522
      faultmlist        IN   VARCHAR2,
1373 dpurdie 3523
      sdiskspace        IN   VARCHAR2,
3524
      ssbommanagement   IN   VARCHAR2
3525
   );
3526
 
3527
   /*================================================================================================*/
4040 dpurdie 3528
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2, sgbeclass IN NUMBER);
1373 dpurdie 3529
 
3530
   /*================================================================================================*/
3531
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
3532
 
3533
   /*================================================================================================*/
4040 dpurdie 3534
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2, sgbeclass IN NUMBER);
1373 dpurdie 3535
 
4040 dpurdie 3536
  /*================================================================================================*/
3537
   PROCEDURE add_buildmachine (sbmvalue IN VARCHAR2);
3538
 
1373 dpurdie 3539
   /*================================================================================================*/
4040 dpurdie 3540
   PROCEDURE remove_buildmachine (nbm_id IN NUMBER);
3541
 
3542
   /*================================================================================================*/
3543
   PROCEDURE update_buildmachine (nbm_id IN NUMBER, sbmvalue IN VARCHAR2);
3544
 
3545
   /*================================================================================================*/
1373 dpurdie 3546
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
4308 dpurdie 3547
 
1373 dpurdie 3548
   /*================================================================================================*/
4308 dpurdie 3549
   PROCEDURE remove_daemon (srconidlist IN VARCHAR2);
1373 dpurdie 3550
 
3551
   /*================================================================================================*/
3552
   PROCEDURE insert_schedule_info (
3553
      dschedulepause     IN   DATE,
3554
      dscheduleresume    IN   DATE,
3555
      crepeat            IN   VARCHAR2,
3556
      cindefinitepause   IN   VARCHAR2
3557
   );
3558
 
3559
   /*================================================================================================*/
3560
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
3561
 
3562
   /*================================================================================================*/
3563
   PROCEDURE set_infinite_pause;
3564
 
3565
   /*================================================================================================*/
3566
   PROCEDURE set_resume;
3567
 
3568
   /*================================================================================================*/
3569
   PROCEDURE delete_out_of_date_schedule;
3570
 
3571
   /*================================================================================================*/
3572
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
3573
 
3574
   /*================================================================================================*/
3575
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
3576
 
3577
   /*================================================================================================*/
3578
   PROCEDURE set_daemon_disable (nrconid NUMBER);
3579
 
3580
   /*================================================================================================*/
3581
   PROCEDURE set_daemon_states (nrtagid NUMBER, nstate NUMBER);
3582
 
3583
   /*================================================================================================*/
3584
   PROCEDURE mark_daemon_inst_in_progress( nInstId IN NUMBER );
3585
   /*================================================================================================*/
3586
   PROCEDURE mark_daemon_inst_completed( nInstId IN NUMBER );
3587
   /*================================================================================================*/
3588
   FUNCTION get_daemon_inst(
3589
      nRtag_id IN NUMBER,
3590
      nInst_id IN OUT NUMBER,
3591
      nOp_code IN OUT NUMBER,
3592
      nPv_id OUT NUMBER,
3593
      nUser_id OUT NUMBER,
3594
      nInProgress OUT NUMBER
3595
   ) RETURN NUMBER;
3596
   /*================================================================================================*/
3597
   PROCEDURE cleanup_stranded_daemon_insts;
3598
   /*================================================================================================*/
3599
   PROCEDURE insert_daemon_inst(
3600
      nOp_code IN NUMBER,
3601
      nRtag_id IN NUMBER,
3602
      nPv_id IN NUMBER,
3603
      nSchedDate IN DATE,
3604
      nRepeatSecs IN NUMBER,
3605
      nAddedDate IN DATE,
3606
      nUser_id IN NUMBER
3607
   );
3608
   /*================================================================================================*/
3609
   PROCEDURE del_daemon_inst( nInstId IN NUMBER );
3610
   /*================================================================================================*/
3611
   PROCEDURE del_daemon_inst_by_rtag_pvid(
3612
      nOp_code IN NUMBER,
3613
      nRtag_id IN NUMBER,
3614
      nPv_id IN NUMBER
3615
   );
3616
   /*================================================================================================*/
3617
   PROCEDURE update_daemon_inst(
3618
      nInstId IN NUMBER,
3619
      nOp_code IN NUMBER,
3620
      nRtag_id IN NUMBER,
3621
      nPv_id IN NUMBER,
3622
      nSchedDate IN DATE,
3623
      nRepeatSecs IN NUMBER,
3624
      nAddedDate IN DATE,
3625
      nUser_id IN NUMBER
3626
   );
3627
   /*================================================================================================*/
3628
   FUNCTION daemon_ops_for_rtag_pvid(
3629
      nRtag_id IN NUMBER,
3630
      nPv_id IN NUMBER
3631
   ) RETURN VARCHAR2;
3632
   /*================================================================================================*/
3633
   FUNCTION daemon_ops_for_rtag(
3634
      nRtag_id IN NUMBER
3635
   ) RETURN VARCHAR2;
3636
   /*================================================================================================*/
3637
   PROCEDURE add_daemon_config (
3638
      nrtagid           IN   NUMBER,
3639
      nbmcon_id         IN   NUMBER,
3640
      sdaemon_mode      IN   VARCHAR2,
3641
      sgbebuildfilter   IN   VARCHAR2
3642
   );
3643
   /*================================================================================================*/
3644
   PROCEDURE update_daemon_config (
3645
      nrconid           IN   NUMBER,
3646
      nbmcon_id         IN   NUMBER,
3647
      sdaemon_mode      IN   VARCHAR2,
3648
      sgbebuildfilter   IN   VARCHAR2
3649
   );
3650
 
4308 dpurdie 3651
 /*================================================================================================*/
3652
   PROCEDURE duplicate_daemon_config (
3653
      nrtagid           IN   NUMBER,
3654
      nbmcon_id         IN   NUMBER,
3655
      sdaemonhostname   IN   VARCHAR2,
3656
      ngbe_id           IN   NUMBER,
3657
      sdaemon_mode      IN   VARCHAR2,
3658
      sgbebuildfilter   IN   VARCHAR2
3659
   );
3660
 
1373 dpurdie 3661
   /*================================================================================================*/
3662
   PROCEDURE add_build_machine (
3663
      sdisplay_name          IN   VARCHAR2,
3664
      smachine_hostname      IN   VARCHAR2,
3665
      ngbeid                 IN   NUMBER,
3666
      sdescription           IN   VARCHAR2
3667
   );
3668
   /*================================================================================================*/
3669
   PROCEDURE delete_build_machine (sbmcon_id_list IN VARCHAR2);
3670
   /*================================================================================================*/
3671
   PROCEDURE update_build_machine (
3672
      nbmcon_id              IN   NUMBER,
3673
      sdisplay_name          IN   VARCHAR2,
3674
      smachine_hostname      IN   VARCHAR2,
3675
      ngbeid                 IN   NUMBER,
3676
      sdescription           IN   VARCHAR2
3677
   );
3678
END pk_buildapi;
4040 dpurdie 3679
 
1374 dpurdie 3680
/
1373 dpurdie 3681
 
4040 dpurdie 3682
/
3683
--------------------------------------------------------
3684
--  DDL for Package PK_ENVIRONMENT
3685
--------------------------------------------------------
3686
 
3959 dpurdie 3687
  CREATE OR REPLACE PACKAGE "PK_ENVIRONMENT" IS
1373 dpurdie 3688
/*
3689
------------------------------
3959 dpurdie 3690
||  Last Modified:  G.Huddy
3691
||  Modified Date:  28/May/2008
3692
||  Spec Version:   1.2
1373 dpurdie 3693
------------------------------
3694
*/
3695
 
3959 dpurdie 3696
	TYPE typeCur IS REF CURSOR;
3697
 
1373 dpurdie 3698
	/*================================================================================================*/
3699
 
3959 dpurdie 3700
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
3701
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3702
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3703
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3704
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3705
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3706
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
3707
 
3708
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3709
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3710
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3711
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3712
 
3713
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
3714
 
3715
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3716
 
3717
 
3718
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3719
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3720
 
3721
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3722
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3723
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3724
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3725
 
3726
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3727
 
3728
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
3729
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
3730
 
3731
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
3732
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
3733
							 CloneFromPvId IN NUMBER );
3734
 
3735
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3736
 
3737
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3738
 
3739
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3740
 
3741
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3742
 
3743
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
1373 dpurdie 3744
	/*================================================================================================*/
3959 dpurdie 3745
 
3746
END PK_ENVIRONMENT;
4040 dpurdie 3747
 
1374 dpurdie 3748
/
1373 dpurdie 3749
 
4040 dpurdie 3750
/
3751
--------------------------------------------------------
3752
--  DDL for Package PK_LICENCING
3753
--------------------------------------------------------
3754
 
3959 dpurdie 3755
  CREATE OR REPLACE PACKAGE "PK_LICENCING" IS
3756
/*
3757
------------------------------
3758
||  Last Modified:  G.Huddy
3759
||  Modified Date:  19/Aug/2008
3760
||  Spec Version:   1.0
3761
------------------------------
3762
*/
3763
 
3764
   TYPE typeCur IS REF CURSOR;
3765
 
3766
    /*================================================================================================*/
3767
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
3768
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
3769
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER );
3770
   FUNCTION  IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER;
3771
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER );
3772
   /*================================================================================================*/
3773
 
3774
END PK_LICENCING;
4040 dpurdie 3775
 
3959 dpurdie 3776
/
3777
 
4040 dpurdie 3778
/
3779
--------------------------------------------------------
3780
--  DDL for Package PK_PACKAGE
3781
--------------------------------------------------------
3782
 
3959 dpurdie 3783
  CREATE OR REPLACE PACKAGE "PK_PACKAGE" 
1373 dpurdie 3784
IS
3785
/*
3786
------------------------------
3959 dpurdie 3787
||  Last Modified:  Jeremy Tweddle
3788
||  Modified Date:  24/08/2007
1373 dpurdie 3789
||
3790
------------------------------
3791
*/
3792
   TYPE typecur IS REF CURSOR;
3793
 
3794
/*================================================================================================*/
3795
   PROCEDURE new_version (
3796
      nlastpvid                   IN       NUMBER,
3797
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
3798
      cbuildtype                  IN       CHAR,
4211 dpurdie 3799
      cchangetype                 IN       CHAR,
1373 dpurdie 3800
      nsettopvid                  IN       NUMBER DEFAULT NULL,
3801
      nrtagid                     IN       NUMBER,
3802
      nuserid                     IN       NUMBER,
3803
      enumissues_state_imported   IN       NUMBER,
3804
      returnpvid                  OUT      NUMBER
3805
   );
3806
 
3807
   PROCEDURE change_state (
3808
      pvid       IN   NUMBER,
3809
      newstate   IN   package_versions.dlocked%TYPE,
3810
      userid     IN   NUMBER
3811
   );
3812
 
3813
   PROCEDURE new_patch (
3814
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
3815
      nparentpvid        IN       NUMBER,
3816
      spatchidlist       IN       VARCHAR2,
3817
      nuserid            IN       NUMBER,
3818
      returnpatchid      OUT      NUMBER
3819
   );
3820
 
3821
   PROCEDURE obsolete_patch (
3822
      patchid            IN   NUMBER,
3823
      isobsolete         IN   CHAR,
3824
      obsoletecomments   IN   VARCHAR2,
3825
      userid             IN   NUMBER
3826
   );
3827
 
3828
   PROCEDURE obsolete_patches (
3829
      spatchidlist       IN   VARCHAR2,
3830
      isobsolete         IN   CHAR,
3831
      obsoletecomments   IN   VARCHAR2,
3832
      userid             IN   NUMBER
3833
   );
3834
 
3835
   PROCEDURE destroy_package (
3836
      pvid               IN       NUMBER,
3837
      overridewarnings   IN       CHAR DEFAULT 'N',
3838
      problemstring      OUT      VARCHAR2
3839
   );
3840
 
3841
   PROCEDURE add_process (
3842
      nprocid         IN   processes.proc_id%TYPE,
3843
      shealthtag      IN   processes.proc_name%TYPE,
3844
      sprocdesc       IN   processes.proc_description%TYPE,
3845
      scmdinterface   IN   processes.run_as%TYPE,
3846
      spkgowner       IN   processes.pkg_owner%TYPE,
3847
      sisinterface    IN   processes.is_interface%TYPE,
3848
      npvid           IN   package_processes.pv_id%TYPE,
3849
      nuserid         IN   NUMBER
3850
   );
3851
 
3852
   PROCEDURE add_package_process (
3853
      nprocidlist   IN   VARCHAR2,
3854
      npvid         IN   package_processes.pv_id%TYPE,
3855
      nuserid       IN   NUMBER
3856
   );
3857
 
3858
 
3859
 
3860
   PROCEDURE remove_process (
3861
      nprocid   IN   package_processes.proc_id%TYPE,
3862
      npvid     IN   package_processes.pv_id%TYPE,
3863
      nuserid   IN   NUMBER
3864
   );
3865
 
3866
   PROCEDURE move_package (
3867
   	  npvid  			  IN package_versions.pv_id%TYPE,
3868
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
3869
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
3870
	  nuserid			  IN NUMBER		 
3871
   ); 
3872
 
3959 dpurdie 3873
   PROCEDURE modify_product_state (
1373 dpurdie 3874
   	  npvid IN package_versions.pv_id%TYPE,
3959 dpurdie 3875
	  nrtagid IN release_tags.rtag_id%TYPE,
1373 dpurdie 3876
	  nstateid IN product_states.state_id%TYPE,
3877
	  nuserid IN NUMBER
3878
   );
3959 dpurdie 3879
 
3880
   PROCEDURE add_code_review_url (
3881
        npvid           IN    NUMBER,
3882
        nprojid         IN    NUMBER,
3883
        surl            IN    VARCHAR2,
3884
        sreason         IN    VARCHAR2,
3885
        ddateofreview   IN    DATE
3886
   );
3887
 
3888
   PROCEDURE update_code_review_url (
3889
        ncrid           IN    NUMBER,
3890
        nprojid         IN    NUMBER,
3891
        surl            IN    VARCHAR2,
3892
        sreason         IN    VARCHAR2
3893
   );
3894
 
3895
   PROCEDURE remove_code_review_url (
3896
        ncrid           IN    NUMBER
3897
   );
1373 dpurdie 3898
/*================================================================================================*/
3959 dpurdie 3899
END pk_package;
4040 dpurdie 3900
 
1374 dpurdie 3901
/
1373 dpurdie 3902
 
4040 dpurdie 3903
/
3904
--------------------------------------------------------
3905
--  DDL for Package PK_PLANNED
3906
--------------------------------------------------------
3907
 
1373 dpurdie 3908
  CREATE OR REPLACE PACKAGE "PK_PLANNED" IS
3909
/*
3910
------------------------------
3911
||  Last Modified:  G.Huddy
3912
||  Modified Date:  28/May/2008
3913
||  Spec Version:   1.1
3914
------------------------------
3915
*/
3916
 
3917
	TYPE typeCur IS REF CURSOR;
3918
 
3919
    /*================================================================================================*/
3920
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3921
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3922
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3923
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
3924
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3925
	PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR);
3926
	/*================================================================================================*/
3927
 
3928
END PK_PLANNED;
4040 dpurdie 3929
 
1374 dpurdie 3930
/
1373 dpurdie 3931
 
4040 dpurdie 3932
/
3933
--------------------------------------------------------
3934
--  DDL for Package PK_PROJECT
3935
--------------------------------------------------------
3936
 
3959 dpurdie 3937
  CREATE OR REPLACE PACKAGE "PK_PROJECT" IS
1373 dpurdie 3938
 
3959 dpurdie 3939
    TYPE typecur IS REF CURSOR;
1373 dpurdie 3940
 
3959 dpurdie 3941
    /*------------------------------------------------------------------------*/
3942
    PROCEDURE update_base_url (
3943
        nprojid   IN  projects.proj_id%TYPE,
3944
        sbaseurl  IN  VARCHAR2
3945
    );
3946
    /*------------------------------------------------------------------------*/
3947
    PROCEDURE update_project_config (
3948
    nprojid   IN  projects.proj_id%TYPE,
3949
    sbaseurl  IN  VARCHAR2,
3950
    sjirakey  IN  VARCHAR2
3951
    );
3952
    /*------------------------------------------------------------------------*/
1373 dpurdie 3953
 
3959 dpurdie 3954
    END pk_project;
4040 dpurdie 3955
 
1374 dpurdie 3956
/
1373 dpurdie 3957
 
4040 dpurdie 3958
/
3959
--------------------------------------------------------
3960
--  DDL for Package PK_RELEASE
3961
--------------------------------------------------------
3962
 
1373 dpurdie 3963
  CREATE OR REPLACE PACKAGE "PK_RELEASE" IS
3964
/*
3965
------------------------------
3966
||  Last Modified:  S.Vukovic
3967
||  Modified Date:  12/Sep/2005
3968
||  Body Version:   3.0
3969
------------------------------
3970
*/
3971
 
3972
	TYPE typeCur IS REF CURSOR;
3973
 
3974
    /*================================================================================================*/
3975
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
3976
	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 );
3977
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
3978
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
3979
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
3980
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
3981
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
3982
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
3983
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
3984
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3985
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
3986
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3987
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3988
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3989
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3990
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
3991
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
3992
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3993
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
3994
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
3995
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
3996
 
3997
	/*================================================================================================*/
3998
 
3999
END PK_RELEASE;
4040 dpurdie 4000
 
1374 dpurdie 4001
/
1373 dpurdie 4002
 
4040 dpurdie 4003
/
4004
--------------------------------------------------------
4005
--  DDL for Package PK_RMAPI
4006
--------------------------------------------------------
4007
 
3959 dpurdie 4008
  CREATE OR REPLACE PACKAGE "PK_RMAPI" 
4009
IS
4010
   TYPE typecur IS REF CURSOR;
1373 dpurdie 4011
 
3959 dpurdie 4012
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
4013
      RETURN typecur;
1373 dpurdie 4014
 
3959 dpurdie 4015
   FUNCTION wip_iteration_package (
4016
      projname        VARCHAR2,
4017
      iterationname   VARCHAR2,
4018
      pkgname         VARCHAR2
4019
   )
4020
      RETURN typecur;
1373 dpurdie 4021
 
3959 dpurdie 4022
   FUNCTION auto_make_vcsrelease (
4023
      rtagid                   IN   NUMBER,
4024
      pkgname                  IN   VARCHAR2,
4025
      vext                     IN   VARCHAR2,
4026
      newpkgversion            IN   VARCHAR2,
4027
      vcstag                   IN   VARCHAR2,
4028
      dependenciesimportlist   IN   VARCHAR2,
4029
      isrippled                IN   NUMBER,
4030
      username                 IN   VARCHAR2
4031
   )
4032
      RETURN NUMBER;
1373 dpurdie 4033
 
4034
 
3959 dpurdie 4035
   PROCEDURE import_dependencies (
4036
      pvid                     IN   NUMBER,
4037
      dependenciesimportlist   IN   VARCHAR2,
4038
      userid                   IN   NUMBER
4039
   );
1373 dpurdie 4040
 
3959 dpurdie 4041
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
4042
      RETURN VARCHAR2;
1373 dpurdie 4043
 
3959 dpurdie 4044
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
4045
      RETURN VARCHAR2;
1373 dpurdie 4046
 
3959 dpurdie 4047
   PROCEDURE update_dash_board (rtagid IN NUMBER);
1373 dpurdie 4048
 
3959 dpurdie 4049
   FUNCTION exclude_from_build (
4050
      pvid          IN   NUMBER,
4051
      spkgversion   IN   VARCHAR2,
4052
      rtagid        IN   NUMBER,
4053
      username      IN   VARCHAR2
4054
   )
4055
      RETURN NUMBER;
1373 dpurdie 4056
 
3959 dpurdie 4057
   FUNCTION exclude_indirect_from_build (
4058
      pvid          IN   NUMBER,
4059
      spkgversion   IN   VARCHAR2,
4060
      rtagid        IN   NUMBER,
4061
      username      IN   VARCHAR2,
4062
      rootpvid      IN   NUMBER,
4063
      rootcause     IN   VARCHAR2,
4064
      rootfile      IN   VARCHAR2
4065
   )
4066
      RETURN NUMBER;
1373 dpurdie 4067
 
3959 dpurdie 4068
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
1373 dpurdie 4069
 
3959 dpurdie 4070
   FUNCTION insert_package_metrics (
4071
      rtagid IN NUMBER,
4072
      pkgname IN VARCHAR2,
4073
      vext IN VARCHAR2,
4074
      metricstring IN VARCHAR2
4075
   )
4076
      RETURN NUMBER;
1373 dpurdie 4077
 
3959 dpurdie 4078
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
1373 dpurdie 4079
 
3959 dpurdie 4080
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2;
4081
 
4082
   PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER);
4083
 
4084
   FUNCTION isSVN( pkgid IN NUMBER ) RETURN NUMBER;
4085
 
4086
   FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) RETURN NUMBER;
4087
 
4088
END pk_rmapi;
4040 dpurdie 4089
 
1374 dpurdie 4090
/
1373 dpurdie 4091
 
4040 dpurdie 4092
/
4093
--------------------------------------------------------
4094
--  DDL for Package PK_WORK_IN_PROGRESS
4095
--------------------------------------------------------
4096
 
3959 dpurdie 4097
  CREATE OR REPLACE PACKAGE "PK_WORK_IN_PROGRESS" IS
1373 dpurdie 4098
/*
4099
------------------------------
4100
||  Last Modified:  S.Vukovic
3959 dpurdie 4101
||  Modified Date:  2/May/2005
4102
||  Spec Version:   1.0
1373 dpurdie 4103
------------------------------
4104
*/
4105
 
4106
	TYPE typeCur IS REF CURSOR;
4107
 
4108
    /*================================================================================================*/
4109
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4110
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3959 dpurdie 4111
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
4112
 
1373 dpurdie 4113
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3959 dpurdie 4114
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
1373 dpurdie 4115
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
4116
	/*================================================================================================*/
3959 dpurdie 4117
 
4118
END PK_WORK_IN_PROGRESS;
4040 dpurdie 4119
 
1374 dpurdie 4120
/
1373 dpurdie 4121
 
4040 dpurdie 4122
/
4123
--------------------------------------------------------
4124
--  DDL for Package RM_ISSUES
4125
--------------------------------------------------------
4126
 
3959 dpurdie 4127
  CREATE OR REPLACE PACKAGE "RM_ISSUES" AS
1373 dpurdie 4128
 
3959 dpurdie 4129
	TYPE T_Cur IS REF CURSOR;
1373 dpurdie 4130
 
3959 dpurdie 4131
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
4132
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
4133
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
4134
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
1373 dpurdie 4135
 
3959 dpurdie 4136
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
4137
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
4138
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
1373 dpurdie 4139
 
3959 dpurdie 4140
END Rm_Issues;
4040 dpurdie 4141
 
3959 dpurdie 4142
/
1373 dpurdie 4143
 
4040 dpurdie 4144
/
4145
--------------------------------------------------------
4146
--  DDL for Package Body PK_APP_UTILS
4147
--------------------------------------------------------
4148
 
3959 dpurdie 4149
  CREATE OR REPLACE PACKAGE BODY "PK_APP_UTILS" IS
1373 dpurdie 4150
 
3959 dpurdie 4151
/*
4152
------------------------------
4153
||  Last Modified:  S.Vukovic
4154
||  Modified Date:  26/Apr/2005
4155
||  Body Version:   1.0
4156
------------------------------
4157
*/
1373 dpurdie 4158
 
4159
 
4160
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4161
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
1373 dpurdie 4162
 
4163
 
4164
BEGIN
4165
 
4166
 
3959 dpurdie 4167
	IF (NOT RtagId IS NULL) THEN
4168
		-- Case with RTAG_ID present
4169
		OPEN records FOR
4170
		SELECT rt.PROJ_ID,
4171
			   rt.RTAG_ID AS RTAG_ID
4172
		  FROM RELEASE_TAGS rt
4173
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
1373 dpurdie 4174
 
3959 dpurdie 4175
	ELSIF (NOT ProjId IS NULL) THEN
4176
		-- Case with PROJ_ID present
4177
		OPEN records FOR
4178
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
4179
			   -1 AS RTAG_ID
4180
		  FROM DUAL;
1373 dpurdie 4181
 
3959 dpurdie 4182
	ELSE
4183
		-- Case with none present
4184
		OPEN records FOR
4185
		SELECT -1 AS PROJ_ID,
4186
			   -1 AS RTAG_ID
4187
		  FROM DUAL;
1373 dpurdie 4188
 
3959 dpurdie 4189
	END IF;
1373 dpurdie 4190
 
4191
 
4192
 
4193
 
3959 dpurdie 4194
   	--RETURN records;
1373 dpurdie 4195
 
4196
END;
4197
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4198
END PK_APP_UTILS;
4040 dpurdie 4199
 
1374 dpurdie 4200
/
1373 dpurdie 4201
 
4040 dpurdie 4202
/
4203
--------------------------------------------------------
4204
--  DDL for Package Body PK_ARCHIVE
4205
--------------------------------------------------------
4206
 
3959 dpurdie 4207
  CREATE OR REPLACE PACKAGE BODY "PK_ARCHIVE" 
1373 dpurdie 4208
IS
3959 dpurdie 4209
/*
4210
------------------------------
4211
||  Author:  Rupesh Solanki
4212
||  Date:    26 October 2006
4213
||  Version:   1.0
4214
------------------------------
4215
*/
4216
/*---------------------------*/
4217
PROCEDURE populate_packages_table IS
1373 dpurdie 4218
 
3959 dpurdie 4219
BEGIN
4220
		  INSERT INTO archive_manager.PACKAGES
4221
		  (
4222
		  select * from packages where pkg_id not in 
4223
		  		  (select pkg_id from archive_manager.packages)
4224
		  );
1373 dpurdie 4225
 
3959 dpurdie 4226
          INSERT INTO archive_manager.PROCESSES
4227
          (
4228
          select * from processes where proc_id not in 
4229
            (select proc_id from archive_manager.processes)
4230
          );
4231
 
1373 dpurdie 4232
 
4233
 
3959 dpurdie 4234
END;
1373 dpurdie 4235
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4236
   PROCEDURE populate_archive_data_table (
4237
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4238
   )
4239
   IS
3959 dpurdie 4240
/*
4241
Reason: To populate the archive_data table with information regarding the
4242
         number of package versions that exist in other releases.
4243
*/
4244
      numcount      NUMBER;
4245
      numusedby     NUMBER;
4246
      numruntime    NUMBER;
4247
 
4248
      /* Get all the package versions in the release */
4249
      CURSOR archive_cur
4250
      IS
4251
         SELECT pv_id
4252
           FROM release_content
4253
          WHERE rtag_id = nrtagid;
4254
 
4255
      archive_rec   archive_cur%ROWTYPE;
1373 dpurdie 4256
   BEGIN
3959 dpurdie 4257
/*--------------- Business Rules Here -------------------*/
4258
/*-------------------------------------------------------*/
4259
      OPEN archive_cur;
1373 dpurdie 4260
 
3959 dpurdie 4261
      FETCH archive_cur
4262
       INTO archive_rec;
4263
 
4264
      WHILE archive_cur%FOUND
4265
      LOOP
4266
        /* How many packages depend on this package version? */
4267
         SELECT COUNT (*)
4268
           INTO numusedby
4269
           FROM package_dependencies
4270
          WHERE dpv_id = archive_rec.pv_id;
4271
 
4272
        /* How many project releases use this package version?  */
4273
         SELECT COUNT (*)
4274
           INTO numcount
4275
           FROM release_content
4276
          WHERE pv_id = archive_rec.pv_id;
4277
 
4278
        /* How many packages have this package version as runtime
4279
        dependency? */
4280
         SELECT COUNT (*)
4281
           INTO numruntime
4282
           FROM runtime_dependencies
4283
          WHERE rtd_id = archive_rec.pv_id;
4284
 
4285
        /* Insert into the archive_data table if they are not runtime dependant
4286
        and package dependant and they exist in that particular release only*/
4287
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
1373 dpurdie 4288
         THEN
3959 dpurdie 4289
            INSERT INTO archive_data
4290
                        (rtag_id, pv_id
4291
                        )
4292
                 VALUES (nrtagid, archive_rec.pv_id
4293
                        );
1373 dpurdie 4294
         END IF;
4295
 
3959 dpurdie 4296
         FETCH archive_cur
4297
          INTO archive_rec;
4298
      END LOOP;
1373 dpurdie 4299
   END;
4300
 
4301
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4302
   PROCEDURE migrate_pv_to_archive_schema (
4303
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4304
   )
4305
   IS
4306
   BEGIN
4307
 
3959 dpurdie 4308
      /* MIGRATION - PACKAGE_VERSIONS */
4309
      INSERT INTO archive_manager.package_versions
4310
         SELECT *
4311
           FROM package_versions
4312
          WHERE pv_id IN (SELECT pv_id
4313
                            FROM archive_data);
1373 dpurdie 4314
 
3959 dpurdie 4315
      /* MIGRATION - PACKAGE_BUILD_ENV */
4316
      INSERT INTO archive_manager.package_build_env
4317
         SELECT *
4318
           FROM package_build_env
4319
          WHERE pv_id IN (SELECT pv_id
4320
                            FROM archive_data);
1373 dpurdie 4321
 
3959 dpurdie 4322
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
4323
      DELETE FROM package_build_env
4324
            WHERE pv_id IN (SELECT pv_id
4325
                              FROM archive_data);
1373 dpurdie 4326
 
3959 dpurdie 4327
      /* MIGRATION - PACKAGE_BUILD_INFO */
4328
      INSERT INTO archive_manager.package_build_info
4329
         SELECT *
4330
           FROM package_build_info
4331
          WHERE pv_id IN (SELECT pv_id
4332
                            FROM archive_data);
1373 dpurdie 4333
 
3959 dpurdie 4334
      /* PURGE DATA FROM PACKAGE_BUILD_info */
4335
      DELETE FROM package_build_info
4336
            WHERE pv_id IN (SELECT pv_id
4337
                              FROM archive_data);							  
1373 dpurdie 4338
 
3959 dpurdie 4339
      /* MIGRATION - UNIT_TESTS  */
4340
      INSERT INTO archive_manager.unit_tests
4341
         SELECT *
4342
           FROM unit_tests
4343
          WHERE pv_id IN (SELECT pv_id
4344
                            FROM archive_data);
1373 dpurdie 4345
 
3959 dpurdie 4346
      /* PURGE DATA FROM UNIT_TESTS*/
4347
      DELETE FROM unit_tests
4348
            WHERE pv_id IN (SELECT pv_id
4349
                              FROM archive_data);
1373 dpurdie 4350
 
3959 dpurdie 4351
      /* MIGRATION - PACKAGE_PROCESSES */
4352
      INSERT INTO archive_manager.package_processes
4353
         SELECT *
4354
           FROM package_processes
4355
          WHERE pv_id IN (SELECT pv_id
4356
                            FROM archive_data);
1373 dpurdie 4357
 
3959 dpurdie 4358
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
4359
      DELETE FROM package_processes
4360
            WHERE pv_id IN (SELECT pv_id
4361
                              FROM archive_data);
1373 dpurdie 4362
 
3959 dpurdie 4363
      /* MIGRATION - PACKAGE_DEPENDENCIES */
4364
      INSERT INTO archive_manager.package_dependencies
4365
         SELECT *
4366
           FROM package_dependencies
4367
          WHERE pv_id IN (SELECT pv_id
4368
                            FROM archive_data);
2735 dpurdie 4369
 
3959 dpurdie 4370
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
4371
      DELETE FROM package_dependencies
4372
            WHERE pv_id IN (SELECT pv_id
4373
                              FROM archive_data);
1373 dpurdie 4374
 
3959 dpurdie 4375
      /* MIGRATION - CODE_REVIEWS */
4376
      INSERT INTO archive_manager.code_reviews
4377
         SELECT *
4378
           FROM code_reviews
4379
          WHERE pv_id IN (SELECT pv_id
4380
                            FROM archive_data);
1373 dpurdie 4381
 
3959 dpurdie 4382
      /* PURGE DATA FROM CODE_REVIEWS*/
4383
      DELETE FROM code_reviews
4384
            WHERE pv_id IN (SELECT pv_id
4385
                              FROM archive_data);
1373 dpurdie 4386
 
3959 dpurdie 4387
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
4388
      INSERT INTO archive_manager.runtime_dependencies
4389
         SELECT *
4390
           FROM runtime_dependencies
4391
          WHERE pv_id IN (SELECT pv_id
4392
                            FROM archive_data);
1373 dpurdie 4393
 
3959 dpurdie 4394
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
4395
      DELETE FROM runtime_dependencies
4396
            WHERE pv_id IN (SELECT pv_id
4397
                              FROM archive_data);
1373 dpurdie 4398
 
3959 dpurdie 4399
      /* MIGRATION - PACKAGE_DOCUMENTS */
4400
      INSERT INTO archive_manager.package_documents
4401
         SELECT *
4402
           FROM package_documents
4403
          WHERE pv_id IN (SELECT pv_id
4404
                            FROM archive_data);
1373 dpurdie 4405
 
3959 dpurdie 4406
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
4407
      DELETE FROM package_documents
4408
            WHERE pv_id IN (SELECT pv_id
4409
                              FROM archive_data);
1373 dpurdie 4410
 
3959 dpurdie 4411
      /* MIGRATION - PACKAGE_PATCHES */
4412
      INSERT INTO archive_manager.package_patches
4413
         SELECT *
4414
           FROM package_patches
4415
          WHERE pv_id IN (SELECT pv_id
4416
                            FROM archive_data);
1373 dpurdie 4417
 
3959 dpurdie 4418
      /* PURGE DATA FROM PACKAGE_PATCHES*/
4419
      DELETE FROM package_patches
4420
            WHERE pv_id IN (SELECT pv_id
4421
                              FROM archive_data);
1373 dpurdie 4422
 
3959 dpurdie 4423
      /* MIGRATION - CQ_ISSUES */
4424
      INSERT INTO archive_manager.cq_issues
4425
         SELECT *
4426
           FROM cq_issues
4427
          WHERE pv_id IN (SELECT pv_id
4428
                            FROM archive_data);
1373 dpurdie 4429
 
3959 dpurdie 4430
      /* PURGE DATA FROM CQ_ISSUES*/
4431
      DELETE FROM cq_issues
4432
            WHERE pv_id IN (SELECT pv_id
4433
                              FROM archive_data);
1373 dpurdie 4434
 
3959 dpurdie 4435
      /* MIGRATION - ADDITIONAL_NOTES */
4436
      INSERT INTO archive_manager.additional_notes
4437
         SELECT *
4438
           FROM additional_notes
4439
          WHERE pv_id IN (SELECT pv_id
4440
                            FROM archive_data);
1373 dpurdie 4441
 
3959 dpurdie 4442
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
4443
      DELETE FROM additional_notes
4444
            WHERE pv_id IN (SELECT pv_id
4445
                              FROM archive_data);
1373 dpurdie 4446
 
3959 dpurdie 4447
      /* MIGRATION - RELEASE_COMPONENTS */
4448
      INSERT INTO archive_manager.release_components
4449
         SELECT *
4450
           FROM release_components
4451
          WHERE pv_id IN (SELECT pv_id
4452
                            FROM archive_data);
1373 dpurdie 4453
 
3959 dpurdie 4454
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
4455
      DELETE FROM release_components
4456
            WHERE pv_id IN (SELECT pv_id
4457
                              FROM archive_data);
1373 dpurdie 4458
 
3959 dpurdie 4459
      /* MIGRATION - IGNORE_WARNINGS */
4460
      INSERT INTO archive_manager.ignore_warnings
4461
         SELECT *
4462
           FROM ignore_warnings
4463
          WHERE pv_id IN (SELECT pv_id
4464
                            FROM archive_data);
1374 dpurdie 4465
 
3959 dpurdie 4466
      /* PURGE DATA FROM IGNORE_WARNINGS*/
4467
      DELETE FROM ignore_warnings
4468
            WHERE pv_id IN (SELECT pv_id
4469
                              FROM archive_data);
1373 dpurdie 4470
 
3959 dpurdie 4471
      /* PURGE DATA FROM WORK_IN_PROGRESS */
4472
      DELETE FROM work_in_progress
4473
            WHERE rtag_id = nrtagid;
1374 dpurdie 4474
 
3959 dpurdie 4475
      /* PURGE DATA FROM PLANNED */
4476
      DELETE FROM planned
4477
            WHERE rtag_id = nrtagid;
1373 dpurdie 4478
 
3959 dpurdie 4479
      /* MIGRATION - JIRA_ISSUES */
4480
      INSERT INTO archive_manager.jira_issues
4481
         SELECT *
4482
           FROM jira_issues
4483
          WHERE pv_id IN (SELECT pv_id
4484
                            FROM archive_data);
1373 dpurdie 4485
 
3959 dpurdie 4486
      /* PURGE DATA FROM JIRA_ISSUES*/
4487
      DELETE FROM jira_issues
4488
            WHERE pv_id IN (SELECT pv_id
4489
                              FROM archive_data);
1373 dpurdie 4490
 
3959 dpurdie 4491
      /* MIGRATION - PRODUCT_COMPONENTS */
4492
      INSERT INTO archive_manager.product_components
4493
         SELECT *
4494
           FROM product_components
4495
          WHERE pv_id IN (SELECT pv_id
4496
                            FROM archive_data);
1373 dpurdie 4497
 
3959 dpurdie 4498
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
4499
      DELETE FROM product_components
4500
            WHERE pv_id IN (SELECT pv_id
4501
                              FROM archive_data);
1373 dpurdie 4502
 
3959 dpurdie 4503
      /* MIGRATION - ACTION_LOG */
4504
      INSERT INTO archive_manager.action_log
4505
         SELECT *
4506
           FROM action_log
4507
          WHERE pv_id IN (SELECT pv_id
4508
                            FROM archive_data);
1373 dpurdie 4509
 
3959 dpurdie 4510
      /* PURGE DATA FROM ACTION_LOG*/
4511
      DELETE FROM action_log
4512
            WHERE pv_id IN (SELECT pv_id
4513
                              FROM archive_data);
1373 dpurdie 4514
 
4515
 
4516
   END;
4517
 
4518
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4519
   PROCEDURE migrate_rtag_to_archive_schema (
4520
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4521
   )
4522
   IS
4523
   BEGIN
3959 dpurdie 4524
      /* MIGRATION - DO_NOT_RIPPLE */
4525
      INSERT INTO archive_manager.do_not_ripple
4526
         SELECT *
4527
           FROM do_not_ripple dnp
4528
          WHERE rtag_id = nrtagid;
1373 dpurdie 4529
 
3959 dpurdie 4530
      /* PURGE DATA FROM DO_NOT_RIPPLE */
4531
      DELETE FROM do_not_ripple
4532
            WHERE rtag_id = nrtagid;
4533
 
4534
      /* MIGRATION - ADVISORY_RIPPLES*/
4535
      INSERT INTO archive_manager.advisory_ripples
4536
         SELECT *
4537
           FROM advisory_ripple dnp
4538
          WHERE rtag_id = nrtagid;
1373 dpurdie 4539
 
3959 dpurdie 4540
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
4541
      DELETE FROM advisory_ripple
4542
            WHERE rtag_id = nrtagid;			
1373 dpurdie 4543
 
3959 dpurdie 4544
      /* MIGRATION - RELEASE_CONTENT */
4545
      INSERT INTO archive_manager.release_content
4546
         SELECT *
4547
           FROM release_content
4548
          WHERE rtag_id = nrtagid;
1373 dpurdie 4549
 
3959 dpurdie 4550
      /* PURGE DATA FROM RELEASE_CONTENT*/
4551
      DELETE FROM release_content
4552
            WHERE rtag_id = nrtagid;
1373 dpurdie 4553
 
3959 dpurdie 4554
      /* MIGRATION - NOTIFICATION_HISTORY */
4555
      INSERT INTO archive_manager.notification_history
4556
         SELECT *
4557
           FROM notification_history
4558
          WHERE rtag_id = nrtagid;
1373 dpurdie 4559
 
3959 dpurdie 4560
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
4561
      DELETE FROM notification_history
4562
            WHERE rtag_id = nrtagid;
1373 dpurdie 4563
 
3959 dpurdie 4564
      /* MIGRATION - BUILD_ORDER   */
4565
      INSERT INTO archive_manager.build_order
4566
         SELECT *
4567
           FROM build_order
4568
          WHERE rtag_id = nrtagid;
1373 dpurdie 4569
 
3959 dpurdie 4570
      /* PURGE DATA FROM BUILD_ORDER*/
4571
      DELETE FROM build_order
4572
            WHERE rtag_id = nrtagid;
1373 dpurdie 4573
 
3959 dpurdie 4574
      /* MIGRATION - PROJECT_ACTION_LOG */
4575
      INSERT INTO archive_manager.project_action_log
4576
         SELECT *
4577
           FROM project_action_log
4578
          WHERE rtag_id = nrtagid;
1373 dpurdie 4579
 
3959 dpurdie 4580
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
4581
      DELETE FROM project_action_log
4582
            WHERE rtag_id = nrtagid;
1373 dpurdie 4583
 
3959 dpurdie 4584
      /* MIGRATION - DEPRECATED_PACKAGES */
4585
      INSERT INTO archive_manager.deprecated_packages
4586
         SELECT *
4587
           FROM deprecated_packages
4588
          WHERE rtag_id = nrtagid;
1373 dpurdie 4589
 
3959 dpurdie 4590
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
4591
      DELETE FROM deprecated_packages
4592
            WHERE rtag_id = nrtagid;
4593
 
4594
      /* MIGRATION - RELEASE_TAGS */
4595
      INSERT INTO archive_manager.release_tags
4596
         SELECT *
1373 dpurdie 4597
           FROM release_tags
3959 dpurdie 4598
          WHERE rtag_id = nrtagid;
4599
 
4600
 
4601
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
4602
      DELETE FROM package_versions
4603
            WHERE pv_id IN (SELECT pv_id
4604
                              FROM archive_data);
4605
 
4606
 
1373 dpurdie 4607
   END;
4608
 
4609
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4610
   PROCEDURE clean_up_archive_data_table (
4611
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4612
   )
4613
   IS
4614
   BEGIN
3959 dpurdie 4615
      /* Cleaning Up The Archive_Data Table */
4616
      DELETE FROM archive_data
4617
            WHERE rtag_id = nrtagid;
1373 dpurdie 4618
   END;
4619
 
4620
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4621
   PROCEDURE write_action_log (
4622
      nuserid   IN   NUMBER,
4623
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4624
   )
4625
   IS
4626
   BEGIN
3959 dpurdie 4627
      /* Write Into Archive_Action_Log Table */
4628
      INSERT INTO archive_action_log
4629
                  (user_id, date_time_stamp, rtag_id,
4630
                   description
1373 dpurdie 4631
                  )
3959 dpurdie 4632
           VALUES (nuserid, ora_sysdatetime, nrtagid,
4633
                   'Release has been archived to the ARCHIVE_MANAGER schema'
1373 dpurdie 4634
                  );
4635
   END;
4636
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4637
END pk_archive; 
4040 dpurdie 4638
 
1374 dpurdie 4639
/
1373 dpurdie 4640
 
4040 dpurdie 4641
/
4642
--------------------------------------------------------
4643
--  DDL for Package Body PK_BUILDAPI
4644
--------------------------------------------------------
4645
 
1373 dpurdie 4646
  CREATE OR REPLACE PACKAGE BODY "PK_BUILDAPI" 
4647
IS
4648
   /*-------------------------------------------------------------------------------------------------------*/
4649
   PROCEDURE add_product_component (
4650
      npvid           IN   NUMBER,
4651
      sosname         IN   VARCHAR2,
4652
      sorigfilepath   IN   VARCHAR2,
4653
      sfilename       IN   VARCHAR2,
4654
      sdestfilepath   IN   VARCHAR2,
4655
      nbytesize       IN   NUMBER,
4656
      scrccksum       IN   VARCHAR2
4657
   )
4658
   IS
4659
      nosid   NUMBER;
4660
   BEGIN
4661
      /*--------------- Business Rules Here -------------------*/
4662
      -- OS Name Requirements --
4663
      IF (sosname IS NULL)
4664
      THEN
4665
         raise_application_error (-20000, 'OsName cannot be NULL.');
4666
      END IF;
4667
 
4668
      -- File Requirements --
4669
      IF (NOT sfilename IS NULL)
4670
      THEN
4671
         IF (nbytesize IS NULL)
4672
         THEN
4673
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
4674
         ELSIF (scrccksum IS NULL)
4675
         THEN
4676
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
4677
         END IF;
4678
      END IF;
4679
 
4680
      -- Folder Requirements --
4681
      -- No requirements for now.
4682
 
4683
      /*-------------------------------------------------------*/
4684
 
4685
      -- Get OsId
4686
      nosid := get_osid (sosname);
4687
 
4688
      -- Insert component entry
4689
      INSERT INTO product_components
4690
                  (pv_id, os_id, file_path, file_name, destination_path,
4691
                  byte_size, crc_cksum
4692
                  )
4693
         VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
4694
                  nbytesize, scrccksum
4695
                  );
4696
   EXCEPTION
4697
      WHEN DUP_VAL_ON_INDEX
4698
      THEN
4699
         raise_application_error (-20000,
4700
                                 'Cannot have duplicate product components.'
4701
                                 );
4702
   END;
4703
 
4704
/*-------------------------------------------------------------------------------------------------------*/
4705
   PROCEDURE remove_all_product_components (
4706
      npvid     IN   NUMBER,
4707
      sosname   IN   VARCHAR2
4708
   )
4709
   IS
4710
      nosid   NUMBER;
4711
   BEGIN
4712
/*--------------- Business Rules Here -------------------*/
4713
/*-------------------------------------------------------*/
4714
 
4715
      -- Get OsId
4716
      nosid := get_osid (sosname);
4717
 
4718
      -- Delete component entry
4719
      DELETE FROM product_components pc
4720
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
4721
   END;
4722
 
4723
/*-------------------------------------------------------------------------------------------------------*/
4724
   FUNCTION get_osid (sosname IN VARCHAR2)
4725
      RETURN NUMBER
4726
   IS
4727
      code   NUMBER;
4728
   BEGIN
4729
      -- Get Platform Code --
4730
      SELECT pf.code
4731
      INTO code
4732
      FROM platforms pf
4733
      WHERE UPPER (pf.NAME) = UPPER (sosname);
4734
 
4735
      RETURN code;
4736
   EXCEPTION
4737
      WHEN NO_DATA_FOUND
4738
      THEN
4739
         raise_application_error
4740
            (-20000,
4741
               'Platform '
4742
            || sosname
4743
            || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
4744
            );
4745
         RAISE;
4746
   END;
4747
 
4748
/*-------------------------------------------------------------------------------------------------------*/
4308 dpurdie 4749
 PROCEDURE update_build_service_info (
1373 dpurdie 4750
      sdatabaseserver   IN   VARCHAR2,
4751
      sarchiveserver    IN   VARCHAR2,
4752
      smailserver       IN   VARCHAR2,
4753
      smailsender       IN   VARCHAR2,
4211 dpurdie 4754
      faultmlist        IN   VARCHAR2,
1373 dpurdie 4755
      sdiskspace        IN   VARCHAR2,
4756
      ssbommanagement   IN   VARCHAR2
4757
   )
4758
   IS
4759
   BEGIN
4760
      UPDATE build_service_config
4761
         SET config = sdatabaseserver
4762
      WHERE service = 'DATABASE SERVER';
4763
 
4764
      UPDATE build_service_config
4765
         SET config = sarchiveserver
4766
      WHERE service = 'ARCHIVE SERVER';
4767
 
4768
      UPDATE build_service_config
4769
         SET config = smailserver
4770
      WHERE service = 'MAIL SERVER';
4771
 
4772
      UPDATE build_service_config
4773
         SET config = smailsender
4774
      WHERE service = 'BUILD FAILURE MAIL SENDER';
4775
 
4776
      UPDATE build_service_config
4211 dpurdie 4777
         SET config = faultmlist
4778
      WHERE service = 'FAULT EMAIL ADDRESS LIST';
4779
 
4780
      UPDATE build_service_config
1373 dpurdie 4781
         SET config = sdiskspace
4782
      WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
4783
 
4784
      UPDATE build_service_config
4785
         SET config = ssbommanagement
4786
      WHERE service = 'SBOM MANAGEMENT';
4787
   END;
4308 dpurdie 4788
 
1373 dpurdie 4789
 
4790
 
4791
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4792
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2, sgbeclass IN NUMBER)
1373 dpurdie 4793
   IS
4794
      gbe_id   NUMBER;
4795
   BEGIN
4796
      -- Get GBE_ID
4797
      SELECT seq_gbe_id.NEXTVAL
4798
      INTO gbe_id
4799
      FROM DUAL;
4800
 
4801
      INSERT INTO gbe_machtype
4040 dpurdie 4802
                  (gbe_id, gbe_value, bm_id )
4803
         VALUES (gbe_id, sgbevalue, sgbeclass );
1373 dpurdie 4804
   END;
4805
 
4806
/*-------------------------------------------------------------------------------------------------------*/
4807
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
4808
   IS
4809
   BEGIN
4810
      DELETE FROM gbe_machtype
4811
            WHERE gbe_id = ngbe_id;
4812
   END;
4813
 
4814
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4815
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2, sgbeclass IN NUMBER)
1373 dpurdie 4816
   IS
4817
   BEGIN
4818
      UPDATE gbe_machtype
4040 dpurdie 4819
         SET gbe_value = sgbevalue,
4820
             bm_id = sgbeclass
1373 dpurdie 4821
      WHERE gbe_id = ngbe_id;
4822
   END;
4823
 
4824
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4825
PROCEDURE add_buildmachine (sbmvalue IN VARCHAR2)
4826
   IS
4827
      bm_id   NUMBER;
4828
   BEGIN
4829
      -- Get BM_ID
4830
      SELECT seq_bm_id.NEXTVAL
4831
      INTO bm_id
4832
      FROM DUAL;
4833
 
4834
      INSERT INTO build_machines
4835
                  (bm_id, bm_name)
4836
         VALUES (bm_id, sbmvalue );
4837
   END;
4838
 
4839
/*-------------------------------------------------------------------------------------------------------*/
4840
   PROCEDURE remove_buildmachine (nbm_id IN NUMBER)
4841
   IS
4842
   BEGIN
4843
      DELETE FROM build_machines
4844
            WHERE bm_id = nbm_id;
4845
   END;
4846
 
4847
/*-------------------------------------------------------------------------------------------------------*/
4848
   PROCEDURE update_buildmachine (nbm_id IN NUMBER, sbmvalue IN VARCHAR2) 
4849
   IS
4850
   BEGIN
4851
      UPDATE build_machines
4852
         SET bm_name = sbmvalue
4853
         WHERE bm_id = nbm_id;
4854
   END;
4855
 
4856
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 4857
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
4858
   IS
4859
   BEGIN
4860
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
4861
      DELETE FROM daemon_action_log
4862
            WHERE rcon_id IN (
4863
                     SELECT *
4864
                     FROM THE
4865
                              (SELECT CAST
4866
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4867
                                          )
4868
                                 FROM DUAL
4869
                              ));
4870
 
4871
      DELETE FROM run_level
4872
            WHERE rcon_id IN (
4873
                     SELECT *
4874
                     FROM THE
4875
                              (SELECT CAST
4876
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4877
                                          )
4878
                                 FROM DUAL
4879
                              ));
4880
 
4881
      DELETE FROM abt_action_log
4882
            WHERE rcon_id IN (
4883
                     SELECT *
4884
                     FROM THE
4885
                              (SELECT CAST
4886
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4887
                                          )
4888
                                 FROM DUAL
4889
                              ));
4890
 
4891
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
4892
      DELETE FROM release_config
4893
            WHERE rcon_id IN (
4894
                     SELECT *
4895
                     FROM THE
4896
                              (SELECT CAST
4897
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4898
                                          )
4899
                                 FROM DUAL
4900
                              ));
4901
   END;
4902
 
4903
/*-------------------------------------------------------------------------------------------------------*/
4308 dpurdie 4904
   PROCEDURE remove_daemon (srconidlist IN VARCHAR2)
1373 dpurdie 4905
   IS
4308 dpurdie 4906
   oRconIdList RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
4907
 
1373 dpurdie 4908
   BEGIN
4308 dpurdie 4909
 
4910
   oRconIdList := IN_LIST_NUMBER ( srconidlist );
4911
 
4912
      -- Break the linkage between the release_config and the build_machine_config
4913
 
4914
      -- Delete the linkage between the two tables.
4915
       UPDATE release_config
4916
         SET daemon_hostname = NULL,
4917
             bmcon_id = NULL 
4918
      WHERE rcon_id IN ( SELECT * FROM TABLE ( CAST ( oRconIdList AS RELMGR_NUMBER_TAB_t ) ) );
1373 dpurdie 4919
   END;
4920
 
4921
/*-------------------------------------------------------------------------------------------------------*/
4922
   PROCEDURE insert_schedule_info (
4923
      dschedulepause     IN   DATE,
4924
      dscheduleresume    IN   DATE,
4925
      crepeat            IN   VARCHAR2,
4926
      cindefinitepause   IN   VARCHAR2
4927
   )
4928
   IS
4929
      nscheduledid   NUMBER;
4930
   BEGIN
4931
      -- Get Next Available Scheduled Id
4932
      SELECT seq_scheduled_id.NEXTVAL
4933
      INTO nscheduledid
4934
      FROM DUAL;
4935
 
4936
      INSERT INTO run_level_schedule
4937
         VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
4938
                  cindefinitepause);
4939
   END;
4940
 
4941
/*-------------------------------------------------------------------------------------------------------*/
4942
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
4943
   IS
4944
   BEGIN
4945
      DELETE FROM run_level_schedule
4946
            WHERE scheduled_id = nscheduleid;
4947
   END;
4948
 
4949
/*-------------------------------------------------------------------------------------------------------*/
4950
   PROCEDURE set_infinite_pause
4951
   IS
4952
      nscheduledid   NUMBER;
4953
   BEGIN
4954
      -- Get Next Available Scheduled Id
4955
      SELECT seq_scheduled_id.NEXTVAL
4956
      INTO nscheduledid
4957
      FROM DUAL;
4958
 
4959
      INSERT INTO run_level_schedule
4960
         VALUES (nscheduledid, NULL, NULL, NULL, 'P');
4961
   END;
4962
 
4963
/*-------------------------------------------------------------------------------------------------------*/
4964
   PROCEDURE set_resume
4965
   IS
4966
   BEGIN
4967
      DELETE FROM run_level_schedule
4968
            WHERE indefinite_pause = 'P';
4969
   END;
4970
 
4971
/*-------------------------------------------------------------------------------------------------------*/
4972
   PROCEDURE delete_out_of_date_schedule
4973
   IS
4974
   BEGIN
4975
      DELETE FROM run_level_schedule
4976
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
4977
   END;
4978
 
4979
/*-------------------------------------------------------------------------------------------------------*/
4980
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
4981
   IS
4982
   BEGIN
4983
      UPDATE run_level
4984
         SET PAUSE = NULL
4985
      WHERE rcon_id = nrconid;
4986
   END;
4987
 
4988
/*-------------------------------------------------------------------------------------------------------*/
4989
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
4990
   IS
4991
   BEGIN
4992
      UPDATE run_level
4993
         SET PAUSE = 1
4994
      WHERE rcon_id = nrconid;
4995
   END;
4996
/*-------------------------------------------------------------------------------------------------------*/
4997
   PROCEDURE set_daemon_disable (nrconid NUMBER)
4998
   IS
4999
   BEGIN
5000
      UPDATE run_level
5001
         SET PAUSE = 2
5002
      WHERE rcon_id = nrconid;
5003
   END;
5004
 
5005
/*-------------------------------------------------------------------------------------------------------*/
5006
   PROCEDURE set_daemon_states (nrtagid NUMBER, nstate NUMBER)
5007
   IS
5008
   BEGIN
5009
     UPDATE run_level
5010
     SET pause = nstate
5011
     WHERE rcon_id IN
5012
     (SELECT rc.rcon_id FROM release_config rc WHERE rc.rtag_id = nrtagid);
5013
   END;
5014
 
5015
/*-------------------------------------------------------------------------------------------------------*/
5016
   -- inserts a new daemon instruction
5017
   -- This is for use by the Release Manager Website code.
5018
   --
5019
   PROCEDURE insert_daemon_inst
5020
   ( nOp_code IN NUMBER
5021
   , nRtag_id IN NUMBER
5022
   , nPv_id IN NUMBER
5023
   , nSchedDate IN DATE
5024
   , nRepeatSecs IN NUMBER
5025
   , nAddedDate IN DATE
5026
   , nUser_id IN NUMBER
5027
   ) IS
5028
      nInstId   NUMBER;
5029
   BEGIN
5030
      -- Get Next Available Scheduled Id
5031
      SELECT seq_daemon_instruction_id.NEXTVAL
5032
      INTO nInstId
5033
      FROM DUAL;
5034
 
5035
      INSERT INTO Daemon_Instructions
5036
         VALUES (nInstId, nOp_code, nRtag_id,
5037
                  nPv_id, nSchedDate, nRepeatSecs,
5038
                  nAddedDate, nUser_id, '0');
5039
   EXCEPTION
5040
      WHEN DUP_VAL_ON_INDEX
5041
      THEN
5042
         raise_application_error (-20000,
5043
                                 'Table already contains a record with the specified OPERATION, RELEASE, and PACKAGE VERSION'
5044
                                 );
5045
      WHEN OTHERS
5046
      THEN
5047
         raise;
5048
   END insert_daemon_inst;
5049
 
5050
/*-------------------------------------------------------------------------------------------------------*/
5051
   -- Deletes a daemon instruction matching the specified instruction ID
5052
   --
5053
   PROCEDURE del_daemon_inst
5054
   ( nInstId IN NUMBER
5055
   ) IS
5056
 
5057
   BEGIN
5058
      DELETE FROM Daemon_Instructions
5059
      WHERE DAEMON_INSTRUCTIONS_ID = nInstId;
5060
 
5061
   END del_daemon_inst;
5062
 
5063
/*-------------------------------------------------------------------------------------------------------*/
5064
   -- Deletes a daemon instruction matching the specified op-code, ratag, and pv_id
5065
   --
5066
   PROCEDURE del_daemon_inst_by_rtag_pvid(
5067
      nOp_code IN NUMBER,
5068
      nRtag_id IN NUMBER,
5069
      nPv_id IN NUMBER
5070
   ) IS
5071
   BEGIN
5072
      DELETE FROM Daemon_Instructions
5073
      WHERE OP_CODE = nOp_code
5074
      AND RTAG_ID = nRtag_id
5075
      AND PV_ID   = nPv_id;
5076
 
5077
   END del_daemon_inst_by_rtag_pvid;
5078
 
5079
/*-------------------------------------------------------------------------------------------------------*/
5080
   -- Updates a daemon instruction
5081
   -- This is for use by the Release Manager Website code.
5082
   --
5083
   PROCEDURE update_daemon_inst
5084
   ( nInstId IN NUMBER
5085
   , nOp_code IN NUMBER
5086
   , nRtag_id IN NUMBER
5087
   , nPv_id IN NUMBER
5088
   , nSchedDate IN DATE
5089
   , nRepeatSecs IN NUMBER
5090
   , nAddedDate IN DATE
5091
   , nUser_id IN NUMBER
5092
   ) IS
5093
      CURSOR daemon_inst_cur IS
5094
         SELECT *
5095
         FROM daemon_instructions di
5096
         WHERE di.DAEMON_INSTRUCTIONS_ID = nInstId;
5097
 
5098
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5099
 
5100
      exc_inst_removed EXCEPTION;
5101
   BEGIN
5102
      OPEN daemon_inst_cur;
5103
 
5104
      FETCH daemon_inst_cur
5105
      INTO daemon_inst_rec;
5106
 
5107
      IF daemon_inst_cur%FOUND THEN
5108
 
5109
         UPDATE Daemon_Instructions
5110
         SET op_code = nOp_code,
5111
            rtag_id = nRtag_id,
5112
            pv_id   = nPv_id,
5113
            scheduled_datetime = nSchedDate,
5114
            repeat_secs = nRepeatSecs,
5115
            added_datetime = nAddedDate,
5116
            user_id = nUser_id,
5117
            in_progress = '0'
5118
         WHERE daemon_instructions_id = nInstId;
5119
      ELSE
5120
         raise exc_inst_removed;
5121
      END IF;
5122
 
5123
      CLOSE daemon_inst_cur;
5124
   EXCEPTION
5125
      WHEN DUP_VAL_ON_INDEX
5126
      THEN
5127
         raise_application_error (-20000,
5128
                                 'Table already contains a record with the specified OPERATION, RELEASE, and PACKAGE VERSION'
5129
                                 );
5130
      WHEN exc_inst_removed
5131
      THEN
5132
         raise_application_error (-20000,
5133
                                 'Record was probably deleted by the Buildtool during your edit-form session. Please create a new Daemon Instruction.'
5134
                                 );
5135
      WHEN OTHERS
5136
      THEN
5137
         raise;
5138
   END update_daemon_inst;
5139
 
5140
/*-------------------------------------------------------------------------------------------------------*/
5141
   -- Returns a comma-separated list of operation codes found for a given rtag and pv_id combination
5142
   -- This is for use by the Release Manager Website code.
5143
   --
5144
   FUNCTION daemon_ops_for_rtag_pvid(
5145
      nRtag_id IN NUMBER,
5146
      nPv_id IN NUMBER
5147
   ) RETURN VARCHAR2
5148
   IS
5149
      CURSOR daemon_inst_cur IS
5150
         SELECT di.OP_CODE
5151
         FROM daemon_instructions di
5152
         WHERE di.RTAG_ID = nRtag_id
5153
            AND di.PV_ID = nPv_id;
5154
 
5155
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5156
 
5157
      sRetList VARCHAR2(4000) := '';
5158
 
5159
   BEGIN
5160
      OPEN daemon_inst_cur;
5161
 
5162
      FETCH daemon_inst_cur
5163
      INTO daemon_inst_rec;
5164
 
5165
      WHILE daemon_inst_cur%FOUND
5166
      LOOP
5167
         sRetList := sRetList || daemon_inst_rec.op_code || ',';
5168
 
5169
         FETCH daemon_inst_cur
5170
         INTO daemon_inst_rec;
5171
      END LOOP;
5172
 
5173
      CLOSE daemon_inst_cur;
5174
 
5175
      RETURN sRetList;
5176
   END daemon_ops_for_rtag_pvid;
5177
/*-------------------------------------------------------------------------------------------------------*/
5178
   -- Returns a comma-separated list of operation codes found for a given rtag
5179
   -- This is for use by the Release Manager Website code.
5180
   --
5181
   FUNCTION daemon_ops_for_rtag(
5182
      nRtag_id IN NUMBER
5183
   ) RETURN VARCHAR2
5184
   IS
5185
      CURSOR daemon_inst_cur IS
5186
         SELECT di.OP_CODE
5187
         FROM daemon_instructions di
5188
         WHERE di.RTAG_ID = nRtag_id;
5189
 
5190
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5191
 
5192
      sRetList VARCHAR2(4000) := '';
5193
 
5194
   BEGIN
5195
      OPEN daemon_inst_cur;
5196
 
5197
      FETCH daemon_inst_cur
5198
      INTO daemon_inst_rec;
5199
 
5200
      WHILE daemon_inst_cur%FOUND
5201
      LOOP
5202
         sRetList := sRetList || daemon_inst_rec.op_code || ',';
5203
 
5204
         FETCH daemon_inst_cur
5205
         INTO daemon_inst_rec;
5206
      END LOOP;
5207
 
5208
      CLOSE daemon_inst_cur;
5209
 
5210
      RETURN sRetList;
5211
   END daemon_ops_for_rtag;
5212
/*-------------------------------------------------------------------------------------------------------*/
5213
   -- Gets a record from the daemon instruction table that can be carried out now and returns the fields
5214
   -- in the record a daemon will need
5215
   -- The Buildtool should use this to find a job to do for a particular release. It should then call
5216
   -- mark_daemon_inst_in_progress(inst_id) before carrying out the work, and then call
5217
   -- mark_daemon_inst_completed(inst_id) to signal its completion.
5218
   -- Can be called repeatedly to get a full list of all instructions for a release, by passing back in
5219
   -- the instruction ID obtained from the previous call (the 1st call should use 0)
5220
   -- Can be called repeatedly to get a full list of all instructions of a specific op-code value for a release,
5221
   -- by passing back in an op-code value of 0 or higher (use -1 if no op-code filtering is needed)
5222
   -- Returns 1 if a record was found, else 0.
5223
   --
5224
   FUNCTION get_daemon_inst(
5225
      nRtag_id IN NUMBER,
5226
      nInst_id IN OUT NUMBER,
5227
      nOp_code IN OUT NUMBER,
5228
      nPv_id OUT NUMBER,
5229
      nUser_id OUT NUMBER,
5230
      nInProgress OUT NUMBER
5231
   ) RETURN NUMBER
5232
   IS
5233
      CURSOR daemon_inst_cur IS
5234
         SELECT di.daemon_instructions_id, di.op_code, di.pv_id ,di.user_id, di.in_progress
5235
           FROM daemon_instructions di
5236
          WHERE di.rtag_id = nRtag_id
5237
            AND di.daemon_instructions_id > nInst_id
5238
            AND di.scheduled_datetime <= ora_sysdatetime
5239
            AND ((nOp_code = -1) OR (nOp_code = di.op_code))
5240
            AND rownum <= 1
5241
       ORDER BY di.daemon_instructions_id;
5242
 
5243
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5244
   BEGIN
5245
      OPEN daemon_inst_cur;
5246
 
5247
      FETCH daemon_inst_cur
5248
      INTO daemon_inst_rec;
5249
 
5250
      -- If we found a record, return it.
5251
      IF daemon_inst_cur%FOUND THEN
5252
         nInst_id := daemon_inst_rec.daemon_instructions_id;
5253
         nOp_code := daemon_inst_rec.op_code;
5254
         nPv_id   := daemon_inst_rec.pv_id;
5255
         nUser_id := daemon_inst_rec.user_id;
5256
         IF daemon_inst_rec.in_progress = '1' THEN
5257
            nInProgress := 1;
5258
         ELSE
5259
            nInProgress := 0;
5260
         END IF;
5261
         CLOSE daemon_inst_cur;
5262
         RETURN 1;
5263
      END IF;
5264
 
5265
      CLOSE daemon_inst_cur;
5266
      RETURN 0;
5267
 
5268
   END get_daemon_inst;
5269
/*-------------------------------------------------------------------------------------------------------*/
5270
   -- Marks a daemon instruction as being processed by a daemon
5271
   -- The Buildtool should use this before it embarks on the work the instruction commands
5272
   --
5273
   PROCEDURE mark_daemon_inst_in_progress( nInstId IN NUMBER )
5274
   IS
5275
   BEGIN
5276
      UPDATE Daemon_Instructions
5277
      SET in_progress = '1'
5278
      WHERE daemon_instructions_id = nInstId;
5279
 
5280
   END mark_daemon_inst_in_progress;
5281
 
5282
/*-------------------------------------------------------------------------------------------------------*/
5283
   -- Once the Buildtool has finished carrying out the daemon instruction, it should call this stored
5284
   -- procedure in order to either delete the instruction or update it in the case where it is a repeating
5285
   -- instruction.
5286
   --
5287
   PROCEDURE mark_daemon_inst_completed( nInstId IN NUMBER )
5288
   IS
5289
      repSecs NUMBER;
5290
      schedDate  DATE;
5291
 
5292
      CURSOR daemon_inst_cur IS
5293
         SELECT di.REPEAT_SECS AS repSecs, di.SCHEDULED_DATETIME AS schedDate
5294
         FROM daemon_instructions di
5295
         WHERE di.daemon_instructions_id = nInstId;
5296
 
5297
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5298
   BEGIN
5299
      OPEN daemon_inst_cur;
5300
 
5301
      FETCH daemon_inst_cur
5302
      INTO daemon_inst_rec;
5303
 
5304
      IF daemon_inst_cur%FOUND THEN
5305
 
5306
         -- if instruction repeats daily, add 1 day to the scheduled time and update the record
5307
         IF daemon_inst_rec.repSecs = 86400 THEN
5308
            UPDATE Daemon_Instructions
5309
               SET scheduled_datetime = daemon_inst_rec.schedDate + 1,
5310
                  in_progress = '0'
5311
            WHERE daemon_instructions_id = nInstId;
5312
         ELSE
5313
            -- Delete the daemon instruction, we are done with it
5314
            del_daemon_inst(nInstId);
5315
         END IF;
5316
      END IF;
5317
 
5318
      CLOSE daemon_inst_cur;
5319
 
5320
   EXCEPTION
5321
      WHEN OTHERS
5322
      THEN
5323
         raise;
5324
 
5325
   END mark_daemon_inst_completed;
5326
/*-------------------------------------------------------------------------------------------------------*/
5327
   -- This function deletes any old daemon instruction that appears stranded due to a problem that might
5328
   -- have occured during buildtool operation such as might occur if the buildtool or the machine it was
5329
   -- hosted on came down whilst it was processing a daemon instruction.
5330
   PROCEDURE cleanup_stranded_daemon_insts
5331
   IS
5332
   BEGIN
5333
      -- delete records at least two days old
5334
      DELETE FROM daemon_instructions di
5335
      WHERE  (di.scheduled_datetime + 5) <= ora_sysdatetime;
5336
 
5337
   END cleanup_stranded_daemon_insts;
5338
/*-------------------------------------------------------------------------------------------------------*/
5339
  --This function supersedes function, add_daemon. Done for DEVI-046806
5340
   PROCEDURE add_daemon_config (
5341
      nrtagid           IN   NUMBER,
5342
      nbmcon_id         IN   NUMBER,
5343
      sdaemon_mode      IN   VARCHAR2,
5344
      sgbebuildfilter   IN   VARCHAR2
5345
   )
5346
   IS
5347
      nrecordnumber   NUMBER;
5348
      nrconid         NUMBER;
5349
      sdaemonhostname VARCHAR2(50);
5350
      ngbeid         NUMBER;
5351
   BEGIN
5352
      -- Get RCON_ID
5353
      SELECT seq_rcon_id.NEXTVAL
5354
      INTO nrconid
5355
      FROM DUAL;
5356
 
5357
      SELECT COUNT (*)
5358
      INTO nrecordnumber
5359
      FROM release_config
5360
      WHERE rtag_id = nrtagid;
5361
 
5362
      SELECT machine_hostname,gbe_id INTO sdaemonhostname,ngbeid
5363
      FROM build_machine_config
5364
      WHERE bmcon_id = nbmcon_id;
5365
 
5366
      INSERT INTO release_config
5367
             (rcon_id, rtag_id, daemon_hostname, daemon_mode,
4308 dpurdie 5368
                gbe_id, gbe_buildfilter, bmcon_id)
1373 dpurdie 5369
      VALUES (nrconid, nrtagid, sdaemonhostname, sdaemon_mode,
4308 dpurdie 5370
                ngbeid, sgbebuildfilter, nbmcon_id);
1373 dpurdie 5371
 
5372
      -- A newly configured daemon should initially be paused (DEVI-047277)
5373
      INSERT INTO run_level
5374
                  (rcon_id, pause)
5375
           VALUES (nrconid, 2);
5376
 
5377
   END;
5378
 
5379
/*-------------------------------------------------------------------------------------------------------*/
5380
  --This function supersedes function, update_daemon. Done for DEVI-046806
5381
   PROCEDURE update_daemon_config (
5382
      nrconid           IN   NUMBER,
5383
      nbmcon_id         IN   NUMBER,
5384
      sdaemon_mode      IN   VARCHAR2,
5385
      sgbebuildfilter   IN   VARCHAR2
5386
   )
5387
   IS
5388
      sdaemonhostname VARCHAR2(50);
5389
      ngbeid         NUMBER;
5390
   BEGIN
5391
 
5392
      SELECT machine_hostname,gbe_id INTO sdaemonhostname,ngbeid
5393
      FROM build_machine_config
5394
      WHERE bmcon_id = nbmcon_id;
5395
 
5396
      UPDATE release_config
5397
         SET daemon_hostname = sdaemonhostname,
5398
            gbe_id = ngbeid,
5399
            daemon_mode = sdaemon_mode,
4308 dpurdie 5400
            gbe_buildfilter = sgbebuildfilter,
5401
            bmcon_id = nbmcon_id 
1373 dpurdie 5402
      WHERE rcon_id = nrconid;
5403
   END;
5404
 
5405
 
5406
/*-------------------------------------------------------------------------------------------------------*/
5407
   PROCEDURE add_build_machine (
5408
      sdisplay_name          IN   VARCHAR2,
5409
      smachine_hostname      IN   VARCHAR2,
5410
      ngbeid                 IN   NUMBER,
5411
      sdescription           IN   VARCHAR2
5412
   )
5413
   IS
5414
      nrecordnumber   NUMBER;
5415
      nbmcon_id       NUMBER;
5416
   BEGIN
5417
      -- Get BMCON_ID
5418
      SELECT seq_bmcon_id.NEXTVAL INTO nbmcon_id FROM DUAL;
5419
 
5420
      INSERT INTO build_machine_config(bmcon_id, display_name, machine_hostname,gbe_id,description)
5421
            VALUES (nbmcon_id,sdisplay_name,smachine_hostname,ngbeid,sdescription);
5422
 
5423
   EXCEPTION
5424
      WHEN DUP_VAL_ON_INDEX
5425
      THEN
5426
         raise_application_error (-20000,
5427
                                 'Cannot have duplicate machines.'
5428
                                 );
5429
 
5430
   END;
5431
 
5432
/*-------------------------------------------------------------------------------------------------------*/
4308 dpurdie 5433
 PROCEDURE duplicate_daemon_config (
5434
      nrtagid           IN   NUMBER,
5435
      nbmcon_id         IN   NUMBER,
5436
      sdaemonhostname   IN   VARCHAR2,
5437
      ngbe_id           IN   NUMBER,
5438
      sdaemon_mode      IN   VARCHAR2,
5439
      sgbebuildfilter   IN   VARCHAR2
5440
   )
5441
   IS
5442
      nrecordnumber   NUMBER;
5443
      nrconid         NUMBER;
5444
    BEGIN
5445
 
5446
      -- Get RCON_ID
5447
      SELECT seq_rcon_id.NEXTVAL
5448
      INTO nrconid
5449
      FROM DUAL;
5450
 
5451
      INSERT INTO release_config
5452
             (rcon_id, rtag_id, daemon_hostname, daemon_mode,
5453
                gbe_id, gbe_buildfilter, bmcon_id)
5454
      VALUES (nrconid, nrtagid, sdaemonhostname, sdaemon_mode,
5455
                ngbe_id, sgbebuildfilter, nbmcon_id);
5456
 
5457
    -- A newly configured daemon should initially be disabled (DEVI-047277)
5458
      INSERT INTO run_level
5459
                  (rcon_id, pause)
5460
           VALUES (nrconid, 2);
5461
 
5462
   END;
5463
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 5464
   PROCEDURE delete_build_machine (sbmcon_id_list IN VARCHAR2)
5465
   IS
5466
   BEGIN
5467
      DELETE FROM build_machine_config
5468
            WHERE bmcon_id IN (
5469
                     SELECT * FROM THE
5470
                              (SELECT CAST
5471
                                          (in_list_number (sbmcon_id_list) AS relmgr_number_tab_t
5472
                                          )
5473
                                 FROM DUAL
5474
                              ));
5475
   END;
5476
 
5477
 
5478
/*-------------------------------------------------------------------------------------------------------*/
5479
   PROCEDURE update_build_machine (
5480
      nbmcon_id              IN   NUMBER,
5481
      sdisplay_name          IN   VARCHAR2,
5482
      smachine_hostname      IN   VARCHAR2,
5483
      ngbeid                 IN   NUMBER,
5484
      sdescription           IN   VARCHAR2
5485
   )
5486
   IS
5487
   BEGIN
5488
      UPDATE build_machine_config
5489
         SET display_name = sdisplay_name,
5490
             machine_hostname = smachine_hostname,
5491
             gbe_id = ngbeid,
5492
             description = sdescription
5493
      WHERE bmcon_id = nbmcon_id;
5494
   EXCEPTION
5495
      WHEN DUP_VAL_ON_INDEX
5496
      THEN
5497
         raise_application_error (-20000,
5498
                                 'Cannot have duplicate machines.'
5499
                                 );
5500
   END;
5501
END pk_buildapi;
4040 dpurdie 5502
 
1374 dpurdie 5503
/
1373 dpurdie 5504
 
4040 dpurdie 5505
/
5506
--------------------------------------------------------
5507
--  DDL for Package Body PK_ENVIRONMENT
5508
--------------------------------------------------------
5509
 
1373 dpurdie 5510
  CREATE OR REPLACE PACKAGE BODY "PK_ENVIRONMENT" 
5511
IS
5512
 
5513
   /*-------------------------------------------------------------------------------------------------------*/
5514
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
5515
     RETURN NUMBER
5516
   IS
5517
   BEGIN
5518
      /*
5519
     || N - unlocked
5520
     || Y - release and locked
5521
     || P - penging approval
5522
     || A - approved package ready for auto-build
5523
     */
5524
     IF cdlock = 'N' OR cdlock = 'R'
5525
     THEN
5526
       -- WORK IN PROGRESS --
5527
       RETURN 0;
5528
     ELSIF cdlock = 'P' OR cdlock = 'A'
5529
     THEN
5530
       -- PENDING --
5531
       RETURN 1;
5532
     ELSIF cdlock = 'Y'
5533
     THEN
5534
       -- RELEASED --
5535
       RETURN 2;
5536
     ELSE
5537
       -- NOT FOUND --
5538
       raise_application_error
5539
                   (-20000,
5540
                      'Cannot decide where to place package. [cDlock='
5541
                    || cdlock
5542
                    || ']'
5543
                   );
5544
     END IF;
5545
   END;
5546
 
5547
/*-------------------------------------------------------------------------------------------------------*/
5548
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
5549
     RETURN NUMBER
5550
   IS
5551
     envtab   NUMBER         := -1;
5552
 
5553
     CURSOR curarea
5554
     IS
5555
       SELECT 2 AS envtab
5556
         FROM release_content rc
5557
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
5558
       UNION
5559
       SELECT 0 AS envtab
5560
         FROM work_in_progress wip
5561
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
5562
       UNION
5563
       SELECT 1 AS envtab
5564
         FROM planned pl
5565
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
5566
 
5567
     recarea   curarea%ROWTYPE;
5568
   BEGIN
5569
     OPEN curarea;
5570
 
5571
     FETCH curarea
5572
      INTO recarea;
5573
 
5574
     IF curarea%FOUND
5575
     THEN
5576
       envtab := recarea.envtab;
5577
     END IF;
5578
 
5579
     CLOSE curarea;
5580
 
5581
     RETURN envtab;
5582
   END;
5583
 
5584
/*-------------------------------------------------------------------------------------------------------*/
5585
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
5586
     RETURN NUMBER
5587
   IS
5588
     ispatch   package_versions.dlocked%TYPE;
5589
     viewid   NUMBER                    := -1;
5590
 
5591
     CURSOR curview
5592
     IS
5593
       SELECT rc.base_view_id AS view_id
5594
         FROM release_content rc
5595
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
5596
       UNION
5597
       SELECT wip.view_id AS view_id
5598
         FROM work_in_progress wip
5599
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
5600
       UNION
5601
       SELECT pl.view_id AS view_id
5602
         FROM planned pl
5603
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
5604
 
5605
     recview   curview%ROWTYPE;
5606
   BEGIN
5607
     -- Get dlock state
5608
     SELECT pv.is_patch
5609
      INTO ispatch
5610
      FROM package_versions pv
5611
      WHERE pv.pv_id = pvid;
5612
 
5613
     -- Decide which view id should package go under.
5614
     IF (ispatch != 'Y') OR (ispatch IS NULL)
5615
     THEN
5616
       -- Get VIEW ID of Package
5617
       OPEN curview;
5618
 
5619
       FETCH curview
5620
        INTO recview;
5621
 
5622
       IF curview%FOUND
5623
       THEN
5624
         viewid := recview.view_id;
5625
       ELSE
5626
         raise_application_error
5627
            (-20000,
5628
               'Cannot find view_id to proceed. [PvId='
5629
            || pvid
5630
            || ']. The current version may not exist in the release anymore.'
5631
            );
5632
       END IF;
5633
 
5634
       CLOSE curview;
5635
     ELSE
5636
       -- Get VIEW ID of Patch (view id of parent package)
5637
       SELECT rc.base_view_id
5638
         INTO viewid
5639
         FROM release_content rc, package_patches ppv
5640
        WHERE rc.rtag_id = rtagid
5641
         AND rc.pv_id = ppv.pv_id
5642
         AND ppv.patch_id = pvid;
5643
     END IF;
5644
 
5645
     RETURN viewid;
5646
   END;
5647
 
5648
/*-------------------------------------------------------------------------------------------------------*/
5649
   PROCEDURE add_package (
5650
     pvid    IN   NUMBER,
5651
     viewid   IN   NUMBER,
5652
     rtagid   IN   NUMBER,
5653
     userid   IN   NUMBER
5654
   )
5655
   IS
5656
     dlocked   package_versions.dlocked%TYPE;
5657
     envtab   NUMBER;
5658
   BEGIN
5659
     IF can_edit_pkg_in_project (pvid, rtagid) = 1
5660
     THEN
5661
       -- Get dlock state
5662
       SELECT pv.dlocked
5663
         INTO dlocked
5664
         FROM package_versions pv
5665
        WHERE pv.pv_id = pvid;
5666
 
5667
       -- Get which area should go under
5668
       envtab := select_environment_area (dlocked);
5669
       -- Log
5670
       log_action (pvid, 'action', userid, 'Start of Package Add...');
5671
 
5672
       -- Remove Package
5673
       IF envtab = 0
5674
       THEN
5675
         -- WORK IN PROGRESS --
5676
         pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
5677
       ELSIF envtab = 1
5678
       THEN
5679
         -- PENDING --
5680
         pk_planned.add_package (pvid, viewid, rtagid, userid);
5681
       ELSIF envtab = 2
5682
       THEN
5683
         -- RELEASED --
5684
         -- NOTE: this package will be replaced with matching package
5685
         pk_release.add_package (pvid, viewid, rtagid, userid);
5686
         -- Now do post Release Actions
5687
         pk_release.run_post_actions (pvid, rtagid);
5688
       END IF;
5689
 
5690
       -- Log
5691
       log_action (pvid, 'action', userid, 'End of Package Add...');
5692
     END IF;
5693
   END;
5694
 
5695
/*-------------------------------------------------------------------------------------------------------*/
5696
   PROCEDURE add_package_bulk (
5697
     pvidlist   IN   VARCHAR2,
5698
     viewid    IN   NUMBER,
5699
     rtagid    IN   NUMBER,
5700
     userid    IN   NUMBER
5701
   )
5702
   IS
5703
     nidcollector   relmgr_number_tab_t         := relmgr_number_tab_t
5704
                                                        ();
5705
     dlocked      package_versions.dlocked%TYPE;
5706
     pvid         NUMBER;
5707
     envtab       NUMBER;
5708
   BEGIN
5709
     /*--------------- Business Rules Here -------------------*/
5710
     IF (pvidlist IS NULL)
5711
     THEN
5712
       raise_application_error (-20000,
5713
                          'Please select at least one package.'
5714
                         );
5715
     END IF;
5716
 
5717
/*-------------------------------------------------------*/
5718
     nidcollector := in_list_number (pvidlist);
5719
 
5720
     FOR i IN 1 .. nidcollector.COUNT
5721
     LOOP
5722
       pvid := nidcollector (i);
5723
       add_package (pvid, viewid, rtagid, userid);
5724
     END LOOP;
5725
   END;
5726
 
5727
/*-------------------------------------------------------------------------------------------------------*/
5728
   PROCEDURE replace_package (
5729
     newpvid  IN   NUMBER,
5730
     oldpvid  IN   NUMBER,
5731
     rtagid   IN   NUMBER,
5732
     userid   IN   NUMBER
5733
   )
5734
   IS
5735
     dlocked      package_versions.dlocked%TYPE;
5736
     viewid       NUMBER;
5737
     envtab       NUMBER;
5738
     ROWCOUNT     NUMBER;
5739
     creleasemode CHAR (1);
5740
     npkgid       NUMBER;
5741
   BEGIN
5742
     /*--------------- Business Rules Here -------------------*/
5743
     -- Check if oldPvId exists. It could have been removed
5744
     SELECT COUNT (pv.pv_id)
5745
       INTO ROWCOUNT
5746
       FROM package_versions pv
5747
      WHERE pv.pv_id = oldpvid;
5748
 
5749
/*-------------------------------------------------------*/
5750
 
5751
     /* This procedure is usually used by "History" option in Release Manager */
5752
 
5753
     -- Get dlock state
5754
     SELECT pv.dlocked
5755
       INTO dlocked
5756
       FROM package_versions pv
5757
      WHERE pv.pv_id = newpvid;
5758
 
5759
     -- Get VIEW_ID ---
5760
     IF ROWCOUNT = 1
5761
     THEN
5762
       viewid := get_view_location (oldpvid, rtagid);
5763
     ELSE
5764
       -- Set ViewID to default
5765
       viewid := 7;
5766
     END IF;
5767
 
5768
     -- Get which area should go under
5769
     envtab := select_environment_area (dlocked);
5770
     -- Log
5771
     log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
5772
 
5773
     -- Replace package
5774
     IF envtab = 0
5775
     THEN
5776
       -- WORK IN PROGRESS --
5777
 
5778
       -- Delete old package
5779
       pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
5780
 
5781
       -- Add new package
5782
       pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
5783
     ELSIF envtab = 1
5784
     THEN
5785
       -- PENDING --
5786
 
5787
       -- Delete old package
5788
       pk_planned.remove_package (oldpvid, rtagid, userid);
5789
 
5790
       -- Add new package
5791
       pk_planned.add_package (newpvid, viewid, rtagid, userid);
5792
     ELSIF envtab = 2
5793
     THEN
5794
       -- RELEASED --
5795
 
5796
       -- Delete old package
5797
       pk_release.remove_package (oldpvid, rtagid, userid);
5798
       -- Add new package
5799
       pk_release.add_package (newpvid, viewid, rtagid, userid);
5800
 
5801
       -- update the pegging table
5802
       UPDATE PEGGED_VERSIONS SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
5803
 
5804
       -- update the advisory ripple table
5805
       UPDATE ADVISORY_RIPPLE SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
5806
 
5807
       -- Now do post Release Actions
5808
       pk_release.run_post_actions (newpvid, rtagid);
5809
     END IF;
5810
 
5811
     -- Log
5812
     log_action (oldpvid, 'action', userid, 'End of Package Replace...');
5813
   END;
5814
 
5815
/*-------------------------------------------------------------------------------------------------------*/
5816
   FUNCTION remove_package (
5817
     pvid        IN   NUMBER,
5818
     rtagid      IN   NUMBER,
5819
     userid      IN   NUMBER,
5820
     forceremove IN   CHAR
5821
   )
5822
     RETURN NUMBER
5823
   IS
5824
     envtab      NUMBER;
5825
     isused      BOOLEAN;
5826
     recordcount   NUMBER;
5827
   BEGIN
5828
/*--------------- Business Rules Here -------------------*/
5829
/*-------------------------------------------------------*/
5830
 
5831
     -- Find location of package
5832
     envtab := get_package_area (pvid, rtagid);
5833
 
5834
     -- Remove Package
5835
     IF envtab = 0
5836
     THEN
5837
       -- WORK IN PROGRESS --
5838
       -- Delete package
5839
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
5840
 
5841
       RETURN 0;
5842
     ELSIF envtab = 1
5843
     THEN
5844
       -- PENDING --
5845
       -- Delete package
5846
       pk_planned.remove_package (pvid, rtagid, userid);
5847
 
5848
       RETURN 0;
5849
     ELSIF envtab = 2
5850
     THEN
5851
       -- RELEASED --
5852
 
5853
       -- Check if is used by other packages
5854
       isused := TRUE;
5855
 
5856
       IF forceremove = 'N'
5857
       THEN
5858
         SELECT COUNT (pv.pv_id)
5859
           INTO recordcount
5860
           FROM (SELECT dpv.pkg_id, dpv.v_ext
5861
                 FROM release_content rc,
5862
                     package_dependencies dep,
5863
                     package_versions dpv
5864
                WHERE rc.rtag_id = rtagid
5865
                  AND rc.pv_id = dep.pv_id
5866
                  AND dep.dpv_id = dpv.pv_id) rdep,
5867
               package_versions pv
5868
          WHERE pv.pkg_id = rdep.pkg_id
5869
            AND NVL (pv.v_ext, '|LINK_A_NULL|') =
5870
                                  NVL (rdep.v_ext, '|LINK_A_NULL|')
5871
            AND pv.pv_id = pvid;
5872
 
5873
         IF recordcount > 0
5874
         THEN
5875
            RETURN 1;               -- Return 1 as package being used
5876
         ELSE
5877
            isused := FALSE;
5878
         END IF;
5879
       END IF;
5880
 
5881
       IF forceremove = 'Y' OR NOT isused
5882
       THEN
5883
         -- Delete old package
5884
         pk_release.remove_package (pvid, rtagid, userid);
5885
 
5886
         -- Delete old package's pegging info
5887
         DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = rtagid AND pegv.PV_ID = pvid;
5888
 
5889
         -- Delete old package's advisory ripple info
5890
         DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = rtagid AND avr.PV_ID = pvid;
5891
 
5892
         -- Now do post Release Actions
5893
         pk_release.run_post_actions (pvid, rtagid);
5894
         RETURN 0;
5895
       END IF;
5896
     END IF;
5897
   END;
5898
 
5899
/*-------------------------------------------------------------------------------------------------------*/
5900
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
5901
 
5902
   PROCEDURE get_environment_items (
5903
     viewtype         IN      NUMBER,
5904
     userid           IN      NUMBER,
5905
     rtagid           IN      NUMBER,
5906
     sviewidshowlist  IN      VARCHAR2,
5907
     ntruerecordcount OUT     NUMBER,
5908
     recordset        OUT     typecur
5909
   )
5910
   IS
5911
   BEGIN
5912
     -- Get true record count because views can give false count
5913
     SELECT COUNT (pl.pv_id)
5914
      INTO ntruerecordcount
5915
      FROM environment_view pl
5916
      WHERE pl.rtag_id = rtagid;
5917
 
5918
     IF viewtype = 1
5919
     THEN
5920
       /*--- GUEST VIEW ---*/
5921
       OPEN recordset FOR
5922
         SELECT   *
5923
            FROM (
5924
                 /* Base Views collapsed */
5925
                 SELECT DISTINCT vi.view_id, vi.view_name,
5926
                             TO_NUMBER (NULL) AS pkg_state,
5927
                             TO_NUMBER (NULL) AS deprecated_state,
5928
                             TO_NUMBER (NULL) AS pv_id,
5929
                             NULL AS pkg_name, NULL AS pkg_version,
5930
                             NULL AS dlocked, NULL AS pv_description,
5931
                             rel.operation
5932
                         FROM environment_view rel, views vi
5933
                        WHERE rel.view_id = vi.view_id
5934
                          AND rtag_id = rtagid
5935
                          AND rel.view_id NOT IN (
5936
                               SELECT *
5937
                                 FROM THE
5938
                                       (SELECT CAST
5939
                                               (in_list_number
5940
                                                  (sviewidshowlist
5941
                                                  ) AS relmgr_number_tab_t
5942
                                               )
5943
                                         FROM DUAL
5944
                                       ))
5945
                 UNION
5946
                 /* Base Views expanded */
5947
                 SELECT vi.view_id, vi.view_name,
5948
                      DECODE (rel.pkg_state,
5949
                            NULL, 0,
5950
                            rel.pkg_state
5951
                           ) AS pkg_state,
5952
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
5953
                      pv.pkg_version, pv.dlocked, pv.pv_description,
5954
                      rel.operation
5955
                  FROM environment_view rel,
5956
                      PACKAGES pkg,
5957
                      package_versions pv,
5958
                      views vi
5959
                  WHERE pv.pkg_id = pkg.pkg_id
5960
                   AND rel.pv_id = pv.pv_id
5961
                   AND rel.view_id = vi.view_id
5962
                   AND rel.view_id IN (
5963
                        SELECT *
5964
                          FROM THE
5965
                                (SELECT CAST
5966
                                        (in_list_number
5967
                                               (sviewidshowlist) AS relmgr_number_tab_t
5968
                                        )
5969
                                  FROM DUAL
5970
                                ))
5971
                   AND rtag_id = rtagid) ord
5972
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
5973
     ELSIF viewtype = 2
5974
     THEN
5975
       /*--- PERSONAL VIEW ---*/
5976
       OPEN recordset FOR
5977
         SELECT   *
5978
            FROM (
5979
                 /* Base Views collapsed */
5980
                 SELECT DISTINCT vi.view_id, vi.view_name,
5981
                             TO_NUMBER (NULL) AS pkg_state,
5982
                             TO_NUMBER (NULL) AS deprecated_state,
5983
                             TO_NUMBER (NULL) AS pv_id,
5984
                             NULL AS pkg_name, NULL AS pkg_version,
5985
                             NULL AS dlocked, NULL AS pv_description,
5986
                             rel.operation
5987
                         FROM environment_view rel,
5988
                             view_settings vs,
5989
                             views vi
5990
                        WHERE rel.view_id = vi.view_id
5991
                          AND vs.view_id = rel.view_id
5992
                          AND vs.user_id = userid
5993
                          AND rtag_id = rtagid
5994
                          AND rel.view_id NOT IN (
5995
                               SELECT *
5996
                                 FROM THE
5997
                                       (SELECT CAST
5998
                                               (in_list_number
5999
                                                  (sviewidshowlist
6000
                                                  ) AS relmgr_number_tab_t
6001
                                               )
6002
                                         FROM DUAL
6003
                                       ))
6004
                 UNION
6005
                 /* Base Views expanded */
6006
                 SELECT vi.view_id, vi.view_name,
6007
                      DECODE (rel.pkg_state,
6008
                            NULL, 0,
6009
                            rel.pkg_state
6010
                           ) AS pkg_state,
6011
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6012
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6013
                      rel.operation
6014
                  FROM environment_view rel,
6015
                      PACKAGES pkg,
6016
                      package_versions pv,
6017
                      views vi,
6018
                      view_settings vs
6019
                  WHERE pv.pkg_id = pkg.pkg_id
6020
                   AND rel.pv_id = pv.pv_id
6021
                   AND rel.view_id = vi.view_id
6022
                   AND vs.view_id = vi.view_id
6023
                   AND vs.user_id = userid
6024
                   AND rel.view_id IN (
6025
                        SELECT *
6026
                          FROM THE
6027
                                (SELECT CAST
6028
                                        (in_list_number
6029
                                               (sviewidshowlist) AS relmgr_number_tab_t
6030
                                        )
6031
                                  FROM DUAL
6032
                                ))
6033
                   AND rtag_id = rtagid
6034
                 UNION
6035
                 /* Private Views collapsed */
6036
                 SELECT vi.view_id, vi.view_name,
6037
                      TO_NUMBER (NULL) AS pkg_state,
6038
                      TO_NUMBER (NULL) AS deprecated_state,
6039
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6040
                      NULL AS pkg_version, NULL AS dlocked,
6041
                      NULL AS pv_description,
6042
                      rel.operation
6043
                  FROM view_settings vs,
6044
                      view_def vd,
6045
                      views vi,
6046
                      environment_view rel,
6047
                      package_versions pv
6048
                  WHERE vs.view_id = vi.view_id
6049
                   AND rel.pv_id = pv.pv_id
6050
                   AND vd.pkg_id = pv.pkg_id
6051
                   AND vd.view_id = vi.view_id
6052
                   AND vi.base_view = 'N'
6053
                   AND rel.rtag_id = rtagid
6054
                   AND vs.user_id = userid
6055
                   AND vi.view_id NOT IN (
6056
                        SELECT *
6057
                          FROM THE
6058
                                (SELECT CAST
6059
                                        (in_list_number
6060
                                               (sviewidshowlist) AS relmgr_number_tab_t
6061
                                        )
6062
                                  FROM DUAL
6063
                                ))
6064
                 UNION
6065
                 /* Private Views expanded */
6066
                 SELECT vi.view_id, vi.view_name,
6067
                      DECODE (rel.pkg_state,
6068
                            NULL, 0,
6069
                            rel.pkg_state
6070
                           ) AS pkg_state,
6071
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6072
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6073
                      rel.operation
6074
                  FROM users usr,
6075
                      view_settings vs,
6076
                      view_def vd,
6077
                      views vi,
6078
                      environment_view rel,
6079
                      PACKAGES pkg,
6080
                      package_versions pv
6081
                  WHERE vs.user_id = usr.user_id
6082
                   AND vs.view_id = vi.view_id
6083
                   AND vd.view_id = vi.view_id
6084
                   AND pv.pkg_id = pkg.pkg_id
6085
                   AND rel.pv_id = pv.pv_id
6086
                   AND rel.rtag_id = rtagid
6087
                   AND vd.pkg_id = pkg.pkg_id
6088
                   AND vi.base_view = 'N'
6089
                   AND vi.view_id IN (
6090
                        SELECT *
6091
                          FROM THE
6092
                                (SELECT CAST
6093
                                        (in_list_number
6094
                                               (sviewidshowlist) AS relmgr_number_tab_t
6095
                                        )
6096
                                  FROM DUAL
6097
                                ))
6098
                   AND usr.user_id = userid) ord
6099
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6100
     END IF;
6101
   END;
6102
 
6103
/*-------------------------------------------------------------------------------------------------------*/
6104
   PROCEDURE get_released_items (
6105
     viewtype         IN      NUMBER,
6106
     userid           IN      NUMBER,
6107
     rtagid           IN      NUMBER,
6108
     sviewidshowlist  IN      VARCHAR2,
6109
     ntruerecordcount OUT     NUMBER,
6110
     recordset        OUT     typecur
6111
   )
6112
   IS
6113
   BEGIN
6114
     -- Get true record count because views can give false count
6115
     SELECT COUNT (rc.pv_id)
6116
      INTO ntruerecordcount
6117
      FROM release_content rc
6118
      WHERE rc.rtag_id = rtagid;
6119
 
6120
     IF viewtype = 1
6121
     THEN
6122
       /*--- GUEST VIEW ---*/
6123
       OPEN recordset FOR
6124
         SELECT   *
6125
            FROM (
6126
                 /* Base Views collapsed */
6127
                 SELECT DISTINCT vi.view_id, vi.view_name,
6128
                             TO_NUMBER (NULL) AS pkg_state,
6129
                             TO_NUMBER (NULL) AS deprecated_state,
6130
                             TO_NUMBER (NULL) AS pv_id,
6131
                             NULL AS pkg_name, NULL AS pkg_version,
6132
                             NULL AS dlocked, NULL AS pv_description
6133
                         FROM release_content rel, views vi
6134
                        WHERE rel.base_view_id = vi.view_id
6135
                          AND rtag_id = rtagid
6136
                          AND rel.base_view_id NOT IN (
6137
                               SELECT *
6138
                                 FROM THE
6139
                                       (SELECT CAST
6140
                                               (in_list_number
6141
                                                  (sviewidshowlist
6142
                                                  ) AS relmgr_number_tab_t
6143
                                               )
6144
                                         FROM DUAL
6145
                                       ))
6146
                 UNION
6147
                 /* Base Views expanded */
6148
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6149
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6150
                      pv.pkg_version, pv.dlocked, pv.pv_description
6151
                  FROM release_content rel,
6152
                      PACKAGES pkg,
6153
                      package_versions pv,
6154
                      views vi
6155
                  WHERE pv.pkg_id = pkg.pkg_id
6156
                   AND rel.pv_id = pv.pv_id
6157
                   AND rel.base_view_id = vi.view_id
6158
                   AND rel.base_view_id IN (
6159
                        SELECT *
6160
                          FROM THE
6161
                                (SELECT CAST
6162
                                        (in_list_number
6163
                                               (sviewidshowlist) AS relmgr_number_tab_t
6164
                                        )
6165
                                  FROM DUAL
6166
                                ))
6167
                   AND rtag_id = rtagid) ord
6168
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6169
     ELSIF viewtype = 2
6170
     THEN
6171
       /*--- PERSONAL VIEW ---*/
6172
       OPEN recordset FOR
6173
         SELECT   *
6174
            FROM (
6175
                 /* Base Views collapsed */
6176
                 SELECT DISTINCT vi.view_id, vi.view_name,
6177
                             TO_NUMBER (NULL) AS pkg_state,
6178
                             TO_NUMBER (NULL) AS deprecated_state,
6179
                             TO_NUMBER (NULL) AS pv_id,
6180
                             NULL AS pkg_name, NULL AS pkg_version,
6181
                             NULL AS dlocked, NULL AS pv_description
6182
                         FROM release_content rel,
6183
                             view_settings vs,
6184
                             views vi
6185
                        WHERE rel.base_view_id = vi.view_id
6186
                          AND vs.view_id = rel.base_view_id
6187
                          AND vs.user_id = userid
6188
                          AND rtag_id = rtagid
6189
                          AND rel.base_view_id NOT IN (
6190
                               SELECT *
6191
                                 FROM THE
6192
                                       (SELECT CAST
6193
                                               (in_list_number
6194
                                                  (sviewidshowlist
6195
                                                  ) AS relmgr_number_tab_t
6196
                                               )
6197
                                         FROM DUAL
6198
                                       ))
6199
                 UNION
6200
                 /* Base Views expanded */
6201
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6202
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6203
                      pv.pkg_version, pv.dlocked, pv.pv_description
6204
                  FROM release_content rel,
6205
                      PACKAGES pkg,
6206
                      package_versions pv,
6207
                      views vi,
6208
                      view_settings vs
6209
                  WHERE pv.pkg_id = pkg.pkg_id
6210
                   AND rel.pv_id = pv.pv_id
6211
                   AND rel.base_view_id = vi.view_id
6212
                   AND vs.view_id = vi.view_id
6213
                   AND vs.user_id = userid
6214
                   AND rel.base_view_id IN (
6215
                        SELECT *
6216
                          FROM THE
6217
                                (SELECT CAST
6218
                                        (in_list_number
6219
                                               (sviewidshowlist) AS relmgr_number_tab_t
6220
                                        )
6221
                                  FROM DUAL
6222
                                ))
6223
                   AND rtag_id = rtagid
6224
                 UNION
6225
                 /* Private Views collapsed */
6226
                 SELECT vi.view_id, vi.view_name,
6227
                      TO_NUMBER (NULL) AS pkg_state,
6228
                      TO_NUMBER (NULL) AS deprecated_state,
6229
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6230
                      NULL AS pkg_version, NULL AS dlocked,
6231
                      NULL AS pv_description
6232
                  FROM view_settings vs,
6233
                      view_def vd,
6234
                      views vi,
6235
                      release_content rel,
6236
                      package_versions pv
6237
                  WHERE vs.view_id = vi.view_id
6238
                   AND rel.pv_id = pv.pv_id
6239
                   AND vd.pkg_id = pv.pkg_id
6240
                   AND vd.view_id = vi.view_id
6241
                   AND vi.base_view = 'N'
6242
                   AND rel.rtag_id = rtagid
6243
                   AND vs.user_id = userid
6244
                   AND vi.view_id NOT IN (
6245
                        SELECT *
6246
                          FROM THE
6247
                                (SELECT CAST
6248
                                        (in_list_number
6249
                                               (sviewidshowlist) AS relmgr_number_tab_t
6250
                                        )
6251
                                  FROM DUAL
6252
                                ))
6253
                 UNION
6254
                 /* Private Views expanded */
6255
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6256
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6257
                      pv.pkg_version, pv.dlocked, pv.pv_description
6258
                  FROM users usr,
6259
                      view_settings vs,
6260
                      view_def vd,
6261
                      views vi,
6262
                      release_content rel,
6263
                      PACKAGES pkg,
6264
                      package_versions pv
6265
                  WHERE vs.user_id = usr.user_id
6266
                   AND vs.view_id = vi.view_id
6267
                   AND vd.view_id = vi.view_id
6268
                   AND pv.pkg_id = pkg.pkg_id
6269
                   AND rel.pv_id = pv.pv_id
6270
                   AND rel.rtag_id = rtagid
6271
                   AND vd.pkg_id = pkg.pkg_id
6272
                   AND vi.base_view = 'N'
6273
                   AND vi.view_id IN (
6274
                        SELECT *
6275
                          FROM THE
6276
                                (SELECT CAST
6277
                                        (in_list_number
6278
                                               (sviewidshowlist) AS relmgr_number_tab_t
6279
                                        )
6280
                                  FROM DUAL
6281
                                ))
6282
                   AND usr.user_id = userid) ord
6283
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6284
     END IF;
6285
   END;
6286
 
6287
/*-------------------------------------------------------------------------------------------------------*/
6288
   PROCEDURE get_work_in_progress_items (
6289
     viewtype         IN      NUMBER,
6290
     userid           IN      NUMBER,
6291
     rtagid           IN      NUMBER,
6292
     sviewidshowlist  IN      VARCHAR2,
6293
     ntruerecordcount OUT     NUMBER,
6294
     recordset        OUT     typecur
6295
   )
6296
   IS
6297
   BEGIN
6298
     -- Get true record count because views can give false count
6299
     SELECT COUNT (wip.pv_id)
6300
      INTO ntruerecordcount
6301
      FROM work_in_progress wip
6302
      WHERE wip.rtag_id = rtagid;
6303
 
6304
     IF viewtype = 1
6305
     THEN
6306
       /*--- GUEST VIEW ---*/
6307
       OPEN recordset FOR
6308
         SELECT   *
6309
            FROM (
6310
                 /* Base Views collapsed */
6311
                 SELECT DISTINCT vi.view_id, vi.view_name,
6312
                             TO_NUMBER (NULL) AS pkg_state,
6313
                             TO_NUMBER (NULL) AS deprecated_state,
6314
                             TO_NUMBER (NULL) AS pv_id,
6315
                             NULL AS pkg_name, NULL AS pkg_version,
6316
                             NULL AS dlocked, NULL AS pv_description
6317
                         FROM work_in_progress rel, views vi
6318
                        WHERE rel.view_id = vi.view_id
6319
                          AND rtag_id = rtagid
6320
                          AND rel.view_id NOT IN (
6321
                               SELECT *
6322
                                 FROM THE
6323
                                       (SELECT CAST
6324
                                               (in_list_number
6325
                                                  (sviewidshowlist
6326
                                                  ) AS relmgr_number_tab_t
6327
                                               )
6328
                                         FROM DUAL
6329
                                       ))
6330
                 UNION
6331
                 /* Base Views expanded */
6332
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6333
 
6334
                      --rel.pkg_state,
6335
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6336
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6337
                      pv.pv_description
6338
                  FROM work_in_progress rel,
6339
                      PACKAGES pkg,
6340
                      package_versions pv,
6341
                      views vi
6342
                  WHERE pv.pkg_id = pkg.pkg_id
6343
                   AND rel.pv_id = pv.pv_id
6344
                   AND rel.view_id = vi.view_id
6345
                   AND rel.view_id IN (
6346
                        SELECT *
6347
                          FROM THE
6348
                                (SELECT CAST
6349
                                        (in_list_number
6350
                                               (sviewidshowlist) AS relmgr_number_tab_t
6351
                                        )
6352
                                  FROM DUAL
6353
                                ))
6354
                   AND rtag_id = rtagid) ord
6355
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6356
     ELSIF viewtype = 2
6357
     THEN
6358
       /*--- PERSONAL VIEW ---*/
6359
       OPEN recordset FOR
6360
         SELECT   *
6361
            FROM (
6362
                 /* Base Views collapsed */
6363
                 SELECT DISTINCT vi.view_id, vi.view_name,
6364
                             TO_NUMBER (NULL) AS pkg_state,
6365
                             TO_NUMBER (NULL) AS deprecated_state,
6366
                             TO_NUMBER (NULL) AS pv_id,
6367
                             NULL AS pkg_name, NULL AS pkg_version,
6368
                             NULL AS dlocked, NULL AS pv_description
6369
                         FROM work_in_progress rel,
6370
                             view_settings vs,
6371
                             views vi
6372
                        WHERE rel.view_id = vi.view_id
6373
                          AND vs.view_id = rel.view_id
6374
                          AND vs.user_id = userid
6375
                          AND rtag_id = rtagid
6376
                          AND rel.view_id NOT IN (
6377
                               SELECT *
6378
                                 FROM THE
6379
                                       (SELECT CAST
6380
                                               (in_list_number
6381
                                                  (sviewidshowlist
6382
                                                  ) AS relmgr_number_tab_t
6383
                                               )
6384
                                         FROM DUAL
6385
                                       ))
6386
                 UNION
6387
                 /* Base Views expanded */
6388
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6389
 
6390
                      --rel.pkg_state,
6391
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6392
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6393
                      pv.pv_description
6394
                  FROM work_in_progress rel,
6395
                      PACKAGES pkg,
6396
                      package_versions pv,
6397
                      views vi,
6398
                      view_settings vs
6399
                  WHERE pv.pkg_id = pkg.pkg_id
6400
                   AND rel.pv_id = pv.pv_id
6401
                   AND rel.view_id = vi.view_id
6402
                   AND vs.view_id = vi.view_id
6403
                   AND vs.user_id = userid
6404
                   AND rel.view_id IN (
6405
                        SELECT *
6406
                          FROM THE
6407
                                (SELECT CAST
6408
                                        (in_list_number
6409
                                               (sviewidshowlist) AS relmgr_number_tab_t
6410
                                        )
6411
                                  FROM DUAL
6412
                                ))
6413
                   AND rtag_id = rtagid
6414
                 UNION
6415
                 /* Private Views collapsed */
6416
                 SELECT vi.view_id, vi.view_name,
6417
                      TO_NUMBER (NULL) AS pkg_state,
6418
                      TO_NUMBER (NULL) AS deprecated_state,
6419
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6420
                      NULL AS pkg_version, NULL AS dlocked,
6421
                      NULL AS pv_description
6422
                  FROM view_settings vs,
6423
                      view_def vd,
6424
                      views vi,
6425
                      work_in_progress rel,
6426
                      package_versions pv
6427
                  WHERE vs.view_id = vi.view_id
6428
                   AND rel.pv_id = pv.pv_id
6429
                   AND vd.pkg_id = pv.pkg_id
6430
                   AND vd.view_id = vi.view_id
6431
                   AND vi.base_view = 'N'
6432
                   AND rel.rtag_id = rtagid
6433
                   AND vs.user_id = userid
6434
                   AND vi.view_id NOT IN (
6435
                        SELECT *
6436
                          FROM THE
6437
                                (SELECT CAST
6438
                                        (in_list_number
6439
                                               (sviewidshowlist) AS relmgr_number_tab_t
6440
                                        )
6441
                                  FROM DUAL
6442
                                ))
6443
                 UNION
6444
                 /* Private Views expanded */
6445
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6446
 
6447
                      --rel.pkg_state,
6448
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6449
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6450
                      pv.pv_description
6451
                  FROM users usr,
6452
                      view_settings vs,
6453
                      view_def vd,
6454
                      views vi,
6455
                      work_in_progress rel,
6456
                      PACKAGES pkg,
6457
                      package_versions pv
6458
                  WHERE vs.user_id = usr.user_id
6459
                   AND vs.view_id = vi.view_id
6460
                   AND vd.view_id = vi.view_id
6461
                   AND pv.pkg_id = pkg.pkg_id
6462
                   AND rel.pv_id = pv.pv_id
6463
                   AND rel.rtag_id = rtagid
6464
                   AND vd.pkg_id = pkg.pkg_id
6465
                   AND vi.base_view = 'N'
6466
                   AND vi.view_id IN (
6467
                        SELECT *
6468
                          FROM THE
6469
                                (SELECT CAST
6470
                                        (in_list_number
6471
                                               (sviewidshowlist) AS relmgr_number_tab_t
6472
                                        )
6473
                                  FROM DUAL
6474
                                ))
6475
                   AND usr.user_id = userid) ord
6476
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6477
     END IF;
6478
   END;
6479
 
6480
/*-------------------------------------------------------------------------------------------------------*/
6481
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
6482
 
6483
   PROCEDURE get_pending_items (
6484
     viewtype         IN      NUMBER,
6485
     userid           IN      NUMBER,
6486
     rtagid           IN      NUMBER,
6487
     sviewidshowlist  IN      VARCHAR2,
6488
     ntruerecordcount OUT     NUMBER,
6489
     recordset        OUT     typecur
6490
   )
6491
   IS
6492
   BEGIN
6493
     -- Get true record count because views can give false count
6494
     SELECT COUNT (pl.pv_id)
6495
      INTO ntruerecordcount
6496
      FROM planned pl
6497
      WHERE pl.rtag_id = rtagid;
6498
 
6499
     IF viewtype = 1
6500
     THEN
6501
       /*--- GUEST VIEW ---*/
6502
       OPEN recordset FOR
6503
         SELECT   *
6504
            FROM (
6505
                 /* Base Views collapsed */
6506
                 SELECT DISTINCT vi.view_id, vi.view_name,
6507
                             TO_NUMBER (NULL) AS pkg_state,
6508
                             TO_NUMBER (NULL) AS deprecated_state,
6509
                             TO_NUMBER (NULL) AS pv_id,
6510
                             NULL AS pkg_name, NULL AS pkg_version,
6511
                             NULL AS dlocked, NULL AS pv_description,
6512
                             rel.operation
6513
                         FROM planned rel, views vi
6514
                        WHERE rel.view_id = vi.view_id
6515
                          AND rtag_id = rtagid
6516
                          AND rel.view_id NOT IN (
6517
                               SELECT *
6518
                                 FROM THE
6519
                                       (SELECT CAST
6520
                                               (in_list_number
6521
                                                  (sviewidshowlist
6522
                                                  ) AS relmgr_number_tab_t
6523
                                               )
6524
                                         FROM DUAL
6525
                                       ))
6526
                 UNION
6527
                 /* Base Views expanded */
6528
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6529
 
6530
                      --rel.pkg_state,
6531
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6532
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6533
                      pv.pv_description,
6534
                      rel.operation
6535
                  FROM planned rel,
6536
                      PACKAGES pkg,
6537
                      package_versions pv,
6538
                      views vi
6539
                  WHERE pv.pkg_id = pkg.pkg_id
6540
                   AND rel.pv_id = pv.pv_id
6541
                   AND rel.view_id = vi.view_id
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) ord
6552
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6553
     ELSIF viewtype = 2
6554
     THEN
6555
       /*--- PERSONAL VIEW ---*/
6556
       OPEN recordset FOR
6557
         SELECT   *
6558
            FROM (
6559
                 /* Base Views collapsed */
6560
                 SELECT DISTINCT vi.view_id, vi.view_name,
6561
                             TO_NUMBER (NULL) AS pkg_state,
6562
                             TO_NUMBER (NULL) AS deprecated_state,
6563
                             TO_NUMBER (NULL) AS pv_id,
6564
                             NULL AS pkg_name, NULL AS pkg_version,
6565
                             NULL AS dlocked, NULL AS pv_description,
6566
                             rel.operation
6567
                         FROM planned rel, view_settings vs, views vi
6568
                        WHERE rel.view_id = vi.view_id
6569
                          AND vs.view_id = rel.view_id
6570
                          AND vs.user_id = userid
6571
                          AND rtag_id = rtagid
6572
                          AND rel.view_id NOT IN (
6573
                               SELECT *
6574
                                 FROM THE
6575
                                       (SELECT CAST
6576
                                               (in_list_number
6577
                                                  (sviewidshowlist
6578
                                                  ) AS relmgr_number_tab_t
6579
                                               )
6580
                                         FROM DUAL
6581
                                       ))
6582
                 UNION
6583
                 /* Base Views expanded */
6584
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6585
 
6586
                      --rel.pkg_state,
6587
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6588
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6589
                      pv.pv_description,
6590
                      rel.operation
6591
                  FROM planned rel,
6592
                      PACKAGES pkg,
6593
                      package_versions pv,
6594
                      views vi,
6595
                      view_settings vs
6596
                  WHERE pv.pkg_id = pkg.pkg_id
6597
                   AND rel.pv_id = pv.pv_id
6598
                   AND rel.view_id = vi.view_id
6599
                   AND vs.view_id = vi.view_id
6600
                   AND vs.user_id = userid
6601
                   AND rel.view_id IN (
6602
                        SELECT *
6603
                          FROM THE
6604
                                (SELECT CAST
6605
                                        (in_list_number
6606
                                               (sviewidshowlist) AS relmgr_number_tab_t
6607
                                        )
6608
                                  FROM DUAL
6609
                                ))
6610
                   AND rtag_id = rtagid
6611
                 UNION
6612
                 /* Private Views collapsed */
6613
                 SELECT vi.view_id, vi.view_name,
6614
                      TO_NUMBER (NULL) AS pkg_state,
6615
                      TO_NUMBER (NULL) AS deprecated_state,
6616
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6617
                      NULL AS pkg_version, NULL AS dlocked,
6618
                      NULL AS pv_description,
6619
                      rel.operation
6620
                  FROM view_settings vs,
6621
                      view_def vd,
6622
                      views vi,
6623
                      planned rel,
6624
                      package_versions pv
6625
                  WHERE vs.view_id = vi.view_id
6626
                   AND rel.pv_id = pv.pv_id
6627
                   AND vd.pkg_id = pv.pkg_id
6628
                   AND vd.view_id = vi.view_id
6629
                   AND vi.base_view = 'N'
6630
                   AND rel.rtag_id = rtagid
6631
                   AND vs.user_id = userid
6632
                   AND vi.view_id NOT IN (
6633
                        SELECT *
6634
                          FROM THE
6635
                                (SELECT CAST
6636
                                        (in_list_number
6637
                                               (sviewidshowlist) AS relmgr_number_tab_t
6638
                                        )
6639
                                  FROM DUAL
6640
                                ))
6641
                 UNION
6642
                 /* Private Views expanded */
6643
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6644
 
6645
                      --rel.pkg_state,
6646
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6647
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6648
                      pv.pv_description,
6649
                      rel.operation
6650
                  FROM users usr,
6651
                      view_settings vs,
6652
                      view_def vd,
6653
                      views vi,
6654
                      planned rel,
6655
                      PACKAGES pkg,
6656
                      package_versions pv
6657
                  WHERE vs.user_id = usr.user_id
6658
                   AND vs.view_id = vi.view_id
6659
                   AND vd.view_id = vi.view_id
6660
                   AND pv.pkg_id = pkg.pkg_id
6661
                   AND rel.pv_id = pv.pv_id
6662
                   AND rel.rtag_id = rtagid
6663
                   AND vd.pkg_id = pkg.pkg_id
6664
                   AND vi.base_view = 'N'
6665
                   AND vi.view_id IN (
6666
                        SELECT *
6667
                          FROM THE
6668
                                (SELECT CAST
6669
                                        (in_list_number
6670
                                               (sviewidshowlist) AS relmgr_number_tab_t
6671
                                        )
6672
                                  FROM DUAL
6673
                                ))
6674
                   AND usr.user_id = userid) ord
6675
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6676
     END IF;
6677
   END;
6678
 
6679
/*-------------------------------------------------------------------------------------------------------*/
6680
   PROCEDURE get_view_content (
6681
     rtagid     IN      NUMBER,
6682
     viewid     IN      NUMBER,
6683
     recordset OUT     typecur
6684
   )
6685
   IS
6686
     isbaseview   CHAR (1);
6687
   BEGIN
6688
     -- Check if the view is BASE VIEW
6689
     SELECT vi.base_view
6690
      INTO isbaseview
6691
      FROM views vi
6692
      WHERE vi.view_id = viewid;
6693
 
6694
     IF (isbaseview = 'Y')
6695
     THEN
6696
       -- Get Base view content
6697
       OPEN recordset FOR
6698
         SELECT   DECODE (rel.pkg_state,
6699
                      NULL, 0,
6700
                      rel.pkg_state
6701
                     ) AS pkg_state,
6702
                rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6703
                pv.pkg_version, pv.dlocked, pv.pv_description,
6704
                pv.build_type,
6705
                rel.operation
6706
            FROM environment_view rel, PACKAGES pkg, package_versions pv
6707
            WHERE pv.pkg_id = pkg.pkg_id
6708
             AND rel.pv_id = pv.pv_id
6709
             AND rel.view_id = viewid
6710
             AND rel.rtag_id = rtagid
6711
         ORDER BY UPPER (pkg.pkg_name);
6712
     ELSE
6713
       -- Get non base view content
6714
       OPEN recordset FOR
6715
         SELECT   DECODE (rel.pkg_state,
6716
                      NULL, 0,
6717
                      rel.pkg_state
6718
                     ) AS pkg_state,
6719
                rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6720
                pv.pkg_version, pv.dlocked, pv.pv_description,
6721
                pv.build_type,
6722
                rel.operation
6723
            FROM environment_view rel,
6724
                PACKAGES pkg,
6725
                package_versions pv,
6726
                view_def vd
6727
            WHERE pv.pkg_id = pkg.pkg_id
6728
             AND rel.pv_id = pv.pv_id
6729
             AND rel.rtag_id = rtagid
6730
             AND vd.view_id = viewid
6731
             AND vd.pkg_id = pv.pkg_id
6732
         ORDER BY UPPER (pkg.pkg_name);
6733
     END IF;
6734
   END;
6735
 
6736
/*-------------------------------------------------------------------------------------------------------*/
6737
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
6738
     RETURN NUMBER
6739
   IS
6740
     envtab           NUMBER;
6741
     returnvalue      NUMBER;
6742
     return_not_found NUMBER := -1;
6743
   BEGIN
6744
     envtab := get_package_area (pvid, rtagid);
6745
 
6746
     IF envtab = 0
6747
     THEN
6748
       -- WORK IN PROGRESS --
6749
       returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
6750
     ELSIF envtab = 1
6751
     THEN
6752
       -- PENDING --
6753
       returnvalue := pk_planned.get_package_view (pvid, rtagid);
6754
     ELSIF envtab = 2
6755
     THEN
6756
       -- RELEASED --
6757
       returnvalue := pk_release.get_package_view (pvid, rtagid);
6758
     ELSE
6759
       -- This may be a Patch not located anywhere but unlocked
6760
       returnvalue := return_not_found;
6761
     END IF;
6762
 
6763
     RETURN returnvalue;
6764
   END;
6765
 
6766
/*-------------------------------------------------------------------------------------------------------*/
6767
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
6768
   IS
6769
     viewid        NUMBER;
6770
     envtab        NUMBER;
6771
     ispatch       CHAR (1) := NULL;
6772
     buildtype     CHAR (1) := NULL;
6773
   BEGIN
6774
     -- Check if package is patch
6775
     SELECT pv.is_patch, pv.build_type
6776
      INTO ispatch, buildtype
6777
      FROM package_versions pv
6778
      WHERE pv.pv_id = pvid;
6779
 
6780
     -- Get ViewId
6781
     viewid := get_package_view (pvid, rtagid);
6782
     -- Remove from current area
6783
     envtab := pk_environment.get_package_area (pvid, rtagid);
6784
 
6785
     -- Make sure that package was in work-in-progress or pending before makeing it release
6786
     -- Exclude patches, ripple builds
6787
     IF (envtab < 0)
6788
     THEN
6789
       -- Not found in work-in-progress or pending
6790
       IF (ispatch IS NULL) AND (buildtype = 'M')
6791
       THEN
6792
         raise_application_error (-20000,
6793
                            'This package cannot be released here.'
6794
                           );
6795
       END IF;
6796
     END IF;
6797
 
6798
     -- Log
6799
     log_action (pvid, 'action', userid, 'Start of Make Package Release...');
6800
 
6801
     IF envtab = 0
6802
     THEN
6803
       -- WORK IN PROGRESS --
6804
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
6805
     ELSIF envtab = 1
6806
     THEN
6807
       -- PENDING --
6808
       pk_planned.remove_package (pvid, rtagid, userid);
6809
     END IF;
6810
 
6811
     -- Change package state
6812
     pk_package.change_state (pvid, 'Y', userid);
6813
 
6814
     -- Make sure it is valid BASE VIEW
6815
     IF viewid < 1
6816
     THEN
6817
       viewid := 7;                     -- This is default base view
6818
     END IF;
6819
 
6820
     IF (ispatch IS NULL)
6821
     THEN
6822
       -- Add package to new area
6823
       pk_release.add_package (pvid, viewid, rtagid, userid);
6824
     END IF;
6825
 
6826
     -- Now do post Release Actions
6827
     pk_release.run_post_actions (pvid, rtagid);
6828
 
6829
     -- The release has changed and there may now be invalid rtag_id/pv_id combinations in
6830
     -- the DO_NOT_RIPPLE and ADVISORY_RIPPLE Tables so perform a clean-up operation upon them.
6831
     clean_do_not_ripple(rtagid);
6832
     clean_advisory_ripple(rtagid);
6833
 
6834
     -- Log
6835
     log_action (pvid, 'action', userid, 'End of Make Package Release...');
6836
   END;
6837
 
6838
/*-------------------------------------------------------------------------------------------------------*/
6839
   PROCEDURE auto_make_release (
6840
     pvid          IN   NUMBER,
6841
     rtagid        IN   NUMBER,
6842
     userid        IN   NUMBER,
6843
     vext          IN   package_versions.v_ext%TYPE,
6844
     ssv_ext       IN   package_versions.v_ext%TYPE,
6845
     clonefrompvid IN   NUMBER
6846
   )
6847
   IS
6848
     viewid        NUMBER;
6849
     envtab        NUMBER;
6850
     ispatch       CHAR (1) := NULL;
6851
     buildtype      CHAR (1) := NULL;
6852
   BEGIN
6853
     -- Check if package is patch
6854
     SELECT pv.is_patch, pv.build_type
6855
      INTO ispatch, buildtype
6856
      FROM package_versions pv
6857
      WHERE pv.pv_id = pvid;
6858
 
6859
     IF vext <> ssv_ext
6860
     THEN
6861
       -- Get ViewId
6862
       viewid := get_package_view (clonefrompvid, rtagid);
6863
       -- Remove from current area
6864
       envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
6865
     ELSE
6866
       -- Get ViewId
6867
       viewid := get_package_view (pvid, rtagid);
6868
       -- Remove from current area
6869
       envtab := pk_environment.get_package_area (pvid, rtagid);
6870
     END IF;
6871
 
6872
     -- Make sure that package was in work-in-progress or pending before makeing it release
6873
     -- Exclude patches, ripple builds
6874
     IF (envtab < 0)
6875
     THEN
6876
       -- Not found in work-in-progress or pending
6877
       IF (ispatch IS NULL) AND (buildtype = 'M')
6878
       THEN
6879
         raise_application_error (-20000,
6880
                            'This package cannot be released here.'
6881
                           );
6882
       END IF;
6883
     END IF;
6884
 
6885
     -- Log
6886
     log_action (pvid, 'action', userid, 'Start of Make Package Release...');
6887
 
6888
     IF vext <> ssv_ext
6889
     THEN
6890
       IF envtab = 0
6891
       THEN
6892
         -- WORK IN PROGRESS --
6893
         pk_work_in_progress.remove_package (clonefrompvid, rtagid,
6894
                                    userid);
6895
       ELSIF envtab = 1
6896
       THEN
6897
         -- PENDING --
6898
         pk_planned.remove_package (clonefrompvid, rtagid, userid);
6899
       ELSIF envtab = 2
6900
       THEN
6901
         -- RELEASED --
6902
         pk_release.remove_package (clonefrompvid, rtagid, userid);
6903
       END IF;
6904
     ELSE
6905
       IF envtab = 0
6906
       THEN
6907
         -- WORK IN PROGRESS --
6908
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
6909
       ELSIF envtab = 1
6910
       THEN
6911
         -- PENDING --
6912
         pk_planned.remove_package (pvid, rtagid, userid);
6913
       END IF;
6914
     END IF;
6915
 
6916
     -- Change package state
6917
     pk_package.change_state (pvid, 'Y', userid);
6918
 
6919
     -- Make sure it is valid BASE VIEW
6920
     IF viewid < 1
6921
     THEN
6922
       viewid := 7;                     -- This is default base view
6923
     END IF;
6924
 
6925
     IF (ispatch IS NULL)
6926
     THEN
6927
       -- Add package to new area
6928
       pk_release.add_package (pvid, viewid, rtagid, userid);
6929
     END IF;
6930
 
6931
     -- Now do post Release Actions
6932
     pk_release.run_post_actions (pvid, rtagid);
6933
     -- Now update the Dash_Board Table (DEPRECATED)
6934
     pk_rmapi.update_dash_board (rtagid);
6935
 
6936
     -- The release has changed and there may now be invalid rtag_id/pv_id combinations in
6937
     -- the DO_NOT_RIPPLE and ADVISORY_RIPPLE Tables so perform a clean-up operation upon them.
6938
     clean_do_not_ripple(rtagid);
6939
     clean_advisory_ripple(rtagid);
6940
 
6941
     -- Log
6942
     log_action (pvid, 'action', userid, 'End of Make Package Release...');
6943
   END;
6944
 
6945
/*-------------------------------------------------------------------------------------------------------*/
6946
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
6947
   IS
6948
     viewid   NUMBER;
6949
     envtab   NUMBER;
6950
   BEGIN
6951
     -- Get ViewId
6952
     --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
6953
     viewid := get_package_view (pvid, rtagid);
6954
     -- Remove from current area
6955
     envtab := pk_environment.get_package_area (pvid, rtagid);
6956
     -- Log
6957
     log_action (pvid,
6958
              'action',
6959
              userid,
6960
              'Start of Make Package UnRelease...'
6961
             );
6962
 
6963
     IF envtab = 2
6964
     THEN
6965
       -- RELEASE AREA --
6966
       pk_release.remove_package (pvid, rtagid, userid);
6967
     ELSIF envtab = 1
6968
     THEN
6969
       -- PENDING --
6970
       pk_planned.remove_package (pvid, rtagid, userid);
6971
     END IF;
6972
 
6973
     -- Change package state
6974
     pk_package.change_state (pvid, 'N', userid);
6975
 
6976
     -- Make sure it is valid BASE VIEW
6977
     IF viewid < 1
6978
     THEN
6979
       viewid := 7;                     -- This is default base view
6980
     END IF;
6981
 
6982
     -- Add package to new area
6983
     pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
6984
     -- Now do post Release Actions
6985
     pk_release.run_post_actions (pvid, rtagid);
6986
     -- Log
6987
     log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
6988
   END;
6989
 
6990
/*-------------------------------------------------------------------------------------------------------*/
6991
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
6992
   IS
6993
     viewid     NUMBER;
6994
     ispatch    CHAR (1) := NULL;
6995
     buildtype  CHAR (1) := NULL;
6996
   BEGIN
6997
     -- Check if package is patch
6998
     SELECT pv.is_patch, pv.build_type
6999
      INTO ispatch, buildtype
7000
      FROM package_versions pv
7001
      WHERE pv.pv_id = pvid;
7002
 
7003
     -- Get ViewId
7004
     viewid := get_package_view (pvid, rtagid);
7005
     --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
7006
 
7007
     -- Log
7008
     log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
7009
 
7010
     IF (ispatch IS NULL)
7011
     THEN
7012
       -- Remove from current area
7013
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
7014
       -- Change package state
7015
       pk_package.change_state (pvid, 'P', userid);
7016
       -- Add package to new area
7017
       pk_planned.add_package (pvid, viewid, rtagid, userid);
7018
     END IF;
7019
 
7020
     -- Log
7021
     log_action (pvid, 'action', userid, 'End of Make Package Pending...');
7022
   END;
7023
 
7024
/*-------------------------------------------------------------------------------------------------------*/
7025
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7026
   IS
7027
   BEGIN
7028
     -- Log
7029
     log_action (pvid,
7030
                 'action',
7031
                 userid,
7032
                 'Start of Package Pending Approval...'
7033
                 );
7034
     -- Change package state
7035
     pk_package.change_state (pvid, 'A', userid);
7036
     -- Log
7037
     log_action (pvid, 'action', userid,
7038
                 'End of Package Pending Approval...');
7039
   END;
7040
 
7041
/*-------------------------------------------------------------------------------------------------------*/
7042
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7043
   IS
7044
     viewid   NUMBER;
7045
     operation CHAR;
7046
   BEGIN
7047
     -- Get ViewId
7048
     viewid := get_package_view (pvid, rtagid);
7049
     -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
7050
 
7051
     -- DEVI-45275
7052
     -- If the package version is an official version that is to be rejected from a merge operation
7053
     -- then find out in order to prevent it being added back to work-in-progress table . This will
7054
     -- be denoted by the operation field in the planned table being A or S
7055
     operation := ' ';
7056
     SELECT
7057
     (CASE WHEN pl.operation IS NOT NULL THEN pl.operation ELSE ' ' END) INTO operation
7058
     FROM planned pl
7059
     WHERE pl.PV_ID = pvid
7060
     AND pl.RTAG_ID = rtagid;
7061
 
7062
     -- Log
7063
     log_action (pvid, 'action', userid, 'Start of Reject Package...');
7064
     -- Remove from current area
7065
     pk_planned.remove_package (pvid, rtagid, userid);
7066
 
7067
     -- DEVI-45275 - Prevent merge candidate from being added back to work-in-progress table .
7068
     IF operation <> 'A' AND operation <> 'S'
7069
     THEN
7070
     -- Change package state
7071
     pk_package.change_state (pvid, 'R', userid);
7072
     -- Add package to new area
7073
     pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
7074
     ELSE
7075
      log_action (pvid, 'action', userid, 'Rejected Package Merge');
7076
     END IF;
7077
     -- Log
7078
     log_action (pvid, 'action', userid, 'End of Reject Package...');
7079
   END;
7080
 
7081
/*-------------------------------------------------------------------------------------------------------*/
7082
   PROCEDURE change_package_view (
7083
     pvid       IN   NUMBER,
7084
     rtagid     IN   NUMBER,
7085
     newviewid  IN   NUMBER
7086
   )
7087
   IS
7088
     envtab   NUMBER;
7089
   BEGIN
7090
     envtab := pk_environment.get_package_area (pvid, rtagid);
7091
 
7092
     IF envtab = 0
7093
     THEN
7094
       -- WORK IN PROGRESS --
7095
       pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
7096
     ELSIF envtab = 1
7097
     THEN
7098
       -- PENDING --
7099
       pk_planned.change_package_view (pvid, rtagid, newviewid);
7100
     ELSIF envtab = 2
7101
     THEN
7102
       -- RELEASED --
7103
       pk_release.change_package_view (pvid, rtagid, newviewid);
7104
     END IF;
7105
   END;
7106
 
7107
/*-------------------------------------------------------------------------------------------------------*/
7108
   PROCEDURE find_package (
7109
     skeyword     IN      VARCHAR2,
7110
     nrtagid      IN      NUMBER,
7111
     nsearcharea  IN      NUMBER,
7112
     recordset    OUT     typecur
7113
   )
7114
   IS
7115
   BEGIN
7116
     IF nsearcharea = 0
7117
     THEN
7118
       /* Search Work In Progress */
7119
       OPEN recordset FOR
7120
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7121
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7122
                pv.modified_stamp, usr.full_name, usr.user_email
7123
           FROM views vi,
7124
                work_in_progress rc,
7125
                PACKAGES pkg,
7126
                package_versions pv,
7127
                users usr
7128
          WHERE rc.view_id = vi.view_id
7129
            AND rc.pv_id = pv.pv_id
7130
            AND pkg.pkg_id = pv.pkg_id
7131
            AND pv.modifier_id = usr.user_id
7132
            AND rc.rtag_id = nrtagid
7133
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7134
       ORDER BY UPPER (pkg.pkg_name);
7135
     ELSIF nsearcharea = 1
7136
     THEN
7137
       /* Search Pending */
7138
       OPEN recordset FOR
7139
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7140
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7141
                pv.modified_stamp, usr.full_name, usr.user_email
7142
           FROM views vi,
7143
                planned rc,
7144
                PACKAGES pkg,
7145
                package_versions pv,
7146
                users usr
7147
          WHERE rc.view_id = vi.view_id
7148
            AND rc.pv_id = pv.pv_id
7149
            AND pkg.pkg_id = pv.pkg_id
7150
            AND pv.modifier_id = usr.user_id
7151
            AND rc.rtag_id = nrtagid
7152
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7153
       ORDER BY UPPER (pkg.pkg_name);
7154
     ELSIF nsearcharea = 2
7155
     THEN
7156
       /* Search Released */
7157
       OPEN recordset FOR
7158
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7159
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7160
                pv.modified_stamp, usr.full_name, usr.user_email
7161
           FROM views vi,
7162
                release_content rc,
7163
                PACKAGES pkg,
7164
                package_versions pv,
7165
                users usr
7166
          WHERE rc.base_view_id = vi.view_id
7167
            AND rc.pv_id = pv.pv_id
7168
            AND pkg.pkg_id = pv.pkg_id
7169
            AND pv.modifier_id = usr.user_id
7170
            AND rc.rtag_id = nrtagid
7171
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7172
         ORDER BY UPPER (pkg.pkg_name);
7173
     ELSIF nsearcharea = 3
7174
     THEN
7175
       /* Search ALL */
7176
       OPEN recordset FOR
7177
         SELECT rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
7178
                pv.pv_id, pv.pkg_version, pv.comments,
7179
                pv.modified_stamp, usr.full_name, usr.user_email
7180
           FROM views vi,
7181
                environment_view rc,
7182
                PACKAGES pkg,
7183
                package_versions pv,
7184
                users usr
7185
          WHERE rc.view_id = vi.view_id
7186
            AND rc.pv_id = pv.pv_id
7187
            AND pkg.pkg_id = pv.pkg_id
7188
            AND pv.modifier_id = usr.user_id
7189
            AND rc.rtag_id = nrtagid
7190
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7191
         ORDER BY UPPER (pkg.pkg_name);
7192
     END IF;
7193
   END;
7194
 
7195
/*-------------------------------------------------------------------------------------------------------*/
7196
   PROCEDURE find_file (
7197
     skeyword     IN      VARCHAR2,
7198
     nrtagid      IN      NUMBER,
7199
     nsearcharea  IN      NUMBER,
7200
     npagesize    IN      NUMBER,
7201
     recordset    OUT     typecur
7202
   )
7203
   IS
7204
   BEGIN
7205
     IF nsearcharea = 0
7206
     THEN
7207
       /* Search Work In Progress */
7208
       OPEN recordset FOR
7209
         SELECT   qry.*
7210
            FROM (
7211
                 /* File search on Packages */
7212
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7213
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7214
                   FROM work_in_progress rc,
7215
                        PACKAGES pkg,
7216
                        package_versions pv,
7217
                        release_components art
7218
                  WHERE rc.pv_id = art.pv_id
7219
                    AND pv.pkg_id = pkg.pkg_id
7220
                    AND rc.pv_id = pv.pv_id
7221
                    AND rc.rtag_id = nrtagid
7222
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7223
                 UNION ALL
7224
                 /* File search on Products */
7225
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7226
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7227
                   FROM work_in_progress rc,
7228
                        PACKAGES pkg,
7229
                        package_versions pv,
7230
                        product_components art
7231
                  WHERE rc.pv_id = art.pv_id
7232
                    AND pv.pkg_id = pkg.pkg_id
7233
                    AND rc.pv_id = pv.pv_id
7234
                    AND rc.rtag_id = nrtagid
7235
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7236
            WHERE ROWNUM <= npagesize
7237
         ORDER BY UPPER (qry.pkg_name);
7238
     ELSIF nsearcharea = 1
7239
     THEN
7240
       /* Search Pending */
7241
       OPEN recordset FOR
7242
         SELECT   qry.*
7243
            FROM (
7244
                 /* File search on Packages */
7245
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7246
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7247
                   FROM planned rc,
7248
                        PACKAGES pkg,
7249
                        package_versions pv,
7250
                        release_components art
7251
                  WHERE rc.pv_id = art.pv_id
7252
                    AND pv.pkg_id = pkg.pkg_id
7253
                    AND rc.pv_id = pv.pv_id
7254
                    AND rc.rtag_id = nrtagid
7255
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7256
                 UNION ALL
7257
                 /* File search on Products */
7258
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7259
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7260
                   FROM planned rc,
7261
                        PACKAGES pkg,
7262
                        package_versions pv,
7263
                        product_components art
7264
                  WHERE rc.pv_id = art.pv_id
7265
                    AND pv.pkg_id = pkg.pkg_id
7266
                    AND rc.pv_id = pv.pv_id
7267
                    AND rc.rtag_id = nrtagid
7268
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7269
            WHERE ROWNUM <= npagesize
7270
         ORDER BY UPPER (qry.pkg_name);
7271
     ELSIF nsearcharea = 2
7272
     THEN
7273
       /* Search Released */
7274
       OPEN recordset FOR
7275
         SELECT   qry.*
7276
            FROM (
7277
                 /* File search on Packages */
7278
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7279
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7280
                        NULL AS patch_id
7281
                   FROM release_content rc,
7282
                        PACKAGES pkg,
7283
                        package_versions pv,
7284
                        release_components art
7285
                  WHERE rc.pv_id = art.pv_id
7286
                    AND pv.pkg_id = pkg.pkg_id
7287
                    AND rc.pv_id = pv.pv_id
7288
                    AND rc.rtag_id = nrtagid
7289
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7290
                 UNION ALL
7291
                 /* File search on Products */
7292
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7293
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7294
                        NULL AS patch_id
7295
                   FROM release_content rc,
7296
                        PACKAGES pkg,
7297
                        package_versions pv,
7298
                        product_components art
7299
                  WHERE rc.pv_id = art.pv_id
7300
                    AND pv.pkg_id = pkg.pkg_id
7301
                    AND rc.pv_id = pv.pv_id
7302
                    AND rc.rtag_id = nrtagid
7303
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7304
                 UNION ALL
7305
                 /* File search on Patches */
7306
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7307
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7308
                        DECODE (art.file_path,
7309
                                NULL, pp.patch_id,
7310
                                NULL
7311
                                ) AS patch_id
7312
                   FROM release_content rc,
7313
                        PACKAGES pkg,
7314
                        package_versions pv,
7315
                        release_components art,
7316
                        package_patches pp
7317
                  WHERE pv.pv_id = pp.pv_id
7318
                    AND pv.pkg_id = pkg.pkg_id
7319
                    AND rc.rtag_id = nrtagid
7320
                    AND art.pv_id = pp.patch_id
7321
                    AND rc.pv_id = pp.pv_id
7322
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7323
            WHERE ROWNUM <= npagesize
7324
         ORDER BY UPPER (qry.pkg_name);
7325
     ELSIF nsearcharea = 3
7326
     THEN
7327
       /* Search ALL */
7328
       OPEN recordset FOR
7329
         SELECT   qry.*
7330
            FROM (
7331
                 /* File search on Packages */
7332
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7333
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7334
                        NULL AS patch_id
7335
                   FROM environment_view rc,
7336
                        PACKAGES pkg,
7337
                        package_versions pv,
7338
                        release_components art
7339
                  WHERE rc.pv_id = art.pv_id
7340
                    AND pv.pkg_id = pkg.pkg_id
7341
                    AND rc.pv_id = pv.pv_id
7342
                    AND rc.rtag_id = nrtagid
7343
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7344
                 UNION ALL
7345
                 /* File search on Products */
7346
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7347
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7348
                        NULL AS patch_id
7349
                   FROM environment_view rc,
7350
                        PACKAGES pkg,
7351
                        package_versions pv,
7352
                        product_components art
7353
                  WHERE rc.pv_id = art.pv_id
7354
                    AND pv.pkg_id = pkg.pkg_id
7355
                    AND rc.pv_id = pv.pv_id
7356
                    AND rc.rtag_id = nrtagid
7357
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7358
                 UNION ALL
7359
                 /* File search on Patches */
7360
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7361
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7362
                        DECODE (art.file_path,
7363
                                NULL, pp.patch_id,
7364
                                NULL
7365
                               ) AS patch_id
7366
                   FROM release_content rc,
7367
                        PACKAGES pkg,
7368
                        package_versions pv,
7369
                        release_components art,
7370
                        package_patches pp
7371
                  WHERE pv.pv_id = pp.pv_id
7372
                    AND pv.pkg_id = pkg.pkg_id
7373
                    AND rc.rtag_id = nrtagid
7374
                    AND art.pv_id = pp.patch_id
7375
                    AND rc.pv_id = pp.pv_id
7376
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7377
            WHERE ROWNUM <= npagesize
7378
         ORDER BY UPPER (qry.pkg_name);
7379
     END IF;
7380
   END;
7381
 
7382
/*-------------------------------------------------------------------------------------------------------*/
7383
   PROCEDURE get_prodrelease_items (
7384
     rtagid           IN      NUMBER,
7385
     ntruerecordcount OUT     NUMBER,
7386
     recordset        OUT     typecur
7387
   )
7388
   IS
7389
   BEGIN
7390
     -- Get true record count n the number of integration products
7391
     SELECT COUNT (rc.pv_id)
7392
      INTO ntruerecordcount
7393
      FROM release_content rc
7394
      WHERE rc.rtag_id = rtagid;
7395
 
7396
     OPEN recordset FOR
7397
       SELECT vi.view_id, vi.view_name, rel.pkg_state,   --rel.pkg_state,
7398
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7399
              pv.pkg_version, pv.dlocked, pv.pv_description
7400
         FROM release_content rel,
7401
              PACKAGES pkg,
7402
              package_versions pv,
7403
              views vi
7404
        WHERE pv.pkg_id = pkg.pkg_id
7405
          AND rel.pv_id = pv.pv_id
7406
          AND rel.base_view_id = vi.view_id
7407
          AND pv.is_deployable = 'Y'
7408
          AND rtag_id = rtagid
7409
          AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
7410
                                 FROM deployment_manager.os_contents)
7411
          AND rel.product_state IS NULL
7412
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7413
   END;
7414
 
7415
/*-------------------------------------------------------------------------------------------------------*/
7416
   PROCEDURE get_integration_items (
7417
     rtagid           IN      NUMBER,
7418
     ntruerecordcount OUT     NUMBER,
7419
     recordset        OUT     typecur
7420
   )
7421
   IS
7422
   BEGIN
7423
     -- Get true record count n the number of integration products
7424
     SELECT COUNT (rc.pv_id)
7425
      INTO ntruerecordcount
7426
      FROM release_content rc
7427
      WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
7428
 
7429
     OPEN recordset FOR
7430
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7431
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7432
              pv.pkg_version, pv.dlocked, pv.pv_description
7433
         FROM release_content rel,
7434
              PACKAGES pkg,
7435
              package_versions pv,
7436
              views vi
7437
        WHERE pv.pkg_id = pkg.pkg_id
7438
          AND rel.pv_id = pv.pv_id
7439
          AND rel.base_view_id = vi.view_id
7440
          AND pv.is_deployable = 'Y'
7441
          AND rtag_id = rtagid
7442
          AND rel.product_state IN (1, 5)
7443
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7444
   END;
7445
 
7446
/*-------------------------------------------------------------------------------------------------------*/
7447
   PROCEDURE get_test_items (
7448
     rtagid           IN      NUMBER,
7449
     ntruerecordcount OUT     NUMBER,
7450
     recordset        OUT     typecur
7451
   )
7452
   IS
7453
   BEGIN
7454
     -- Get true record count n the number of test products
7455
     SELECT COUNT (rc.pv_id)
7456
      INTO ntruerecordcount
7457
      FROM release_content rc
7458
      WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
7459
 
7460
     OPEN recordset FOR
7461
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7462
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7463
              pv.pkg_version, pv.dlocked, pv.pv_description
7464
         FROM release_content rel,
7465
              PACKAGES pkg,
7466
              package_versions pv,
7467
              views vi
7468
        WHERE pv.pkg_id = pkg.pkg_id
7469
          AND rel.pv_id = pv.pv_id
7470
          AND rel.base_view_id = vi.view_id
7471
          AND pv.is_deployable = 'Y'
7472
          AND rtag_id = rtagid
7473
          AND rel.product_state = 2
7474
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7475
   END;
7476
 
7477
/*-------------------------------------------------------------------------------------------------------*/
7478
   PROCEDURE get_deploy_items (
7479
     rtagid           IN      NUMBER,
7480
     ntruerecordcount OUT     NUMBER,
7481
     recordset        OUT     typecur
7482
   )
7483
   IS
7484
   BEGIN
7485
     -- Get true record count n the number of deploy products
7486
     SELECT COUNT (rc.pv_id)
7487
      INTO ntruerecordcount
7488
      FROM release_content rc
7489
      WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
7490
 
7491
     OPEN recordset FOR
7492
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7493
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7494
              pv.pkg_version, pv.dlocked, pv.pv_description
7495
         FROM release_content rel,
7496
              PACKAGES pkg,
7497
              package_versions pv,
7498
              views vi
7499
        WHERE pv.pkg_id = pkg.pkg_id
7500
          AND rel.pv_id = pv.pv_id
7501
          AND rel.base_view_id = vi.view_id
7502
          AND pv.is_deployable = 'Y'
7503
          AND rtag_id = rtagid
7504
          AND rel.product_state IN (3, 5)
7505
          AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
7506
                                 FROM deployment_manager.os_contents)
7507
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7508
   END;
7509
 
7510
/*-------------------------------------------------------------------------------------------------------*/
7511
   PROCEDURE get_reject_items (
7512
     rtagid           IN      NUMBER,
7513
     ntruerecordcount OUT     NUMBER,
7514
     recordset        OUT     typecur
7515
   )
7516
   IS
7517
   BEGIN
7518
     -- Get true record count n the number of reject products
7519
     SELECT COUNT (rc.pv_id)
7520
       INTO ntruerecordcount
7521
       FROM release_content rc
7522
      WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
7523
 
7524
     OPEN recordset FOR
7525
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7526
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7527
              pv.pkg_version, pv.dlocked, pv.pv_description
7528
         FROM release_content rel,
7529
              PACKAGES pkg,
7530
              package_versions pv,
7531
              views vi
7532
        WHERE pv.pkg_id = pkg.pkg_id
7533
          AND rel.pv_id = pv.pv_id
7534
          AND rel.base_view_id = vi.view_id
7535
          AND pv.is_deployable = 'Y'
7536
          AND rtag_id = rtagid
7537
          AND rel.product_state = 4
7538
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7539
   END;
7540
/*-------------------------------------------------------------------------------------------------------*/
7541
   -- DEVI-45275 - this procedure performs the merge of an existing package version in the planned table
7542
   -- to the release_content table.
7543
 
7544
  PROCEDURE approve_merge (
7545
   PvId    IN NUMBER,
7546
   RtagId  IN NUMBER,
7547
   UserId  IN NUMBER
7548
  )
7549
  IS
7550
   viewid        NUMBER;
7551
   envtab        NUMBER;
7552
   oper         CHAR;
7553
  BEGIN
7554
      -- Get ViewId
7555
     viewid := get_package_view (pvid, rtagid);
7556
 
7557
     -- Get the view tab
7558
     envtab := pk_environment.get_package_area (pvid, rtagid);
7559
 
7560
     -- Make sure that package was in pending before merging it to released
7561
     IF (envtab <> 1)
7562
     THEN
7563
       -- Not found in pending
7564
       raise_application_error (-20000,
7565
                          'This package cannot be released here.'
7566
                         );
7567
     END IF;
7568
 
7569
     -- Log
7570
     log_action (pvid, 'action', userid, 'Start of Package Merge...');
7571
 
7572
     -- Get the planned operation type A=Add, S=Subtract
7573
     SELECT ev.operation INTO oper
7574
       FROM environment_view ev
7575
      WHERE ev.rtag_id = RtagId
7576
        AND ev.pv_id = PvId
7577
        AND (ev.operation = 'A' OR ev.operation = 'S');
7578
 
7579
     -- Remove from Pending
7580
     pk_planned.remove_package (PvId, RtagId, UserId);
7581
 
7582
     -- Either add to the release, or remove from the release as the operation commands
7583
     IF oper = 'A'
7584
     THEN
7585
       pk_release.add_package(PvId, viewId, RtagId, UserId);
7586
 
7587
     ELSIF oper = 'S'
7588
     THEN
7589
       pk_release.remove_package(PvId, RtagId, UserId);
7590
 
7591
       -- Delete old package's pegging info
7592
       DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = RtagId AND pegv.PV_ID = PvId;
7593
 
7594
       -- Delete old package's advisory ripple info
7595
       DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = RtagId AND avr.PV_ID = PvId;
7596
     END IF;
7597
 
7598
     touch_release(RtagId);
7599
 
7600
     -- Log
7601
     log_action (pvid, 'action', userid, 'End of Package Merge...');
7602
  END;
7603
/*-------------------------------------------------------------------------------------------------------*/
7604
END pk_environment;
4040 dpurdie 7605
 
1374 dpurdie 7606
/
1373 dpurdie 7607
 
4040 dpurdie 7608
/
7609
--------------------------------------------------------
7610
--  DDL for Package Body PK_LICENCING
7611
--------------------------------------------------------
7612
 
3959 dpurdie 7613
  CREATE OR REPLACE PACKAGE BODY "PK_LICENCING" IS
1373 dpurdie 7614
 
7615
/*
7616
------------------------------
3959 dpurdie 7617
||  Last Modified:  G.Huddy
7618
||  Modified Date:  19/Aug/2008
1373 dpurdie 7619
||  Body Version:   1.0
7620
------------------------------
7621
*/
7622
 
3959 dpurdie 7623
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
7624
   BEGIN
7625
      IF IS_LICENCED(PvId, licenceId) = 0 THEN
7626
         -- Add entry to licencing table
7627
         INSERT INTO licencing (pv_id, licence)
7628
         VALUES (PvId, licenceId);
1373 dpurdie 7629
 
3959 dpurdie 7630
         -- log action
7631
         -- TODO
7632
      END IF;
1373 dpurdie 7633
 
3959 dpurdie 7634
   END;
1373 dpurdie 7635
 
7636
/*-------------------------------------------------------------------------------------------------------*/
7637
 
3959 dpurdie 7638
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
7639
   BEGIN
7640
      IF NOT IS_LICENCED(PvId, licenceId) = 0 THEN
7641
         -- Delete entry from licencing table
7642
         DELETE FROM licencing
7643
         WHERE pv_id = PvId
7644
         AND licence = licenceId;
1373 dpurdie 7645
 
3959 dpurdie 7646
         -- log action
7647
         -- TODO
7648
      END IF;
7649
   END;
1373 dpurdie 7650
 
7651
/*-------------------------------------------------------------------------------------------------------*/
7652
 
3959 dpurdie 7653
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 7654
 
3959 dpurdie 7655
      CURSOR licencing_cur
7656
      IS
7657
         SELECT *
7658
         FROM licencing
7659
         WHERE pv_id = fromPvId;
1373 dpurdie 7660
 
3959 dpurdie 7661
      licencing_rec licencing_cur%ROWTYPE;
1373 dpurdie 7662
 
7663
   BEGIN
3959 dpurdie 7664
      -- For each licence association that the Last PV_ID had, create a similar
7665
      -- arrangement for the new PV_ID
7666
      -- NOTE that any additional licencing associations the new PV_ID has that the old one
7667
      -- does not have, are retained. The assumption is that the user has made those and so we do not
7668
      -- have any right to destroy them without asking them.
7669
      OPEN licencing_cur;
1373 dpurdie 7670
 
3959 dpurdie 7671
      FETCH licencing_cur
7672
      INTO licencing_rec;
1373 dpurdie 7673
 
3959 dpurdie 7674
      WHILE licencing_cur%FOUND
1373 dpurdie 7675
      LOOP
3959 dpurdie 7676
         ADD_LICENCE ( toPvId, licencing_rec.licence, UserId );
1373 dpurdie 7677
 
3959 dpurdie 7678
         FETCH licencing_cur
7679
         INTO licencing_rec;
1373 dpurdie 7680
      END LOOP;
7681
   END;
7682
 
7683
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 7684
 
7685
   FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER IS
7686
      found NUMBER;
1373 dpurdie 7687
   BEGIN
7688
 
3959 dpurdie 7689
      SELECT COUNT(*) INTO found
7690
      FROM licencing
7691
      WHERE pv_id = PvId
7692
      AND licence = LicenceId;
1373 dpurdie 7693
 
3959 dpurdie 7694
      RETURN found;
1373 dpurdie 7695
   END;
7696
 
7697
/*-------------------------------------------------------------------------------------------------------*/
7698
 
3959 dpurdie 7699
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 7700
 
3959 dpurdie 7701
      CURSOR licencing_cur
7702
      IS
1373 dpurdie 7703
         SELECT *
3959 dpurdie 7704
         FROM licencing
7705
         WHERE pv_id = PvId;
1373 dpurdie 7706
 
3959 dpurdie 7707
      licencing_rec licencing_cur%ROWTYPE;
7708
   BEGIN
7709
      -- For each licence association that the PV_ID had, remove it
7710
      OPEN licencing_cur;
1373 dpurdie 7711
 
3959 dpurdie 7712
      FETCH licencing_cur
7713
      INTO licencing_rec;
1373 dpurdie 7714
 
3959 dpurdie 7715
      WHILE licencing_cur%FOUND
7716
      LOOP
7717
         REMOVE_LICENCE ( PvId, licencing_rec.licence, UserId );
1373 dpurdie 7718
 
3959 dpurdie 7719
         FETCH licencing_cur
7720
         INTO licencing_rec;
7721
      END LOOP;
1373 dpurdie 7722
   END;
7723
 
7724
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 7725
END PK_LICENCING;
4040 dpurdie 7726
 
1374 dpurdie 7727
/
1373 dpurdie 7728
 
4040 dpurdie 7729
/
7730
--------------------------------------------------------
7731
--  DDL for Package Body PK_PACKAGE
7732
--------------------------------------------------------
7733
 
3959 dpurdie 7734
  CREATE OR REPLACE PACKAGE BODY "PK_PACKAGE" 
1373 dpurdie 7735
IS
7736
   /*-------------------------------------------------------------------------------------------------------*/
7737
   PROCEDURE new_version (
7738
      nlastpvid                   IN       NUMBER,
7739
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
7740
      cbuildtype                  IN       CHAR,
4211 dpurdie 7741
      cchangetype                 IN       CHAR,
1373 dpurdie 7742
      nsettopvid                  IN       NUMBER DEFAULT NULL,
7743
      nrtagid                     IN       NUMBER,
7744
      nuserid                     IN       NUMBER,
7745
      enumissues_state_imported   IN       NUMBER,
7746
      returnpvid                  OUT      NUMBER
7747
   )
7748
   IS
3959 dpurdie 7749
      origpkg_id                  package_versions.pkg_id%TYPE;
7750
      origdlocked                 package_versions.dlocked%TYPE;
7751
      ssv_mm                      package_versions.v_mm%TYPE;
7752
      ssv_nmm                     package_versions.v_nmm%TYPE;
7753
      ssv_ext                     package_versions.v_ext%TYPE;
7754
      spackageversion             VARCHAR2 (4000);
7755
      nissuestypes                NUMBER;
7756
      nviewid                     NUMBER;
7757
      reccount                    NUMBER;
7758
      isreleased                  package_versions.dlocked%TYPE := 'N';
7759
      slabel                      VARCHAR2 (4000)               := NULL;
4211 dpurdie 7760
      uchangetype                 CHAR := cchangetype;
1373 dpurdie 7761
 
7762
      CURSOR package_versions_cur
7763
      IS
7764
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
7765
           FROM package_versions pv
7766
          WHERE pv.pkg_version = snewpkgversion
7767
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
7768
                                         FROM package_versions origpv
7769
                                        WHERE origpv.pv_id = nlastpvid);
7770
 
3959 dpurdie 7771
      package_versions_rec package_versions_cur%ROWTYPE;
1373 dpurdie 7772
 
7773
      CURSOR clone_package_versions_cur
7774
      IS
7775
         SELECT DISTINCT pkg_id, dlocked
7776
                    FROM package_versions
7777
                   WHERE pv_id = nlastpvid;
7778
 
3959 dpurdie 7779
      clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
1373 dpurdie 7780
   BEGIN
7781
      spackageversion := snewpkgversion;
7782
 
7783
      IF nsettopvid IS NULL
7784
      THEN
7785
         -- SetToPv_id is not supplied, hence proceed.
7786
 
7787
         /* ---------------------------------------------------- */
3959 dpurdie 7788
         /* Find id package_version exists                       */
7789
         /* ---------------------------------------------------- */
1373 dpurdie 7790
         OPEN package_versions_cur;
7791
 
7792
         FETCH package_versions_cur
7793
          INTO package_versions_rec;
7794
 
7795
         IF package_versions_cur%NOTFOUND
7796
         THEN
7797
            ---  Create brand new package ---
7798
            SELECT seq_pv_id.NEXTVAL
7799
              INTO returnpvid
7800
              FROM DUAL;
7801
 
7802
            -- Split Version to get extention + other
7803
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
7804
 
7805
            -- Get previous package to clone from
7806
            OPEN clone_package_versions_cur;
7807
 
7808
            FETCH clone_package_versions_cur
7809
             INTO clone_package_versions_rec;
7810
 
7811
            origpkg_id := clone_package_versions_rec.pkg_id;
7812
            origdlocked := clone_package_versions_rec.dlocked;
7813
 
7814
            CLOSE clone_package_versions_cur;
7815
 
7816
            -- Automated built config
4211 dpurdie 7817
            IF ( cbuildtype = 'M' ) THEN
7818
              uchangetype := 'F';
7819
            END IF;  
7820
 
7821
            -- Automated version numbering
7822
            -- Make sure that version is still unique
7823
            IF (uchangetype != 'F') THEN
7824
              spackageversion := '(' || returnpvid || ')' || ssv_ext;
1373 dpurdie 7825
            END IF;
4211 dpurdie 7826
 
1373 dpurdie 7827
 
7828
            -- Clone Package Version Details --
3959 dpurdie 7829
            INSERT INTO package_versions(pv_id, pkg_id, pkg_version, dlocked, created_stamp,
7830
                                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
7831
                                         v_ext, src_path, pv_description, pv_overview,
7832
                                         last_pv_id, owner_id, is_deployable,
4211 dpurdie 7833
                                         is_build_env_required, build_type, change_type, 
7834
                                         bs_id, is_autobuildable, ripple_field)
3959 dpurdie 7835
                 SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
7836
                        spackageversion AS pkg_version, 'N' AS dlocked,
7837
                        ora_sysdate AS created_stamp, nuserid AS creator_id,
7838
                        ora_sysdatetime AS modified_stamp,
7839
                        nuserid AS modifier_id, ssv_mm AS v_mm,
7840
                        ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
7841
                        pv.pv_description, pv.pv_overview,
7842
                        nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
4211 dpurdie 7843
                        pv.is_build_env_required, cbuildtype, uchangetype, 
7844
                        pv.bs_id, pv.is_autobuildable, pv.ripple_field
3959 dpurdie 7845
                   FROM package_versions pv
7846
                  WHERE pv.pv_id = nlastpvid;
1373 dpurdie 7847
 
7848
            -- Set Issues Type for cloning ---
7849
            IF origdlocked = 'Y'
7850
            THEN
7851
               nissuestypes := enumissues_state_imported;
7852
            ELSE
7853
               nissuestypes := NULL;
7854
            END IF;
7855
 
7856
            basic_clone (nlastpvid,
7857
                         returnpvid,
7858
                         nrtagid,
7859
                         nuserid,
7860
                         origpkg_id,
7861
                         nissuestypes
7862
                        );
4211 dpurdie 7863
 
7864
            -- Update Label for versioning purposes
7865
            slabel := get_automated_label (returnpvid);
7866
            UPDATE package_versions pv
7867
            SET pv.pkg_label = slabel
7868
            WHERE pv.pv_id = returnpvid;
7869
 
1373 dpurdie 7870
         ELSE
7871
            --- Package already exists, hence reuse ---
7872
            returnpvid := package_versions_rec.pv_id;
7873
            isreleased := package_versions_rec.dlocked;
7874
         END IF;
7875
 
7876
         CLOSE package_versions_cur;
7877
      ELSE
7878
         returnpvid := nsettopvid;
7879
      END IF;
7880
   END new_version;
7881
 
7882
/*-------------------------------------------------------------------------------------------------------*/
7883
   PROCEDURE change_state (
7884
      pvid       IN   NUMBER,
7885
      newstate   IN   package_versions.dlocked%TYPE,
7886
      userid     IN   NUMBER
7887
   )
7888
   IS
7889
   BEGIN
7890
      -- Set package in Released mode
7891
      UPDATE package_versions pv
7892
         SET pv.dlocked = newstate,
7893
             pv.modified_stamp = ora_sysdatetime,
7894
             pv.modifier_id = userid
7895
       WHERE pv.pv_id = pvid;
7896
 
7897
      -- Log action --
7898
      IF newstate = 'Y'
7899
      THEN
7900
         -- RELEASED --
7901
         log_action (pvid,
7902
                     'makeofficial',
7903
                     userid,
7904
                     'Package state change to: Released'
7905
                    );
7906
      ELSIF newstate = 'N'
7907
      THEN
7908
         -- UNLOCKED --
7909
         log_action (pvid,
7910
                     'makeunofficial',
7911
                     userid,
7912
                     'Package state change to: Ulocked'
7913
                    );
7914
      ELSIF newstate = 'P'
7915
      THEN
7916
         -- PENDING APPROVAL --
7917
         log_action (pvid,
7918
                     'add_to_planned',
7919
                     userid,
7920
                     'Package state change to: Pending Approval'
7921
                    );
7922
      ELSIF newstate = 'R'
7923
      THEN
7924
         -- REJECTED --
7925
         log_action (pvid,
7926
                     'reject_package',
7927
                     userid,
7928
                     'Package state change to: Rejected'
7929
                    );
7930
      ELSIF newstate = 'A'
7931
      THEN
7932
         -- APPROVED --
7933
         log_action (pvid,
7934
                     'approve_package',
7935
                     userid,
7936
                     'Package state change to: Approved'
7937
                    );
7938
      END IF;
7939
   END;
7940
 
7941
/*-------------------------------------------------------------------------------------------------------*/
7942
   PROCEDURE destroy_package (
7943
      pvid               IN       NUMBER,
7944
      overridewarnings   IN       CHAR DEFAULT 'N',
7945
      problemstring      OUT      VARCHAR2
7946
   )
7947
   IS
7948
      LOCKED     CHAR;
7949
      pkgid      NUMBER;
7950
      ROWCOUNT   NUMBER;
7951
   BEGIN
7952
      /*
7953
      || This will destroy all package details from database.
7954
      || It will only be used to remove unwanted work in progress packages,
7955
      || or mestaken versions
7956
      */
7957
 
7958
      /*--------------- Business Rules Here -------------------*/
7959
      problemstring := NULL;
7960
 
7961
      IF overridewarnings = 'N'
7962
      THEN
7963
         -- Package must not be official
7964
         SELECT pv.dlocked
7965
           INTO LOCKED
7966
           FROM package_versions pv
7967
          WHERE pv.pv_id = pvid;
7968
 
7969
         IF LOCKED = 'Y'
7970
         THEN
7971
            problemstring :=
7972
                  problemstring
7973
               || '- Package is locked and released.'
7974
               || UTL_TCP.crlf;
7975
         END IF;
7976
 
7977
         -- Cannot remove if used in BOMs
7978
         SELECT COUNT (osc.prod_id)
7979
           INTO ROWCOUNT
7980
           FROM deployment_manager.os_contents osc
7981
          WHERE osc.prod_id = pvid;
7982
 
7983
         IF ROWCOUNT > 0
7984
         THEN
7985
            problemstring :=
7986
                  problemstring
7987
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
7988
               || UTL_TCP.crlf;
7989
         END IF;
7990
 
7991
         -- Cannot remove if Referenced as build dependency
7992
         SELECT COUNT (dep.pv_id)
7993
           INTO ROWCOUNT
7994
           FROM package_dependencies dep
7995
          WHERE dep.dpv_id = pvid;
7996
 
7997
         IF ROWCOUNT > 0
7998
         THEN
7999
            problemstring :=
8000
                  problemstring
8001
               || '- Package is referenced by other package as build dependency.'
8002
               || UTL_TCP.crlf;
8003
         END IF;
8004
 
8005
         -- Cannot remove if Referenced as runtime dependency
8006
         SELECT COUNT (rd.pv_id)
8007
           INTO ROWCOUNT
8008
           FROM runtime_dependencies rd
8009
          WHERE rd.rtd_id = pvid;
8010
 
8011
         IF ROWCOUNT > 0
8012
         THEN
8013
            problemstring :=
8014
                  problemstring
8015
               || '- Package is referenced by other package as runtime dependency.'
8016
               || UTL_TCP.crlf;
8017
         END IF;
8018
 
8019
         -- Cannot remove if Referenced as patch
8020
         SELECT COUNT (pp.pv_id)
8021
           INTO ROWCOUNT
8022
           FROM package_patches pp
8023
          WHERE pp.patch_id = pvid;
8024
 
8025
         IF ROWCOUNT > 0
8026
         THEN
8027
            problemstring :=
8028
                  problemstring
8029
               || '- Package is used as patch by other package.'
8030
               || UTL_TCP.crlf;
8031
         END IF;
8032
      END IF;
8033
 
8034
/*-------------------------------------------------------*/
8035
      IF (problemstring IS NULL)
8036
      THEN
8037
         --- Remove From Work in Progress
8038
         DELETE FROM work_in_progress wip
8039
               WHERE wip.pv_id = pvid;
8040
 
8041
         --- Remove From Pending
8042
         DELETE FROM planned pl
8043
               WHERE pl.pv_id = pvid;
8044
 
8045
         --- Remove From Released area
8046
         DELETE FROM release_content rc
8047
               WHERE rc.pv_id = pvid;
8048
 
8049
         ---Remove From Package Processes
8050
         DELETE FROM package_processes pp
8051
               WHERE pp.pv_id = pvid;
8052
 
8053
         --- Remove Dependencies
8054
         DELETE FROM package_dependencies dep
8055
               WHERE dep.pv_id = pvid;
8056
 
8057
         DELETE FROM package_dependencies dep
8058
               WHERE dep.dpv_id = pvid;
8059
 
8060
         --- Remove Runtime dependencies
8061
         DELETE FROM runtime_dependencies rtd
8062
               WHERE rtd.pv_id = pvid;
8063
 
8064
         DELETE FROM runtime_dependencies rtd
8065
               WHERE rtd.rtd_id = pvid;
8066
 
8067
         --- Remove components
8068
         DELETE FROM product_components pc
8069
               WHERE pc.pv_id = pvid;
8070
 
8071
         DELETE FROM release_components rc
8072
               WHERE rc.pv_id = pvid;
8073
 
8074
         --- Remove From Notification History
8075
         DELETE FROM notification_history nh
8076
               WHERE nh.pv_id = pvid;
8077
 
8078
         --- Remove From Ignore Warnings
8079
         DELETE FROM ignore_warnings iw
8080
               WHERE iw.pv_id = pvid;
8081
 
8082
         --- Remove From Additional Notes
8083
         DELETE FROM additional_notes an
8084
               WHERE an.pv_id = pvid;
8085
 
8086
         --- Remove From CQ Issues
8087
         DELETE FROM cq_issues cq
8088
               WHERE cq.pv_id = pvid;
8089
 
8090
         --- Remove from Package Patches
8091
         DELETE FROM package_patches pp
8092
               WHERE pp.pv_id = pvid;
8093
 
8094
         DELETE FROM package_patches pp
8095
               WHERE pp.patch_id = pvid;
8096
 
8097
         --- Remove From Package Documents
8098
         DELETE FROM package_documents pd
8099
               WHERE pd.pv_id = pvid;
8100
 
8101
         --- Remove from Code Review
8102
         DELETE FROM code_reviews cr
8103
               WHERE cr.pv_id = pvid;
8104
 
3959 dpurdie 8105
         --- Remove from Code Review URL
8106
         DELETE FROM code_review_url cru
8107
               WHERE cru.pv_id = pvid;
8108
 
1373 dpurdie 8109
         --- Remove from Unit Tests
8110
         DELETE FROM unit_tests ut
8111
               WHERE ut.pv_id = pvid;
8112
 
8113
         --- Remove from Package BuildEnv
8114
         DELETE FROM package_build_env pbe
8115
               WHERE pbe.pv_id = pvid;
8116
 
3959 dpurdie 8117
         --- Remove from Package Build Info
8118
         DELETE FROM package_build_info pbi
8119
               WHERE pbi.pv_id = pvid;
8120
 
1373 dpurdie 8121
         --- Remove from Build Order
8122
         DELETE FROM build_order bo
8123
               WHERE bo.pv_id = pvid;
8124
 
3959 dpurdie 8125
         --- Remove from Licencing
8126
         PK_LICENCING.REMOVE_ALL_LICENCING( pvid, 0 );
8127
 
1373 dpurdie 8128
         --- Remove from Note Manager
8129
         DELETE FROM note_manager nm
8130
               WHERE nm.nid = pvid;
8131
 
8132
         --- Remove from Action log
8133
         DELETE FROM action_log al
8134
               WHERE al.pv_id = pvid;
3959 dpurdie 8135
 
8136
         --- Remove from Do Not Ripple
8137
         DELETE FROM DO_NOT_RIPPLE dnr
8138
               WHERE dnr.PV_ID = pvid;
8139
 
8140
         --- Remove from Advisory Ripple
8141
         DELETE FROM ADVISORY_RIPPLE ar
8142
               WHERE ar.PV_ID = pvid;
8143
 
8144
         --- Remove from Jira Issues
8145
         DELETE FROM JIRA_ISSUES jira
8146
               WHERE jira.PV_ID = pvid;
8147
 
8148
         --- Remove from Package Metrics
8149
         DELETE FROM package_metrics pm
8150
              WHERE pm.pv_id = pvid;
8151
 
8152
         -- Delete from Pegged Versions
8153
         DELETE FROM pegged_versions pegv
8154
              WHERE pegv.pv_id = pvid;
8155
 
1373 dpurdie 8156
         --- Finally Remove From Package Versions
8157
         --- Get Package name
8158
         SELECT pv.pkg_id
8159
           INTO pkgid
8160
           FROM package_versions pv
8161
          WHERE pv.pv_id = pvid;
8162
 
8163
         DELETE FROM package_versions pv
8164
               WHERE pv.pv_id = pvid;
8165
 
8166
         --- Remove package name if not used any more
8167
         SELECT COUNT (pv.pv_id)
8168
           INTO ROWCOUNT
8169
           FROM package_versions pv
8170
          WHERE pv.pkg_id = pkgid;
8171
 
8172
         IF ROWCOUNT < 1
8173
         THEN
8174
            DELETE FROM PACKAGES pkg
8175
                  WHERE pkg.pkg_id = pkgid;
8176
         END IF;
8177
      END IF;
8178
   END;
8179
 
8180
/*-------------------------------------------------------------------------------------------------------*/
8181
   PROCEDURE new_patch (
8182
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
8183
      nparentpvid        IN       NUMBER,
8184
      spatchidlist       IN       VARCHAR2,
8185
      nuserid            IN       NUMBER,
8186
      returnpatchid      OUT      NUMBER
8187
   )
8188
   IS
8189
      patchpv_id           NUMBER;
8190
      parpkg_id            NUMBER;
8191
      lastinstallorder     NUMBER;
8192
      ispatchdlocked       package_versions.dlocked%TYPE;
8193
      ssv_mm               package_versions.v_mm%TYPE;
8194
      ssv_nmm              package_versions.v_nmm%TYPE;
8195
      ssv_ext              package_versions.v_ext%TYPE;
3959 dpurdie 8196
      opatchdepcollector   relmgr_number_tab_t  := relmgr_number_tab_t ();
1373 dpurdie 8197
 
8198
      CURSOR parent_cur
8199
      IS
8200
         SELECT pv.*, pkg.pkg_name
8201
           FROM package_versions pv, PACKAGES pkg
8202
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
8203
 
3959 dpurdie 8204
      parent_rec parent_cur%ROWTYPE;
1373 dpurdie 8205
 
8206
      CURSOR patch_cur
8207
      IS
8208
         SELECT pv.*, pg.pkg_name
8209
           FROM package_versions pv, PACKAGES pg
8210
          WHERE pv.pkg_id = parpkg_id
8211
            AND pv.pkg_version = snewpatchversion
8212
            AND pv.pkg_id = pg.pkg_id;
8213
 
3959 dpurdie 8214
      patch_rec  patch_cur%ROWTYPE;
1373 dpurdie 8215
 
8216
      CURSOR releases_cur
8217
      IS
8218
         SELECT rc.pv_id
8219
           FROM release_content rc
8220
          WHERE rc.pv_id = patch_rec.pv_id;
8221
 
3959 dpurdie 8222
      releases_rec releases_cur%ROWTYPE;
1373 dpurdie 8223
   BEGIN
8224
      -- Get Last Install Order
8225
      SELECT COUNT (*)
8226
        INTO lastinstallorder
8227
        FROM package_patches pp
8228
       WHERE pp.pv_id = nparentpvid;
8229
 
8230
      -- Get parent details
8231
      OPEN parent_cur;
8232
 
8233
      FETCH parent_cur
8234
       INTO parent_rec;
8235
 
8236
      parpkg_id := parent_rec.pkg_id;
8237
 
8238
      -- Find if patch exists in database
8239
      OPEN patch_cur;
8240
 
8241
      FETCH patch_cur
8242
       INTO patch_rec;
8243
 
8244
      -- Parent must be official
8245
      IF parent_rec.dlocked = 'Y'
8246
      THEN
8247
         IF patch_cur%NOTFOUND
8248
         THEN
8249
            ispatchdlocked := 'N';
8250
 
8251
            -- Create new patch version --
8252
            SELECT seq_pv_id.NEXTVAL
8253
              INTO patchpv_id
8254
              FROM DUAL;
8255
 
8256
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
8257
 
8258
            INSERT INTO package_versions
8259
                        (pv_id, pkg_id, pkg_version,
8260
                         dlocked, created_stamp, creator_id,
8261
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
8262
                         src_path,
8263
                         pv_description,
8264
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
3959 dpurdie 8265
                         is_autobuildable, ripple_field
1373 dpurdie 8266
                        )
8267
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
8268
                         ispatchdlocked, ora_sysdate, nuserid,
8269
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
8270
                         parent_rec.src_path,
8271
                            'This is a patch to '
8272
                         || parent_rec.pkg_name
8273
                         || ' '
8274
                         || parent_rec.pkg_version,
3959 dpurdie 8275
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
1373 dpurdie 8276
                        );
8277
 
8278
            INSERT INTO package_patches
8279
                        (pv_id, patch_id, install_order)
3959 dpurdie 8280
                (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
8281
                        lastinstallorder + 1 AS install_order
8282
                   FROM package_versions pv
8283
                  WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
1373 dpurdie 8284
 
8285
            /* LOG ACTION */
8286
            log_action (patchpv_id,
8287
                        'new_version',
8288
                        nuserid,
8289
                        'Patch version created: ' || snewpatchversion
8290
                       );
8291
            log_action (nparentpvid,
8292
                        'patch_add',
8293
                        nuserid,
8294
                        'New patch created and attached: ' || snewpatchversion
8295
                       );
8296
         ELSE
8297
            patchpv_id := patch_rec.pv_id;
8298
            ispatchdlocked := patch_rec.dlocked;
8299
 
8300
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
8301
            OPEN releases_cur;
8302
 
8303
            FETCH releases_cur
8304
             INTO releases_rec;
8305
 
8306
            IF releases_cur%NOTFOUND
8307
            THEN
8308
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
8309
               UPDATE package_versions
8310
                  SET is_patch = 'Y'
8311
                WHERE pv_id = patchpv_id;
8312
 
8313
               INSERT INTO package_patches
8314
                           (pv_id, patch_id, install_order)
3959 dpurdie 8315
                   (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
8316
                           lastinstallorder + 1 AS install_order
8317
                      FROM package_versions pv
8318
                     WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
1373 dpurdie 8319
            END IF;
8320
 
8321
            CLOSE releases_cur;
8322
 
8323
            /* LOG ACTION */
8324
            log_action (nparentpvid,
8325
                        'patch_add',
8326
                        nuserid,
8327
                           'Patch version was found and attached: '
8328
                        || snewpatchversion
8329
                       );
8330
         END IF;
8331
      END IF;
8332
 
8333
      /* Create Patch Dependencies */
8334
      opatchdepcollector := in_list_number (spatchidlist);
8335
 
8336
      -- Make sure patch is unofficial before altering its dependencies
8337
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
8338
      THEN
8339
         -- Delete Existing Dependencies
8340
         DELETE FROM package_dependencies dep
8341
               WHERE dep.pv_id = patchpv_id;
8342
 
8343
         -- Insert new dependencies
8344
         INSERT INTO package_dependencies
8345
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
3959 dpurdie 8346
              SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
8347
                     parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
8348
                     'L' AS build_type
8349
                FROM package_versions pv
8350
               WHERE pv.pv_id IN (
1373 dpurdie 8351
                      SELECT *
8352
                        FROM TABLE
8353
                                (CAST
8354
                                    (opatchdepcollector AS relmgr_number_tab_t)
8355
                                ));
8356
      END IF;
8357
 
8358
      -- Return patch_id
8359
      returnpatchid := patchpv_id;
8360
 
8361
      CLOSE parent_cur;
8362
 
8363
      CLOSE patch_cur;
8364
   EXCEPTION
8365
      WHEN DUP_VAL_ON_INDEX
8366
      THEN
8367
         raise_application_error (-20000,
8368
                                     'Patch version '
8369
                                  || snewpatchversion
8370
                                  || ' already exist.'
8371
                                 );
8372
   END;
8373
 
8374
/*-------------------------------------------------------------------------------------------------------*/
8375
   PROCEDURE obsolete_patch (
8376
      patchid            IN   NUMBER,
8377
      isobsolete         IN   CHAR,
8378
      obsoletecomments   IN   VARCHAR2,
8379
      userid             IN   NUMBER
8380
   )
8381
   IS
8382
   BEGIN
8383
      -- Update patch
8384
      UPDATE package_versions pv
8385
         SET pv.is_obsolete = isobsolete,
8386
             pv.obsolete_comments = obsoletecomments
8387
       WHERE pv.pv_id = patchid;
8388
 
8389
      /*
8390
      -- Update patch children
8391
      UPDATE PACKAGE_VERSIONS pv SET
8392
      pv.IS_OBSOLETE = IsObsolete,
8393
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8394
      WHERE pv.PV_ID IN (
8395
                     SELECT DISTINCT dep.DPV_ID
8396
                       FROM PACKAGE_DEPENDENCIES dep
8397
                      WHERE dep.PV_ID = PatchId
8398
                     );
8399
 
8400
 
8401
      -- Update patch parent
8402
      UPDATE PACKAGE_VERSIONS pv SET
8403
      pv.IS_OBSOLETE = IsObsolete,
8404
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8405
      WHERE pv.PV_ID IN (
8406
                     SELECT DISTINCT dep.PV_ID
8407
                       FROM PACKAGE_DEPENDENCIES dep
8408
                      WHERE dep.DPV_ID = PatchId
8409
                     );
8410
 
3959 dpurdie 8411
      */
1373 dpurdie 8412
 
8413
      /* LOG ACTION */
8414
      IF isobsolete IS NOT NULL
8415
      THEN
8416
         log_action (patchid,
8417
                     'patch_obsolete',
8418
                     userid,
8419
                     'Obsolete patch. ' || obsoletecomments
8420
                    );
8421
      ELSE
8422
         log_action (patchid,
8423
                     'patch_obsolete',
8424
                     userid,
8425
                     'Undo patch obsolete.'
8426
                    );
8427
      END IF;
8428
   END;
8429
 
8430
/*-------------------------------------------------------------------------------------------------------*/
8431
   PROCEDURE obsolete_patches (
8432
      spatchidlist       IN   VARCHAR2,
8433
      isobsolete         IN   CHAR,
8434
      obsoletecomments   IN   VARCHAR2,
8435
      userid             IN   NUMBER
8436
   )
8437
   IS
8438
   BEGIN
8439
      /*--------------- Business Rules Here -------------------*/
8440
      IF spatchidlist IS NULL
8441
      THEN
8442
         raise_application_error (-20000,
8443
                                  'Please select one or more Patches.'
8444
                                 );
8445
      END IF;
8446
 
8447
/*-------------------------------------------------------*/
8448
 
8449
      -- Update patch
8450
      UPDATE package_versions pv
8451
         SET pv.is_obsolete = isobsolete,
8452
             pv.obsolete_comments = obsoletecomments
8453
       WHERE pv.pv_id IN (
8454
                SELECT *
8455
                  FROM THE
8456
                          (SELECT CAST
8457
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
8458
                                     )
8459
                             FROM DUAL
8460
                          ));
3959 dpurdie 8461
      /*
8462
      -- Update patch children
8463
      UPDATE PACKAGE_VERSIONS pv SET
8464
      pv.IS_OBSOLETE = IsObsolete,
8465
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8466
      WHERE pv.PV_ID IN (
8467
                     SELECT DISTINCT dep.DPV_ID
8468
                       FROM PACKAGE_DEPENDENCIES dep
8469
                      WHERE dep.PV_ID = PatchId
8470
                     );
1373 dpurdie 8471
 
8472
 
3959 dpurdie 8473
      -- Update patch parent
8474
      UPDATE PACKAGE_VERSIONS pv SET
8475
      pv.IS_OBSOLETE = IsObsolete,
8476
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8477
      WHERE pv.PV_ID IN (
8478
                     SELECT DISTINCT dep.PV_ID
8479
                       FROM PACKAGE_DEPENDENCIES dep
8480
                      WHERE dep.DPV_ID = PatchId
8481
                     );
1373 dpurdie 8482
 
8483
      */
8484
 
3959 dpurdie 8485
      /* LOG ACTION
8486
      IF IsObsolete IS NOT NULL THEN
1373 dpurdie 8487
         Log_Action ( PatchId, 'patch_obsolete', UserId,
3959 dpurdie 8488
                     'Obsolete patch. '|| ObsoleteComments );
8489
      ELSE
8490
         Log_Action ( PatchId, 'patch_obsolete', UserId,
8491
                     'Undo patch obsolete.' );
8492
      END IF;  */
1373 dpurdie 8493
   END;
8494
 
8495
/*-------------------------------------------------------------------------------------------------------*/
8496
   PROCEDURE add_process (
8497
      nprocid         IN   processes.proc_id%TYPE,
8498
      shealthtag      IN   processes.proc_name%TYPE,
8499
      sprocdesc       IN   processes.proc_description%TYPE,
8500
      scmdinterface   IN   processes.run_as%TYPE,
8501
      spkgowner       IN   processes.pkg_owner%TYPE,
8502
      sisinterface    IN   processes.is_interface%TYPE,
8503
      npvid           IN   package_processes.pv_id%TYPE,
8504
      nuserid         IN   NUMBER
8505
   )
8506
   IS
8507
      pkgname   VARCHAR2 (100);
3959 dpurdie 8508
 
1373 dpurdie 8509
   BEGIN
8510
      INSERT INTO processes
8511
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
8512
                   is_interface
8513
                  )
8514
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
8515
                   sisinterface
8516
                  );
8517
 
8518
      pk_package.add_package_process (nprocid, npvid, nuserid);
8519
   END;
8520
 
8521
/*-------------------------------------------------------------------------------------------------------*/
8522
   PROCEDURE add_package_process (
8523
      nprocidlist   IN   VARCHAR2,
8524
      npvid         IN   package_processes.pv_id%TYPE,
8525
      nuserid       IN   NUMBER
8526
   )
8527
   IS
8528
      processname   VARCHAR2 (4000);
8529
 
8530
      CURSOR proc_cur
8531
      IS
8532
         SELECT prc.proc_id
8533
           FROM processes prc
8534
          WHERE prc.proc_id IN (
8535
                   SELECT *
8536
                     FROM THE
8537
                             (SELECT CAST
8538
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
8539
                                        )
8540
                                FROM DUAL
8541
                             ));
8542
 
3959 dpurdie 8543
      proc_rec  proc_cur%ROWTYPE;
1373 dpurdie 8544
   BEGIN
8545
      OPEN proc_cur;
8546
 
8547
      FETCH proc_cur
8548
       INTO proc_rec;
8549
 
8550
      WHILE proc_cur%FOUND
8551
      LOOP
3959 dpurdie 8552
         INSERT INTO package_processes (proc_id, pv_id)
8553
              VALUES (proc_rec.proc_id, npvid);
1373 dpurdie 8554
 
8555
         SELECT prc.proc_name
8556
           INTO processname
8557
           FROM processes prc
8558
          WHERE prc.proc_id = proc_rec.proc_id;
8559
 
8560
         -- Log Action --
8561
         log_action (npvid,
8562
                     'process_add',
8563
                     nuserid,
8564
                     'Added process with health tag ' || processname
8565
                    );
8566
 
8567
         FETCH proc_cur
8568
          INTO proc_rec;
8569
      END LOOP;
3959 dpurdie 8570
 
8571
      CLOSE proc_cur;
1373 dpurdie 8572
   END;
8573
 
8574
/*-------------------------------------------------------------------------------------------------------*/
8575
   PROCEDURE remove_process (
8576
      nprocid   IN   package_processes.proc_id%TYPE,
8577
      npvid     IN   package_processes.pv_id%TYPE,
8578
      nuserid   IN   NUMBER
8579
   )
8580
   IS
8581
      processname   VARCHAR2 (4000);
8582
   BEGIN
8583
      SELECT prc.proc_name
8584
        INTO processname
8585
        FROM processes prc
8586
       WHERE prc.proc_id = nprocid;
8587
 
8588
      DELETE FROM package_processes
8589
            WHERE proc_id = nprocid AND pv_id = npvid;
8590
 
8591
      -- Log Action --
8592
      log_action (npvid,
8593
                  'process_remove',
8594
                  nuserid,
8595
                  'Removed process with health tag ' || processname
8596
                 );
8597
   END;
8598
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8599
   /*
8600
   ** Author: Rupesh Solanki
8601
   ** Purpose: To move package versions from one release to another
8602
   ** Release: 4th September 2006
8603
   */
8604
   PROCEDURE move_package (
8605
      npvid        IN package_versions.pv_id%TYPE,
8606
      nrtagid      IN release_tags.rtag_id%TYPE,
8607
      nnewrtagid   IN release_tags.rtag_id%TYPE,
8608
      nuserid      IN NUMBER
8609
   )
8610
   IS
1373 dpurdie 8611
 
3959 dpurdie 8612
      oldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);
8613
 
8614
   BEGIN
8615
      SELECT rtag_name into oldrtag_name
8616
      FROM RELEASE_TAGS
8617
      WHERE rtag_id = nrtagid;
8618
 
8619
      SELECT rtag_name into newrtag_name
8620
      FROM RELEASE_TAGS
8621
      WHERE rtag_id = nnewrtagid;
8622
 
8623
      /* Table Work In Progress*/
8624
      UPDATE WORK_IN_PROGRESS
8625
      SET RTAG_ID = nnewrtagid
8626
      WHERE RTAG_ID = nrtagid
8627
      AND PV_ID = npvid;
8628
 
8629
      /* Table PLANNED*/
8630
      UPDATE PLANNED
8631
      SET RTAG_ID = nnewrtagid
8632
      WHERE RTAG_ID = nrtagid
8633
      AND PV_ID = npvid;
8634
 
8635
      /* Table PEGGED_VERSIONS */
8636
      DELETE FROM PEGGED_VERSIONS pegv
8637
      WHERE pegv.RTAG_ID = nrtagid
8638
      AND pegv.PV_ID = npvid;
8639
 
8640
      /* Table ADVISORY_RIPPLE*/
8641
      DELETE FROM ADVISORY_RIPPLE
8642
      WHERE RTAG_ID = nrtagid
8643
      AND PV_ID = npvid;
8644
 
8645
 
1373 dpurdie 8646
      -- Log Action --
8647
      log_action (npvid,
8648
                  'move_package_version',
8649
                  nuserid,
8650
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
3959 dpurdie 8651
                 );
8652
   END;
8653
 
1373 dpurdie 8654
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8655
   /*
8656
   ** Author: Rupesh Solanki
8657
   ** Purpose: To modify the product state from integration to test to deployment
8658
   ** Release: 25th January 2006
8659
   */
8660
   PROCEDURE modify_product_state (
8661
      npvid    IN package_versions.pv_id%TYPE,
8662
      nrtagid  IN release_tags.rtag_id%TYPE,
8663
      nstateid IN product_states.state_id%TYPE,
8664
      nuserid  IN NUMBER
1373 dpurdie 8665
   ) IS
3959 dpurdie 8666
 
8667
      sStateName VARCHAR2(4000);
8668
      sRtagName VARCHAR2(4000);
8669
 
8670
   BEGIN
8671
 
8672
      UPDATE RELEASE_CONTENT
8673
      SET PRODUCT_STATE = nstateid
8674
      WHERE PV_ID = npvid
8675
      AND RTAG_ID = nrtagid;
8676
 
8677
 
8678
      SELECT STATE INTO sStateName
8679
      FROM PRODUCT_STATES
8680
      WHERE STATE_ID = nstateid;
8681
 
8682
      SELECT RTAG_NAME into sRtagName
8683
      FROM RELEASE_TAGS
8684
      WHERE RTAG_ID = nrtagid;
8685
 
8686
 
8687
      -- Log Action --
8688
      log_action (npvid,
8689
                  'modify_product_state',
8690
                     nuserid,
8691
                     sStateName || ' in '|| sRtagName
8692
                  );
8693
   END;
8694
/*-------------------------------------------------------------------------------------------------------*/
8695
   /*
8696
   ** Author: Jeremy Tweddle
8697
   ** Date: 24/Aug/2007
8698
   */
8699
   PROCEDURE add_code_review_url (
8700
      npvid           IN    NUMBER,
8701
      nprojid         IN    NUMBER,
8702
      surl            IN    VARCHAR2,
8703
      sreason         IN    VARCHAR2,
8704
      ddateofreview   IN    DATE
8705
   ) IS
8706
 
8707
      ncrid NUMBER;
8708
 
8709
   BEGIN
8710
 
8711
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
8712
 
8713
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
8714
                                    last_modified )
8715
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
8716
 
8717
   END;
8718
/*-------------------------------------------------------------------------------------------------------*/
8719
   /*
8720
   ** Author: Jeremy Tweddle
8721
   ** Date: 22/Aug/2007
8722
   */
8723
   PROCEDURE update_code_review_url (
8724
      ncrid           IN    NUMBER,
8725
      nprojid         IN    NUMBER,
8726
      surl            IN    VARCHAR2,
8727
      sreason         IN    VARCHAR2
8728
   ) IS
8729
 
8730
   BEGIN
8731
 
8732
      UPDATE code_review_url
8733
      SET url = surl,
8734
          proj_id = nprojid,
8735
          reason = sreason,
8736
          last_modified = ora_sysdate
8737
      WHERE cr_id = ncrid;
8738
 
8739
   END;
8740
/*-------------------------------------------------------------------------------------------------------*/
8741
   /*
8742
   ** Author: Jeremy Tweddle
8743
   ** Date: 22/Aug/2007
8744
   */
8745
   PROCEDURE remove_code_review_url (
8746
      ncrid  IN    NUMBER
8747
   ) IS
8748
 
8749
   BEGIN
8750
      DELETE FROM code_review_url
8751
      WHERE cr_id = ncrid;
8752
   END;
8753
/*-------------------------------------------------------------------------------------------------------*/
8754
END pk_package;
4040 dpurdie 8755
 
1374 dpurdie 8756
/
1373 dpurdie 8757
 
4040 dpurdie 8758
/
8759
--------------------------------------------------------
8760
--  DDL for Package Body PK_PLANNED
8761
--------------------------------------------------------
8762
 
3959 dpurdie 8763
  CREATE OR REPLACE PACKAGE BODY "PK_PLANNED" IS
8764
 
1373 dpurdie 8765
/*
8766
------------------------------
3959 dpurdie 8767
||  Last Modified:  G.Huddy
8768
||  Modified Date:  05/Aug/2008
8769
||  Body Version:   1.2
1373 dpurdie 8770
------------------------------
8771
*/
8772
 
8773
 
8774
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8775
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 8776
 
3959 dpurdie 8777
    oldPvId NUMBER;
8778
    ReleaseLocation VARCHAR2(4000);
8779
    IsPatch CHAR(1) := NULL;
8780
    sLocation VARCHAR2(4000) := NULL;
8781
    nRtagIdLocation NUMBER;
1373 dpurdie 8782
 
8783
 
8784
 
3959 dpurdie 8785
BEGIN
8786
    /*--------------- Business Rules Here -------------------*/
8787
    /*-------------------------------------------------------*/
1373 dpurdie 8788
 
3959 dpurdie 8789
    BEGIN
8790
        -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
8791
        SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
8792
          FROM PLANNED pl,
8793
               RELEASE_TAGS rt,
8794
               PROJECTS proj
8795
         WHERE pl.PV_ID = newPvId
8796
           AND pl.RTAG_ID = rt.RTAG_ID
8797
           AND rt.OFFICIAL != 'Y'
8798
           AND rt.PROJ_ID = proj.PROJ_ID;
1373 dpurdie 8799
 
3959 dpurdie 8800
        EXCEPTION
8801
            WHEN NO_DATA_FOUND THEN
8802
                sLocation := NULL;
8803
    END;
1373 dpurdie 8804
 
3959 dpurdie 8805
 
8806
 
8807
    IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
8808
 
8809
        -- Add to "Pending" area
8810
        INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
8811
        VALUES( RtagId, newPvId, ViewId, 'R' );
8812
 
8813
 
8814
        /* LOG ACTION */
8815
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
8816
          FROM PROJECTS proj,
8817
               RELEASE_TAGS rt
8818
         WHERE rt.PROJ_ID = proj.PROJ_ID
8819
           AND rt.RTAG_ID = RtagId;
8820
 
8821
        Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
8822
 
8823
    ELSE
8824
 
8825
        RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
8826
 
8827
    END IF;
8828
 
8829
END;
1373 dpurdie 8830
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8831
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 8832
 
3959 dpurdie 8833
    ReleaseLocation VARCHAR2(4000);
1373 dpurdie 8834
 
3959 dpurdie 8835
BEGIN
1373 dpurdie 8836
 
3959 dpurdie 8837
    /*--------------- Business Rules Here -------------------*/
8838
    /*-------------------------------------------------------*/
1373 dpurdie 8839
 
8840
 
3959 dpurdie 8841
    -- Get release location for logging pusposes
8842
    SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
8843
      FROM PROJECTS proj,
8844
           RELEASE_TAGS rt
8845
     WHERE rt.PROJ_ID = proj.PROJ_ID
8846
       AND rt.RTAG_ID = RtagId;
1373 dpurdie 8847
 
8848
 
3959 dpurdie 8849
    -- Delete from Work In Progress
8850
    DELETE
8851
      FROM PLANNED pl
8852
     WHERE pl.RTAG_ID = RtagId
8853
       AND pl.PV_ID = PvId;
1373 dpurdie 8854
 
3959 dpurdie 8855
    Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
8856
 
8857
 
8858
 
8859
 
8860
END;
1373 dpurdie 8861
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8862
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
1373 dpurdie 8863
 
3959 dpurdie 8864
    ReturnValue NUMBER;
1373 dpurdie 8865
 
3959 dpurdie 8866
BEGIN
8867
    SELECT pl.VIEW_ID INTO ReturnValue
8868
      FROM PLANNED pl
8869
     WHERE pl.RTAG_ID = RtagId
8870
       AND pl.PV_ID = PvId;
8871
 
8872
    RETURN ReturnValue;
8873
END;
8874
/*-------------------------------------------------------------------------------------------------------*/
8875
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
8876
 
8877
    IsBaseView CHAR(1);
8878
 
8879
BEGIN
8880
 
8881
    -- Check if the view is BASE VIEW
8882
    SELECT vi.BASE_VIEW INTO IsBaseView
8883
      FROM VIEWS vi
8884
     WHERE vi.VIEW_ID = ViewId;
8885
 
8886
 
8887
    IF (IsBaseView = 'Y') THEN
8888
        -- Get Base view content
8889
        OPEN RecordSet FOR
8890
        SELECT 0 AS PKG_STATE,
8891
               NULL AS DEPRECATED_STATE,
8892
               pv.pv_id,
8893
               pkg.pkg_name,
8894
               pv.pkg_version,
8895
               pv.dlocked,
8896
               pv.pv_description,
8897
               pv.BUILD_TYPE,
8898
               rel.operation
8899
          FROM PLANNED rel,
8900
               packages pkg,
8901
               package_versions pv
8902
         WHERE pv.pkg_id = pkg.pkg_id
8903
           AND rel.pv_id = pv.pv_id
8904
           AND rel.VIEW_ID = ViewId
8905
           AND rel.RTAG_ID = RtagId
8906
         ORDER BY UPPER(pkg.PKG_NAME);
8907
 
8908
    ELSE
8909
 
8910
        -- Get non base view content
8911
        OPEN RecordSet FOR
8912
        SELECT 0 AS PKG_STATE,
8913
               NULL AS DEPRECATED_STATE,
8914
               pv.pv_id,
8915
               pkg.pkg_name,
8916
               pv.pkg_version,
8917
               pv.dlocked,
8918
               pv.pv_description,
8919
               pv.BUILD_TYPE,
8920
               rel.operation
8921
          FROM PLANNED rel,
8922
               packages pkg,
8923
               package_versions pv,
8924
               VIEW_DEF vd
8925
         WHERE pv.pkg_id = pkg.pkg_id
8926
           AND rel.pv_id = pv.pv_id
8927
           AND rel.RTAG_ID = RtagId
8928
           AND vd.VIEW_ID = ViewId
8929
           AND vd.PKG_ID = pv.PKG_ID
8930
         ORDER BY UPPER(pkg.PKG_NAME);
8931
 
8932
    END IF;
8933
 
8934
 
8935
END;
8936
/*-------------------------------------------------------------------------------------------------------*/
8937
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
8938
 
8939
BEGIN
8940
 
8941
    UPDATE PLANNED pl SET
8942
    pl.VIEW_ID = NewViewId
8943
    WHERE pl.PV_ID = PvId
8944
      AND pl.RTAG_ID = RtagId;
8945
 
8946
END;
8947
/*-------------------------------------------------------------------------------------------------------*/
8948
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
8949
-- version of a package as part of a release-to-release merge operation carried out within release manager.
8950
-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its
8951
-- opposite operation, if the opposite already exists in the planned table. This supports user activity
8952
-- via the Release Manager merge manager display
8953
 
8954
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
8955
 
8956
    ReleaseLocation VARCHAR2(4000);
8957
 
8958
        entryExists NUMBER;
8959
        existingOperation CHAR;
8960
BEGIN
8961
    /*--------------- Business Rules Here -------------------*/
8962
    /*-------------------------------------------------------*/
8963
 
8964
      -- Determine if the specified PV_ID already exists in the planned table....
8965
      SELECT COUNT (pl.pv_id) INTO entryExists
8966
      FROM PLANNED pl
8967
      WHERE pl.pv_id = newPvId
8968
      AND pl.rtag_id = RtagId
8969
      AND pl.view_id = ViewId;
8970
 
8971
      -- If the specified PV_ID already exists in the planned table....
8972
      IF entryExists = 1 THEN
8973
 
8974
         -- Get the operation for the existing entry
8975
         SELECT pl.operation INTO existingOperation
8976
         FROM PLANNED pl
8977
         WHERE pl.pv_id = newPvId
8978
         AND pl.rtag_id = RtagId
8979
         AND pl.view_id = ViewId;
8980
 
8981
         -- Is the specified merge operation the opposite of the existing entry?
8982
         -- If it is not, then there is nothing to do, otherwise...
8983
         -- NOTE: A = Add, S = Subtract
8984
         IF (mergeOperation = 'S' AND existingOperation = 'A')
8985
            OR (mergeOperation = 'A' AND existingOperation = 'S') THEN
8986
 
8987
           -- It is the opposite, so effectively it cancels the existing entry
8988
           -- Remove the entry from the planned table
8989
           DELETE
8990
            FROM PLANNED pl
8991
           WHERE pl.pv_id = newPvId
8992
             AND pl.rtag_id = RtagId
8993
             AND pl.view_id = ViewId;
8994
 
8995
           -- Log action
8996
           SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
8997
             FROM PROJECTS proj,
8998
                  RELEASE_TAGS rt
8999
            WHERE rt.PROJ_ID = proj.PROJ_ID
9000
              AND rt.RTAG_ID = RtagId;
9001
 
9002
           Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 9003
         END IF;
3959 dpurdie 9004
      ELSE
9005
         -- Add to Planned tabled
9006
         INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
9007
         VALUES( RtagId, newPvId, ViewId, mergeOperation );
1373 dpurdie 9008
 
3959 dpurdie 9009
         -- Log Action
9010
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9011
          FROM PROJECTS proj,
9012
               RELEASE_TAGS rt
9013
         WHERE rt.PROJ_ID = proj.PROJ_ID
9014
         AND   rt.RTAG_ID = RtagId;
9015
 
9016
         Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 9017
      END IF;
9018
 
3959 dpurdie 9019
END;
1373 dpurdie 9020
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9021
END PK_PLANNED;
4040 dpurdie 9022
 
3959 dpurdie 9023
/
1373 dpurdie 9024
 
4040 dpurdie 9025
/
9026
--------------------------------------------------------
9027
--  DDL for Package Body PK_PROJECT
9028
--------------------------------------------------------
9029
 
3959 dpurdie 9030
  CREATE OR REPLACE PACKAGE BODY "PK_PROJECT" IS
1373 dpurdie 9031
 
3959 dpurdie 9032
    /*------------------------------------------------------------------------*/
9033
    PROCEDURE update_base_url (
9034
    nprojid   IN  projects.proj_id%TYPE,
9035
    sbaseurl  IN  VARCHAR2
9036
    ) IS
9037
    BEGIN
1373 dpurdie 9038
 
3959 dpurdie 9039
    UPDATE projects
9040
    SET base_url = sbaseurl
9041
    WHERE proj_id = nprojid;
9042
 
9043
    END update_base_url;
9044
 
9045
/*------------------------------------------------------------------------*/
9046
    PROCEDURE update_project_config (
9047
    nprojid   IN  projects.proj_id%TYPE,
9048
    sbaseurl  IN  VARCHAR2,
9049
    sjirakey  IN  VARCHAR2
9050
    ) IS
9051
    BEGIN
9052
 
9053
    UPDATE projects
9054
    SET base_url = sbaseurl,
9055
        jira_key = sjirakey
9056
    WHERE proj_id = nprojid;
9057
 
9058
    END update_project_config;
9059
    /*------------------------------------------------------------------------*/
9060
 
9061
    END pk_project;
4040 dpurdie 9062
 
3959 dpurdie 9063
/
9064
 
4040 dpurdie 9065
/
9066
--------------------------------------------------------
9067
--  DDL for Package Body PK_RELEASE
9068
--------------------------------------------------------
9069
 
3959 dpurdie 9070
  CREATE OR REPLACE PACKAGE BODY "PK_RELEASE" IS
9071
 
1373 dpurdie 9072
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9073
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
1373 dpurdie 9074
 
3959 dpurdie 9075
RtagId NUMBER;
9076
ParentRtagId NUMBER;
9077
RecCount NUMBER := 0;
9078
VtreeId NUMBER;
1373 dpurdie 9079
 
3959 dpurdie 9080
BEGIN
9081
   /*--------------- Business Rules Here -------------------*/
9082
   -- Check for missing parameters
9083
   IF (sReleaseName IS NULL) OR (nUserId IS NULL)
9084
   THEN
9085
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
1373 dpurdie 9086
 
3959 dpurdie 9087
   END IF;
1373 dpurdie 9088
 
3959 dpurdie 9089
 
9090
   -- Check for duplicate Release Names
9091
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9092
     FROM RELEASE_TAGS rt
9093
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9094
      AND rt.PROJ_ID = nProjId;
9095
 
9096
   IF (RecCount > 0) THEN
9097
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
9098
   END IF;
9099
   /*-------------------------------------------------------*/
9100
 
9101
 
9102
   -- Get rtag_id
9103
   SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
9104
 
9105
   SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
9106
 
9107
 
9108
 
9109
   -- Get Parent RtagId
9110
   ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
9111
 
9112
   -- If the parent RTAG is NOT in this project then we cannot use it.
9113
   -- We must re-assign the parent to be the new release's RTAG_ID instead
9114
   -- else it will not show up in the projects release tree (DEVI-55480)
9115
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9116
     FROM RELEASE_TAGS rt
9117
    WHERE rt.RTAG_ID = ParentRtagId
9118
      AND rt.PROJ_ID = nProjId;
9119
 
9120
   IF (RecCount = 0) THEN
9121
     ParentRtagId := RtagId;
9122
   END IF;
9123
 
9124
   -- Create new release
9125
   INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID,
9126
                        OFFICIAL, REBUILD_ENV, REBUILD_STAMP,
9127
                        PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
9128
   VALUES ( RtagId,
9129
          sReleaseName,
9130
          sReleaseComments,
9131
          ORA_SYSDATE,
9132
          nUserId,
9133
          'N',
9134
          'N',
9135
          0,
9136
          ParentRtagId,
9137
          nProjId,
9138
          VtreeId );
9139
 
9140
   -- If a source release is provided, clone its config spec branch information into the new release (DEVI-56650)
9141
   IF (NOT nSourceRtagId IS NULL)
9142
   THEN
9143
      UPDATE RELEASE_TAGS rtd
9144
      SET rtd.config_spec_branch = (SELECT rts.CONFIG_SPEC_BRANCH FROM RELEASE_TAGS rts WHERE rts.RTAG_ID = nSourceRtagId)
9145
      WHERE rtd.RTAG_ID = RtagId;
9146
   END IF;
9147
 
9148
   -- Update display Order
9149
   UPDATE_DISPLAY_ORDER ( nProjId );
9150
 
9151
   /* Log Project Action */
9152
   Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
9153
 
9154
 
9155
   -- Import Release Contents
9156
   IF (NOT nSourceRtagId IS NULL) THEN
9157
      Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
9158
   END IF;
9159
 
9160
END;
9161
/*-------------------------------------------------------------------------------------------------------*/
9162
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
9163
 
9164
 
9165
BEGIN
9166
 
9167
 
9168
   /*--------------- Business Rules Here -------------------*/
9169
   /*-------------------------------------------------------*/
9170
 
9171
   UPDATE RELEASE_TAGS urt SET
9172
   urt.DISPLAY_ORDER = (
9173
                  SELECT qry.REC_NUM
9174
                    FROM (
9175
                        SELECT rel.*, ROWNUM AS REC_NUM
9176
                          FROM (
9177
 
9178
                                SELECT rt.RTAG_ID,
9179
                                    rt.DISPLAY_ORDER,
9180
                                     DECODE( rt.PARENT_RTAG_ID,
9181
                                             rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
9182
                                FROM RELEASE_TAGS rt
9183
                               WHERE rt.PROJ_ID = nProjId
9184
 
9185
                                ) rel
9186
                        START WITH rel.PARENT_RTAG_ID = 0
9187
                        CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID
9188
                        ORDER SIBLINGS BY rel.DISPLAY_ORDER
9189
                        ) qry
9190
                     WHERE qry.RTAG_ID = urt.RTAG_ID
9191
                  )
9192
   WHERE urt.PROJ_ID = nProjId;
9193
 
9194
END;
9195
/*-------------------------------------------------------------------------------------------------------*/
9196
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
9197
 
9198
   nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9199
   SeqNum NUMBER;
9200
 
9201
BEGIN
9202
 
9203
 
9204
   /*--------------- Business Rules Here -------------------*/
9205
   /*-------------------------------------------------------*/
9206
 
9207
   nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
9208
 
9209
   -- Set start sequence number
9210
   SeqNum := 1;
9211
 
9212
   FOR i IN 1..nIdCollector.COUNT
9213
   LOOP
9214
 
9215
      -- Update new display order
9216
      UPDATE RELEASE_TAGS rt SET
9217
         rt.DISPLAY_ORDER = SeqNum
9218
       WHERE rt.PROJ_ID = nProjId
9219
         AND rt.RTAG_ID = nIdCollector(i);
9220
 
9221
      SeqNum := SeqNum + 1;
9222
 
9223
   END LOOP;
9224
 
9225
END;
9226
/*-------------------------------------------------------------------------------------------------------*/
9227
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
9228
 
9229
RecCount NUMBER := 0;
9230
ProjId NUMBER;
9231
 
9232
BEGIN
9233
 
9234
 
9235
   /*--------------- Business Rules Here -------------------*/
9236
   -- Check for missing parameters
9237
   IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
9238
   THEN
9239
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
9240
 
9241
   END IF;
9242
 
9243
 
9244
   -- Check for duplicate Release Names
9245
   SELECT rt.PROJ_ID INTO ProjId
9246
     FROM RELEASE_TAGS rt
9247
    WHERE rt.RTAG_ID = nRtagId;
9248
 
9249
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9250
     FROM RELEASE_TAGS rt
9251
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9252
      AND rt.RTAG_ID != nRtagId
9253
      AND rt.PROJ_ID = ProjId;
9254
 
9255
 
9256
   IF (RecCount > 0) THEN
9257
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
9258
   END IF;
9259
   /*-------------------------------------------------------*/
9260
 
9261
 
9262
 
9263
   -- Update release details
9264
   UPDATE RELEASE_TAGS rt SET
9265
   rt.RTAG_NAME = sReleaseName,
9266
   rt.DESCRIPTION = sReleaseComments,
9267
   rt.PARENT_RTAG_ID = nParentRtagId,
9268
   rt.ASSOC_MASS_REF = nMASSRtagId,
9269
   rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
9270
   rt.OWNER_EMAIL = sOwnerEmail,
9271
   rt.PRODUCT_STATE_USED = cState
9272
   WHERE rt.RTAG_ID = nRtagId;
9273
 
9274
   -- Update display Order
9275
   UPDATE_DISPLAY_ORDER ( ProjId );
9276
 
9277
   /* Log Project Action */
9278
   Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
9279
 
9280
 
9281
 
9282
 
9283
END;
9284
/*-------------------------------------------------------------------------------------------------------*/
9285
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
9286
 
9287
   RecCount NUMBER := 0;
9288
   sReleaseId VARCHAR2(4000);
9289
   ProjId NUMBER;
9290
 
9291
BEGIN
9292
   /*--------------- Business Rules Here -------------------*/
9293
   IF (nRtagId IS NULL)
9294
   THEN
9295
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9296
   END IF;
9297
 
9298
 
9299
 
9300
   -- Check for any kids
9301
   SELECT COUNT( rt.RTAG_ID ) INTO RecCount
9302
     FROM RELEASE_TAGS rt
9303
    WHERE rt.PARENT_RTAG_ID = nRtagId
9304
      AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
9305
 
9306
   IF (RecCount > 0) THEN
9307
      RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
9308
   END IF;
9309
   /*-------------------------------------------------------*/
9310
 
9311
   -- Clear the release contents
9312
   Clean_Release_Contents ( nRtagId, nUserId );
9313
 
9314
   /* Log Project Action */
9315
   SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
9316
     FROM RELEASE_TAGS rt
9317
    WHERE rt.RTAG_ID = nRtagId;
9318
 
9319
   Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
9320
 
9321
 
9322
   -- Remove Release
9323
   DELETE
9324
     FROM RELEASE_TAGS rt
9325
    WHERE rt.RTAG_ID = nRtagId;
9326
 
9327
 
9328
 
9329
END;
9330
/*-------------------------------------------------------------------------------------------------------*/
9331
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
9332
 
9333
   sSourceLocation VARCHAR2(4000);
9334
   sTargetLocation VARCHAR2(4000);
9335
   ProjId NUMBER;
9336
   cReleaseMode CHAR(1);
9337
   RconId NUMBER;
9338
 
9339
   -- this cursor gets the source release daemon configurations, ensuring that the
9340
   -- first record will be the master daemon, and subsequent records will be the slaves.
9341
   CURSOR curSrcReleaseConfigs IS
4308 dpurdie 9342
    SELECT daemon_hostname, gbe_id, gbe_buildfilter, bmcon_id, daemon_mode
3959 dpurdie 9343
     FROM RELEASE_CONFIG rc
9344
    WHERE rc.RTAG_ID = nSourceRtagId
9345
    ORDER BY rc.daemon_mode;
9346
    recSrcReleaseConfigs curSrcReleaseConfigs%ROWTYPE;
9347
 
9348
    -- this cursor looks for target release daemons
9349
   CURSOR curTgtReleaseConfigs IS
9350
    SELECT rcon_id
9351
     FROM RELEASE_CONFIG rc
9352
    WHERE rc.RTAG_ID = nTargetRtagId;
9353
    recTgtReleaseConfigs curTgtReleaseConfigs%ROWTYPE;
9354
 
9355
    -- this cursor looks for target release daemon run level entries
9356
   CURSOR curTgtReleaseConfigRunLevel IS
9357
    SELECT current_run_level
9358
     FROM RUN_LEVEL rl
9359
    WHERE rl.RCON_ID = recTgtReleaseConfigs.rcon_id;
9360
    recTgtReleaseConfigRunLevel curTgtReleaseConfigRunLevel%ROWTYPE;
9361
 
9362
BEGIN
9363
   /*--------------- Business Rules Here -------------------*/
9364
   IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
9365
   THEN
9366
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
9367
   END IF;
9368
 
9369
   IF (nSourceRtagId = nTargetRtagId) THEN
9370
      RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
9371
   END IF;
9372
 
9373
 
9374
   -- Check if Target release is in OPEN mode
9375
   SELECT rt.OFFICIAL  INTO  cReleaseMode
9376
     FROM RELEASE_TAGS rt
9377
    WHERE rt.RTAG_ID = nTargetRtagId;
9378
 
9379
   IF (cReleaseMode != 'N') THEN
9380
      RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
9381
   END IF;
9382
 
9383
   -- check that the target release's daemons are all paused before we allow an import operation
9384
   OPEN curTgtReleaseConfigs;
9385
   FETCH curtgtReleaseConfigs INTO recTgtReleaseConfigs;
9386
 
9387
   WHILE curTgtReleaseConfigs%FOUND
9388
   LOOP
9389
      OPEN curTgtReleaseConfigRunLevel;
9390
      FETCH curTgtReleaseConfigRunLevel INTO recTgtReleaseConfigRunLevel;
9391
      IF curTgtReleaseConfigRunLevel%FOUND THEN
9392
         IF (recTgtReleaseConfigRunLevel.current_run_level IS NULL) OR
9393
            (recTgtReleaseConfigRunLevel.current_run_level <> 2) THEN
9394
            RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
9395
         END IF;
1373 dpurdie 9396
      ELSE
3959 dpurdie 9397
         -- we don't know what the daemon run level is so err on the side of caution
9398
         RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
1373 dpurdie 9399
      END IF;
3959 dpurdie 9400
      CLOSE curTgtReleaseConfigRunLevel;
1373 dpurdie 9401
 
3959 dpurdie 9402
      FETCH curTgtReleaseConfigs INTO recTgtReleaseConfigs;
9403
   END LOOP;
1373 dpurdie 9404
 
3959 dpurdie 9405
   CLOSE curTgtReleaseConfigs;
1373 dpurdie 9406
 
9407
 
3959 dpurdie 9408
   /*-------------------------------------------------------*/
1373 dpurdie 9409
 
3959 dpurdie 9410
   -- Clean target contents
9411
   Clean_Release_Contents ( nTargetRtagId, nUserId );
1373 dpurdie 9412
 
9413
 
3959 dpurdie 9414
   -- Import Released Area Contents
9415
   INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE )
9416
   SELECT nTargetRtagId AS RTAG_ID,
9417
         rc.PV_ID,
9418
         rc.BASE_VIEW_ID,
9419
         rc.INSERT_STAMP,
9420
         rc.INSERTOR_ID,
9421
         rc.PKG_STATE,
9422
         rc.PKG_ID,
9423
         rc.DEPRECATED_STATE
9424
     FROM RELEASE_CONTENT rc
9425
    WHERE rc.RTAG_ID = nSourceRtagId;
9426
 
9427
 
9428
   -- Import any Pegged Version settings from the source release
9429
   INSERT INTO PEGGED_VERSIONS ( RTAG_ID, PV_ID )
9430
   SELECT nTargetRtagId AS RTAG_ID,
9431
          pegv.PV_ID
9432
     FROM PEGGED_VERSIONS pegv
9433
    WHERE pegv.RTAG_ID = nSourceRtagId;
9434
 
9435
   -- Import any Advisory Ripple settings from the source release
9436
   INSERT INTO ADVISORY_RIPPLE ( RTAG_ID, PV_ID )
9437
   SELECT nTargetRtagId AS RTAG_ID,
9438
          avr.PV_ID
9439
     FROM ADVISORY_RIPPLE avr
9440
    WHERE avr.RTAG_ID = nSourceRtagId;
9441
 
9442
 
9443
   --Import Release Configuration Information
9444
   OPEN curSrcReleaseConfigs;
9445
   FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
9446
 
4308 dpurdie 9447
     WHILE curSrcReleaseConfigs%FOUND
3959 dpurdie 9448
   LOOP
9449
      -- add a daemon to the target release
4308 dpurdie 9450
      PK_BUILDAPI.duplicate_daemon_config( nTargetRtagId, 
9451
                                     recSrcReleaseConfigs.bmcon_id, 
9452
                                     recSrcReleaseConfigs.daemon_hostname, 
9453
                                     recSrcReleaseConfigs.gbe_id, 
9454
                                     recSrcReleaseConfigs.daemon_mode ,
9455
                                     recSrcReleaseConfigs.gbe_buildfilter );
3959 dpurdie 9456
 
9457
      FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
9458
   END LOOP;
9459
 
9460
   CLOSE curSrcReleaseConfigs;
9461
 
9462
 
9463
 
9464
   -- Import Ignore Warning states
9465
   INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
9466
   SELECT nTargetRtagId AS RTAG_ID,
9467
          igw.PV_ID,
9468
          igw.DPV_ID
9469
     FROM IGNORE_WARNINGS igw
9470
    WHERE igw.rtag_id = nSourceRtagId;
9471
 
9472
 
9473
   /* Log Project Action */
9474
   -- Get Source Location
9475
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
9476
     FROM RELEASE_TAGS rt,
9477
           PROJECTS pr
9478
    WHERE rt.PROJ_ID = pr.PROJ_ID
9479
      AND rt.RTAG_ID = nSourceRtagId;
9480
 
9481
   -- Get Target Location
9482
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
9483
     FROM RELEASE_TAGS rt,
9484
           PROJECTS pr
9485
    WHERE rt.PROJ_ID = pr.PROJ_ID
9486
      AND rt.RTAG_ID = nTargetRtagId;
9487
 
9488
   -- Get project id
9489
   SELECT rt.PROJ_ID  INTO  ProjId
9490
     FROM RELEASE_TAGS rt
9491
    WHERE rt.RTAG_ID = nTargetRtagId;
9492
 
9493
   Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );
9494
END;
9495
 
9496
 
9497
 
1373 dpurdie 9498
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9499
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
1373 dpurdie 9500
 
3959 dpurdie 9501
   RecCount NUMBER;
9502
        rconIdList VARCHAR2(4000);
1373 dpurdie 9503
 
3959 dpurdie 9504
BEGIN
9505
   /*--------------- Business Rules Here -------------------*/
9506
   IF (nRtagId IS NULL)
9507
   THEN
9508
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9509
   END IF;
1373 dpurdie 9510
 
9511
 
3959 dpurdie 9512
   -- Check if other release references this release
9513
   SELECT COUNT( rl.RTAG_ID ) INTO RecCount
9514
     FROM RELEASE_LINKS rl
9515
    WHERE rl.REF_RTAG_ID = nRtagId;
1373 dpurdie 9516
 
3959 dpurdie 9517
   IF (RecCount > 0) THEN
9518
      RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
9519
   END IF;
9520
   /*-------------------------------------------------------*/
1373 dpurdie 9521
 
3959 dpurdie 9522
   -- Delete Release links
9523
   DELETE
9524
     FROM RELEASE_LINKS rl
9525
    WHERE rl.RTAG_ID = nRtagId;
9526
 
9527
   -- Delete ignore warning
9528
   DELETE
9529
     FROM IGNORE_WARNINGS iw
9530
    WHERE iw.RTAG_ID = nRtagId;
9531
 
9532
 
9533
   -- Delete Build Order cached calculations
9534
   DELETE
9535
     FROM BUILD_ORDER bo
9536
    WHERE bo.RTAG_ID = nRtagId;
9537
 
9538
 
9539
   -- Delete Notification History
9540
   DELETE
9541
     FROM NOTIFICATION_HISTORY nh
9542
    WHERE nh.RTAG_ID = nRtagId;
9543
 
9544
 
9545
   -- Delete Released Area Contents
9546
   DELETE
9547
     FROM RELEASE_CONTENT rc
9548
    WHERE rc.RTAG_ID = nRtagId;
9549
 
9550
 
9551
   -- Delete Work In Progress Area Contents
9552
   DELETE
9553
     FROM WORK_IN_PROGRESS wip
9554
    WHERE wip.RTAG_ID = nRtagId;
9555
 
9556
 
9557
   -- Delete Pending Area Contents
9558
   DELETE
9559
     FROM PLANNED pl
9560
    WHERE pl.RTAG_ID = nRtagId;
9561
 
9562
   -- Delete Deprecated Packages
9563
   DELETE
9564
     FROM DEPRECATED_PACKAGES dp
9565
    WHERE dp.RTAG_ID = nRtagId;
9566
 
9567
   -- Delete Project Action Log
9568
   DELETE
9569
     FROM PROJECT_ACTION_LOG pal
9570
    WHERE pal.RTAG_ID = nRtagId;
9571
 
9572
   -- Delete Do Not Ripple Contents
9573
   DELETE
9574
     FROM DO_NOT_RIPPLE dnr
9575
    WHERE dnr.RTAG_ID = nRtagId;
9576
 
9577
   -- Delete Dash Board Contents
9578
   DELETE
9579
     FROM DASH_BOARD db
9580
    WHERE db.RTAG_ID = nRtagId;
9581
 
9582
   -- Delete Advisory Ripple Contents
9583
   DELETE
9584
     FROM ADVISORY_RIPPLE adr
9585
    WHERE adr.RTAG_ID = nRtagId;
9586
 
9587
   -- Delete Archive Action Log
9588
   DELETE
9589
     FROM ARCHIVE_ACTION_LOG aal
9590
    WHERE aal.RTAG_ID = nRtagId;
9591
 
9592
   -- Delete Daemons For This Release
9593
   FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
9594
   LOOP
9595
      rconIdList := rconIdList || rcon.RCON_ID || ',';
9596
   END LOOP;
9597
 
9598
   pk_buildapi.DELETE_DAEMON(rconIdList);
9599
 
9600
   -- Delete Release Metrics Contents
9601
   DELETE
9602
     FROM RELEASE_METRICS rm
9603
    WHERE rm.RTAG_ID = nRtagId;
9604
 
9605
   -- Delete Release Configuration Contents
9606
   DELETE
9607
     FROM RELEASE_CONFIG rc
9608
    WHERE rc.RTAG_ID = nRtagId;
9609
 
9610
   -- Delete Pegged Version Contents
9611
   DELETE
9612
     FROM PEGGED_VERSIONS pegv
9613
    WHERE pegv.RTAG_ID = nRtagId;
9614
 
9615
END;
9616
/*-------------------------------------------------------------------------------------------------------*/
9617
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
9618
 
9619
   nSourceParentRtagId NUMBER;
9620
 
9621
BEGIN
9622
   /*--------------- Business Rules Here -------------------*/
9623
   IF (nRtagId IS NULL) OR (cIsBranch IS NULL)
9624
   THEN
9625
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
9626
   END IF;
9627
   /*-------------------------------------------------------*/
9628
 
9629
 
9630
   IF ( nSourceRtagId IS NULL ) THEN
9631
      -- Create new on main branch
9632
      RETURN nRtagId;
9633
 
9634
   ELSE
9635
      -- Create from source rtag_id
9636
 
9637
      -- Find parent of Source RtagId
9638
      SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
9639
        FROM RELEASE_TAGS rt
9640
       WHERE rt.RTAG_ID = nSourceRtagId;
9641
 
9642
      IF (UPPER(cIsBranch) = 'Y') THEN
9643
         RETURN nSourceRtagId;
9644
      ELSE
9645
         IF (nSourceRtagId = nSourceParentRtagId) THEN
9646
            RETURN nRtagId;
9647
         ELSE
9648
            RETURN nSourceParentRtagId;
1373 dpurdie 9649
         END IF;
9650
      END IF;
9651
 
3959 dpurdie 9652
 
9653
   END IF;
9654
 
9655
 
9656
END;
1373 dpurdie 9657
/*-------------------------------------------------------------------------------------------------------*/
9658
 
3959 dpurdie 9659
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
9660
--                       sNextVersion OUT VARCHAR2,
9661
--                       nNextLifeCycle OUT NUMBER,
9662
--                       nParentRtagId OUT NUMBER,
9663
--                       nProjId IN NUMBER ) IS
9664
--
9665
-- SourceBranchCount NUMBER;
9666
-- ProjRootVersion VARCHAR2(4000);
9667
-- LastLifeCycle NUMBER;
9668
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
9669
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
9670
--
9671
-- SourceProjId NUMBER;
9672
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
9673
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
9674
--
9675
-- BEGIN
9676
--    /*--------------- Business Rules Here -------------------*/
9677
--    /*-------------------------------------------------------*/
9678
--
9679
--
9680
--    BEGIN
9681
--       -- Get Project root version
9682
--       SELECT rt.RTAG_VERSION INTO ProjRootVersion
9683
--         FROM RELEASE_TAGS rt
9684
--        WHERE rt.PROJ_ID = nProjId
9685
--          AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
9686
--
9687
--       EXCEPTION
9688
--       WHEN NO_DATA_FOUND THEN
9689
--       ProjRootVersion := ROOT_VERSION_NOT_FOUND;
9690
--    END;
9691
--
9692
--
9693
--
9694
--
9695
--    BEGIN
9696
--       -- Get info for source rtagid
9697
--       SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
9698
--         FROM RELEASE_TAGS rt
9699
--        WHERE rt.RTAG_ID = nSourceRtagId;
9700
--
9701
--       EXCEPTION
9702
--       WHEN NO_DATA_FOUND THEN
9703
--       SourceProjId := NULL;
9704
--       SourceVersion := NULL;
9705
--       SourceLifeCycle := NULL;
9706
--    END;
9707
--
9708
--
9709
--    IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
9710
--
9711
--       /* Blank Release Required  OR  Release imported from other project */
9712
--
9713
--       IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
9714
--          /* No Releases found in the project, hence calculate next version available.  */
9715
--
9716
--          -- Set parent rtag
9717
--          nParentRtagId := SET_PARENT_AS_YOURSELF;
9718
--
9719
--
9720
--          BEGIN
9721
--             -- Get Next Available Global Root Version
9722
--             SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
9723
--               FROM RELEASE_TAGS rt
9724
--              WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
9725
--
9726
--             -- Set Next Rtag Version
9727
--             sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
9728
--
9729
--             -- Restart Lifecycle
9730
--             nNextLifeCycle := 0;
9731
--
9732
--
9733
--             EXCEPTION
9734
--             WHEN NO_DATA_FOUND THEN
9735
--             -- Release Manager has no releases, hence start from 1
9736
--             sNextVersion := '1';
9737
--             nNextLifeCycle := 0;
9738
--
9739
--          END;
9740
--
9741
--
9742
--
9743
--       ELSE
9744
--          /* Releases found in this project. */
9745
--
9746
--          SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
9747
--            FROM (
9748
--                SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
9749
--                  FROM RELEASE_TAGS rt
9750
--                 WHERE rt.PROJ_ID = nProjId
9751
--                   AND rt.RTAG_VERSION = ProjRootVersion
9752
--                 ORDER BY rt.RTAG_LIFE_CYCLE DESC
9753
--                  ) qry
9754
--           WHERE ROWNUM = 1;
9755
--
9756
--
9757
--          -- Set same Rtag Version
9758
--          sNextVersion := ProjRootVersion;
9759
--
9760
--          -- Increase Lifecycle
9761
--          nNextLifeCycle := LastLifeCycle + 1;
9762
--
9763
--       END IF;
9764
--
9765
--
9766
--
9767
--    ELSE
9768
--       /* Create Release From other release within this project */
9769
--
9770
--       -- Set parent id
9771
--       nParentRtagId := nSourceRtagId;
9772
--
9773
--
9774
--       -- Get number of source branches
9775
--       SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
9776
--         FROM RELEASE_TAGS rt
9777
--        WHERE rt.PROJ_ID = nProjId
9778
--          AND rt.PARENT_RTAG_ID = nSourceRtagId;
9779
--
9780
--
9781
--       IF SourceBranchCount = 0 THEN
9782
--          /* Release is Head (i.e. Tip on its branch ) */
9783
--
9784
--          -- Set Next Rtag Version
9785
--          sNextVersion := SourceVersion;
9786
--
9787
--          -- Increase Lifecycle
9788
--          nNextLifeCycle := SourceLifeCycle + 1;
9789
--
9790
--
9791
--       ELSIF SourceBranchCount = 1 THEN
9792
--          /* Release IS NOT Head, but can be branched */
9793
--
9794
--          -- Set Next Rtag Version
9795
--          sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
9796
--
9797
--          -- Reset Lifecycle to 1
9798
--          nNextLifeCycle := 1;
9799
--
9800
--
9801
--       ELSE
9802
--          -- Limit of two branches is reached
9803
--          RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');
9804
--
9805
--       END IF;
9806
--
9807
--
9808
--
9809
--
9810
--
9811
--
9812
--    END IF;
9813
--
9814
--
9815
-- END;
9816
 
9817
/*-------------------------------------------------------------------------------------------------------*/
9818
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
9819
 
9820
   IsBaseView CHAR(1);
9821
 
9822
BEGIN
9823
 
9824
   -- Check if the view is BASE VIEW
9825
   SELECT vi.BASE_VIEW INTO IsBaseView
9826
     FROM VIEWS vi
9827
    WHERE vi.VIEW_ID = ViewId;
9828
 
9829
   IF (IsBaseView = 'Y') THEN
9830
      -- Get Base view content
9831
      OPEN RecordSet FOR
9832
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
9833
            rel.deprecated_state,
9834
            pv.pv_id,
9835
            pkg.pkg_name,
9836
            pv.pkg_version,
9837
            pv.dlocked,
9838
            pv.pv_description,
9839
            pv.BUILD_TYPE
9840
        FROM release_content rel,
9841
             packages pkg,
9842
             package_versions pv
9843
       WHERE pv.pkg_id = pkg.pkg_id
9844
         AND rel.pv_id = pv.pv_id
9845
         AND rel.BASE_VIEW_ID = ViewId
9846
         AND rel.RTAG_ID = RtagId
9847
       ORDER BY UPPER(pkg.PKG_NAME);
9848
 
9849
   ELSE
9850
 
9851
       -- Get non base view content
9852
      OPEN RecordSet FOR
9853
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
9854
            rel.deprecated_state,
9855
            pv.pv_id,
9856
            pkg.pkg_name,
9857
            pv.pkg_version,
9858
            pv.dlocked,
9859
            pv.pv_description,
9860
            pv.BUILD_TYPE
9861
        FROM release_content rel,
9862
             packages pkg,
9863
             package_versions pv,
9864
            VIEW_DEF vd
9865
       WHERE pv.pkg_id = pkg.pkg_id
9866
         AND rel.pv_id = pv.pv_id
9867
         AND vd.VIEW_ID = ViewId
9868
         AND vd.PKG_ID = pv.PKG_ID
9869
         AND rel.RTAG_ID = RtagId
9870
       ORDER BY UPPER(pkg.PKG_NAME);
9871
 
9872
   END IF;
9873
 
9874
 
9875
 
9876
 
9877
END;
9878
/*-------------------------------------------------------------------------------------------------------*/
9879
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
9880
 
9881
   ReleaseLocation VARCHAR2(4000);
9882
   sPkgVersion VARCHAR2(4000);
9883
   nPkgId NUMBER;
9884
   sVExt VARCHAR2(4000);
9885
   IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
9886
 
9887
   -- Find package for replacement
9888
   CURSOR curReplacePkg IS
9889
    SELECT pv.PV_ID
9890
     FROM RELEASE_CONTENT rc,
9891
           PACKAGE_VERSIONS pv
9892
    WHERE rc.PV_ID = pv.PV_ID
9893
      AND rc.RTAG_ID = RtagId
9894
      AND pv.PKG_ID = nPkgId
9895
      AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
9896
    recReplacePkg curReplacePkg%ROWTYPE;
9897
 
9898
BEGIN
9899
 
9900
   -- Get is_patch, pkg_id and v_ext
9901
   SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
9902
     FROM PACKAGE_VERSIONS pv
9903
    WHERE pv.PV_ID = newPvId;
9904
 
9905
 
9906
   -- Never put patch in relesed area
9907
   IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
9908
 
9909
      -- Try to get a package to be replaced with this new one.
9910
      -- Use unique constraint of PKG_ID and V_EXT
9911
      OPEN curReplacePkg;
9912
       FETCH curReplacePkg INTO recReplacePkg;
9913
 
9914
       IF curReplacePkg%FOUND THEN
9915
         -- Replace package
9916
         REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
9917
 
9918
      ELSE
9919
         -- Add new package
9920
         INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
9921
         VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
9922
 
9923
 
9924
          /* LOG ACTION */
9925
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9926
           FROM PROJECTS proj,
9927
                 RELEASE_TAGS rt
9928
          WHERE rt.PROJ_ID = proj.PROJ_ID
9929
            AND rt.RTAG_ID = RtagId;
9930
 
9931
         SELECT pv.PKG_VERSION INTO sPkgVersion
9932
           FROM PACKAGE_VERSIONS pv
9933
          WHERE pv.PV_ID = newPvId;
9934
 
9935
         Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
9936
 
9937
 
1373 dpurdie 9938
      END IF;
9939
 
3959 dpurdie 9940
      CLOSE curReplacePkg;
9941
 
9942
   END IF;
9943
 
9944
END;
1373 dpurdie 9945
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9946
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 9947
 
3959 dpurdie 9948
   ReleaseLocation VARCHAR2(4000);
9949
   sPkgVersion VARCHAR2(4000);
9950
 
9951
BEGIN
9952
 
9953
   -- Replace Package
9954
    UPDATE RELEASE_CONTENT
9955
       SET pv_id = newPvId,
9956
           insert_stamp = Ora_Sysdate,
9957
           insertor_id = UserId,
9958
         product_state = NULL
9959
     WHERE rtag_id = RtagId
9960
       AND pv_id = oldPvId;
9961
 
9962
   -- update the pegging table
9963
   UPDATE PEGGED_VERSIONS
9964
      SET pv_id = newPvId
9965
     WHERE rtag_id = RtagId
9966
       AND pv_id = oldPvId;
9967
 
9968
   -- update the advisory_ripple table
9969
   UPDATE ADVISORY_RIPPLE
9970
      SET pv_id = newPvId
9971
     WHERE rtag_id = RtagId
9972
       AND pv_id = oldPvId;
9973
 
9974
    /* LOG ACTION */
9975
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9976
     FROM PROJECTS proj,
9977
           RELEASE_TAGS rt
9978
    WHERE rt.PROJ_ID = proj.PROJ_ID
9979
      AND rt.RTAG_ID = RtagId;
9980
 
9981
   SELECT pv.PKG_VERSION INTO sPkgVersion
9982
     FROM PACKAGE_VERSIONS pv
9983
    WHERE pv.PV_ID = newPvId;
9984
 
9985
   Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
9986
   Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
9987
 
9988
END;
9989
/*-------------------------------------------------------------------------------------------------------*/
9990
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
9991
   ReleaseLocation VARCHAR2(4000);
9992
 
9993
BEGIN
9994
 
9995
 
9996
   -- Delete old package
9997
   DELETE
9998
     FROM RELEASE_CONTENT rc
9999
    WHERE rc.PV_ID = PvId
10000
      AND rc.RTAG_ID = RtagId;
10001
 
10002
 
10003
   /* LOG ACTION */
10004
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10005
     FROM PROJECTS proj,
10006
          RELEASE_TAGS rt
10007
    WHERE rt.PROJ_ID = proj.PROJ_ID
10008
      AND rt.RTAG_ID = RtagId;
10009
 
10010
   Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
10011
 
10012
 
10013
END;
10014
/*-------------------------------------------------------------------------------------------------------*/
10015
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10016
   ReleaseLocation VARCHAR2(4000);
10017
 
10018
   CURSOR curMatchingPackage IS
10019
    SELECT mpv.PV_ID
10020
     FROM RELEASE_CONTENT rc,
10021
           PACKAGE_VERSIONS mpv,
10022
         PACKAGE_VERSIONS pv
10023
    WHERE rc.PV_ID = mpv.PV_ID
10024
      AND rc.RTAG_ID = RtagId
10025
      AND pv.PV_ID = PvId
10026
      AND pv.PKG_ID = mpv.PKG_ID
10027
      AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
10028
    recMatchingPackage curMatchingPackage%ROWTYPE;
10029
 
10030
BEGIN
10031
 
10032
   OPEN curMatchingPackage;
10033
    FETCH curMatchingPackage INTO recMatchingPackage;
10034
 
10035
    IF curMatchingPackage%FOUND THEN
10036
      -- Delete old package
10037
      DELETE
10038
        FROM RELEASE_CONTENT rc
10039
       WHERE rc.PV_ID = recMatchingPackage.PV_ID
10040
         AND rc.RTAG_ID = RtagId;
10041
 
10042
 
10043
      /* LOG ACTION */
10044
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10045
        FROM PROJECTS proj,
10046
              RELEASE_TAGS rt
10047
       WHERE rt.PROJ_ID = proj.PROJ_ID
10048
         AND rt.RTAG_ID = RtagId;
10049
 
10050
      Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
10051
 
10052
   END IF;
10053
 
10054
 
10055
   CLOSE curMatchingPackage;
10056
 
10057
 
10058
 
10059
 
10060
END;
10061
/*-------------------------------------------------------------------------------------------------------*/
10062
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
10063
 
10064
   ReturnValue NUMBER;
10065
 
10066
BEGIN
10067
   SELECT rc.BASE_VIEW_ID INTO ReturnValue
10068
     FROM RELEASE_CONTENT rc
10069
    WHERE rc.RTAG_ID = RtagId
10070
      AND rc.PV_ID = PvId;
10071
 
10072
   RETURN ReturnValue;
10073
END;
10074
/*-------------------------------------------------------------------------------------------------------*/
10075
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
10076
 
10077
BEGIN
10078
   -- Reset Ignore warnings up-the-tree
10079
   RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
10080
 
10081
   -- Refresh Package states
10082
   TOUCH_RELEASE ( RtagId );
10083
 
10084
END;
10085
/*-------------------------------------------------------------------------------------------------------*/
10086
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
10087
   CURSOR curReleases IS
10088
    SELECT rc.RTAG_ID
10089
     FROM RELEASE_CONTENT rc
10090
    WHERE rc.PV_ID = PvId;
10091
    recReleases curReleases%ROWTYPE;
10092
 
10093
BEGIN
10094
 
10095
   OPEN curReleases;
10096
    FETCH curReleases INTO recReleases;
10097
 
10098
   WHILE curReleases%FOUND
10099
   LOOP
10100
 
10101
      RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
10102
 
10103
      FETCH curReleases INTO recReleases;
10104
   END LOOP;
10105
 
10106
   CLOSE curReleases;
10107
 
10108
END;
10109
/*-------------------------------------------------------------------------------------------------------*/
10110
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
10111
 
10112
BEGIN
10113
 
10114
   UPDATE RELEASE_CONTENT rc SET
10115
   rc.BASE_VIEW_ID = NewViewId
10116
   WHERE rc.PV_ID = PvId
10117
     AND rc.RTAG_ID = RtagId;
10118
 
10119
END;
10120
/*-------------------------------------------------------------------------------------------------------*/
10121
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
10122
 
10123
   RowCount NUMBER;
10124
 
10125
 
10126
   CURSOR curPackageClash IS
10127
   SELECT pkg.PKG_NAME,
10128
         er.*
10129
     FROM (
10130
 
10131
           /* Get existing referenced packages */
10132
         SELECT pv.PKG_ID,
10133
                pv.V_EXT
10134
           FROM RELEASE_LINKS rl,
10135
                 RELEASE_CONTENT rc,
10136
                 PACKAGE_VERSIONS pv
10137
          WHERE rl.RTAG_ID = nRtagId
10138
            AND rl.REF_RTAG_ID = rc.RTAG_ID
10139
            AND rc.PV_ID = pv.PV_ID
10140
 
10141
            ) er,
10142
         (
10143
 
10144
         /* Get current reference packages */
10145
         SELECT pv.PKG_ID,
10146
                pv.V_EXT
10147
           FROM RELEASE_CONTENT rc,
10148
                 PACKAGE_VERSIONS pv
10149
          WHERE rc.RTAG_ID = nRefRtagId
10150
            AND rc.PV_ID = pv.PV_ID
10151
 
10152
         ) cr,
10153
         PACKAGES PKG
10154
    WHERE er.PKG_ID = cr.PKG_ID
10155
      AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10156
      AND er.PKG_ID = pkg.PKG_ID;
10157
 
10158
   recPackageClash curPackageClash%ROWTYPE;
10159
 
10160
BEGIN
10161
   /*--------------- Business Rules Here -------------------*/
10162
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
10163
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
10164
   END IF;
10165
 
10166
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
10167
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
10168
   END IF;
10169
   /*-------------------------------------------------------*/
10170
   ProblemString := NULL;
10171
 
10172
 
10173
   -- Check if release already has references
10174
   SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
10175
     FROM RELEASE_LINKS rl
10176
    WHERE rl.RTAG_ID = nRtagId;
10177
 
10178
 
10179
   IF RowCount > 0 THEN
10180
      -- Found existing references
10181
 
10182
      -- Make sure there is no package clashes
10183
      OPEN curPackageClash;
10184
       FETCH curPackageClash INTO recPackageClash;
10185
 
10186
      IF curPackageClash%FOUND THEN
10187
 
10188
         ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
10189
 
10190
         WHILE curPackageClash%FOUND
10191
         LOOP
10192
            EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;   -- Do not allow variable overflow
10193
 
10194
            ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
10195
 
10196
            FETCH curPackageClash INTO recPackageClash;
10197
         END LOOP;
10198
 
1373 dpurdie 10199
      END IF;
10200
 
3959 dpurdie 10201
      CLOSE curPackageClash;
10202
 
10203
 
10204
   ELSE
10205
      -- No references found, hence reference a release
10206
 
10207
 
10208
      -- Remove exising package from this release to be referenced
10209
      REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);
10210
 
10211
 
10212
      -- Add new linked packages to release
10213
      INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
10214
      SELECT nRtagId,
10215
            rc.PV_ID,
10216
            rc.BASE_VIEW_ID,
10217
            rc.INSERT_STAMP,
10218
            rc.INSERTOR_ID,
10219
            rc.PKG_STATE
10220
        FROM RELEASE_CONTENT rc
10221
       WHERE rc.RTAG_ID = nRefRtagId;
10222
 
10223
 
10224
 
10225
      -- Copy ignore warnings for referenced packages
10226
      INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
10227
      SELECT nRtagId,
10228
            iw.PV_ID,
10229
            iw.DPV_ID,
10230
            iw.IS_PATCH_IGNORE
10231
        FROM IGNORE_WARNINGS iw,
10232
              RELEASE_CONTENT rc
10233
       WHERE iw.RTAG_ID = rc.RTAG_ID
10234
         AND iw.PV_ID = rc.PV_ID
10235
         AND rc.RTAG_ID = nRefRtagId;
10236
 
10237
 
10238
 
10239
      -- Reference release
10240
      INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
10241
      VALUES ( nRtagId, nRefRtagId );
10242
 
10243
 
10244
      -- Refresh Package states
10245
      TOUCH_RELEASE ( nRtagId );
10246
 
10247
   END IF;
10248
 
10249
 
10250
END;
1373 dpurdie 10251
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10252
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
1373 dpurdie 10253
 
3959 dpurdie 10254
 
10255
BEGIN
10256
   /*--------------- Business Rules Here -------------------*/
10257
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
10258
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
10259
   END IF;
10260
 
10261
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
10262
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
10263
   END IF;
10264
 
10265
   /*-------------------------------------------------------*/
10266
 
10267
 
10268
   -- Remove ignore warnings for those packages who use referenced packages
10269
   DELETE FROM IGNORE_WARNINGS iw
10270
    WHERE iw.RTAG_ID = nRtagId
10271
      AND iw.DPV_ID IN (
10272
                        SELECT dep.DPV_ID
10273
                       FROM (
10274
 
10275
                           /* Get referenced packages */
10276
                           SELECT pv.PKG_ID,
10277
                                  pv.V_EXT
10278
                             FROM RELEASE_CONTENT rc,
10279
                                   PACKAGE_VERSIONS pv
10280
                            WHERE rc.RTAG_ID = nRefRtagId
10281
                              AND rc.PV_ID = pv.PV_ID
10282
 
10283
                           ) cr,
10284
                           (
10285
 
10286
                           /* Get all dependencies for current release */
10287
                           SELECT DISTINCT
10288
                                 pv.PKG_ID,
10289
                                 pv.V_EXT,
10290
                                 dep.DPV_ID
10291
                             FROM RELEASE_CONTENT rc,
10292
                                 PACKAGE_DEPENDENCIES dep,
10293
                                 PACKAGE_VERSIONS pv
10294
                            WHERE rc.RTAG_ID = nRtagId
10295
                              AND rc.PV_ID = dep.PV_ID
10296
                              AND dep.PV_ID = pv.PV_ID
10297
 
10298
                           ) dep
10299
                      WHERE dep.PKG_ID = cr.PKG_ID
10300
                        AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10301
                     );
10302
 
10303
 
10304
 
10305
 
10306
   -- Remove ignore warnings for those package which are going to be replaced with the reference
10307
   DELETE FROM IGNORE_WARNINGS iw
10308
    WHERE iw.RTAG_ID = nRtagId
10309
      AND iw.PV_ID IN (
10310
                  SELECT pv.PV_ID
10311
                    FROM (
10312
 
10313
                        /* Get referenced packages */
10314
                        SELECT pv.PKG_ID,
10315
                               pv.V_EXT
10316
                          FROM RELEASE_CONTENT rc,
10317
                                PACKAGE_VERSIONS pv
10318
                         WHERE rc.RTAG_ID = nRefRtagId
10319
                           AND rc.PV_ID = pv.PV_ID
10320
 
10321
                        ) cr,
10322
                        RELEASE_CONTENT rc,
10323
                        PACKAGE_VERSIONS pv
10324
                   WHERE pv.PKG_ID = cr.PKG_ID
10325
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10326
                     AND rc.RTAG_ID = nRtagId
10327
                     AND rc.PV_ID = pv.PV_ID
10328
                  );
10329
 
10330
 
10331
 
10332
 
10333
 
10334
   -- Remove matching packages from release
10335
   DELETE FROM RELEASE_CONTENT rc
10336
    WHERE rc.RTAG_ID = nRtagId
10337
      AND rc.PV_ID IN (
10338
                  SELECT pv.PV_ID
10339
                    FROM (
10340
 
10341
                        /* Get referenced packages */
10342
                        SELECT pv.PKG_ID,
10343
                               pv.V_EXT
10344
                          FROM RELEASE_CONTENT rc,
10345
                                PACKAGE_VERSIONS pv
10346
                         WHERE rc.RTAG_ID = nRefRtagId
10347
                           AND rc.PV_ID = pv.PV_ID
10348
 
10349
                        ) cr,
10350
                        RELEASE_CONTENT rc,
10351
                        PACKAGE_VERSIONS pv
10352
                   WHERE pv.PKG_ID = cr.PKG_ID
10353
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10354
                     AND rc.RTAG_ID = nRtagId
10355
                     AND rc.PV_ID = pv.PV_ID
10356
                  );
10357
 
10358
 
10359
 
10360
 
10361
 
10362
   -- Remove Reference release
10363
   DELETE
10364
     FROM RELEASE_LINKS rl
10365
    WHERE rl.RTAG_ID = nRtagId
10366
      AND rl.REF_RTAG_ID = nRefRtagId;
10367
 
10368
 
10369
   -- Refresh Package states
10370
   TOUCH_RELEASE ( nRtagId );
10371
 
10372
 
10373
END;
10374
/*-------------------------------------------------------------------------------------------------------*/
10375
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
10376
 
10377
   cReleaseMode CHAR(1);
10378
   cPvMode CHAR(1);
10379
 
10380
BEGIN
10381
 
10382
   -- Get Release Mode
10383
   SELECT rt.OFFICIAL INTO cReleaseMode
10384
     FROM RELEASE_TAGS rt
10385
    WHERE rt.RTAG_ID = RtagId;
10386
 
10387
 
10388
   -- Get Package Mode
10389
   SELECT pv.DLOCKED INTO cPvMode
10390
     FROM PACKAGE_VERSIONS pv
10391
    WHERE pv.PV_ID = PvId;
10392
 
10393
   -- Only check if package is locked
10394
   IF (cPvMode = 'Y') THEN
10395
 
10396
      IF (cReleaseMode != 'N') AND (Permission != 'Y')
1373 dpurdie 10397
      THEN
3959 dpurdie 10398
         RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
10399
 
1373 dpurdie 10400
      END IF;
10401
 
3959 dpurdie 10402
   END IF;
10403
 
10404
 
10405
END;
10406
 
1373 dpurdie 10407
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10408
END PK_RELEASE;
4040 dpurdie 10409
 
3959 dpurdie 10410
/
10411
 
4040 dpurdie 10412
/
10413
--------------------------------------------------------
10414
--  DDL for Package Body PK_RMAPI
10415
--------------------------------------------------------
10416
 
3959 dpurdie 10417
  CREATE OR REPLACE PACKAGE BODY "PK_RMAPI" 
10418
IS
10419
 
10420
   /*-------------------------------------------------------------------------------------------------------*/
10421
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
10422
      RETURN typecur
1373 dpurdie 10423
   IS
3959 dpurdie 10424
      npvid     NUMBER  := 0;
10425
      RECORDS   typecur;
1373 dpurdie 10426
   BEGIN
3959 dpurdie 10427
      BEGIN
10428
         -- Get PV_ID --
10429
         SELECT pv.pv_id
10430
           INTO npvid
10431
           FROM PACKAGES pkg, package_versions pv
10432
          WHERE pv.pkg_id = pkg.pkg_id
10433
            AND pkg.pkg_name = pkgname
10434
            AND pv.pkg_version = pkgversion;
10435
      EXCEPTION
10436
         WHEN NO_DATA_FOUND
10437
         THEN
10438
            raise_application_error (-20000, 'Package Not Found!');
10439
            --WHEN OTHERS THEN
10440
                  -- Consider logging the error and then re-raise
10441
            RAISE;
10442
      END;
1373 dpurdie 10443
 
3959 dpurdie 10444
      -- Finally get package dependencies --
10445
      OPEN RECORDS FOR
10446
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
10447
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
10448
          WHERE dep.pv_id = npvid
10449
            AND dpv.pkg_id = dpkg.pkg_id
10450
            AND dpv.pv_id = dep.dpv_id;
10451
 
10452
      RETURN RECORDS;
1373 dpurdie 10453
   END;
10454
 
10455
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10456
   FUNCTION wip_iteration_package (
10457
      projname        VARCHAR2,
10458
      iterationname   VARCHAR2,
10459
      pkgname         VARCHAR2
1373 dpurdie 10460
   )
3959 dpurdie 10461
      RETURN typecur
1373 dpurdie 10462
   IS
3959 dpurdie 10463
      nrtagid   NUMBER  := 0;
10464
      RECORDS   typecur;
1373 dpurdie 10465
   BEGIN
3959 dpurdie 10466
      BEGIN
10467
         -- Get latest rtag_id --
10468
         SELECT rt.rtag_id
10469
           INTO nrtagid
10470
           FROM projects proj, release_tags rt
10471
          WHERE rt.proj_id = proj.proj_id
10472
            AND UPPER (proj.proj_name) = UPPER (projname)
10473
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
1373 dpurdie 10474
 
3959 dpurdie 10475
         IF (nrtagid IS NULL)
10476
         THEN
10477
            raise_application_error (-20000,
10478
                                     'Work In Progress is Not Found!');
10479
         END IF;
10480
      EXCEPTION
10481
         WHEN NO_DATA_FOUND
10482
         THEN
10483
            raise_application_error (-20000,
10484
                                     'Work In Progress is Not Found!');
10485
            RAISE;
10486
      END;
10487
 
10488
      -- Finally get package dependencies --
10489
      OPEN RECORDS FOR
10490
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
10491
                pv.src_path
10492
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
10493
          WHERE pv.pkg_id = pkg.pkg_id
10494
            AND wip.pv_id = pv.pv_id
10495
            AND wip.rtag_id = nrtagid
10496
            AND pkg.pkg_name = pkgname;
10497
 
10498
      RETURN RECORDS;
1373 dpurdie 10499
   END;
10500
 
10501
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10502
   FUNCTION auto_make_vcsrelease (
10503
      rtagid                   IN   NUMBER,
10504
      pkgname                  IN   VARCHAR2,
10505
      vext                     IN   VARCHAR2,
10506
      newpkgversion            IN   VARCHAR2,
10507
      vcstag                   IN   VARCHAR2,
10508
      dependenciesimportlist   IN   VARCHAR2,
10509
      isrippled                IN   NUMBER,
10510
      username                 IN   VARCHAR2
10511
   )
1373 dpurdie 10512
      RETURN NUMBER
10513
   IS
3959 dpurdie 10514
      pkgid                           NUMBER;
10515
      pvid                            NUMBER                        := 0;
10516
      userid                          NUMBER;
10517
      dlocked                         VARCHAR2 (20)                 := NULL;
10518
      clonefrompvid                   NUMBER;
10519
      ssv_mm                          package_versions.v_mm%TYPE;
10520
      ssv_nmm                         package_versions.v_nmm%TYPE;
10521
      ssv_ext                         package_versions.v_ext%TYPE;
10522
      return_package_not_found        NUMBER                        := -1;
10523
      return_package_already_exists   NUMBER                        := -2;
10524
      return_not_approved             NUMBER                        := -3;
10525
      return_migrated_pkg             NUMBER                        := -4;
1373 dpurdie 10526
 
10527
 
3959 dpurdie 10528
      x_vcstypeid                     NUMBER;
10529
      x_tag                           VARCHAR2(32);
10530
      x_label                         VARCHAR2(60);
10531
      x_srcpath                       VARCHAR2(2000);
10532
      p_srcpath                       VARCHAR2(2000);
1373 dpurdie 10533
 
3959 dpurdie 10534
      -- Regular expression constituents
10535
      Token         VARCHAR2(16) := '([^:]+)';  -- a token is anything except a ':' character
10536
      Seperator     VARCHAR2(4)  := '::';       -- tokens will be seperated by '::'
10537
      BOL           VARCHAR2(4)  := '^';
10538
      Anything      VARCHAR2(4)  := '.*';
10539
      ReplaceToken1 VARCHAR2(4)  := '\1';
10540
      ReplaceToken2 VARCHAR2(4)  := '\2';
10541
      ReplaceToken3 VARCHAR2(4)  := '\3';
10542
      iprev_modifier_id               NUMBER;
10543
 
1373 dpurdie 10544
   BEGIN
3959 dpurdie 10545
      /*--------------- Business Rules Here -------------------*/
10546
      IF (rtagid IS NULL)
10547
      THEN
10548
         raise_application_error (-20000, 'RtagId must be supplied.');
10549
      END IF;
1373 dpurdie 10550
 
3959 dpurdie 10551
      IF (pkgname IS NULL)
10552
      THEN
10553
         raise_application_error (-20000, 'PkgName must be supplied.');
10554
      END IF;
1373 dpurdie 10555
 
3959 dpurdie 10556
      IF (newpkgversion IS NULL)
1373 dpurdie 10557
      THEN
3959 dpurdie 10558
         raise_application_error (-20000, 'PkgVersion must be supplied.');
1373 dpurdie 10559
      END IF;
10560
 
3959 dpurdie 10561
      IF (vcstag IS NULL)
1373 dpurdie 10562
      THEN
3959 dpurdie 10563
         raise_application_error (-20000, 'PkgVcsTag must be supplied.');
1373 dpurdie 10564
      END IF;
10565
 
3959 dpurdie 10566
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
1373 dpurdie 10567
      THEN
3959 dpurdie 10568
         raise_application_error
10569
            (-20000,
10570
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
10571
            );
1373 dpurdie 10572
      END IF;
10573
 
3959 dpurdie 10574
      IF (username IS NULL)
1373 dpurdie 10575
      THEN
3959 dpurdie 10576
         raise_application_error (-20000, 'UserName must be supplied.');
1373 dpurdie 10577
      END IF;
10578
 
3959 dpurdie 10579
      -- Parse the PkgVcsTag
10580
      -- Sets up
10581
      --   x_tag, x_label, x_srcpath
1373 dpurdie 10582
 
3959 dpurdie 10583
       BEGIN
10584
          -- Extract the first token - this will be the short tag name for the VCS (eg. 'CC', 'SVN', etc)
10585
          x_tag := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Anything, ReplaceToken1);
1373 dpurdie 10586
 
3959 dpurdie 10587
          -- Decode the short tag
10588
          CASE x_tag
10589
             WHEN 'CC' THEN
10590
                -- extract the 2nd and 3rd tokens, those being the source path and label respectively
10591
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10592
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
1373 dpurdie 10593
 
3959 dpurdie 10594
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
10595
                -- check for that error as well as the obvious zero-length string conditions.
10596
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
10597
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
10598
                END IF;
10599
 
10600
                IF isSVNbyName(pkgname) > 0 THEN
10601
                    -- Don't allow migrated packages to be released from a CC label
10602
                    return return_migrated_pkg;
10603
                END IF;
1373 dpurdie 10604
 
10605
 
3959 dpurdie 10606
             WHEN 'SVN' THEN
10607
                -- extract the 2nd token, that being the subversion tag
10608
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10609
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
1373 dpurdie 10610
 
3959 dpurdie 10611
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
10612
                -- check for that error as well as the obvious zero-length string conditions.
10613
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
10614
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
10615
                END IF;
10616
 
10617
             WHEN 'UC' THEN
10618
                -- nothing to extract, just assign defaults
10619
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10620
                x_label   := 'N/A';
10621
             ELSE
10622
                raise_application_error (-20000, 'Unrecognised VCS Tag!');
10623
          END CASE;
10624
       END;
10625
 
10626
      -- Get the VCS_TYPE_ID for the version control system.
10627
      BEGIN
10628
         SELECT vt.vcs_type_id
10629
         INTO x_vcstypeid
10630
         FROM VCS_TYPE vt
10631
         WHERE vt.tag = x_tag;
10632
         EXCEPTION
10633
            WHEN NO_DATA_FOUND THEN
10634
               raise_application_error (-20000, 'Database is missing a version control system tag (' || x_tag || ')!' );
10635
      END;
10636
 
10637
 
10638
      -- Get user_id
10639
      BEGIN
10640
         SELECT usr.user_id
10641
           INTO userid
10642
           FROM users usr
10643
          WHERE UPPER (usr.user_name) = UPPER (username)
10644
            AND usr.is_disabled IS NULL;
10645
      EXCEPTION
10646
         WHEN NO_DATA_FOUND
1373 dpurdie 10647
         THEN
10648
            raise_application_error (-20000,
3959 dpurdie 10649
                                        'UserName '
10650
                                     || username
10651
                                     || ' is not valid or disabled.'
1373 dpurdie 10652
                                    );
3959 dpurdie 10653
      END;
1373 dpurdie 10654
 
3959 dpurdie 10655
/*-------------------------------------------------------*/
1373 dpurdie 10656
 
3959 dpurdie 10657
      -- Create package if necessary
10658
      IF isrippled = 1
1373 dpurdie 10659
      THEN
3959 dpurdie 10660
         /* Ripple Build */
10661
         BEGIN
10662
            -- Make sure that package does not exist
10663
            SELECT pv.pv_id
10664
              INTO pvid
10665
              FROM package_versions pv, PACKAGES pkg
10666
             WHERE pv.pkg_id = pkg.pkg_id
10667
               AND pkg.pkg_name = pkgname
10668
               AND pv.pkg_version = newpkgversion;
10669
         EXCEPTION
10670
            WHEN NO_DATA_FOUND
10671
            THEN
10672
               pvid := 0;
10673
         END;
10674
 
10675
         IF (pvid = 0)
1373 dpurdie 10676
         THEN
3959 dpurdie 10677
            -- Split current version in parts
10678
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
10679
 
10680
            BEGIN
10681
               -- Find package to be replaced with the ripple package
10682
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
10683
               THEN
10684
                  SELECT pv.pv_id, pv.src_path
10685
                    INTO clonefrompvid, p_srcpath
10686
                    FROM PACKAGES pkg, package_versions pv,
10687
                         release_content rc
10688
                   WHERE rc.pv_id = pv.pv_id
10689
                     AND pv.pkg_id = pkg.pkg_id
10690
                     AND rc.rtag_id = rtagid
10691
                     AND pkg.pkg_name = pkgname
10692
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
10693
               ELSE
10694
                  SELECT pv.pv_id, pv.src_path
10695
                    INTO clonefrompvid, p_srcpath
10696
                    FROM PACKAGES pkg, package_versions pv,
10697
                         release_content rc
10698
                   WHERE rc.pv_id = pv.pv_id
10699
                     AND pv.pkg_id = pkg.pkg_id
10700
                     AND rc.rtag_id = rtagid
10701
                     AND pkg.pkg_name = pkgname
10702
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
10703
               END IF;
10704
            EXCEPTION
10705
               WHEN NO_DATA_FOUND
10706
               THEN
10707
                  raise_application_error
10708
                                        (-20000,
10709
                                            'Cannot get CloneFromPvId. VExt='
10710
                                         || vext
10711
                                         || ', RtagId='
10712
                                         || rtagid
10713
                                         || ', PkgName='
10714
                                         || pkgname
10715
                                         || ', SSV_EXT='
10716
                                         || ssv_ext
10717
                                        );
10718
            END;
10719
 
10720
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
10721
            THEN
10722
               -- Create package
10723
               seed_package_names_versions (pkgname,
10724
                                            newpkgversion,
10725
                                            userid,
10726
                                            pvid,
10727
                                            clonefrompvid
10728
                                           );
10729
            ELSE
10730
               -- Create package
10731
               seed_package_names_versions2 (pkgname,
10732
                                             newpkgversion,
10733
                                             userid,
10734
                                             pvid,
10735
                                             clonefrompvid
10736
                                            );
10737
            END IF;
10738
 
10739
            -- Update Package reason for release
10740
            UPDATE package_versions pv
10741
               SET pv.comments = 'Rippled Build.',
10742
                   pv.build_type = 'Y'
10743
             WHERE pv.pv_id = pvid;
10744
         ELSE
10745
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
10746
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
10747
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
10748
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
10749
            UPDATE package_versions pv
10750
               SET pv.release_notes_info = null,
10751
                   pv.modified_stamp = ora_sysdatetime
10752
             WHERE pv.pv_id = pvid;
10753
 
10754
            --DEVI-066151
10755
            log_action (pvid, 'package_rebuilt', userid, 'Package Re-built...');
10756
 
10757
            RETURN return_package_already_exists;
1373 dpurdie 10758
         END IF;
10759
      ELSE
3959 dpurdie 10760
         /* Auto build from Pending area */
10761
 
10762
         -- Find package in pending area
10763
         BEGIN
10764
            SELECT pv.pv_id, pv.dlocked, pv.src_path
10765
              INTO pvid, dlocked, p_srcpath
10766
              FROM planned pl, package_versions pv, PACKAGES pkg
10767
             WHERE pl.pv_id = pv.pv_id
10768
               AND pv.pkg_id = pkg.pkg_id
10769
               AND pl.rtag_id = rtagid
10770
               AND pkg.pkg_name = pkgname
10771
               AND pv.dlocked = 'A'
10772
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
10773
               AND rownum = 1
10774
             ORDER BY pv.modified_stamp;
10775
         EXCEPTION
10776
            WHEN NO_DATA_FOUND
10777
            THEN
10778
               pvid := 0;
10779
         END;
10780
 
10781
         IF (pvid = 0)
1373 dpurdie 10782
         THEN
3959 dpurdie 10783
            -- Package does not exist in pending area, hence report it
10784
            RETURN return_package_not_found;
10785
         ELSIF (dlocked != 'A')
1373 dpurdie 10786
         THEN
3959 dpurdie 10787
            -- Package is not approved for autobuild
10788
            RETURN return_not_approved;
1373 dpurdie 10789
         END IF;
10790
 
10791
      END IF;
10792
 
3959 dpurdie 10793
      -- Ensure Source Path does not change
10794
      -- Do not expect the SVN development branch to change
10795
      -- From the previous package
10796
      IF ( x_tag = 'SVN' AND p_srcpath != x_srcpath )
1373 dpurdie 10797
      THEN
3959 dpurdie 10798
        raise_application_error (-20000, 'Source Path does not match (' || p_srcpath || ','|| x_srcpath || ')' );
1373 dpurdie 10799
      END IF;
10800
 
3959 dpurdie 10801
      BEGIN
10802
         -- Import Dependencies
10803
         import_dependencies (pvid, dependenciesimportlist, userid);
10804
      END;
1373 dpurdie 10805
 
10806
 
3959 dpurdie 10807
      BEGIN
10808
         -- Split current version in parts
10809
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
1373 dpurdie 10810
 
3959 dpurdie 10811
         -- Update Package Details
10812
         UPDATE package_versions pv
10813
            SET pv.pkg_version = newpkgversion,
10814
                pv.v_ext = ssv_ext,
10815
                pv.v_mm = ssv_mm,
10816
                pv.v_nmm = ssv_nmm,
10817
                pv.src_path = x_srcpath,
10818
                pv.pkg_label = x_label,
10819
                pv.vcs_type_id = x_vcstypeid
10820
          WHERE pv.pv_id = pvid;
10821
      EXCEPTION
10822
         WHEN DUP_VAL_ON_INDEX
10823
         THEN
10824
            -- Package already exists, hence cannot be used for ripple build
10825
            RETURN return_package_already_exists;
10826
      END;
10827
 
10828
      -- Update the is_autobuildable
10829
      UPDATE package_versions
10830
         SET is_autobuildable = 'Y'
10831
       WHERE pv_id = pvid;
10832
 
10833
      -- DEVI-063601
10834
      -- For planned builds the modifier_id shouldn't be set to buildadm.
10835
      -- To ensure this the modifier_id is obtained so it can be restored after
10836
      -- the function pk_environment.auto_make_release is called.
10837
      -- This function calls, change_state, which sets the modifier_id to the
10838
      -- specified userid, which for auto builds is buildadm.
10839
      SELECT pv.modifier_id INTO iprev_modifier_id
10840
      FROM package_versions pv WHERE pv.pv_id = pvid;
10841
 
10842
      -- Now release package
10843
      pk_environment.auto_make_release (pvid,
10844
                                        rtagid,
10845
                                        userid,
10846
                                        vext,
10847
                                        ssv_ext,
10848
                                        clonefrompvid
10849
                                       );
10850
 
10851
      -- DEVI-063601
10852
      -- if it is a planned build then restore the modifier_id to the previous modifier
10853
      UPDATE package_versions pv SET pv.modifier_id = iprev_modifier_id
10854
      WHERE pv.pv_id = pvid;
10855
 
10856
      --Now clean the PLANNED_VERSIONS table
10857
      SELECT pkg_id
10858
        INTO pkgid
10859
        FROM PACKAGES
10860
       WHERE pkg_name = pkgname;
10861
 
10862
      DELETE FROM planned_versions
10863
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
10864
 
10865
      RETURN pvid;
1373 dpurdie 10866
   END;
10867
 
10868
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10869
   PROCEDURE import_dependencies (
10870
      pvid                     IN   NUMBER,
10871
      dependenciesimportlist   IN   VARCHAR2,
10872
      userid                   IN   NUMBER
10873
   )
1373 dpurdie 10874
   IS
3959 dpurdie 10875
/*
10876
|| DependenciesImportList Format:
10877
|| "pkgA","1.0.0";"pkgB","2.0.0";
10878
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
10879
*/
10880
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
10881
         INDEX BY VARCHAR2 (4000);
10882
 
10883
      seperator         VARCHAR2 (2)           := '||';
10884
      pkgname           VARCHAR2 (4000);
10885
      pkgversion        VARCHAR2 (4000);
10886
      buildtype         VARCHAR2 (50);
10887
      pkgid             NUMBER;
10888
      vext              VARCHAR2 (4000);
10889
      dpvid             NUMBER;
10890
      slist             VARCHAR2 (4000);
10891
      cbuildtypes       tdictionary;
10892
      dependencyrow     NUMBER;
10893
      sdependency       VARCHAR2 (4000);
10894
      first_pos         VARCHAR2 (4000);
10895
      second_pos        VARCHAR2 (4000);
10896
      third_pos         VARCHAR2 (4000);
10897
      forth_pos         VARCHAR2 (4000);
10898
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
10899
 
10900
      CURSOR curbuildtype
10901
      IS
10902
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
10903
                dep.build_type
10904
           FROM package_dependencies dep, package_versions dpv
10905
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
10906
 
10907
      recbuildtype      curbuildtype%ROWTYPE;
1373 dpurdie 10908
   BEGIN
3959 dpurdie 10909
      slist := dependenciesimportlist;
1373 dpurdie 10910
 
3959 dpurdie 10911
      -- Preformat String
10912
      IF NOT slist IS NULL
1373 dpurdie 10913
      THEN
3959 dpurdie 10914
         slist := REPLACE (slist, ' ');                      -- Remove spaces
10915
         slist := REPLACE (slist, UTL_TCP.crlf);
10916
         -- Remove new line and carriage-return characters
10917
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
1373 dpurdie 10918
      END IF;
10919
 
3959 dpurdie 10920
      -- Get Current Dependencies
10921
      OPEN curbuildtype;
1373 dpurdie 10922
 
3959 dpurdie 10923
      FETCH curbuildtype
10924
       INTO recbuildtype;
1373 dpurdie 10925
 
3959 dpurdie 10926
      WHILE curbuildtype%FOUND
10927
      LOOP
10928
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
1373 dpurdie 10929
 
3959 dpurdie 10930
         FETCH curbuildtype
10931
          INTO recbuildtype;
10932
      END LOOP;
1373 dpurdie 10933
 
3959 dpurdie 10934
      CLOSE curbuildtype;
1373 dpurdie 10935
 
3959 dpurdie 10936
      -- Separate dependencies with ; separator
10937
      citemcollection := in_list_varchar2 (slist, ';');
1373 dpurdie 10938
 
3959 dpurdie 10939
      BEGIN
10940
         -- Remove old dependencies
10941
         DELETE FROM package_dependencies dep
10942
               WHERE dep.pv_id = pvid;
1373 dpurdie 10943
 
3959 dpurdie 10944
         -- Loop through dependencies
10945
         FOR dependencyrow IN 1 .. citemcollection.COUNT
10946
         LOOP
10947
            -- Extract pkg_name and pkg_version
10948
            sdependency := citemcollection (dependencyrow);
10949
            first_pos := INSTR (sdependency, '"', 1, 1);
10950
            second_pos := INSTR (sdependency, '"', 1, 2);
10951
            third_pos := INSTR (sdependency, '"', 1, 3);
10952
            forth_pos := INSTR (sdependency, '"', 1, 4);
10953
            pkgname :=
10954
               SUBSTR (sdependency,
10955
                       (first_pos + 1),
10956
                       (second_pos - first_pos - 1)
10957
                      );
10958
            pkgversion :=
10959
               SUBSTR (sdependency,
10960
                       (third_pos + 1),
10961
                       (forth_pos - third_pos - 1)
10962
                      );
10963
 
10964
            -- Dependency must exits to be linked against
10965
            BEGIN
10966
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
10967
                 INTO dpvid, pkgid, vext
10968
                 FROM package_versions pv, PACKAGES pkg
10969
                WHERE pv.pkg_id = pkg.pkg_id
10970
                  AND pkg.pkg_name = pkgname
10971
                  AND pv.pkg_version = pkgversion;
10972
            EXCEPTION
10973
               WHEN NO_DATA_FOUND
10974
               THEN
10975
                  raise_application_error
10976
                                  (-20000,
10977
                                      'Dependency ['
10978
                                   || pkgname
10979
                                   || ' '
10980
                                   || pkgversion
10981
                                   || '] does not exist yet and cannot be used!'
10982
                                  );
10983
            END;
10984
 
10985
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
10986
            BEGIN
10987
               buildtype := cbuildtypes (pkgid || seperator || vext);
10988
 
10989
               IF buildtype IS NULL
10990
               THEN
10991
                  -- Set build type to LinkPackageArchive by default
10992
                  buildtype := 'L';
10993
               END IF;
10994
            EXCEPTION
10995
               WHEN NO_DATA_FOUND
10996
               THEN
10997
                  buildtype := 'L';
10998
            END;
10999
 
11000
            -- Insert Dependencies
11001
            update_package_dependency (pvid,
11002
                                       pkgname,
11003
                                       pkgversion,
11004
                                       buildtype,
11005
                                       userid,
11006
 
11007
                                      );
11008
         END LOOP;
11009
      END;
1373 dpurdie 11010
   END;
11011
 
11012
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11013
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
11014
      RETURN VARCHAR2
1373 dpurdie 11015
   IS
3959 dpurdie 11016
      pkgversion   VARCHAR2 (4000);
1373 dpurdie 11017
   BEGIN
3959 dpurdie 11018
      BEGIN
11019
         SELECT pv.pkg_version
11020
           INTO pkgversion
11021
           FROM PACKAGES pkg, release_content rc, package_versions pv
11022
          WHERE pv.pv_id = rc.pv_id
11023
            AND pkg.pkg_id = pv.pkg_id
11024
            AND pkg.pkg_name = pkgname
11025
            AND rc.rtag_id = rtagid;
11026
 
11027
         RETURN pkgversion;
11028
      END;
1373 dpurdie 11029
   END;
11030
 
11031
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11032
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
11033
      RETURN VARCHAR2
1373 dpurdie 11034
   IS
3959 dpurdie 11035
      pkgversion   VARCHAR2 (4000);
1373 dpurdie 11036
   BEGIN
3959 dpurdie 11037
      BEGIN
11038
         SELECT pv.pkg_version
11039
           INTO pkgversion
11040
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
11041
          WHERE pv.pv_id = wip.pv_id
11042
            AND pkg.pkg_id = pv.pkg_id
11043
            AND pkg.pkg_name = pkgname
11044
            AND wip.rtag_id = rtagid;
1373 dpurdie 11045
 
3959 dpurdie 11046
         IF pkgversion IS NULL
11047
         THEN
11048
            SELECT pv.pkg_version
11049
              INTO pkgversion
11050
              FROM PACKAGES pkg, planned pl, package_versions pv
11051
             WHERE pv.pv_id = pl.pv_id
11052
               AND pkg.pkg_id = pv.pkg_id
11053
               AND pkg.pkg_name = pkgname
11054
               AND pl.rtag_id = rtagid;
11055
         END IF;
11056
 
11057
         RETURN pkgversion;
11058
      END;
1373 dpurdie 11059
   END;
11060
 
11061
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11062
   PROCEDURE update_dash_board (rtagid IN NUMBER)
1373 dpurdie 11063
   IS
3959 dpurdie 11064
      projid       NUMBER;
11065
      projiddb     NUMBER;
11066
      total        NUMBER;
11067
      auto_total   NUMBER;
11068
      rtagiddb     NUMBER;
1373 dpurdie 11069
   BEGIN
3959 dpurdie 11070
      SELECT COUNT (*)
11071
        INTO total
11072
        FROM release_content rc, package_versions pv
11073
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
1373 dpurdie 11074
 
3959 dpurdie 11075
      SELECT COUNT (*)
11076
        INTO auto_total
11077
        FROM release_content rc, package_versions pv
11078
       WHERE pv.pv_id = rc.pv_id
11079
         AND pv.is_autobuildable = 'Y'
11080
         AND rc.rtag_id = rtagid;
11081
 
11082
      BEGIN
11083
         SELECT rtag_id
11084
           INTO rtagiddb
11085
           FROM dash_board
11086
          WHERE rtag_id = rtagid;
11087
 
11088
         SELECT proj_id
11089
           INTO projiddb
11090
           FROM dash_board
11091
          WHERE rtag_id = rtagid;
11092
      EXCEPTION
11093
         WHEN NO_DATA_FOUND
11094
         THEN
11095
            rtagiddb := '';
11096
      END;
11097
 
11098
      IF rtagiddb IS NULL
1373 dpurdie 11099
      THEN
3959 dpurdie 11100
         SELECT proj_id
11101
           INTO projid
11102
           FROM release_tags
11103
          WHERE rtag_id = rtagid;
11104
 
11105
         INSERT INTO dash_board
11106
                     (proj_id, rtag_id, last_build_time, automated_packages,
11107
                      total_packages
11108
                     )
11109
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
11110
                      total
11111
                     );
11112
      ELSE
11113
         UPDATE dash_board
11114
            SET last_build_time = ora_sysdatetime,
11115
                automated_packages = auto_total,
11116
                total_packages = total
11117
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
1373 dpurdie 11118
      END IF;
11119
   END;
11120
 
11121
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11122
   FUNCTION exclude_from_build (
11123
      pvid          IN   NUMBER,
11124
      spkgversion   IN   VARCHAR2,
11125
      rtagid        IN   NUMBER,
11126
      username      IN   VARCHAR2
1373 dpurdie 11127
   )
3959 dpurdie 11128
      RETURN NUMBER
1373 dpurdie 11129
   IS
3959 dpurdie 11130
      userid              NUMBER;
11131
      outerrcode          NUMBER;
11132
      pkgid               NUMBER;
11133
 
11134
      CURSOR dnr_duplicate_cur
11135
      IS
11136
         SELECT *
11137
           FROM do_not_ripple
11138
          WHERE pv_id = pvid AND rtag_id = rtagid;
11139
 
11140
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1373 dpurdie 11141
   BEGIN
3959 dpurdie 11142
      outerrcode := -1;       -- Set default return error code to ERROR state
11143
 
11144
      /*--------------- Business Rules Here -------------------*/
11145
      IF (rtagid IS NULL)
1373 dpurdie 11146
      THEN
3959 dpurdie 11147
         RETURN outerrcode;
11148
--         raise_application_error (-20000, 'RtagId must be supplied.');
11149
      END IF;
11150
 
11151
      IF (pvid IS NULL)
1373 dpurdie 11152
      THEN
3959 dpurdie 11153
         RETURN outerrcode;
11154
--         raise_application_error (-20000, 'PvId must be supplied.');
11155
      END IF;
11156
 
11157
      IF (username IS NULL)
1373 dpurdie 11158
      THEN
3959 dpurdie 11159
         RETURN outerrcode;
11160
--         raise_application_error (-20000, 'UserName must be supplied.');
11161
      END IF;
11162
 
11163
      -- Get user_id
11164
      BEGIN
11165
         SELECT usr.user_id
11166
           INTO userid
11167
           FROM users usr
11168
          WHERE UPPER (usr.user_name) = UPPER (username)
11169
            AND usr.is_disabled IS NULL;
11170
      EXCEPTION
11171
         WHEN NO_DATA_FOUND
11172
         THEN
11173
            RETURN outerrcode;
11174
--            raise_application_error (-20000,
11175
--                                        'UserName '
11176
--                                     || username
11177
--                                     || ' is not valid or disabled.'
11178
--                                    );
11179
      END;
11180
 
11181
      OPEN dnr_duplicate_cur;
11182
 
11183
      FETCH dnr_duplicate_cur
11184
       INTO dnr_duplicate_rec;
11185
 
11186
      IF dnr_duplicate_cur%FOUND
1373 dpurdie 11187
      THEN
3959 dpurdie 11188
         outerrcode := 0;
1373 dpurdie 11189
      END IF;
3959 dpurdie 11190
 
11191
      IF dnr_duplicate_cur%NOTFOUND
11192
      THEN
11193
         /* No duplicate recordset */
11194
         unripple_package (pvid, rtagid, userid);
11195
         outerrcode := 0;                            -- Set return to SUCCESS
11196
      END IF;
11197
 
11198
      CLOSE dnr_duplicate_cur;
11199
 
11200
      SELECT pkg_id
11201
        INTO pkgid
11202
        FROM package_versions
11203
       WHERE pv_id = pvid;
11204
 
11205
      DELETE FROM planned_versions
11206
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
11207
 
11208
      RETURN outerrcode;
1373 dpurdie 11209
   END;
11210
 
11211
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11212
   FUNCTION exclude_indirect_from_build (
11213
      pvid          IN   NUMBER,
11214
      spkgversion   IN   VARCHAR2,
11215
      rtagid        IN   NUMBER,
11216
      username      IN   VARCHAR2,
11217
      rootpvid      IN   NUMBER,
11218
      rootcause     IN   VARCHAR2,
11219
      rootfile      IN   VARCHAR2
1373 dpurdie 11220
   )
3959 dpurdie 11221
      RETURN NUMBER
1373 dpurdie 11222
   IS
3959 dpurdie 11223
      userid              NUMBER;
11224
      outerrcode          NUMBER;
11225
      pkgid               NUMBER;
11226
 
11227
      CURSOR dnr_duplicate_cur
11228
      IS
11229
         SELECT *
11230
           FROM do_not_ripple
11231
          WHERE pv_id = pvid AND rtag_id = rtagid;
11232
 
11233
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1373 dpurdie 11234
   BEGIN
3959 dpurdie 11235
      outerrcode := -1;       -- Set default return error code to ERROR state
11236
 
11237
      /*--------------- Business Rules Here -------------------*/
11238
      IF (rtagid IS NULL)
1373 dpurdie 11239
      THEN
3959 dpurdie 11240
         RETURN outerrcode;
11241
--         raise_application_error (-20000, 'RtagId must be supplied.');
11242
      END IF;
11243
 
11244
      IF (pvid IS NULL)
1373 dpurdie 11245
      THEN
3959 dpurdie 11246
         RETURN outerrcode;
11247
--         raise_application_error (-20000, 'PvId must be supplied.');
11248
      END IF;
11249
 
11250
      IF (username IS NULL)
1373 dpurdie 11251
      THEN
3959 dpurdie 11252
         RETURN outerrcode;
11253
--         raise_application_error (-20000, 'UserName must be supplied.');
1373 dpurdie 11254
      END IF;
3959 dpurdie 11255
 
11256
      -- Get user_id
11257
      BEGIN
11258
         SELECT usr.user_id
11259
           INTO userid
11260
           FROM users usr
11261
          WHERE UPPER (usr.user_name) = UPPER (username)
11262
            AND usr.is_disabled IS NULL;
11263
      EXCEPTION
11264
         WHEN NO_DATA_FOUND
11265
         THEN
11266
            RETURN outerrcode;
11267
--            raise_application_error (-20000,
11268
--                                        'UserName '
11269
--                                     || username
11270
--                                     || ' is not valid or disabled.'
11271
--                                    );
11272
      END;
11273
 
11274
     /* No duplicate recordset */
11275
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
11276
     outerrcode := 0;                            -- Set return to SUCCESS
11277
 
11278
      SELECT pkg_id
11279
        INTO pkgid
11280
        FROM package_versions
11281
       WHERE pv_id = pvid;
11282
 
11283
      DELETE FROM planned_versions
11284
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
11285
 
11286
      RETURN outerrcode;
1373 dpurdie 11287
   END;
11288
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11289
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
1373 dpurdie 11290
   IS
11291
   BEGIN
3959 dpurdie 11292
      INSERT INTO abt_action_log
11293
                  (rcon_id, action_datetime, action
11294
                  )
11295
           VALUES (rconid, ora_sysdatetime, action
11296
                  );
1373 dpurdie 11297
   END;
11298
 
11299
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11300
   FUNCTION insert_package_metrics (
11301
      rtagid                   IN   NUMBER,
11302
      pkgname                  IN   VARCHAR2,
11303
      vext                     IN   VARCHAR2,
11304
      metricstring             IN   VARCHAR2
1373 dpurdie 11305
   )
3959 dpurdie 11306
      RETURN NUMBER
1373 dpurdie 11307
   IS
3959 dpurdie 11308
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11309
      lv_pvid                  NUMBER                 := 0;
11310
      rownumber                NUMBER;
11311
      rowcontent               VARCHAR2(4000);
11312
      metricname               VARCHAR2(1000);
11313
      metricvalue              VARCHAR2(4000);
11314
      return_insert_error      NUMBER                 := -1;
11315
      return_insert_success    NUMBER                 := 0;
11316
 
11317
      /* Metrics */
11318
      lv_branches                 NUMBER;
11319
      lv_branchlist               VARCHAR2(4000);
11320
      lv_codefiles                NUMBER;
11321
      lv_ignoredfiles             NUMBER;
11322
      lv_directories              NUMBER;
11323
      lv_directorydepth           NUMBER;
11324
      lv_totalfiles               NUMBER;
11325
      lv_makefiles                NUMBER;
11326
      lv_blanklines               NUMBER;
11327
      lv_codelines                NUMBER;
11328
      lv_commentlines             NUMBER;
11329
 
1373 dpurdie 11330
   BEGIN
3959 dpurdie 11331
      /*--------------- Business Rules Here -------------------*/
11332
      IF (rtagid IS NULL)
11333
      THEN
11334
         RETURN return_insert_error;
11335
      END IF;
1373 dpurdie 11336
 
3959 dpurdie 11337
      IF (pkgname IS NULL)
11338
      THEN
11339
         RETURN return_insert_error;
11340
      END IF;
11341
 
11342
      IF (metricstring IS NULL)
11343
      THEN
11344
         RETURN return_insert_error;
11345
      END IF;
11346
 
11347
      BEGIN
11348
         SELECT pv.pv_id
11349
           INTO lv_pvid
11350
           FROM package_versions pv, packages pkg, release_content rc
11351
          WHERE pv.pkg_id = pkg.pkg_id
11352
            AND rc.rtag_id = rtagid
11353
            AND pv.pv_id = rc.pv_id
11354
            AND pkg.pkg_name = pkgname
11355
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
11356
      EXCEPTION
11357
           WHEN NO_DATA_FOUND
11358
           THEN
11359
                lv_pvid := 0;
11360
      END;
11361
 
11362
      citemcollection := in_list_varchar2 (metricstring, ';');
11363
 
11364
      FOR rownumber IN 1 .. citemcollection.COUNT
11365
      LOOP
11366
         rowcontent := citemcollection(rownumber);
11367
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
11368
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
11369
 
11370
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
11371
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
11372
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
11373
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
11374
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
11375
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
11376
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
11377
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
11378
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
11379
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
11380
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
11381
         END IF;
11382
      END LOOP;
11383
 
11384
      IF (lv_pvid > 0)
11385
      THEN
11386
         -- Delete any existing entries for this package version to makes sure our data is untainted
11387
         DELETE FROM package_metrics pm
11388
         WHERE pm.pv_id = lv_pvid;
11389
 
11390
         -- Insert the new data into the metrics table
11391
         INSERT INTO package_metrics
11392
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
11393
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
11394
                     )
11395
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
11396
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
11397
                     );
11398
 
11399
         -- Now update the Release_Metrics Table
11400
         update_release_metrics(rtagid);
11401
 
11402
         RETURN return_insert_success;
11403
      ELSE
11404
         RETURN return_insert_error;
11405
      END IF;
1373 dpurdie 11406
   END;
11407
 
11408
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11409
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
1373 dpurdie 11410
   IS
3959 dpurdie 11411
      lv_totalpackages       NUMBER;
11412
      lv_autobuilt           NUMBER;
11413
      lv_linesofcode         NUMBER;
11414
      lv_unittested          NUMBER;
11415
      lv_autotested          NUMBER;
11416
      lv_numOfbranches       NUMBER;
11417
      lv_lastbuildtime       DATE;
1373 dpurdie 11418
   BEGIN
3959 dpurdie 11419
      IF (rtagid > 0)
11420
      THEN
11421
         -- Get the total number of packages in this release and the number of
11422
         -- those that are autobuilt
11423
         SELECT COUNT (DISTINCT rc.pv_id),
11424
                COUNT (DISTINCT autobuilt_qry.pv_id)
11425
           INTO lv_totalpackages, lv_autobuilt
11426
           FROM release_content rc,
11427
                package_versions pv,
11428
                (
11429
                 SELECT rc.pv_id
11430
                   FROM release_content rc,
11431
                        package_versions pv
11432
                  WHERE pv.is_autobuildable = 'Y'
11433
                    AND pv.pv_id = rc.pv_id
11434
                    AND rc.rtag_id = rtagid
11435
                ) autobuilt_qry
11436
          WHERE pv.pv_id = rc.pv_id
11437
            AND rc.rtag_id = rtagid
11438
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
1373 dpurdie 11439
 
3959 dpurdie 11440
         -- Get the build time of the last package built in this release and the
11441
         -- total number of lines of code
11442
         SELECT MAX(pm.created_stamp),
11443
                SUM(pm.code_lines)
11444
           INTO lv_lastbuildtime, lv_linesofcode
11445
           FROM package_metrics pm, release_content rc
11446
          WHERE pm.pv_id = rc.pv_id
11447
            AND rc.rtag_id = rtagid;
11448
 
11449
         -- Get the number of packages with unit tests in this release and the
11450
         -- number of those that are autotested
11451
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
11452
           FROM unit_tests ut,
11453
                release_content rc
11454
          WHERE ut.pv_id = rc.pv_id
11455
            AND rc.rtag_id = rtagid
11456
        AND ut.test_types_fk != 1;
11457
 
11458
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
11459
          FROM unit_tests ut,
11460
               release_content rc
11461
         WHERE ut.pv_id = rc.pv_id
11462
           AND rc.rtag_id = rtagid
11463
           AND ut.test_types_fk = 7;
11464
 
11465
 
11466
         -- Count the number of unique branches in the packages in this release.
11467
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
11468
--           FROM (
11469
--                SELECT pv_id,
11470
--                       regexp_substr(str, '[^,]+', 1, level) branch,
11471
--                       level lv,
11472
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
11473
--                  FROM (
11474
--                       SELECT pm.pv_id,
11475
--                              ','||pm.branch_list str
11476
--                         FROM package_metrics pm,
11477
--                              release_content rc
11478
--                        WHERE pm.pv_id = rc.pv_id
11479
--                          AND rc.rtag_id = rtagid
11480
--                       )
11481
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
11482
--                )
11483
--          WHERE lv != lg;
11484
 
11485
         UPDATE release_metrics rm
11486
            SET rm.total_packages = lv_totalpackages,
11487
                rm.autobuilt = lv_autobuilt,
11488
                rm.lines_of_code = lv_linesofcode,
11489
                rm.unit_tested = lv_unittested,
11490
                rm.autotested = lv_autotested,
11491
--                rm.branches = lv_numOfbranches,
11492
                rm.last_build_time = lv_lastbuildtime
11493
          WHERE rtag_id = rtagid;
11494
 
11495
         IF (SQL%ROWCOUNT = 0)
11496
         THEN
11497
            INSERT INTO release_metrics
11498
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
11499
                         autotested, last_build_time
11500
                        )
11501
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
11502
                         lv_autotested, lv_lastbuildtime
11503
                        );
11504
         END IF;
11505
--         IF (SQL%ROWCOUNT = 0)
11506
--         THEN
11507
--            INSERT INTO release_metrics
11508
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
11509
--                         autotested, branches, last_build_time
11510
--                        )
11511
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
11512
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
11513
--                        );
11514
--         END IF;
11515
--      ELSE
11516
--         raise_application_error (-20000, 'RtagId must be supplied.');
11517
      END IF;
1373 dpurdie 11518
   END;
11519
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11520
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2
1373 dpurdie 11521
   IS
3959 dpurdie 11522
      vcstypeid    NUMBER;
11523
      vcstag       VARCHAR2(32);
11524
      label        VARCHAR2(60);
11525
      srcpath      VARCHAR2(2000);
11526
      vcstypeid_cc NUMBER;
11527
      vcstypeid_uc NUMBER;
1373 dpurdie 11528
   BEGIN
3959 dpurdie 11529
      -- Get the VCS_TYPE_ID for the ClearCase version control system. We do this so that we make no assumptions about
11530
      -- what the primary key value is for the ClearCase VCS entry.
11531
      BEGIN
11532
         SELECT vt.vcs_type_id
11533
         INTO vcstypeid_cc
11534
         FROM VCS_TYPE vt
11535
         WHERE vt.tag = 'CC';
11536
         EXCEPTION
11537
            WHEN NO_DATA_FOUND THEN
11538
               raise_application_error (-20000, 'Database is missing compulsory CC version control system tag!');
11539
      END;
1373 dpurdie 11540
 
3959 dpurdie 11541
      -- Get the VCS_TYPE_ID for the Uncontrolled version control system. We do this so that we make no assumptions about
11542
      -- what the primary key value is for the Uncontrolled VCS entry.
11543
      BEGIN
11544
         SELECT vt.vcs_type_id
11545
         INTO vcstypeid_uc
11546
         FROM VCS_TYPE vt
11547
         WHERE vt.tag = 'UC';
11548
         EXCEPTION
11549
            WHEN NO_DATA_FOUND THEN
11550
               raise_application_error (-20000, 'Database is missing compulsory UC version control system tag!');
11551
      END;
11552
 
11553
      -- Get the PKG_LABEL, SRC_PATH, VCS_TYPE_ID for the package version
11554
      -- As additional VCS types are introduced, we may have to extend what this SELECT statement returns
11555
      BEGIN
11556
         SELECT pv.pkg_label, pv.src_path,
11557
           (CASE WHEN pv.pkg_label = 'N/A' AND pv.vcs_type_id IS NULL THEN vcstypeid_uc
11558
                 WHEN pv.vcs_type_id IS NULL THEN vcstypeid_cc
11559
                 ELSE pv.vcs_type_id END) AS vcs_type_id
11560
         INTO label, srcpath, vcstypeid
11561
         FROM PACKAGE_VERSIONS pv
11562
         WHERE pv.pv_id = pvid;
11563
         EXCEPTION
11564
            WHEN NO_DATA_FOUND THEN
11565
               raise_application_error (-20000, 'Package Version Not Found!');
11566
      END;
11567
 
11568
      -- Get the VCS TAG for the VCS_TYPE_ID.
11569
      BEGIN
11570
         SELECT vt.tag
11571
         INTO vcstag
11572
         FROM VCS_TYPE vt
11573
         WHERE vt.vcs_type_id = vcstypeid;
11574
         EXCEPTION
11575
            WHEN NO_DATA_FOUND THEN
11576
               raise_application_error (-20000, 'Could not get VCS Tag for the package version!');
11577
      END;
11578
 
11579
      -- Return value depending upon which VCS Tag is being used.
11580
      -- As additional VCS types are introduced, we have to add additional WHEN clauses
11581
      CASE vcstag
11582
         WHEN 'CC' THEN
11583
            RETURN vcstag || '::' || srcpath || '::' || label;
11584
         WHEN 'SVN' THEN
11585
            RETURN vcstag || '::' || srcpath || '::' || label;
11586
         ELSE
11587
            RETURN vcstag || '::';
11588
      END CASE;
11589
 
1373 dpurdie 11590
   END;
3959 dpurdie 11591
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 11592
 
3959 dpurdie 11593
/*-------------------------------------------------------------------------------------------------------
11594
Name:        update_vcs_details
11595
Description: Updates the Version Control System (vcs) details specified in the vcstag
11596
             parameter for the specified package version.
11597
             The specified package vcstag is parsed and split into 3 fields:
11598
                vcs type, src path, label
11599
             These fields are then stored for the specified pv_id in the package_versions, table.
11600
             An action is recorded in the action log and provides information for tracking and
11601
             for restoring the previous vcs settings if a recovery is required.
11602
Paramters:
11603
             ipv_id:     Package version identifier
11604
             vcstag:     Full version control tag.
11605
                         Examples:
11606
                             "SVN::AUPERASVN01/DPG_SWBase/tools/trunk::daf_tools_25.1.7027.cr@1234"
11607
                            "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
11608
             user_id:    Identifier of the user that is performing this function.
11609
*/
11610
PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER)
1373 dpurdie 11611
   IS
3959 dpurdie 11612
      ivcs_type_id   NUMBER;
11613
      svcs_type      VARCHAR2(128);
11614
      ssrc_path      VARCHAR2(512);
11615
      spkg_label     VARCHAR2(512);
11616
      spattern       VARCHAR2(64);
11617
      saction_desc   VARCHAR2(2048);
11618
      old_vcs_type   VARCHAR2(128);
11619
      old_src_path   VARCHAR2(512);
11620
      old_pkg_label  VARCHAR2(512);
11621
      old_pkg_vcstag VARCHAR2(1024);
11622
      i              NUMBER;
11623
      vcount         NUMBER;
1373 dpurdie 11624
   BEGIN
3959 dpurdie 11625
     -- Split vcs tag into fields: vcs type, src path, label
11626
     -- Fields are separated by '::'
11627
     -- e.g "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
11628
     -- The below regular expression pattern has groups to achieve this.
1373 dpurdie 11629
 
3959 dpurdie 11630
     spattern:= '^([^:]*)::([^:]*)(::(.*))?$';
11631
 
11632
     --As Oracle 10g does not allow REGEXP_SUBSTR to return a group,
11633
     --REGEXP_REPLACE is used instead (Note: Oracle 11g has this enhancement).
11634
     SELECT REGEXP_REPLACE(vcstag,spattern, '\1') INTO svcs_type  FROM DUAL;
11635
     SELECT REGEXP_REPLACE(vcstag,spattern, '\2') INTO ssrc_path  FROM DUAL;
11636
     SELECT REGEXP_REPLACE(vcstag,spattern, '\4') INTO spkg_label FROM DUAL;
11637
 
11638
     -- Validate vcs type
11639
     BEGIN
11640
       SELECT vc.vcs_type_id INTO ivcs_type_id FROM vcs_type vc WHERE UPPER(svcs_type) = UPPER(vc.tag);
11641
     EXCEPTION
11642
       WHEN NO_DATA_FOUND THEN
11643
         raise_application_error (-20000, 'Invalid vcs type: ' || '"' || svcs_type || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11644
       --RAISE;
11645
     END;
11646
 
11647
     -- If Clearcase
11648
     IF (ivcs_type_id = 2) THEN
11649
       -- Validate source path
11650
       IF NOT REGEXP_LIKE(ssrc_path,'^(\\|\/)[a-z]+[0-9a-z_\.\-\\\/ -]*$','i') THEN
11651
         raise_application_error (-20000, 'Invalid CC src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11652
       END IF;
11653
 
11654
       -- Validate label
11655
       -- For clearcase the label must be specified. For subversion it is not required.
11656
       IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+$','i') THEN
11657
         raise_application_error (-20000, 'Invalid CC label:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
11658
       END IF;
11659
 
11660
     -- if Subversion
11661
     ELSIF (ivcs_type_id = 23) THEN
11662
       -- general validity
11663
       -- Not as picky as the RM Data entry
11664
       IF NOT REGEXP_LIKE(ssrc_path,'^([0-9a-z_\.\-]+)(\/([0-9a-z_\.\-]+))+$','i') THEN
11665
         raise_application_error (-20000, 'Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11666
       END IF;
11667
 
11668
       -- Validate Tag
11669
       -- May be a Peg or a Label
11670
       IF NOT REGEXP_LIKE(spkg_label,'^@?[0-9]+$','i') THEN
11671
           IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+($|@[0-9]+)','i') THEN
11672
             raise_application_error (-20000, 'Invalid SVN tag:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
11673
           END IF;
11674
       END IF;
11675
 
11676
        -- Check for suitable ending
11677
        IF NOT REGEXP_LIKE(ssrc_path,'(\/tags$)|(\/branches\/)|(\/trunk$)','i') THEN
11678
            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 || '"');
11679
        END IF;
11680
 
11681
       -- Check for combined use of tags, branches, trunk or repeats of each
11682
       -- Count occurrences of /tags or /branches/ or /trunk
11683
       vcount:=0;
11684
       i:=1;
11685
       WHILE i > 0 LOOP
11686
         i:=REGEXP_INSTR(ssrc_path,'(\/tags(\/|$))|(\/branches(\/|$))|(\/trunk(\/|$))',i,1,1,'i');
11687
         IF i > 0 THEN
11688
           -- if found then increment count
11689
           vcount:=vcount+1;
11690
           i:=i-1;  -- move index back to "/"
11691
         END IF;
11692
       END LOOP;
11693
 
11694
       IF vcount = 0  THEN
11695
         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 || '"');
11696
       END IF;
11697
 
11698
       IF vcount > 1  THEN
11699
         raise_application_error (-20000, 'Combined use of /trunk, /tags, or /branches/. Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11700
       END IF;
11701
 
11702
 
11703
     END IF;
11704
 
11705
     BEGIN
11706
       -- Get current vcs tag for specified package version
11707
       SELECT pv.src_path, pv.pkg_label, vc.tag as vcs_type
11708
       INTO old_src_path, old_pkg_label, old_vcs_type
11709
       FROM package_versions pv, vcs_type vc
11710
       WHERE pv.pv_id = ipv_id
11711
       AND pv.vcs_type_id = vc.vcs_type_id (+);
11712
 
11713
     EXCEPTION
11714
       WHEN NO_DATA_FOUND THEN
11715
         raise_application_error (-20000, 'Package version not found: ' || ipv_id);
11716
     END;
11717
 
11718
     old_pkg_vcstag:= old_vcs_type || '::' || old_src_path;
11719
     IF (old_pkg_label IS NOT NULL) THEN
11720
       old_pkg_vcstag:=old_pkg_vcstag || '::' || old_pkg_label;
11721
     END IF;
11722
 
11723
     -- Create action description
11724
     -- This description will contain the old and new tags.
11725
     -- Its purpose is to provide information for tracking and for restoring previous vcs settings if a recovery is required.
11726
     -- An example of the action description is below:
11727
     --   OldTag:CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr NewTag:SVN::DPG_SWBase/tools/tags/daf_tools_25.1.7027.cr
11728
     saction_desc:='OldTag:' || old_pkg_vcstag || ' ' || 'NewTag:' || vcstag;
11729
 
11730
     -- Store new vcs details
11731
     UPDATE package_versions SET
11732
       src_path = ssrc_path,
11733
       pkg_label = spkg_label,
11734
       vcs_type_id = ivcs_type_id
11735
     WHERE
11736
       pv_id = ipv_id;
11737
 
11738
     -- Store action in action log so that we can back track and also restore vcs settings if required.
11739
     log_action (ipv_id,'VcsConversion',user_id,saction_desc);
11740
 
11741
   END update_vcs_details;
11742
 
11743
/*-------------------------------------------------------------------------------------------------------
11744
Name:        isSVN
11745
Description: Determine if any of the packages versions are controlled under SVN
11746
			 Intended to be used to prevent users from releasing a package
11747
			 that has been migrated to SVN
11748
 
11749
Paramters:	pkgid:     Package ID
11750
 
11751
Returns:	Number of versions under SVN version control
11752
*/
11753
 
11754
FUNCTION isSVN( pkgid IN NUMBER )
11755
    RETURN NUMBER
11756
    IS
11757
    svncount   NUMBER  := 0;
11758
   BEGIN
11759
        SELECT COUNT(*) INTO svncount FROM PACKAGE_VERSIONS pv WHERE pv.PKG_ID = pkgid AND pv.VCS_TYPE_ID = 23;
11760
        RETURN (svncount);
1373 dpurdie 11761
   END;
3959 dpurdie 11762
 
11763
/*-------------------------------------------------------------------------------------------------------
11764
Name:        isSVNbyName
11765
Description: Determine if any of the packages versions are controlled under SVN
11766
			 Intended to be used to prevent users from releasing a package
11767
			 that has been migrated to SVN
11768
 
11769
Paramters:	pkgname:	Package Name
11770
 
11771
Returns:	Number of versions under SVN version control
11772
*/
11773
 
11774
FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) 
11775
    RETURN NUMBER
11776
IS
11777
   svncount   NUMBER  := 0;
11778
   BEGIN
11779
        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;
11780
        RETURN (svncount);
11781
   END;
11782
 
11783
   END;
4040 dpurdie 11784
 
1374 dpurdie 11785
/
1373 dpurdie 11786
 
4040 dpurdie 11787
/
11788
--------------------------------------------------------
11789
--  DDL for Package Body PK_WORK_IN_PROGRESS
11790
--------------------------------------------------------
11791
 
3959 dpurdie 11792
  CREATE OR REPLACE PACKAGE BODY "PK_WORK_IN_PROGRESS" IS
1373 dpurdie 11793
 
11794
/*
11795
------------------------------
11796
||  Last Modified:  S.Vukovic
3959 dpurdie 11797
||  Modified Date:  2/May/2005
1373 dpurdie 11798
||  Body Version:   1.0
11799
------------------------------
11800
*/
11801
 
11802
 
11803
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11804
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 11805
 
3959 dpurdie 11806
	oldPvId NUMBER;
11807
	ReleaseLocation VARCHAR2(4000);
11808
	sLocation VARCHAR2(4000) := NULL;
1373 dpurdie 11809
 
3959 dpurdie 11810
 
1373 dpurdie 11811
BEGIN
11812
	/*--------------- Business Rules Here -------------------*/
3959 dpurdie 11813
	/*-------------------------------------------------------*/
1373 dpurdie 11814
 
3959 dpurdie 11815
	BEGIN
11816
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
11817
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
11818
		  FROM WORK_IN_PROGRESS wip,
11819
		  	   RELEASE_TAGS rt,
11820
			   PROJECTS proj
11821
		 WHERE wip.PV_ID = newPvId
11822
		   AND wip.RTAG_ID = rt.RTAG_ID
11823
		   AND rt.OFFICIAL != 'Y'
11824
		   AND rt.PROJ_ID = proj.PROJ_ID;
1373 dpurdie 11825
 
3959 dpurdie 11826
		EXCEPTION
11827
	    	WHEN NO_DATA_FOUND THEN
11828
	       		sLocation := NULL;
11829
 
11830
	END;	   	   
1373 dpurdie 11831
 
11832
 
11833
 
3959 dpurdie 11834
	IF (sLocation IS NULL)  THEN
1373 dpurdie 11835
 
3959 dpurdie 11836
		-- Add to "Work in progress"
11837
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
11838
		VALUES( RtagId, newPvId, ViewId );
11839
 
11840
 
11841
	    /* LOG ACTION */
11842
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
11843
		  FROM PROJECTS proj,
11844
		  	   RELEASE_TAGS rt
11845
		 WHERE rt.PROJ_ID = proj.PROJ_ID
11846
		   AND rt.RTAG_ID = RtagId;
11847
 
11848
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
11849
 
11850
	ELSE
11851
 
11852
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
11853
 
1373 dpurdie 11854
	END IF;
11855
 
3959 dpurdie 11856
END;
11857
/*-------------------------------------------------------------------------------------------------------*/
11858
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 11859
 
3959 dpurdie 11860
	ReleaseLocation VARCHAR2(4000);
1373 dpurdie 11861
 
3959 dpurdie 11862
BEGIN
11863
 
11864
	/*--------------- Business Rules Here -------------------*/
1373 dpurdie 11865
	/*-------------------------------------------------------*/
11866
 
11867
 
3959 dpurdie 11868
	-- Get release location for logging pusposes
11869
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
11870
	  FROM PROJECTS proj,
11871
	  	   RELEASE_TAGS rt
11872
	 WHERE rt.PROJ_ID = proj.PROJ_ID
11873
	   AND rt.RTAG_ID = RtagId;
1373 dpurdie 11874
 
11875
 
3959 dpurdie 11876
	-- Delete from Work In Progress
11877
	DELETE
11878
	  FROM WORK_IN_PROGRESS wip
11879
	 WHERE wip.RTAG_ID = RtagId
11880
	   AND wip.PV_ID = PvId;
1373 dpurdie 11881
 
3959 dpurdie 11882
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 11883
 
3959 dpurdie 11884
 
11885
 
11886
 
1373 dpurdie 11887
END;
11888
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11889
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 11890
 
3959 dpurdie 11891
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
11892
	ReleaseLocation VARCHAR2(4000);
11893
	PvId NUMBER;
1373 dpurdie 11894
 
11895
BEGIN
3959 dpurdie 11896
 
1373 dpurdie 11897
	/*--------------- Business Rules Here -------------------*/
3959 dpurdie 11898
	IF (PvIdList IS NULL)
11899
	THEN
11900
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
11901
	END IF;
1373 dpurdie 11902
	/*-------------------------------------------------------*/
11903
 
11904
 
3959 dpurdie 11905
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
1373 dpurdie 11906
 
11907
 
3959 dpurdie 11908
	-- Get release location for logging pusposes
11909
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
11910
	  FROM PROJECTS proj,
11911
	  	   RELEASE_TAGS rt
11912
	 WHERE rt.PROJ_ID = proj.PROJ_ID
11913
	   AND rt.RTAG_ID = RtagId;
1373 dpurdie 11914
 
3959 dpurdie 11915
 
11916
	FOR i IN 1..nIdCollector.COUNT
11917
	LOOP
11918
		PvId := nIdCollector(i);
11919
 
11920
		-- Delete from Work In Progress
11921
		DELETE
11922
		  FROM WORK_IN_PROGRESS wip
11923
		 WHERE wip.RTAG_ID = RtagId
11924
		   AND wip.PV_ID = PvId;
11925
 
11926
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
11927
 
11928
	END LOOP;
11929
 
11930
 
1373 dpurdie 11931
END;
11932
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11933
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
11934
 
11935
	ReturnValue NUMBER;
11936
 
1373 dpurdie 11937
BEGIN
3959 dpurdie 11938
	SELECT wip.VIEW_ID INTO ReturnValue
11939
	  FROM WORK_IN_PROGRESS wip
11940
	 WHERE wip.RTAG_ID = RtagId
11941
	   AND wip.PV_ID = PvId;
1373 dpurdie 11942
 
3959 dpurdie 11943
	RETURN ReturnValue;
1373 dpurdie 11944
END;
11945
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11946
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
11947
 
11948
	IsBaseView CHAR(1);
11949
 
1373 dpurdie 11950
BEGIN
11951
 
3959 dpurdie 11952
	-- Check if the view is BASE VIEW
11953
	SELECT vi.BASE_VIEW INTO IsBaseView
11954
	  FROM VIEWS vi
11955
	 WHERE vi.VIEW_ID = ViewId;
11956
 
11957
	IF (IsBaseView = 'Y') THEN 
11958
		-- Get Base view content
11959
		OPEN RecordSet FOR
11960
		SELECT 0 AS PKG_STATE,
11961
			   NULL AS DEPRECATED_STATE,
11962
			   pv.pv_id, 
11963
			   pkg.pkg_name, 
11964
			   pv.pkg_version, 
11965
			   pv.dlocked, 
11966
			   pv.pv_description,
11967
			   pv.BUILD_TYPE
11968
		  FROM WORK_IN_PROGRESS rel,
11969
		       packages pkg,
11970
		       package_versions pv
11971
		 WHERE pv.pkg_id = pkg.pkg_id
11972
		   AND rel.pv_id = pv.pv_id
11973
		   AND rel.VIEW_ID = ViewId
11974
		   AND rel.RTAG_ID = RtagId
11975
		 ORDER BY UPPER(pkg.PKG_NAME);
11976
 
1373 dpurdie 11977
 
3959 dpurdie 11978
	ELSE	 
1373 dpurdie 11979
 
3959 dpurdie 11980
	 	-- Get non base view content
11981
		OPEN RecordSet FOR
11982
		SELECT 0 AS PKG_STATE,
11983
			   NULL AS DEPRECATED_STATE,
11984
			   pv.pv_id, 
11985
			   pkg.pkg_name, 
11986
			   pv.pkg_version, 
11987
			   pv.dlocked, 
11988
			   pv.pv_description,
11989
			   pv.BUILD_TYPE
11990
		  FROM WORK_IN_PROGRESS rel,
11991
		       packages pkg,
11992
		       package_versions pv,
11993
			   VIEW_DEF vd
11994
		 WHERE pv.pkg_id = pkg.pkg_id
11995
		   AND rel.pv_id = pv.pv_id
11996
		   AND vd.VIEW_ID = ViewId
11997
		   AND vd.PKG_ID = pv.PKG_ID
11998
		   AND rel.RTAG_ID = RtagId
11999
		 ORDER BY UPPER(pkg.PKG_NAME);
1373 dpurdie 12000
 
3959 dpurdie 12001
 
12002
	END IF;	 	
12003
 
12004
 
1373 dpurdie 12005
END;
12006
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12007
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
12008
 
1373 dpurdie 12009
BEGIN
12010
 
3959 dpurdie 12011
	UPDATE WORK_IN_PROGRESS wip SET
12012
	wip.VIEW_ID = NewViewId
12013
	WHERE wip.PV_ID = PvId
12014
	  AND wip.RTAG_ID = RtagId;
12015
 
1373 dpurdie 12016
END;
12017
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12018
END PK_WORK_IN_PROGRESS;
4040 dpurdie 12019
 
3959 dpurdie 12020
/
1373 dpurdie 12021
 
4040 dpurdie 12022
/
12023
--------------------------------------------------------
12024
--  DDL for Package Body RM_ISSUES
12025
--------------------------------------------------------
12026
 
3959 dpurdie 12027
  CREATE OR REPLACE PACKAGE BODY "RM_ISSUES" AS
1373 dpurdie 12028
 
3959 dpurdie 12029
-- Private Implementation -----------------------------------------------------
1373 dpurdie 12030
 
12031
 
3959 dpurdie 12032
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
12033
	AS
1373 dpurdie 12034
 
3959 dpurdie 12035
	BEGIN
12036
		-- start boundary case
12037
		IF ( XXstart < XX ) THEN
12038
			RETURN 1;
1373 dpurdie 12039
 
3959 dpurdie 12040
		ELSIF ( XXstart = XX ) THEN
1373 dpurdie 12041
 
3959 dpurdie 12042
			-- need to consider YY
12043
			IF ( YYstart < YY ) THEN
12044
				RETURN 1;
1373 dpurdie 12045
 
3959 dpurdie 12046
			ELSIF ( YYstart = YY ) THEN
1373 dpurdie 12047
 
3959 dpurdie 12048
					-- need to consider ZZ
12049
					IF ( ZZstart <= ZZ ) THEN
12050
						RETURN 1;
12051
 
12052
					ELSE
12053
						RETURN 0;
12054
					END IF;
12055
 
12056
			ELSE
12057
				RETURN 0;
12058
			END IF;
12059
		ELSE
12060
			RETURN 0;
12061
		END IF;
12062
	EXCEPTION
12063
		WHEN OTHERS THEN
12064
			RETURN -1;
12065
	END;
12066
 
12067
 
12068
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
12069
	AS
12070
 
12071
	BEGIN
12072
		-- end boundary case
12073
		IF ( XX < XXend ) THEN
12074
			RETURN 1;
12075
 
12076
		ELSIF ( XX = XXend ) THEN
12077
 
12078
			-- need to consider YY
12079
			IF ( YY < YYend ) THEN
12080
				RETURN 1;
12081
 
12082
			ELSIF ( YY = YYend ) THEN
12083
 
12084
					-- need to consider ZZ
12085
					IF ( ZZ <= ZZend ) THEN
12086
						RETURN 1;
12087
 
12088
					ELSE
12089
						RETURN 0;
12090
					END IF;
12091
			ELSE
12092
 
12093
				RETURN 0;
12094
			END IF;
12095
		ELSE
12096
			RETURN 0;
12097
		END IF;
12098
	EXCEPTION
12099
		WHEN OTHERS THEN
12100
			RETURN -1;
12101
	END;
12102
 
12103
	/*
12104
	-	version format:		XX.YY.ZZ.abc
12105
	*/
12106
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
12107
	AS
12108
		XXstart		NUMBER	:=	0;
12109
		XXend		NUMBER	:=	0;
12110
		XX			NUMBER	:=	0;
12111
		YYstart		NUMBER	:=	0;
12112
		YYend		NUMBER	:=	0;
12113
		YY			NUMBER	:=	0;
12114
		ZZstart		NUMBER	:=	0;
12115
		ZZend		NUMBER	:=	0;
12116
		ZZ			NUMBER	:=	0;
12117
		first_dot	NUMBER	:=	0;
12118
		second_dot	NUMBER	:=	0;
12119
		third_dot	NUMBER	:=	0;
12120
 
12121
		ProjExtstart	VARCHAR2(10);
12122
		ProjExtend		VARCHAR2(10);
12123
		ProjExt			VARCHAR2(10);
12124
 
12125
	BEGIN
12126
		-- strip the version number
12127
		first_dot :=  INSTR(version_start, '.', 1, 1);
12128
		second_dot :=  INSTR(version_start, '.', 1, 2);
12129
		third_dot :=  INSTR(version_start, '.', 1, 3);
12130
 
12131
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
12132
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12133
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12134
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
12135
 
12136
		first_dot :=  INSTR(version_end, '.', 1, 1);
12137
		second_dot :=  INSTR(version_end, '.', 1, 2);
12138
		third_dot :=  INSTR(version_end, '.', 1, 3);
12139
 
12140
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
12141
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12142
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12143
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
12144
 
12145
		first_dot :=  INSTR(version, '.', 1, 1);
12146
		second_dot :=  INSTR(version, '.', 1, 2);
12147
		third_dot :=  INSTR(version, '.', 1, 3);
12148
 
12149
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
12150
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12151
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12152
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
12153
 
12154
		-- only include versions if all project extensions are the same
12155
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
12156
 
12157
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
12158
				RETURN 1;
12159
			ELSE
12160
				RETURN 0;
12161
			END IF;
12162
		ELSE
12163
			RETURN 0;
12164
		END IF;
12165
 
12166
	EXCEPTION
12167
		WHEN OTHERS THEN
12168
			RETURN -1;
12169
	END;
12170
 
12171
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
12172
	AS
12173
	    pkg_id NUMBER;
12174
	BEGIN
12175
		SELECT
12176
			p.PKG_ID
12177
		INTO
12178
			pkg_id
12179
		FROM
12180
			PACKAGES p
12181
		WHERE
12182
			p.PKG_NAME = pkgName;
12183
 
12184
		RETURN pkg_id;
12185
	EXCEPTION
12186
	    WHEN OTHERS THEN
12187
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
12188
			RETURN -1;
12189
	END;
12190
 
12191
 
12192
-- Public Implementation ------------------------------------------------------
12193
 
12194
	/*
12195
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
12196
	--
12197
	-- INPUT PARAMETERS:
12198
	--
12199
	--		pkg_name  	-  	The name of the top level package to get issues for
12200
	--		version_start	-	The start version for the comparison
12201
	--		version_end	-	The end version for the comparison
12202
	*/
12203
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
12204
	AS
12205
		pkgId	NUMBER;
12206
	BEGIN
12207
		-- get pkg_id of the input package:
12208
		pkgId := GetPkgId( pkg_name );
12209
 
12210
		OPEN vCursor FOR
12211
		SELECT
12212
			  pv.PKG_ID,
12213
			  pv.PKG_VERSION,
12214
			  pv.PV_ID,
12215
			  i_pkg.ISS_ID,
12216
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
12217
			  pd.DPKG_ID,
12218
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
12219
			  pd.DPV_ID,
12220
			  i_dpkg.ISS_ID AS ISSUE_ID
12221
		FROM
12222
			 PACKAGE_VERSIONS pv
12223
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
12224
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
12225
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
12226
		WHERE
12227
   			 pv.PKG_ID = pkgId
12228
		AND
12229
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
12230
		AND
12231
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
12232
		ORDER BY
12233
			 pv.PKG_ID,
12234
			 pv.PV_ID,
12235
			 pd.DPKG_ID,
12236
			 pd.DPV_ID;
12237
	EXCEPTION
12238
		WHEN OTHERS THEN
12239
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
12240
	END;
12241
 
12242
 
12243
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
12244
 
12245
	/*
12246
	-- Proc: LoadIssuesTable
12247
	--
12248
	-- Populates Package_Issues table with details of issues from all dependent packages.
12249
	-- This will be for all package versions of the input pkg_name between the
12250
	-- version_start and version_end.
12251
	--
12252
	-- INPUT PARAMETERS:
12253
	--
12254
	--		pkg_name  	-  	The name of the top level package to get issues for
12255
	--		version_start	-	The start version for the comparison
12256
	--		version_end	-	The end version for the comparison
12257
	*/
12258
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
12259
	AS
12260
		pkgId	NUMBER;
12261
 
12262
		CURSOR pack_vers_cur IS
12263
			SELECT
12264
				pv.PV_ID,
12265
				pv.PKG_VERSION,
12266
				pv.PKG_ID,
12267
				p.PKG_NAME
12268
			FROM
12269
				PACKAGE_VERSIONS pv
12270
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
12271
			WHERE
12272
   				 pv.PKG_ID = pkgId
12273
			AND
12274
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
12275
 
12276
	BEGIN
12277
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12278
 
12279
		-- get the pkg_id we are finding issues for
12280
		pkgId := GetPkgId( pkg_name );
12281
 
12282
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
12283
		FOR pack_ver_rec IN  pack_vers_cur
12284
		LOOP
12285
			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 );
12286
			COMMIT;
12287
		END LOOP;
12288
 
12289
		-- The output cursor - shows the individual versions of the top level package then were reported on
12290
		OPEN vCursor FOR
12291
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12292
/*removed
12293
		SELECT
12294
			PKG_VERSION
12295
		FROM
12296
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
12297
*/
12298
 
12299
 
12300
	EXCEPTION
12301
		WHEN OTHERS THEN
12302
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
12303
	END;
12304
 
12305
 
12306
	/*
12307
	-- Proc: InsertIssuesForDepends
12308
	--
12309
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
12310
	--
12311
	-- INPUT PARAMETERS:
12312
	--
12313
	--		pvID  		-  	The package version id of the package to get issues for
12314
	--		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)
12315
	--		top_pkgName -  	The package name of the top level package
12316
	--		top_pvID  	-  	The package version id of the top level package
12317
	--		top_pkgVer  -  	The package version description of the top level package
12318
	*/
12319
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
12320
	AS
12321
		pkgId		NUMBER;
12322
		issCnt		NUMBER := 0;
12323
		pkgCheck	NUMBER := 0;
12324
		depCheck	NUMBER := 0;
12325
 
12326
		dpkgName	VARCHAR(50);
12327
		dpkgVersion	VARCHAR(50);
12328
 
12329
		CURSOR dep_packs_cur IS
12330
			SELECT
12331
				DPV_ID
12332
			FROM
12333
				PACKAGE_DEPENDENCIES
12334
			WHERE
12335
				PV_ID = pvID;
12336
 
12337
	BEGIN
12338
 
12339
		-- check to see if the package has been processed previously
12340
		SELECT
12341
			COUNT(*)
12342
		INTO
12343
			pkgCheck
12344
		FROM
12345
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12346
		WHERE
12347
			DPV_ID = pvID;
12348
 
12349
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
12350
 
12351
		-- Package not already processed (no cyclic dependency) - process it
12352
		IF ( pkgCheck = 0 ) THEN
12353
 
12354
			-- check to see if this package version has any issues assigned to it
12355
			SELECT
12356
				COUNT(*)
12357
			INTO
12358
				issCnt
12359
			FROM
12360
				CQ_ISSUES i
12361
			WHERE
12362
				i.PV_ID = pvID;
12363
 
12364
			dbms_output.put_line('issCnt: ' || issCnt );
12365
 
12366
			-- Always enter a marker row into the table even if there are no issues for the package.
12367
			-- This allows us to pick up any cyclic dependencies.
12368
			IF ( issCnt > 0 ) THEN
12369
				-- get issues and insert into RM_PACKAGE_ISSUES
12370
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12371
 
12372
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
12373
					SELECT DISTINCT
12374
						top_pkgID		AS PKG_ID,
12375
						top_pkgName		AS PKG_NAME,
12376
						top_pvID		AS PV_ID,
12377
						top_pkgVer		AS PKG_VERSION,
12378
						pv.PV_ID		AS DPV_ID,
12379
						p.PKG_NAME		AS DPKG_NAME,
12380
						pv.PKG_VERSION	AS DPKG_VERSION,
12381
						ci.ISS_DB,
12382
						ci.ISS_ID
12383
					FROM
12384
						PACKAGE_VERSIONS pv
12385
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
12386
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
12387
					WHERE
12388
						pv.PV_ID = pvID;
12389
 
12390
			ELSE
12391
				-- get the dpkg details - there will always be a row returned here
12392
				SELECT
12393
					p.PKG_NAME
12394
				INTO
12395
					dpkgName
12396
				FROM
12397
					PACKAGE_VERSIONS pv
12398
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
12399
				WHERE
12400
	   				 pv.PV_ID = pvID;
12401
 
12402
				SELECT
12403
					pv.PKG_VERSION
12404
				INTO
12405
					dpkgVersion
12406
				FROM
12407
					PACKAGE_VERSIONS pv
12408
				WHERE
12409
	   				 pv.PV_ID = pvID;
12410
 
12411
				-- enter a marker row
12412
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12413
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
12414
				VALUES (
12415
					top_pkgID,
12416
					top_pkgName,
12417
					top_pvID,
12418
					top_pkgVer,
12419
					pvID,
12420
					dpkgName,
12421
					dpkgVersion,
12422
					NULL,
12423
					NULL );
12424
 
12425
			END IF;
12426
 
12427
			-- If this package version has dependencies then recurse
12428
			SELECT
12429
				COUNT(*)
12430
			INTO
12431
				depCheck
12432
			FROM
12433
				PACKAGE_DEPENDENCIES
12434
			WHERE
12435
				PV_ID = pvID;
12436
 
12437
			IF ( depCheck > 0 ) THEN
12438
				-- get dependencies and call this function recursively for each one
12439
				FOR dep_rec IN  dep_packs_cur
12440
				LOOP
12441
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
12442
				END LOOP;
12443
 
12444
			END IF;
12445
 
12446
		END IF;
12447
 
12448
	/*EXCEPTION
12449
		WHEN OTHERS THEN
12450
			no exception handling required
12451
	*/
12452
	END;
12453
 
12454
END Rm_Issues;
4040 dpurdie 12455
 
1374 dpurdie 12456
/
1373 dpurdie 12457
 
4040 dpurdie 12458
/
12459
--------------------------------------------------------
12460
--  DDL for Procedure ADD_AUTOBUILD_FAILURE_INFO
12461
--------------------------------------------------------
12462
set define off;
12463
 
1373 dpurdie 12464
  CREATE OR REPLACE PROCEDURE "ADD_AUTOBUILD_FAILURE_INFO" (
12465
   nprojid     IN   NUMBER,
12466
   nviewid     IN   NUMBER,
12467
   suserlist   IN   VARCHAR2
12468
)
12469
IS
12470
   groupid   NUMBER;
12471
/******************************************************************************
12472
   NAME:       ADD_AUTOBUILD_FAILURE
12473
   PURPOSE:
12474
 
12475
   REVISIONS:
12476
   Ver        Date        Author           Description
12477
   ---------  ----------  ---------------  ------------------------------------
12478
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
12479
 
12480
   NOTES:
12481
 
12482
   Automatically available Auto Replace Keywords:
12483
      Object Name:     ADD_AUTOBUILD_FAILURE
12484
      Sysdate:         11/04/2006
12485
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
12486
      Username:         (set in TOAD Options, Procedure Editor)
12487
      Table Name:       (set in the "New PL/SQL Object" dialog)
12488
 
12489
******************************************************************************/
12490
BEGIN
12491
   BEGIN
12492
      SELECT group_email_id
12493
        INTO groupid
12494
        FROM autobuild_failure
12495
       WHERE proj_id = nprojid AND view_id = nviewid;
12496
   EXCEPTION
12497
      WHEN NO_DATA_FOUND
12498
      THEN
12499
         --  Create Next Sequence Id ---
12500
         SELECT seq_group_email_id.NEXTVAL
12501
           INTO groupid
12502
           FROM DUAL;
12503
 
12504
         INSERT INTO autobuild_failure
12505
                     (group_email_id, proj_id, view_id
12506
                     )
12507
              VALUES (groupid, nprojid, nviewid
12508
                     );
12509
   END;
12510
 
12511
   add_view_members (groupid, suserlist);
12512
END add_autobuild_failure_info;
4040 dpurdie 12513
 
1374 dpurdie 12514
/
1373 dpurdie 12515
 
4040 dpurdie 12516
/
12517
--------------------------------------------------------
12518
--  DDL for Procedure ADD_COMPONENT
12519
--------------------------------------------------------
12520
set define off;
12521
 
3959 dpurdie 12522
  CREATE OR REPLACE PROCEDURE "ADD_COMPONENT" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
12523
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
12524
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
12525
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
12526
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
12527
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
12528
                                           ) IS
12529
/* ---------------------------------------------------------------------------
12530
    Version: 3.0.0
12531
   --------------------------------------------------------------------------- */
1373 dpurdie 12532
 
12533
 
12534
BEGIN
12535
 
3959 dpurdie 12536
	 --- Insert into RELEASE_COMPONENTS
12537
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
12538
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
1373 dpurdie 12539
 
12540
 
3959 dpurdie 12541
 
12542
 
12543
END Add_Component;
4040 dpurdie 12544
 
1374 dpurdie 12545
/
1373 dpurdie 12546
 
4040 dpurdie 12547
/
12548
--------------------------------------------------------
12549
--  DDL for Procedure ADD_PACKAGE_INTEREST
12550
--------------------------------------------------------
12551
set define off;
12552
 
3959 dpurdie 12553
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
12554
	   	  		  								  nPkgIdList IN VARCHAR2,
12555
												  nUserId IN NUMBER
12556
	   	  		  								  ) IS
1373 dpurdie 12557
 
3959 dpurdie 12558
/******************************************************************************
12559
   NAME:       ADD_PACKAGE_INTEREST
12560
   PURPOSE:    
1373 dpurdie 12561
 
3959 dpurdie 12562
   REVISIONS:
12563
   Ver        Date        Author           Description
12564
   ---------  ----------  ---------------  ------------------------------------
12565
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
12566
 
12567
   NOTES:
12568
 
12569
   Automatically available Auto Replace Keywords:
12570
      Object Name:     ADD_PACKAGE_INTEREST
12571
      Sysdate:         12/05/2006
12572
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
12573
      Username:         (set in TOAD Options, Procedure Editor)
12574
      Table Name:       (set in the "New PL/SQL Object" dialog)
12575
 
12576
******************************************************************************/
12577
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
12578
   nPkgId NUMBER;
1373 dpurdie 12579
BEGIN
12580
 
3959 dpurdie 12581
	 npkgidcollector := in_list_number2 (nPkgIdList);
12582
 
12583
	FOR i IN 1..npkgidcollector.COUNT
12584
	LOOP
12585
		nPkgId := npkgidcollector(i);
1373 dpurdie 12586
 
3959 dpurdie 12587
	 --- Insert into PACKAGE_INTEREST TABLE
12588
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
12589
	 VALUES(nProjId, nPkgId, nUserId);
12590
	END LOOP;	 
12591
 
1373 dpurdie 12592
 
3959 dpurdie 12593
END ADD_PACKAGE_INTEREST;
4040 dpurdie 12594
 
3959 dpurdie 12595
/
1373 dpurdie 12596
 
4040 dpurdie 12597
/
12598
--------------------------------------------------------
12599
--  DDL for Procedure ADD_PACKAGE_INTEREST_TEST
12600
--------------------------------------------------------
12601
set define off;
12602
 
3959 dpurdie 12603
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST_TEST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
12604
	   	  		  								  nPkgIdList IN VARCHAR2,
12605
												  nUserId IN NUMBER
12606
	   	  		  								  ) IS
1373 dpurdie 12607
 
3959 dpurdie 12608
/******************************************************************************
12609
   NAME:       ADD_PACKAGE_INTEREST
12610
   PURPOSE:    
12611
 
12612
   REVISIONS:
12613
   Ver        Date        Author           Description
12614
   ---------  ----------  ---------------  ------------------------------------
12615
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
12616
 
12617
   NOTES:
12618
 
12619
   Automatically available Auto Replace Keywords:
12620
      Object Name:     ADD_PACKAGE_INTEREST
12621
      Sysdate:         12/05/2006
12622
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
12623
      Username:         (set in TOAD Options, Procedure Editor)
12624
      Table Name:       (set in the "New PL/SQL Object" dialog)
12625
 
12626
******************************************************************************/
12627
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
12628
   nPkgId NUMBER;
12629
BEGIN
12630
 
12631
	 npkgidcollector := in_list_number2 (nPkgIdList);
12632
 
12633
	FOR i IN 1..npkgidcollector.COUNT
12634
	LOOP
12635
		nPkgId := npkgidcollector(i);
12636
 
12637
	 --- Insert into PACKAGE_INTEREST TABLE
12638
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
12639
	 VALUES(nProjId, nPkgId, nUserId);
12640
	END LOOP;	 
12641
 
12642
 
12643
END ADD_PACKAGE_INTEREST_TEST;
4040 dpurdie 12644
 
1374 dpurdie 12645
/
1373 dpurdie 12646
 
4040 dpurdie 12647
/
12648
--------------------------------------------------------
12649
--  DDL for Procedure ADD_RUNTIME_DEPENDENCY
12650
--------------------------------------------------------
12651
set define off;
12652
 
3959 dpurdie 12653
  CREATE OR REPLACE PROCEDURE "ADD_RUNTIME_DEPENDENCY" ( NNpv_id IN NUMBER,
12654
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
12655
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
12656
                                                     NNuser_id IN NUMBER
12657
                                                    ) IS
1373 dpurdie 12658
/* ---------------------------------------------------------------------------
3959 dpurdie 12659
    Version: 3.1
1373 dpurdie 12660
   --------------------------------------------------------------------------- */
12661
 
3959 dpurdie 12662
    retRTD_ID NUMBER;
12663
 
12664
	CURSOR rtd_cur IS
12665
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
12666
    rtd_rec rtd_cur%ROWTYPE;
12667
 
1373 dpurdie 12668
BEGIN
3959 dpurdie 12669
    --- Seed database with package_name and version if required ---
12670
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
1373 dpurdie 12671
 
3959 dpurdie 12672
	OPEN rtd_cur;
12673
    FETCH rtd_cur INTO rtd_rec;
1373 dpurdie 12674
 
3959 dpurdie 12675
    IF rtd_cur%NOTFOUND
12676
    THEN
12677
		/* Make sure it does not exists already as runtime dependency */
1373 dpurdie 12678
 
3959 dpurdie 12679
		--- Add new Runtime Dependency ---
12680
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
12681
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
1373 dpurdie 12682
 
3959 dpurdie 12683
    	/* LOG ACTION */
12684
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
12685
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
12686
 
12687
	END IF;
12688
 
12689
 
12690
END Add_Runtime_Dependency;
4040 dpurdie 12691
 
1374 dpurdie 12692
/
1373 dpurdie 12693
 
4040 dpurdie 12694
/
12695
--------------------------------------------------------
12696
--  DDL for Procedure ADD_VIEW_MEMBERS
12697
--------------------------------------------------------
12698
set define off;
12699
 
3959 dpurdie 12700
  CREATE OR REPLACE PROCEDURE "ADD_VIEW_MEMBERS" (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
12701
 
12702
/******************************************************************************
12703
   NAME:       ADD_VIEW_MEMBERS
12704
   PURPOSE:    
12705
 
12706
   REVISIONS:
12707
   Ver        Date        Author           Description
12708
   ---------  ----------  ---------------  ------------------------------------
12709
   1.0        11/04/2006          1. Created this procedure.
12710
 
12711
   NOTES:
12712
 
12713
   Automatically available Auto Replace Keywords:
12714
      Object Name:     ADD_VIEW_MEMBERS
12715
      Sysdate:         11/04/2006
12716
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
12717
      Username:         (set in TOAD Options, Procedure Editor)
12718
      Table Name:       (set in the "New PL/SQL Object" dialog)
12719
 
12720
******************************************************************************/
12721
CURSOR user_cur IS
12722
	SELECT u.USER_ID
12723
	  FROM USERS u
12724
	 WHERE u.USER_ID IN (
12725
	 	   			   	SELECT * 
12726
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
12727
						);
12728
user_rec user_cur%ROWTYPE;
12729
 
12730
 
12731
BEGIN
12732
 
12733
	 OPEN user_cur;
12734
	 FETCH user_cur INTO user_rec;
12735
 
12736
	 WHILE user_cur%FOUND
12737
	 LOOP
12738
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
12739
	 	 VALUES ( nGroupId, user_rec.USER_ID);
12740
 
12741
	 	 FETCH user_cur INTO user_rec;	 
12742
	 END LOOP;	 
12743
 
12744
 
12745
 
12746
END ADD_VIEW_MEMBERS;
4040 dpurdie 12747
 
1374 dpurdie 12748
/
1373 dpurdie 12749
 
4040 dpurdie 12750
/
12751
--------------------------------------------------------
12752
--  DDL for Procedure BASIC_CLONE
12753
--------------------------------------------------------
12754
set define off;
12755
 
1373 dpurdie 12756
  CREATE OR REPLACE PROCEDURE "BASIC_CLONE" ( nFROMpv_id IN NUMBER,
12757
                        nTOpv_id IN NUMBER,
12758
                        nRtag_id IN NUMBER,
12759
                        nUser_id IN NUMBER,
12760
                        nTOpkg_id IN NUMBER DEFAULT NULL,
12761
                        enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
12762
 
12763
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
12764
   major NUMBER;
12765
   minor NUMBER;
12766
   patch NUMBER;
12767
   buildn NUMBER;
12768
   from_vcs_type_id NUMBER;
12769
BEGIN
12770
------------------------------ Version Control System ------------------------------------------
12771
   SELECT vcs_type_id
12772
      INTO from_vcs_type_id
12773
      FROM package_versions WHERE pv_id = nFROMpv_id;
12774
 
12775
   UPDATE package_versions
12776
      SET vcs_type_id = from_vcs_type_id
12777
      WHERE pv_id = nTOpv_id;
12778
------------------------------------- Limits ---------------------------------------------------
12779
   select major_limit, minor_limit, patch_limit, build_number_limit
12780
   into major, minor, patch, buildn
12781
   from package_versions where pv_id=nFROMpv_id;
12782
    UPDATE package_versions SET
12783
           major_limit = major,
12784
           minor_limit = minor,
12785
           patch_limit = patch,
12786
           build_number_limit = buildn
12787
     WHERE PV_ID = nTOpv_id;
12788
------------------------------------- Clone Dependencies ---------------------------------------------------
12789
   IF NOT nRtag_id IS NULL
12790
   THEN
12791
      -- Auto Update Dependencies --
12792
      INSERT INTO PACKAGE_DEPENDENCIES
12793
           SELECT nTOpv_id AS pv_id,
12794
                  DECODE(nUser_id,
12795
                         frc.modifier_id,
12796
                         frc.pv_id,
12797
                         DECODE(frc.dlocked,
12798
                                'Y',
12799
                                frc.pv_id,
12800
                                dep.dpv_id)
12801
                         ) AS dpv_id,
12802
                  nTOpkg_id AS pkg_id,
12803
                  dep.dpkg_id,
12804
                  dep.build_type,
12805
                  dep.display_order
12806
             FROM PACKAGE_DEPENDENCIES dep,
12807
                  PACKAGE_VERSIONS pv,
12808
                  (
12809
                  /* Full Release Contents used for reference*/
12810
                  SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
12811
                  FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
12812
                  WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
12813
                  ) frc
12814
            WHERE dep.pv_id = nFROMpv_id
12815
              AND dep.dpv_id = pv.pv_id
12816
              AND pv.pkg_id = frc.pkg_id(+)
12817
              AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
12818
   ELSE
12819
      -- Clone Dependencies --
12820
      INSERT INTO PACKAGE_DEPENDENCIES
12821
           SELECT nTOpv_id         AS pv_id,
12822
                  dep.dpv_id,
12823
                  nTOpkg_id        AS pkg_id,
12824
                  dep.dpkg_id,
12825
                  dep.build_type,
12826
                  dep.display_order
12827
             FROM PACKAGE_DEPENDENCIES dep
12828
            WHERE dep.pv_id = nFROMpv_id;
12829
 
12830
   END IF;
12831
 
12832
----------------------------------------- Clone Issues -------------------------------------------------------
12833
   IF enumISSUES_STATE_IMPORTED IS NULL
12834
   THEN
12835
        /* All Issues */
12836
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
12837
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
12838
              FROM CQ_ISSUES
12839
             WHERE pv_id = nFROMpv_id;
12840
   ELSE
12841
       /* Outstanding Issues Only */
12842
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
12843
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
12844
              FROM CQ_ISSUES
12845
             WHERE pv_id = nFROMpv_id
12846
               AND iss_state = enumISSUES_STATE_IMPORTED;
12847
   END IF;
12848
 
12849
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
12850
   INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
12851
       SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
12852
       FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
12853
 
12854
--------------------------------------- Clone Additional Notes ------------------------------------------------
12855
   INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
12856
        SELECT an.NOTE_ID,
12857
               nTOpv_id AS PV_ID,
12858
               an.NOTE_TITLE,
12859
               an.NOTE_BODY,
12860
               an.MOD_DATE,
12861
               an.MOD_USER
12862
          FROM ADDITIONAL_NOTES an
12863
         WHERE an.PV_ID = nFROMpv_id;
12864
 
12865
-------------------------------------------- Clone Unit Tests -------------------------------------------------
12866
   -- Clone only Automatic unit tests --
12867
   INSERT INTO UNIT_TESTS (
12868
                           TEST_ID,
12869
                           PV_ID,
12870
                           TEST_TYPES_FK,
12871
                           TEST_SUMMARY,
12872
                           COMPLETION_DATE,
12873
                           COMPLETED_BY,
12874
                           RESULTS_URL,
12875
                           RESULTS_ATTACHMENT_NAME,
12876
                           NUMOF_TEST
12877
                          )
12878
        SELECT ut.TEST_ID,
12879
               nTOpv_id AS PV_ID,
12880
               ut.TEST_TYPES_FK,
12881
               ut.TEST_SUMMARY,
12882
               Ora_Sysdate AS COMPLETION_DATE,
12883
               nUser_id AS COMPLETED_BY,
12884
               ut.RESULTS_URL,
12885
               ut.RESULTS_ATTACHMENT_NAME,
12886
               ut.NUMOF_TEST
12887
          FROM UNIT_TESTS ut
12888
         WHERE ut.PV_ID = nFROMpv_id
12889
           AND ut.TEST_TYPES_FK IN ( 5, 7 );
12890
 
12891
    -- Clone only Interactive Unit Tests --
12892
    INSERT INTO UNIT_TESTS (
12893
                            TEST_ID,
12894
                            PV_ID,
12895
                            TEST_TYPES_FK,
12896
                            TEST_SUMMARY
12897
                           )
12898
       SELECT ut.TEST_ID,
12899
              nTOpv_id AS PV_ID,
12900
              ut.TEST_TYPES_FK,
12901
              ut.TEST_SUMMARY
12902
         FROM UNIT_TESTS ut
12903
        WHERE ut.PV_ID = nFROMpv_id
12904
          AND ut.TEST_TYPES_FK IN (6);
12905
 
12906
-------------------------------------------- Clone Package Documents ------------------------------------------
12907
   INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
12908
        SELECT nTOpv_id AS PV_ID,
12909
               pd.test_id,
12910
               pd.doc_num,
12911
               pd.doc_id,
12912
               pd.IS_LATEST
12913
          FROM PACKAGE_DOCUMENTS pd
12914
         WHERE pd.PV_ID = nFROMpv_id;
12915
 
12916
-------------------------------------------- Clone Build Environments -----------------------------------------
12917
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
12918
    SELECT nTOpv_id AS PV_ID,
12919
           pkgbe.BE_ID,
12920
           pkgbe.BUILD_TYPE
12921
      FROM PACKAGE_BUILD_ENV pkgbe
12922
     WHERE pkgbe.PV_ID = nFROMpv_id;
12923
---------------------------------------------Clone Package Build Info------------------------------------------
12924
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
12925
    SELECT nTOpv_id AS PV_ID,
12926
           pkgbinfo.BM_ID,
12927
           pkgbinfo.BSA_ID
12928
      FROM PACKAGE_BUILD_INFO pkgbinfo
12929
     WHERE pkgbinfo.PV_ID = nFROMpv_id;
12930
---------------------------------------------Clone Package Version Processes-----------------------------------
12931
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
12932
    SELECT nTOpv_id AS PV_ID,
12933
           pp.PROC_ID
12934
      FROM PACKAGE_PROCESSES pp
12935
     WHERE pp.PV_ID = nFROMpv_id;
12936
---------------------------------------------Clone Licencing Associations-----------------------------------
12937
    PK_LICENCING.CLONE_LICENCING(nFROMpv_id, nTOpv_id, nUser_id);
12938
---------------------------------------------------------------------------------------------------------------
12939
 
12940
    /* LOG ACTION */
12941
    SELECT pv.PKG_VERSION INTO FromVersion
12942
      FROM PACKAGE_VERSIONS pv
12943
     WHERE pv.PV_ID = nFROMpv_id;
12944
 
12945
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
12946
                 'Details cloned from: '|| FromVersion );
12947
 
12948
---------------------------------------------------------------------------------------------------------------
12949
 
12950
END Basic_Clone;
4040 dpurdie 12951
 
1374 dpurdie 12952
/
1373 dpurdie 12953
 
4040 dpurdie 12954
/
12955
--------------------------------------------------------
12956
--  DDL for Procedure BUILD_TREE
12957
--------------------------------------------------------
12958
set define off;
12959
 
3959 dpurdie 12960
  CREATE OR REPLACE PROCEDURE "BUILD_TREE" ( nRtag_id IN NUMBER,
12961
	   	  		  					     retSessionNum OUT NUMBER ) IS
12962
 
1373 dpurdie 12963
/* ---------------------------------------------------------------------------
3959 dpurdie 12964
    Version: 3.0.0
1373 dpurdie 12965
   --------------------------------------------------------------------------- */
3959 dpurdie 12966
    rowCnt 			NUMBER := 0;						-- Iterations counter
12967
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
12968
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
12969
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
12970
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
12971
    sessionNum 		NUMBER;
12972
	levelNum		NUMBER;
12973
 
12974
BEGIN
12975
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
12976
 
12977
	/*
12978
	||	   Start UP THE TREE
12979
	*/
12980
 
12981
 
12982
	/* Packages with no dependencies */    
12983
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
12984
		SELECT sessionNum AS SESSION_NUM,
12985
			   iteration AS LEVEL_NUM,
12986
			   UP_THE_TREE AS DIRECTION,
12987
			   rc.pv_id, pv.pkg_id, pv.v_ext
12988
		  FROM release_content rc,
12989
		  	   package_versions pv
12990
		 WHERE rc.rtag_id = nRtag_id
12991
		   AND rc.pv_id = pv.pv_id
12992
		 MINUS
12993
		SELECT sessionNum AS SESSION_NUM, 
12994
			   iteration AS LEVEL_NUM,
12995
			   UP_THE_TREE AS DIRECTION,
12996
			   dep.pv_id, pv.pkg_id, pv.v_ext
12997
		  FROM package_dependencies dep,
12998
		  	   package_versions pv
12999
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
13000
		   AND dep.pv_id = pv.pv_id;
13001
 
13002
 
13003
	/* Browse UP the build tree */	   
13004
	iteration := iteration + 1;
13005
    LOOP
13006
 
13007
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
13008
			SELECT DISTINCT 
13009
			       sessionNum AS SESSION_NUM,
13010
			       iteration AS LEVEL_NUM,
13011
				   UP_THE_TREE AS DIRECTION, 
13012
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
13013
			  FROM (  
13014
			        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
13015
			          FROM package_dependencies dep,
13016
			               release_content rc,
13017
						   package_versions pv,
13018
						   package_versions dpv
13019
			         WHERE dep.pv_id = rc.pv_id
13020
			           AND rc.rtag_id = nRtag_id
13021
					   AND dep.pv_id = pv.pv_id
13022
					   AND dep.dpv_id = dpv.pv_id
13023
					) rdep,
13024
					temp_tree_browse ttb
13025
			 WHERE rdep.dpkg_id  = ttb.pkg_id
13026
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
13027
			   AND ttb.SESSION_NUM = sessionNum
13028
			   AND ttb.LEVEL_NUM = iteration - 1	
13029
			MINUS
13030
			/* Packages with all depencencies NOT matched */  
13031
			SELECT DISTINCT 
13032
			       sessionNum AS SESSION_NUM,
13033
			       iteration AS LEVEL_NUM, 
13034
				   UP_THE_TREE AS DIRECTION,
13035
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
13036
			  FROM (  
13037
			        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
13038
			          FROM package_dependencies dep,
13039
			               release_content rc,
13040
						   package_versions pv,
13041
						   package_versions dpv
13042
			         WHERE dep.pv_id = rc.pv_id
13043
			           AND rc.rtag_id = nRtag_id
13044
					   AND dep.pv_id = pv.pv_id
13045
					   AND dep.dpv_id = dpv.pv_id
13046
					) rdep,
13047
					(
13048
					 SELECT tb.*
13049
					   FROM temp_tree_browse tb
13050
					  WHERE tb.SESSION_NUM = sessionNum
13051
					) ttb
13052
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
13053
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
13054
			   AND ttb.SESSION_NUM IS NULL;
13055
 
13056
		rowCnt := SQL%ROWCOUNT;
13057
		IF rowCnt > 0 THEN
13058
           iteration := iteration + 1;
13059
		END IF;
13060
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
13061
    END LOOP;
13062
 
13063
	/*---------------------------------------------------------------------------------------------------------------------*/
13064
 
13065
	/*     Check for unresolved dependencies
13066
	||  
13067
	*/
13068
	/* UNRESOLVED */
13069
	 SELECT COUNT(*) INTO rowCnt
13070
	   FROM (
13071
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13072
			  FROM release_content rc,
13073
			  	   package_versions pv
13074
			 WHERE rc.rtag_id = nRtag_id
13075
			   AND rc.pv_id = pv.pv_id	   
13076
			MINUS
13077
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13078
			  FROM temp_tree_browse ttb
13079
			 WHERE ttb.session_num = sessionNum
13080
			);
13081
 
13082
 
13083
 
13084
	 IF rowCnt > 0 
13085
	 THEN
13086
	 	 /*     Circular dependencies detected.
13087
		 ||     Try to resolve build order from the top now.
13088
		 ||		Start DOWN THE TREE
13089
		 */
13090
 
13091
		iteration := 0; 
13092
		 /* Top Level packages */	
13093
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
13094
			SELECT sessionNum AS SESSION_NUM,
13095
			       iteration AS LEVEL_NUM,
13096
				   DOWN_THE_TREE AS DIRECTION,
13097
				   pv.pv_id, pv.pkg_id, pv.v_ext
13098
			  FROM (		   
13099
					/* Packages no one depends on ( Top level packages )*/
13100
					( 
13101
					/* All parents*/ 
13102
					SELECT pv.pkg_id, pv.v_ext
13103
			          FROM package_dependencies dep,
13104
			               release_content rc,
13105
						   package_versions pv
13106
			         WHERE dep.pv_id = rc.pv_id
13107
			           AND rc.rtag_id = nRtag_id
13108
					   AND dep.pv_id = pv.pv_id
13109
					 MINUS
13110
					 /* All children */
13111
					SELECT dpv.pkg_id, dpv.v_ext
13112
			          FROM package_dependencies dep,
13113
			               release_content rc,
13114
						   package_versions dpv
13115
			         WHERE dep.pv_id = rc.pv_id
13116
			           AND rc.rtag_id = nRtag_id
13117
					   AND dep.dpv_id = dpv.pv_id
13118
					 ) 
13119
					 MINUS
13120
					/* Packages with resolved dependencies from UP THE TREE */ 
13121
					SELECT ttb.pkg_id, ttb.v_ext
13122
					  FROM temp_tree_browse ttb
13123
					 WHERE ttb.session_num = sessionNum
13124
				  ) tpkg,
13125
				  package_versions pv,
13126
				  release_content rc
13127
			WHERE rc.rtag_id = nRtag_id
13128
			  AND rc.pv_id = pv.pv_id
13129
			  AND tpkg.pkg_id = pv.pkg_id
13130
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
13131
 
13132
 
13133
		 /* Keep taking packages which no one depende on */			  
13134
		 iteration := iteration - 1;  
13135
		 LOOP	  
13136
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
13137
					SELECT sessionNum AS SESSION_NUM,
13138
					       iteration AS LEVEL_NUM,
13139
					       DOWN_THE_TREE AS DIRECTION,
13140
					       pv.pv_id, pv.pkg_id, pv.v_ext
13141
					  FROM (		   
13142
					 	/* All Unresolved */
13143
					 	(
13144
					 	SELECT pv.pkg_id, pv.v_ext
13145
					 	  FROM release_content rc,
13146
					 	  	   package_versions pv
13147
					 	 WHERE rc.rtag_id = nRtag_id
13148
					 	   AND rc.pv_id = pv.pv_id	   
13149
					 	MINUS
13150
					 	SELECT ttb.pkg_id, ttb.v_ext
13151
					 	  FROM temp_tree_browse ttb
13152
					 	 WHERE ttb.session_num = sessionNum
13153
					 	)
13154
					 	 MINUS
13155
					 	(  
13156
					 	 /* Children of Unresolved */  
13157
					 	SELECT dpv.pkg_id, dpv.V_EXT
13158
					 	  FROM (
13159
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13160
					 			  FROM release_content rc,
13161
					 			  	   package_versions pv
13162
					 			 WHERE rc.rtag_id = nRtag_id
13163
					 			   AND rc.pv_id = pv.pv_id	   
13164
					 			MINUS
13165
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13166
					 			  FROM temp_tree_browse ttb
13167
					 			 WHERE ttb.session_num = sessionNum
13168
					 		   ) unr,
13169
					 		   package_dependencies dep,
13170
					 		   package_versions dpv
13171
					 	 WHERE unr.pv_id = dep.pv_id
13172
					 	   AND dep.dpv_id = dpv.pv_id
13173
					 	 )  
13174
					   ) tpkg,
13175
					   package_versions pv,
13176
					   release_content rc
13177
					WHERE rc.rtag_id = nRtag_id
13178
					  AND rc.pv_id = pv.pv_id
13179
					  AND tpkg.pkg_id = pv.pkg_id
13180
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
13181
 
13182
            rowCnt := SQL%ROWCOUNT;
13183
        	IF rowCnt > 0 THEN
13184
	           iteration := iteration - 1;
13185
			END IF;
13186
            EXIT WHEN (rowCnt < 1);
13187
     	END LOOP;
13188
 
13189
	 END IF;
13190
 
13191
 
13192
	/*---------------------------------------------------------------------------------------------------------------------*/
13193
 
13194
	/* 
13195
	|| 	 Save results from temp table
13196
	*/	
13197
	/* Clean up build_order table */
13198
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
13199
 
13200
	/* Save UP THE TREE */
13201
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
13202
		SELECT nRtag_id AS rtag_id,
13203
			   ttb.level_num AS step_num, 
13204
			   ttb.PV_ID
13205
		  FROM temp_tree_browse ttb
13206
		 WHERE ttb.session_num = sessionNum
13207
		   AND ttb.direction = UP_THE_TREE;	
13208
 
13209
	/*Get last step_num */
13210
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
13211
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
13212
 
13213
	/* UNRESOLVED */
13214
	 SELECT COUNT(*) INTO rowCnt
13215
	   FROM (
13216
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13217
			  FROM release_content rc,
13218
			  	   package_versions pv
13219
			 WHERE rc.rtag_id = nRtag_id
13220
			   AND rc.pv_id = pv.pv_id	   
13221
			MINUS
13222
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13223
			  FROM temp_tree_browse ttb
13224
			 WHERE ttb.session_num = sessionNum
13225
			);
13226
 
13227
 
13228
	IF rowCnt > 0
13229
	THEN
13230
		/* Save unresolved packages */
13231
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
13232
		    SELECT  nRtag_id AS rtag_id,
13233
				    levelNum AS step_num, 
13234
				    upv.PV_ID,
13235
					'Y' AS UNRESOLVED
13236
			   FROM (
13237
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13238
					  FROM release_content rc,
13239
					  	   package_versions pv
13240
					 WHERE rc.rtag_id = nRtag_id
13241
					   AND rc.pv_id = pv.pv_id	   
13242
					MINUS
13243
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13244
					  FROM temp_tree_browse ttb
13245
					 WHERE ttb.session_num = sessionNum
13246
					) upv;
13247
	END IF;	
13248
 
13249
	/* Save DOWN THE TREE */
13250
	levelNum := 1000;
13251
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
13252
		SELECT nRtag_id AS rtag_id,
13253
			   levelNum + ttb.level_num  AS step_num, 
13254
			   ttb.PV_ID
13255
		  FROM temp_tree_browse ttb
13256
		 WHERE ttb.session_num = sessionNum
13257
		   AND ttb.direction = DOWN_THE_TREE;
13258
 
13259
 
13260
	/*---------------------------------------------------------------------------------------------------------------------*/
13261
 
13262
	/* Clean up temp table */
13263
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
13264
 
13265
	retSessionNum := sessionNum;
13266
END Build_Tree;
4040 dpurdie 13267
 
3959 dpurdie 13268
/
1373 dpurdie 13269
 
4040 dpurdie 13270
/
13271
--------------------------------------------------------
13272
--  DDL for Procedure CHANGE_PACKAGE_STATE
13273
--------------------------------------------------------
13274
set define off;
13275
 
3959 dpurdie 13276
  CREATE OR REPLACE PROCEDURE "CHANGE_PACKAGE_STATE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
13277
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
13278
/* ---------------------------------------------------------------------------
13279
    Version: 4.0
13280
   --------------------------------------------------------------------------- */
1373 dpurdie 13281
 
13282
BEGIN
13283
 
3959 dpurdie 13284
    -- Unlock Package
13285
    UPDATE RELEASE_CONTENT rc SET
13286
    	rc.PKG_STATE = 0
13287
    WHERE rc.PV_ID = nPvId
13288
	AND rc.RTAG_ID = nRtagId;
1373 dpurdie 13289
 
3959 dpurdie 13290
    /* LOG ACTION */
13291
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
1373 dpurdie 13292
 
3959 dpurdie 13293
END Change_Package_State;
4040 dpurdie 13294
 
1374 dpurdie 13295
/
1373 dpurdie 13296
 
4040 dpurdie 13297
/
13298
--------------------------------------------------------
13299
--  DDL for Procedure CHANGE_RELEASE_MODE
13300
--------------------------------------------------------
13301
set define off;
13302
 
3959 dpurdie 13303
  CREATE OR REPLACE PROCEDURE "CHANGE_RELEASE_MODE" ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
13304
/* ---------------------------------------------------------------------------
13305
    Version: 3.0.0
13306
   --------------------------------------------------------------------------- */
1373 dpurdie 13307
 
3959 dpurdie 13308
	cMode CHAR(1) := NULL;  
13309
	nProjId NUMBER; 
1373 dpurdie 13310
 
13311
BEGIN
3959 dpurdie 13312
 
1373 dpurdie 13313
 
3959 dpurdie 13314
	/*
13315
	Author: Rupesh Solanki
13316
	Modified: 24th October 2006
13317
	Reason: Added the archive mode state into Release Manager 
13318
	||	1 - Open Mode
13319
	||	2 - Restrictive Mode
13320
	||	3 - Closed Mode
13321
	||	4 - CCB Mode
13322
	||	5 - Archive Mode
13323
	*/	
13324
	-- Get project Id
13325
	SELECT rt.PROJ_ID INTO nProjId
13326
	  FROM RELEASE_TAGS rt
13327
	 WHERE rt.RTAG_ID = nRtagId; 
13328
 
13329
	IF nModeCode = 1 THEN
13330
		-- Open Mode
13331
		cMode := 'N';
13332
 
13333
		/* LOG ACTION */
13334
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
13335
 
13336
	ELSIF nModeCode = 2 THEN
13337
		-- Restrictive Mode
13338
		cMode := 'R';
13339
 
13340
		/* LOG ACTION */
13341
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
13342
 
13343
	ELSIF nModeCode = 3 THEN
13344
		-- Closed Mode
13345
		cMode := 'Y';
13346
 
13347
		/* LOG ACTION */
13348
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
1373 dpurdie 13349
 
3959 dpurdie 13350
	ELSIF nModeCode = 4 THEN
13351
		-- CCB Mode
13352
		cMode := 'C';
13353
 
13354
		/* LOG ACTION */
13355
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
13356
 
13357
	ELSIF nModeCode = 5 THEN
13358
		-- Archive Mode
13359
		cMode := 'A';
13360
 
13361
		/* LOG ACTION */
13362
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
13363
 
13364
 
13365
	END IF;
13366
 
13367
 
13368
 
13369
	-- Now update table
13370
	IF NOT cMode IS NULL THEN
13371
		UPDATE RELEASE_TAGS rt SET
4211 dpurdie 13372
		rt.OFFICIAL = cMode,
13373
    rt.OFFICIAL_STAMP = ORA_SYSDATETIME,
13374
    rt.OFFICIAL_ID = UserId
3959 dpurdie 13375
		WHERE rt.RTAG_ID = nRtagId;
13376
 
13377
	END IF;
1373 dpurdie 13378
 
13379
 
3959 dpurdie 13380
END CHANGE_RELEASE_MODE;
4040 dpurdie 13381
 
1374 dpurdie 13382
/
1373 dpurdie 13383
 
4040 dpurdie 13384
/
13385
--------------------------------------------------------
13386
--  DDL for Procedure CHECK_NEW_PATCHES
13387
--------------------------------------------------------
13388
set define off;
13389
 
3959 dpurdie 13390
  CREATE OR REPLACE PROCEDURE "CHECK_NEW_PATCHES" (
13391
   nrtagid   IN   release_content.rtag_id%TYPE
1373 dpurdie 13392
)
13393
IS
13394
/* ---------------------------------------------------------------------------
3959 dpurdie 13395
    Version: 3.0
1373 dpurdie 13396
   --------------------------------------------------------------------------- */
13397
BEGIN
3959 dpurdie 13398
   /*--------------- Business Rules Here -------------------*/
13399
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
13400
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
13401
   END IF
13402
 
13403
   /*-------------------------------------------------------*/
13404
   UPDATE release_content rc
13405
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
13406
    WHERE rc.pv_id IN (
13407
             SELECT prod.pv_id
13408
               FROM (SELECT   pp.pv_id AS orig_parent_id,
13409
                              COUNT (*) AS num_of_patches
13410
                         FROM release_content rc, package_patches pp
13411
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
13412
                     GROUP BY pp.pv_id) orig,
13413
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
13414
                              COUNT (*) AS num_of_patches
13415
                         FROM release_content rc,
13416
                              package_patches pp,
13417
                              package_dependencies dep,
13418
                              package_versions pv,
13419
                              package_patches prodpp
13420
                        WHERE rc.pv_id = pp.pv_id
13421
                          AND rc.rtag_id = nrtagid
13422
                          AND pp.patch_id = dep.dpv_id
13423
                          AND dep.pv_id = pv.pv_id
13424
                          AND pv.is_patch = 'Y'
13425
                          AND pv.dlocked = 'Y'
13426
                          AND prodpp.patch_id = dep.pv_id
13427
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
13428
                    release_content rc
13429
              WHERE orig.orig_parent_id = prod.pv_id
13430
                AND orig.num_of_patches != prod.num_of_patches
13431
                AND rc.rtag_id = nrtagid
13432
                AND rc.pv_id = prod.pv_id
13433
                AND rc.pkg_state = 0
13434
             UNION
13435
             SELECT   prodpp.pv_id
13436
                 FROM release_content rc,
13437
                      package_patches pp,
13438
                      package_dependencies dep,
1373 dpurdie 13439
                      package_versions pv,
3959 dpurdie 13440
                      package_patches prodpp
13441
                WHERE rc.pv_id = pp.pv_id
13442
                  AND rc.rtag_id = nrtagid
13443
                  AND pp.patch_id = dep.dpv_id
1373 dpurdie 13444
                  AND dep.pv_id = pv.pv_id
3959 dpurdie 13445
                  AND pv.is_patch = 'Y'
13446
                  AND pv.dlocked = 'Y'
13447
                  AND prodpp.patch_id = dep.pv_id
13448
             GROUP BY prodpp.pv_id, pp.pv_id
13449
             MINUS
13450
             SELECT   pp.pv_id
13451
                 FROM release_content rc, package_patches pp
13452
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
13453
             GROUP BY pp.pv_id);
13454
END check_new_patches;
4040 dpurdie 13455
 
1374 dpurdie 13456
/
1373 dpurdie 13457
 
4040 dpurdie 13458
/
13459
--------------------------------------------------------
13460
--  DDL for Procedure CLEAN_ADVISORY_RIPPLE
13461
--------------------------------------------------------
13462
set define off;
13463
 
3959 dpurdie 13464
  CREATE OR REPLACE PROCEDURE "CLEAN_ADVISORY_RIPPLE" (nrtagid IN NUMBER)
13465
IS
13466
/******************************************************************************
13467
   NAME:       clean_advisory_ripple
1373 dpurdie 13468
 
3959 dpurdie 13469
   PURPOSE:    To delete entries from the advisory_ripple table based upon
13470
               an RTAG_ID only
1373 dpurdie 13471
 
3959 dpurdie 13472
               This is a tidy-up operation performed against the advisory_ripple
13473
               table, ensuring that the table does not have rtag_id/pv_id
13474
               combinations that cannot be found in the release's wip/pending/release
13475
               tabs.
13476
 
13477
******************************************************************************/
1373 dpurdie 13478
BEGIN
3959 dpurdie 13479
   -- Delete any invalid rtag_id/pv_id combination from the advisory_ripple table.
13480
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
13481
   -- work_in_progress, planned, or release_content table.
13482
   -- NOTE: Planned operations that represent pending additive/subtractive merge
13483
   -- operations are ignored because they have not been approved yet and so
13484
   -- cannot be said to be "in the release".
13485
   DELETE FROM advisory_ripple
13486
         WHERE rtag_id = nrtagid
13487
           AND pv_id not in
13488
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
13489
                 UNION
13490
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
13491
                 UNION
13492
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
13493
               );
13494
END clean_advisory_ripple;
4040 dpurdie 13495
 
3959 dpurdie 13496
/
1373 dpurdie 13497
 
4040 dpurdie 13498
/
13499
--------------------------------------------------------
13500
--  DDL for Procedure CLEAN_DO_NOT_RIPPLE
13501
--------------------------------------------------------
13502
set define off;
13503
 
3959 dpurdie 13504
  CREATE OR REPLACE PROCEDURE "CLEAN_DO_NOT_RIPPLE" (nrtagid IN NUMBER)
13505
IS
13506
/******************************************************************************
13507
   NAME:       clean_do_not_ripple
1373 dpurdie 13508
 
3959 dpurdie 13509
   PURPOSE:    To delete entries from the do_not_ripple table based upon
13510
               an RTAG_ID only
13511
 
13512
               This is a tidy-up operation performed against the do_not_ripple
13513
               table, ensuring that the table does not have rtag_id/pv_id
13514
               combinations that cannot be found in the release's wip/pending/release
13515
               tabs.
13516
 
13517
******************************************************************************/
13518
BEGIN
13519
   -- Delete any invalid rtag_id/pv_id combination from the do_not_ripple table.
13520
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
13521
   -- work_in_progress, planned, or release_content table.
13522
   -- NOTE: Planned operations that represent pending additive/subtractive merge
13523
   -- operations are ignored because they have not been approved yet and so
13524
   -- cannot be said to be "in the release".
13525
   DELETE FROM do_not_ripple
13526
         WHERE rtag_id = nrtagid
13527
           AND pv_id not in
13528
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
13529
                 UNION
13530
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
13531
                 UNION
13532
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
13533
               );
13534
END clean_do_not_ripple;
4040 dpurdie 13535
 
1374 dpurdie 13536
/
1373 dpurdie 13537
 
4040 dpurdie 13538
/
13539
--------------------------------------------------------
13540
--  DDL for Procedure CLEAR_ADVISORY_RIPPLE
13541
--------------------------------------------------------
13542
set define off;
13543
 
3959 dpurdie 13544
  CREATE OR REPLACE PROCEDURE "CLEAR_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
13545
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
13546
											 nUserId IN NUMBER ) IS
1373 dpurdie 13547
/* ---------------------------------------------------------------------------
3959 dpurdie 13548
    Version: 4.0
1373 dpurdie 13549
   --------------------------------------------------------------------------- */
13550
 
13551
BEGIN
13552
 
3959 dpurdie 13553
    -- Clear Advisory Ripple Package
13554
    DELETE FROM ADVISORY_RIPPLE
13555
	WHERE PV_ID = nPvId
13556
	AND RTAG_ID = nRtagId;
1373 dpurdie 13557
 
3959 dpurdie 13558
    /* LOG ACTION */
13559
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
13560
 
13561
	/*Rebuild_Environment(nRtagId);*/
1373 dpurdie 13562
 
3959 dpurdie 13563
END Clear_Advisory_Ripple;
4040 dpurdie 13564
 
1374 dpurdie 13565
/
1373 dpurdie 13566
 
4040 dpurdie 13567
/
13568
--------------------------------------------------------
13569
--  DDL for Procedure CLONED_PACKAGE_PROCESSES
13570
--------------------------------------------------------
13571
set define off;
13572
 
3959 dpurdie 13573
  CREATE OR REPLACE PROCEDURE "CLONED_PACKAGE_PROCESSES" 
13574
IS
1373 dpurdie 13575
 
3959 dpurdie 13576
proc_id NUMBER;
1373 dpurdie 13577
/******************************************************************************
3959 dpurdie 13578
   NAME:       DELETE_DO_NOT_RIPPLE
13579
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
13580
               IS RELEASED
1373 dpurdie 13581
 
13582
   REVISIONS:
13583
   Ver        Date        Author           Description
13584
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 13585
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 13586
 
13587
   NOTES:
13588
 
13589
   Automatically available Auto Replace Keywords:
3959 dpurdie 13590
      Object Name:     DELETE_DO_NOT_RIPPLE
13591
      Sysdate:         21/04/2006
13592
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
1373 dpurdie 13593
      Username:         (set in TOAD Options, Procedure Editor)
13594
      Table Name:       (set in the "New PL/SQL Object" dialog)
13595
 
13596
******************************************************************************/
3959 dpurdie 13597
   CURSOR ripple_cur
13598
   IS
13599
      select distinct proc_id, prod_id from deployment_manager.processes_config;
13600
 
13601
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 13602
BEGIN
3959 dpurdie 13603
   OPEN ripple_cur;
1373 dpurdie 13604
 
3959 dpurdie 13605
   FETCH ripple_cur
13606
    INTO ripple_rec;
1373 dpurdie 13607
 
3959 dpurdie 13608
   WHILE ripple_cur%FOUND
13609
   LOOP
13610
 
1373 dpurdie 13611
 
3959 dpurdie 13612
 
13613
insert into package_processes (PROC_ID, PV_ID) 
13614
values( ripple_rec.proc_id, ripple_rec.prod_id);
13615
 
13616
      FETCH ripple_cur
13617
       INTO ripple_rec;
13618
   END LOOP;
13619
END CLONED_PACKAGE_PROCESSES;
4040 dpurdie 13620
 
1374 dpurdie 13621
/
1373 dpurdie 13622
 
4040 dpurdie 13623
/
13624
--------------------------------------------------------
13625
--  DDL for Procedure CLONED_PROCESSES
13626
--------------------------------------------------------
13627
set define off;
13628
 
3959 dpurdie 13629
  CREATE OR REPLACE PROCEDURE "CLONED_PROCESSES" 
13630
IS
13631
 
13632
proc_id NUMBER;
13633
/******************************************************************************
13634
   NAME:       DELETE_DO_NOT_RIPPLE
13635
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
13636
               IS RELEASED
13637
 
13638
   REVISIONS:
13639
   Ver        Date        Author           Description
13640
   ---------  ----------  ---------------  ------------------------------------
13641
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
13642
 
13643
   NOTES:
13644
 
13645
   Automatically available Auto Replace Keywords:
13646
      Object Name:     DELETE_DO_NOT_RIPPLE
13647
      Sysdate:         21/04/2006
13648
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
13649
      Username:         (set in TOAD Options, Procedure Editor)
13650
      Table Name:       (set in the "New PL/SQL Object" dialog)
13651
 
13652
******************************************************************************/
13653
   CURSOR ripple_cur
13654
   IS
13655
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
13656
 
13657
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 13658
BEGIN
3959 dpurdie 13659
   OPEN ripple_cur;
1373 dpurdie 13660
 
3959 dpurdie 13661
   FETCH ripple_cur
13662
    INTO ripple_rec;
1373 dpurdie 13663
 
3959 dpurdie 13664
   WHILE ripple_cur%FOUND
13665
   LOOP
13666
 
13667
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
13668
 
13669
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
13670
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
1373 dpurdie 13671
 
3959 dpurdie 13672
      FETCH ripple_cur
13673
       INTO ripple_rec;
13674
   END LOOP;
13675
END CLONED_PROCESSES;
4040 dpurdie 13676
 
1374 dpurdie 13677
/
1373 dpurdie 13678
 
4040 dpurdie 13679
/
13680
--------------------------------------------------------
13681
--  DDL for Procedure DELETE_AUTOBUILD_FAILURE_INFO
13682
--------------------------------------------------------
13683
set define off;
13684
 
3959 dpurdie 13685
  CREATE OR REPLACE PROCEDURE "DELETE_AUTOBUILD_FAILURE_INFO" 
13686
IS
1373 dpurdie 13687
/******************************************************************************
3959 dpurdie 13688
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
13689
   PURPOSE:
1373 dpurdie 13690
 
13691
   REVISIONS:
3959 dpurdie 13692
   Ver        Date        Author           Description
1373 dpurdie 13693
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 13694
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
1373 dpurdie 13695
 
13696
   NOTES:
13697
 
13698
   Automatically available Auto Replace Keywords:
3959 dpurdie 13699
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
13700
      Sysdate:         2/06/2006
13701
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
1373 dpurdie 13702
      Username:         (set in TOAD Options, Procedure Editor)
13703
      Table Name:       (set in the "New PL/SQL Object" dialog)
13704
 
13705
******************************************************************************/
13706
BEGIN
3959 dpurdie 13707
   DELETE FROM autobuild_failure
13708
         WHERE group_email_id NOT IN (SELECT group_email_id
13709
                                        FROM members_group);
13710
END delete_autobuild_failure_info;
4040 dpurdie 13711
 
1374 dpurdie 13712
/
1373 dpurdie 13713
 
4040 dpurdie 13714
/
13715
--------------------------------------------------------
13716
--  DDL for Procedure DEPLOY_TO_RELEASE
13717
--------------------------------------------------------
13718
set define off;
13719
 
1373 dpurdie 13720
  CREATE OR REPLACE PROCEDURE "DEPLOY_TO_RELEASE" IS
13721
 
13722
/******************************************************************************
13723
 
13724
 
13725
******************************************************************************/
13726
 
13727
	CURSOR curInfo IS
13728
    SELECT DISTINCT
13729
        qry.DPV_ID
13730
     FROM (
13731
             SELECT dep.*,
13732
                    LEVEL AS LEVEL_NUM
13733
               FROM PACKAGE_DEPENDENCIES dep
13734
             START WITH dep.PV_ID IN ( 
13735
 
4308 dpurdie 13736
                        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 13737
 
13738
                        ) 
13739
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
13740
 		) qry,
13741
 		PACKAGES pkg,
13742
		PACKAGE_VERSIONS pv
13743
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
13744
         and (pv.is_patch is null or pv.is_patch = 'N');
13745
    recInfo curInfo%ROWTYPE;
13746
 
13747
 
13748
BEGIN
13749
 
13750
	OPEN curInfo;
13751
    FETCH curInfo INTO recInfo;
13752
 
13753
	WHILE curInfo%FOUND
13754
	LOOP
13755
 
13756
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
13757
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
13758
 
13759
    FETCH curInfo INTO recInfo;
13760
 
13761
	END LOOP;
13762
 
13763
	CLOSE curInfo;
13764
 
13765
 
13766
 
13767
 
13768
END DEPLOY_TO_RELEASE; 
4040 dpurdie 13769
 
1374 dpurdie 13770
/
1373 dpurdie 13771
 
4040 dpurdie 13772
/
13773
--------------------------------------------------------
13774
--  DDL for Procedure DEPRECATE_PACKAGE
13775
--------------------------------------------------------
13776
set define off;
13777
 
3959 dpurdie 13778
  CREATE OR REPLACE PROCEDURE "DEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
13779
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
13780
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
13781
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
13782
											   nUserId IN NUMBER) IS
13783
ext VARCHAR2(50);
1373 dpurdie 13784
 
13785
 
13786
 
3959 dpurdie 13787
 
1373 dpurdie 13788
BEGIN
13789
 
3959 dpurdie 13790
	--Extract the package version extension
13791
	SELECT V_EXT into ext
13792
	FROM PACKAGE_VERSIONS
13793
	WHERE PV_ID = nPvId; 
13794
 
13795
    -- Deprecate Package
13796
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
13797
	VALUES (nRtagId, nPkgId, sComments, ext);
13798
 
13799
	IF ext IS NOT NULL THEN
13800
	   UPDATE RELEASE_CONTENT 
13801
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
13802
	   WHERE RTAG_ID = nRtagId
13803
	   AND PV_ID IN (SELECT PV.PV_ID 
13804
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
13805
				  	WHERE PKG.PKG_ID = PV.PKG_ID
13806
				  	AND PV.V_EXT = ext
13807
				  	AND PKG.PKG_ID = nPkgId
13808
				 	);						
13809
	ELSE
13810
	   UPDATE RELEASE_CONTENT 
13811
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
13812
	   WHERE RTAG_ID = nRtagId
13813
	   AND PV_ID IN (SELECT PV.PV_ID 
13814
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
13815
				  	WHERE PKG.PKG_ID = PV.PKG_ID
13816
				  	AND PV.V_EXT IS NULL
13817
				  	AND PKG.PKG_ID = nPkgId
13818
				 	);
13819
	END IF;
13820
 
13821
	UPDATE RELEASE_CONTENT
13822
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
13823
	WHERE RTAG_ID = nRtagId
13824
	AND PV_ID IN (		   SELECT DISTINCT
13825
 	 		  	 		   qry.PV_ID
13826
						        FROM (
13827
								 	  SELECT dep.*,
13828
									  LEVEL AS LEVEL_NUM
13829
									  FROM PACKAGE_DEPENDENCIES dep 
13830
 								START WITH dep.DPV_ID IN ( nPvId ) 
13831
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
13832
 								) qry,
13833
								PACKAGES pkg,
13834
								PACKAGE_VERSIONS pv,
13835
								RELEASE_CONTENT rc
13836
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
13837
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
13838
							 AND rc.DEPRECATED_STATE IS NULL
13839
				 );			 
1373 dpurdie 13840
 
13841
    /* LOG ACTION */
3959 dpurdie 13842
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
13843
 
1373 dpurdie 13844
 
3959 dpurdie 13845
END Deprecate_Package;
4040 dpurdie 13846
 
1374 dpurdie 13847
/
1373 dpurdie 13848
 
4040 dpurdie 13849
/
13850
--------------------------------------------------------
13851
--  DDL for Procedure DT_DROPUSEROBJECTBYID
13852
--------------------------------------------------------
13853
set define off;
13854
 
1373 dpurdie 13855
  CREATE OR REPLACE PROCEDURE "DT_DROPUSEROBJECTBYID" ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
4040 dpurdie 13856
 
1374 dpurdie 13857
/
1373 dpurdie 13858
 
4040 dpurdie 13859
/
13860
--------------------------------------------------------
13861
--  DDL for Procedure DT_SETPROPERTYBYID
13862
--------------------------------------------------------
13863
set define off;
13864
 
3959 dpurdie 13865
  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 13866
 
3959 dpurdie 13867
/
13868
 
4040 dpurdie 13869
/
13870
--------------------------------------------------------
13871
--  DDL for Procedure IGNORE_DEPENDENCY_WARNINGS
13872
--------------------------------------------------------
13873
set define off;
13874
 
3959 dpurdie 13875
  CREATE OR REPLACE PROCEDURE "IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
13876
                                                         nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
13877
                                                         sIgnoreIdList IN VARCHAR2,
13878
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
13879
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
13880
/* ---------------------------------------------------------------------------
13881
    Updates the ignore warnings table - this is really two functions in one.
13882
 
13883
    1) One function updates the table based on a list of dependent PV_IDs and a parent PV_ID
13884
       and is called from the RM website's SetIgnoreWarnings() function after a user changes
13885
       the ignore warnings checkboxes and submits the form.
13886
       This can (at time of writing this) only be done within releases that are not build
13887
       daemon enabled. The ignore warnings feature is a feature we would like to see the end
13888
       of in an ideal world.
13889
       The SetIgnoreWarnings() website function now calls Touch_Release so there is no need to
13890
       do so in this stored procedure, thereby making this stored procedure much more precise in
13891
       that it only updates the ignore_warnings table (action log table too although that is just
13892
       a log and doesn't affect any subsequent business rules behaviour) and it cares nothing
13893
       about website presentation layer states, etc.
13894
 
13895
    2) The other function updates the table for out of sync dependencies that have in fact
13896
       been satisfied by patches made to some other product in the release.
13897
       This seems to be a seldom used feature in current projects.
13898
       It is probably the most often taken path through this function given that it occurs when
13899
       this function is called from Rebuild_Environment, and that is called in many circumstances
13900
       from the RM website whenever the seems to be a possibility that the state of a package
13901
       in a release might have changed and therefore affects the state of other packages in
13902
       that same release.
13903
 
13904
    Parameter Usage:
13905
                        when called from    | when called from
13906
                        Rebuild_Environment | SetIgnoreWarnings()
13907
                        stored procedure.   | in the Website
13908
      --------------------------------------+----------------------------
13909
      nRtagId           RTAG_ID             | RTAG_ID
13910
      nPvId             NULL                | PV_ID
13911
      sIgnoreIdList     NULL                | list of dependent PV_ID's
13912
      bDoPatchIgnore    TRUE                | FALSE
13913
      nUserId           NULL                | current user ID
13914
   --------------------------------------------------------------------------- */
13915
 
13916
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
13917
ReleaseLocation VARCHAR2(4000);
13918
ActionTypeId NUMBER;
13919
 
1373 dpurdie 13920
BEGIN
13921
 
3959 dpurdie 13922
   IF (NOT bDoPatchIgnore) THEN
13923
      /* Manual Ignore Warnings - this execution path is the one taken when called from SetIgnoreWarnings() in the Website
13924
      */
13925
      oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
1373 dpurdie 13926
 
13927
 
3959 dpurdie 13928
      /* Log Action */
13929
      -- Get Release Location
13930
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
13931
        FROM PROJECTS proj,
13932
             RELEASE_TAGS rt
13933
       WHERE rt.PROJ_ID = proj.PROJ_ID
13934
         AND rt.RTAG_ID = nRtagId;
1373 dpurdie 13935
 
3959 dpurdie 13936
      -- Get Action Type Id for IGNORE_ON
13937
      SELECT act.ACTTYPE_ID INTO ActionTypeId
13938
        FROM ACTION_TYPE act
13939
       WHERE act.NAME = 'ignore_on';
13940
 
13941
      -- Get Ignored (Current MINUS Old)
13942
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
13943
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
13944
        FROM (
13945
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
13946
                FROM PACKAGE_VERSIONS pv
13947
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
13948
              MINUS
13949
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
13950
                FROM IGNORE_WARNINGS igw
13951
               WHERE igw.RTAG_ID = nRtagId
13952
                 AND igw.PV_ID = nPvId
13953
             ) qry,
13954
             PACKAGE_VERSIONS pv,
13955
             PACKAGES pkg,
13956
             RELEASE_CONTENT rc,
13957
             PACKAGE_VERSIONS rpv
13958
       WHERE pv.PKG_ID = pkg.PKG_ID
13959
         AND rc.RTAG_ID = nRtagId
13960
         AND rc.PV_ID = rpv.PV_ID
13961
         AND rpv.PKG_ID = pv.PKG_ID
13962
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
13963
         AND qry.DPV_ID = pv.PV_ID;
13964
 
13965
 
13966
      -- Get Action Type Id for IGNORE_OFF
13967
      SELECT act.ACTTYPE_ID INTO ActionTypeId
13968
        FROM ACTION_TYPE act
13969
       WHERE act.NAME = 'ignore_off';
13970
 
13971
      -- Get UnIgnored (Old MINUS Current)
13972
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
13973
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
13974
        FROM (
13975
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
13976
                FROM IGNORE_WARNINGS igw
13977
               WHERE igw.RTAG_ID = nRtagId
13978
                 AND igw.PV_ID = nPvId
13979
              MINUS
13980
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
13981
                FROM PACKAGE_VERSIONS pv
13982
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
13983
             ) qry,
13984
             PACKAGE_VERSIONS pv,
13985
             PACKAGES pkg,
13986
             RELEASE_CONTENT rc,
13987
             PACKAGE_VERSIONS rpv
13988
       WHERE pv.PKG_ID = pkg.PKG_ID
13989
         AND rc.RTAG_ID = nRtagId
13990
         AND rc.PV_ID = rpv.PV_ID
13991
         AND rpv.PKG_ID = pv.PKG_ID
13992
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
13993
         AND qry.DPV_ID = pv.PV_ID;
13994
 
13995
 
13996
      -- Delete Current Ignore Warnings
13997
      DELETE
13998
        FROM IGNORE_WARNINGS igw
13999
       WHERE igw.RTAG_ID = nRtagId
14000
         AND igw.PV_ID = nPvId
14001
         AND igw.IS_PATCH_IGNORE IS NULL;
14002
 
14003
 
14004
      IF (oIgnoreIdCollector.COUNT > 0) THEN
14005
         -- Insert Ignore Warnings
14006
         INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
14007
         SELECT nRtagId,
14008
                nPvId,
14009
                pv.PV_ID AS DPV_ID
14010
           FROM PACKAGE_VERSIONS pv
14011
          WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
14012
      END IF;
14013
 
14014
   ELSE
14015
      /* Patch Ignore Warnings - this execution path is the one taken when called from the Rebuild_Environment stored procedure */
14016
 
14017
      -- Delete Current Patch Ignore Warnings
14018
      DELETE
14019
        FROM IGNORE_WARNINGS igw
14020
       WHERE igw.RTAG_ID = nRtagId
14021
         AND igw.IS_PATCH_IGNORE = 'Y';
14022
 
14023
 
14024
      -- Delete Manual Ignores that need to be Patch Ignores
14025
      DELETE
14026
        FROM IGNORE_WARNINGS igw
14027
       WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
14028
             (
14029
              SELECT DISTINCT
14030
                     nRtagId,
14031
                     err.PV_ID,
14032
                     err.ERR_DPV AS DPV_ID
14033
               FROM  (
14034
                      /* Full Release Contents used for reference*/
14035
                      SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
14036
                        FROM release_content rel, package_versions rpv
14037
                       WHERE rel.pv_id = rpv.pv_id
14038
                         AND rtag_id = nRtagId
14039
                     ) frc,
14040
                     (
14041
                      /* DPV_IDs not fount in release*/
14042
                      SELECT dep.pv_id, dep.dpv_id AS err_dpv
14043
                        FROM package_dependencies dep
14044
                       WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14045
                         AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14046
                     ) err,
14047
                     (
14048
                      SELECT DISTINCT pp.PV_ID, dep.DPV_ID
14049
                        FROM PACKAGE_PATCHES pp,
14050
                             PACKAGE_DEPENDENCIES dep,
14051
                             RELEASE_CONTENT rc
14052
                       WHERE rc.RTAG_ID = nRtagId
14053
                         AND rc.PV_ID = pp.PV_ID
14054
                         AND dep.PV_ID = pp.PATCH_ID
14055
                     ) pp,
14056
                     package_versions errpkg,
14057
                     package_versions errpv
14058
               WHERE err.err_dpv = errpv.pv_id
14059
                 AND errpv.pkg_id = frc.pkg_id(+)
14060
                 AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14061
                 AND err.pv_id = errpkg.pv_id
14062
                 AND err.PV_ID = pp.PV_ID
14063
                 AND frc.PV_ID = pp.DPV_ID
14064
             );
14065
 
14066
      /*
14067
      ---------------------------------------------------
14068
      --  Make sure that select statement above and below are same
14069
      ---------------------------------------------------
14070
      */
14071
 
14072
      -- Insert Patch Ignores
14073
      INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
14074
      SELECT DISTINCT
14075
             nRtagId,
14076
             err.PV_ID,
14077
             err.ERR_DPV AS DPV_ID,
14078
             'Y'
14079
        FROM (
14080
              /* Full Release Contents used for reference*/
14081
              SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
14082
                FROM release_content rel, package_versions rpv
14083
               WHERE rel.pv_id = rpv.pv_id
14084
                 AND rtag_id = nRtagId
14085
             ) frc,
14086
             (
14087
               /* DPV_IDs not fount in release*/
14088
               SELECT dep.pv_id, dep.dpv_id AS err_dpv
14089
                 FROM package_dependencies dep
14090
                WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14091
                  AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14092
             ) err,
14093
             (
14094
              SELECT DISTINCT pp.PV_ID, dep.DPV_ID
14095
                FROM PACKAGE_PATCHES pp,
14096
                     PACKAGE_DEPENDENCIES dep,
14097
                     RELEASE_CONTENT rc
14098
               WHERE rc.RTAG_ID = nRtagId
14099
                 AND rc.PV_ID = pp.PV_ID
14100
                 AND dep.PV_ID = pp.PATCH_ID
14101
             ) pp,
14102
             package_versions errpkg,
14103
             package_versions errpv
14104
       WHERE err.err_dpv = errpv.pv_id
14105
         AND errpv.pkg_id = frc.pkg_id(+)
14106
         AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14107
         AND err.pv_id = errpkg.pv_id
14108
         AND err.PV_ID = pp.PV_ID
14109
         AND frc.PV_ID = pp.DPV_ID;
14110
 
14111
    END IF;
14112
 
14113
END Ignore_Dependency_Warnings;
4040 dpurdie 14114
 
1374 dpurdie 14115
/
1373 dpurdie 14116
 
4040 dpurdie 14117
/
14118
--------------------------------------------------------
14119
--  DDL for Procedure INSERT_INTO_PACKAGE_BUILD_INFO
14120
--------------------------------------------------------
14121
set define off;
14122
 
3959 dpurdie 14123
  CREATE OR REPLACE PROCEDURE "INSERT_INTO_PACKAGE_BUILD_INFO" IS
1373 dpurdie 14124
 
14125
/******************************************************************************
3959 dpurdie 14126
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
1373 dpurdie 14127
   PURPOSE:    
14128
 
14129
   REVISIONS:
14130
   Ver        Date        Author           Description
14131
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 14132
   1.0        6/12/2006          1. Created this procedure.
1373 dpurdie 14133
 
14134
   NOTES:
14135
 
14136
   Automatically available Auto Replace Keywords:
3959 dpurdie 14137
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
14138
      Sysdate:         6/12/2006
14139
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
1373 dpurdie 14140
      Username:         (set in TOAD Options, Procedure Editor)
14141
      Table Name:       (set in the "New PL/SQL Object" dialog)
14142
 
14143
******************************************************************************/
14144
 
14145
	CURSOR curInfo IS
3959 dpurdie 14146
    SELECT PV_ID
14147
	FROM PACKAGE_BUILD_ENV
14148
	WHERE BE_ID IN (11, 12);
1373 dpurdie 14149
    recInfo curInfo%ROWTYPE;
14150
 
14151
 
14152
BEGIN
14153
 
14154
	OPEN curInfo;
14155
    FETCH curInfo INTO recInfo;
14156
 
14157
	WHILE curInfo%FOUND
14158
	LOOP
14159
 
3959 dpurdie 14160
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
14161
		VALUES( recInfo.PV_ID, 2, 5);
14162
 
14163
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
14164
 
1373 dpurdie 14165
		FETCH curInfo INTO recInfo;
3959 dpurdie 14166
 
1373 dpurdie 14167
	END LOOP;
14168
 
14169
	CLOSE curInfo;
14170
 
14171
 
14172
 
14173
 
3959 dpurdie 14174
END INSERT_INTO_PACKAGE_BUILD_INFO;
4040 dpurdie 14175
 
1374 dpurdie 14176
/
1373 dpurdie 14177
 
4040 dpurdie 14178
/
14179
--------------------------------------------------------
14180
--  DDL for Procedure INSERT_MULTIPLE_STICKY_NOTES
14181
--------------------------------------------------------
14182
set define off;
14183
 
3959 dpurdie 14184
  CREATE OR REPLACE PROCEDURE "INSERT_MULTIPLE_STICKY_NOTES" IS
1373 dpurdie 14185
 
3959 dpurdie 14186
/******************************************************************************
14187
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
14188
   PURPOSE:    
1373 dpurdie 14189
 
3959 dpurdie 14190
   REVISIONS:
14191
   Ver        Date        Author           Description
14192
   ---------  ----------  ---------------  ------------------------------------
14193
   1.0        6/12/2006          1. Created this procedure.
1373 dpurdie 14194
 
3959 dpurdie 14195
   NOTES:
1373 dpurdie 14196
 
3959 dpurdie 14197
   Automatically available Auto Replace Keywords:
14198
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
14199
      Sysdate:         6/12/2006
14200
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
14201
      Username:         (set in TOAD Options, Procedure Editor)
14202
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 14203
 
3959 dpurdie 14204
******************************************************************************/
1373 dpurdie 14205
 
3959 dpurdie 14206
	CURSOR curInfo IS
14207
    SELECT PV_ID
14208
	FROM PACKAGE_BUILD_ENV
14209
	WHERE BE_ID IN (11, 12);
14210
    recInfo curInfo%ROWTYPE;
14211
 
14212
 
1373 dpurdie 14213
BEGIN
14214
 
3959 dpurdie 14215
	OPEN curInfo;
14216
    FETCH curInfo INTO recInfo;
14217
 
14218
	WHILE curInfo%FOUND
14219
	LOOP
1373 dpurdie 14220
 
3959 dpurdie 14221
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
14222
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
14223
 
14224
		FETCH curInfo INTO recInfo;
14225
 
14226
	END LOOP;
1373 dpurdie 14227
 
3959 dpurdie 14228
	CLOSE curInfo;
1373 dpurdie 14229
 
14230
 
14231
 
14232
 
3959 dpurdie 14233
END INSERT_MULTIPLE_STICKY_NOTES;
4040 dpurdie 14234
 
1374 dpurdie 14235
/
1373 dpurdie 14236
 
4040 dpurdie 14237
/
14238
--------------------------------------------------------
14239
--  DDL for Procedure LEVEL_N_CONFLICTS
14240
--------------------------------------------------------
14241
set define off;
14242
 
3959 dpurdie 14243
  CREATE OR REPLACE PROCEDURE "LEVEL_N_CONFLICTS" (
14244
   nnrtag_id       IN       NUMBER,
14245
   nnsession_num   IN       NUMBER,
14246
   nnrowcnt        OUT      NUMBER,
14247
   nniteration     IN       NUMBER
14248
)
14249
IS
1373 dpurdie 14250
/* ---------------------------------------------------------------------------
3959 dpurdie 14251
    Version: 3.0.1
1373 dpurdie 14252
   --------------------------------------------------------------------------- */
3959 dpurdie 14253
   previteration   NUMBER := nniteration - 1;
1373 dpurdie 14254
BEGIN
3959 dpurdie 14255
   /* ---------  LEVEL 1 CONFILCTS -----------
14256
   || Following states are used:
14257
   || 0 -> NOT FOUND
14258
   || 1 -> MAJOR
14259
   || 2 -> MINOR MINOR
14260
   */
14261
   INSERT INTO temp_env_states
14262
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
14263
                      pv.pv_id, pv.pkg_id, pv.v_ext,
14264
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
14265
                 FROM package_dependencies dep,
14266
                      package_versions dpv,
14267
                      package_versions pv,
14268
                      release_content rel,
14269
                      temp_env_states tes
14270
                WHERE rel.pv_id = dep.pv_id
14271
                  AND rel.rtag_id = nnrtag_id
14272
                  AND dep.pv_id = pv.pv_id
14273
                  AND dep.dpv_id = dpv.pv_id
14274
                  AND dpv.pkg_id = tes.pkg_id
14275
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
14276
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
14277
                  AND tes.session_num = nnsession_num
14278
                  AND tes.level_num = previteration
14279
                  AND (dep.pv_id, dep.dpv_id) IN 
14280
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
14281
                                                 || packages already stored in Temp Table.
14282
                                                 */
14283
                      (
14284
                         SELECT pd.pv_id, pd.dpv_id
14285
                           FROM package_dependencies pd, release_content rc
14286
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
14287
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
14288
                         MINUS
14289
                         SELECT igw.pv_id, igw.dpv_id
14290
                           FROM ignore_warnings igw
14291
                          WHERE igw.rtag_id = nnrtag_id);
1373 dpurdie 14292
 
3959 dpurdie 14293
   nnrowcnt := SQL%ROWCOUNT;
14294
END level_n_conflicts;
4040 dpurdie 14295
 
1374 dpurdie 14296
/
1373 dpurdie 14297
 
4040 dpurdie 14298
/
14299
--------------------------------------------------------
14300
--  DDL for Procedure LEVEL_ONE_CONFLICTS
14301
--------------------------------------------------------
14302
set define off;
14303
 
1373 dpurdie 14304
  CREATE OR REPLACE PROCEDURE "LEVEL_ONE_CONFLICTS" (
14305
   nnrtag_id       IN   NUMBER,
14306
   nnsession_num   IN   NUMBER
14307
)
14308
IS
14309
BEGIN
14310
   /* ---------  LEVEL 1 CONFILCTS -----------
14311
   || Following states are used:
14312
   || 0 -> NOT FOUND
14313
   || 1 -> MAJOR
14314
   || 2 -> MINOR MINOR
14315
   */
14316
   INSERT INTO temp_env_states
14317
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
14318
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
14319
                      DECODE (frc.v_nmm,
14320
                              NULL, 0,
14321
                              errpv.v_nmm, DECODE (frc.v_mm,
14322
                                                   errpv.v_mm, NULL,
14323
                                                   2
14324
                                                  ),
14325
                              1
14326
                             ) AS MESSAGE
14327
                 FROM (
14328
                       /* Full Release Contents used for reference*/
14329
                        SELECT rel.rtag_id, rpv.pv_id, rpv.pkg_id,
14330
                                NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
14331
                                rpv.pkg_version, rpv.v_nmm, rpv.v_mm,
14332
                                (SELECT COUNT(*)
14333
                                   FROM ADVISORY_RIPPLE avr
14334
                                  WHERE avr.rtag_id = rel.rtag_id
14335
                                    AND avr.pv_id = rel.pv_id
14336
                                ) AS IsAvr
14337
                          FROM release_content rel,
14338
                                package_versions rpv
14339
                          WHERE rel.pv_id = rpv.pv_id
14340
                             AND rtag_id = nnrtag_id
14341
                      ) frc,
14342
 
14343
                      (
14344
                       /* DPV_IDs not found in release (excluding those from pegged versions whose dependencies will not
14345
                          necessarily be satisfied in the release) */
14346
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
14347
                         FROM package_dependencies dep,
14348
                              package_versions dep_dpv
14349
                        WHERE dep.dpv_id = dep_dpv.pv_id
14350
                          AND dep.pv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
14351
                          AND NOT dep.pv_id IN (SELECT pegv.pv_id FROM PEGGED_VERSIONS pegv WHERE pegv.rtag_id = nnrtag_id)
14352
                          AND NOT dep.dpv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
14353
                       MINUS
14354
                       /* MINUS Dependencies to be ignored */
14355
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
14356
                         FROM ignore_warnings igw,
14357
                              package_versions igw_dpv
14358
                        WHERE igw.dpv_id = igw_dpv.pv_id
14359
                          AND igw.rtag_id = nnrtag_id
14360
                      ) err,
14361
                      package_versions errpkg,
14362
                      package_versions errpv
14363
                WHERE err.err_dpv = errpv.pv_id
14364
                  AND errpv.pkg_id = frc.pkg_id(+)
14365
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14366
                  AND err.pv_id = errpkg.pv_id
14367
                  AND frc.IsAvr = 0;
14368
END level_one_conflicts;
4040 dpurdie 14369
 
1374 dpurdie 14370
/
1373 dpurdie 14371
 
4040 dpurdie 14372
/
14373
--------------------------------------------------------
14374
--  DDL for Procedure LOCK_PACKAGE
14375
--------------------------------------------------------
14376
set define off;
14377
 
1373 dpurdie 14378
  CREATE OR REPLACE PROCEDURE "LOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14379
											 nUserId IN NUMBER ) IS
14380
/* ---------------------------------------------------------------------------
14381
    Version: 4.0
14382
   --------------------------------------------------------------------------- */
14383
 
14384
BEGIN
14385
 
14386
    -- Lock Package
14387
    UPDATE PACKAGE_VERSIONS pv SET
14388
    	pv.DLOCKED = 'Y'
14389
    WHERE pv.PV_ID = nPvId;
14390
 
14391
    /* LOG ACTION */
14392
   	Log_Action ( nPvId, 'lock_package', nUserId );
14393
 
14394
END Lock_Package;
4040 dpurdie 14395
 
1374 dpurdie 14396
/
1373 dpurdie 14397
 
4040 dpurdie 14398
/
14399
--------------------------------------------------------
14400
--  DDL for Procedure LOG_ACTION
14401
--------------------------------------------------------
14402
set define off;
14403
 
3959 dpurdie 14404
  CREATE OR REPLACE PROCEDURE "LOG_ACTION" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14405
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
14406
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
14407
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
1373 dpurdie 14408
/* ---------------------------------------------------------------------------
14409
    Version: 3.0
14410
   --------------------------------------------------------------------------- */
14411
 
3959 dpurdie 14412
    ActionTypeId NUMBER;
1373 dpurdie 14413
 
14414
BEGIN
14415
 
3959 dpurdie 14416
    -- Get Action Type FK
14417
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14418
      FROM ACTION_TYPE act
14419
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14420
 
14421
 
3959 dpurdie 14422
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
14423
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
1373 dpurdie 14424
 
14425
 
3959 dpurdie 14426
END Log_Action;
4040 dpurdie 14427
 
1374 dpurdie 14428
/
1373 dpurdie 14429
 
4040 dpurdie 14430
/
14431
--------------------------------------------------------
14432
--  DDL for Procedure LOG_ACTION_BULK
14433
--------------------------------------------------------
14434
set define off;
14435
 
3959 dpurdie 14436
  CREATE OR REPLACE PROCEDURE "LOG_ACTION_BULK" ( nPvIdList IN VARCHAR2,
14437
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
14438
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
14439
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
1373 dpurdie 14440
/* ---------------------------------------------------------------------------
3959 dpurdie 14441
    Version: 3.0
1373 dpurdie 14442
   --------------------------------------------------------------------------- */
14443
 
3959 dpurdie 14444
    ActionTypeId NUMBER;
14445
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
1373 dpurdie 14446
 
14447
BEGIN
14448
 
3959 dpurdie 14449
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
1373 dpurdie 14450
 
3959 dpurdie 14451
    -- Get Action Type FK
14452
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14453
      FROM ACTION_TYPE act
14454
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14455
 
3959 dpurdie 14456
    -- Log Action
14457
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
14458
    SELECT nUserId,
14459
    	   ORA_SYSDATETIME,
14460
           pv.PV_ID,
14461
           sAdditionalComments,
14462
           ActionTypeId
14463
      FROM PACKAGE_VERSIONS pv
14464
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
1373 dpurdie 14465
 
14466
 
3959 dpurdie 14467
END Log_Action_Bulk;
4040 dpurdie 14468
 
1374 dpurdie 14469
/
1373 dpurdie 14470
 
4040 dpurdie 14471
/
14472
--------------------------------------------------------
14473
--  DDL for Procedure LOG_DAEMON_ACTION
14474
--------------------------------------------------------
14475
set define off;
14476
 
3959 dpurdie 14477
  CREATE OR REPLACE PROCEDURE "LOG_DAEMON_ACTION" ( nRconId IN NUMBER,
14478
												 enumActionTypeName IN VARCHAR2,
14479
		                                         nUserId IN NUMBER,
14480
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
14481
/* ---------------------------------------------------------------------------
14482
    Version: 3.0
14483
   --------------------------------------------------------------------------- */
1373 dpurdie 14484
 
3959 dpurdie 14485
    ActionTypeId NUMBER;
1373 dpurdie 14486
 
14487
BEGIN
14488
 
3959 dpurdie 14489
    -- Get Action Type FK
14490
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14491
      FROM ACTION_TYPE act
14492
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14493
 
14494
 
3959 dpurdie 14495
    INSERT INTO DAEMON_ACTION_LOG
14496
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
1373 dpurdie 14497
 
14498
 
3959 dpurdie 14499
END Log_Daemon_Action;
4040 dpurdie 14500
 
1374 dpurdie 14501
/
1373 dpurdie 14502
 
4040 dpurdie 14503
/
14504
--------------------------------------------------------
14505
--  DDL for Procedure LOG_PROJECT_ACTION
14506
--------------------------------------------------------
14507
set define off;
14508
 
3959 dpurdie 14509
  CREATE OR REPLACE PROCEDURE "LOG_PROJECT_ACTION" ( nProjId IN NUMBER,
14510
												 enumActionTypeName IN VARCHAR2,
14511
		                                         nUserId IN NUMBER,
14512
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
14513
												 nRtagId IN NUMBER  ) IS
1373 dpurdie 14514
/* ---------------------------------------------------------------------------
3959 dpurdie 14515
    Version: 3.0
1373 dpurdie 14516
   --------------------------------------------------------------------------- */
14517
 
3959 dpurdie 14518
    ActionTypeId NUMBER;
1373 dpurdie 14519
 
14520
BEGIN
14521
 
3959 dpurdie 14522
    -- Get Action Type FK
14523
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14524
      FROM ACTION_TYPE act
14525
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14526
 
14527
 
3959 dpurdie 14528
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
14529
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
1373 dpurdie 14530
 
14531
 
3959 dpurdie 14532
END Log_Project_Action;
4040 dpurdie 14533
 
1374 dpurdie 14534
/
1373 dpurdie 14535
 
4040 dpurdie 14536
/
14537
--------------------------------------------------------
14538
--  DDL for Procedure NEW_ADDITIONAL_NOTE
14539
--------------------------------------------------------
14540
set define off;
14541
 
3959 dpurdie 14542
  CREATE OR REPLACE PROCEDURE "NEW_ADDITIONAL_NOTE" ( pnPv_id IN NUMBER,
14543
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
14544
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
14545
                                                  pnUser_id IN NUMBER,
14546
                                                  outErrCode OUT NUMBER
14547
                                                 ) IS
1373 dpurdie 14548
/* ---------------------------------------------------------------------------
3959 dpurdie 14549
    Version: 3.0.0
1373 dpurdie 14550
   --------------------------------------------------------------------------- */
14551
 
14552
    newID NUMBER;
14553
 
14554
	CURSOR an_duplicate_cur IS
3959 dpurdie 14555
        SELECT note_id
1373 dpurdie 14556
          FROM ADDITIONAL_NOTES
14557
         WHERE pv_id = pnPv_id
14558
           AND note_title = psNote_title;
14559
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
14560
 
14561
BEGIN
14562
	outErrCode := -1;		-- Set default return error code to ERROR state
14563
 
14564
	OPEN an_duplicate_cur;
14565
    FETCH an_duplicate_cur INTO an_duplicate_rec;
14566
 
3959 dpurdie 14567
    IF an_duplicate_cur%NOTFOUND
1373 dpurdie 14568
    THEN
3959 dpurdie 14569
		/* No duplicate titles */
14570
		-- Get new ID --
14571
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
14572
 
14573
		--- Add Additional Note ---
14574
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
14575
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
1373 dpurdie 14576
		outErrCode := 0;		-- Set return to SUCCESS
14577
	END IF;
14578
 
14579
	CLOSE an_duplicate_cur;
3959 dpurdie 14580
END New_Additional_Note;
4040 dpurdie 14581
 
1374 dpurdie 14582
/
1373 dpurdie 14583
 
4040 dpurdie 14584
/
14585
--------------------------------------------------------
14586
--  DDL for Procedure NEW_PACKAGE_NAME
14587
--------------------------------------------------------
14588
set define off;
14589
 
3959 dpurdie 14590
  CREATE OR REPLACE PROCEDURE "NEW_PACKAGE_NAME" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
14591
                                               retPKG_ID OUT NUMBER ) IS
1373 dpurdie 14592
/* ---------------------------------------------------------------------------
3959 dpurdie 14593
    Version: 3.0.0
1373 dpurdie 14594
   --------------------------------------------------------------------------- */
14595
 
3959 dpurdie 14596
    CURSOR packages_cur IS
14597
        SELECT pkg.pkg_id
14598
          FROM packages pkg
14599
         WHERE pkg.pkg_name = SSpkg_name;
14600
    packages_rec packages_cur%ROWTYPE;
1373 dpurdie 14601
 
14602
 
14603
BEGIN
14604
 
3959 dpurdie 14605
    /* ---------------------------------------------------- */
14606
    /* Find if package name exists                          */
14607
    /* ---------------------------------------------------- */
1373 dpurdie 14608
 
3959 dpurdie 14609
    OPEN packages_cur;
14610
    FETCH packages_cur INTO packages_rec;
1373 dpurdie 14611
 
3959 dpurdie 14612
    IF packages_cur%NOTFOUND
14613
    THEN
14614
        -- Create new pkg_name --
14615
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
1373 dpurdie 14616
 
3959 dpurdie 14617
        INSERT INTO packages ( pkg_id, pkg_name )
14618
        VALUES ( retPKG_ID, SSpkg_name );
1373 dpurdie 14619
 
3959 dpurdie 14620
    ELSE
14621
        retPKG_ID := packages_rec.pkg_id;
1373 dpurdie 14622
 
3959 dpurdie 14623
    END IF;
1373 dpurdie 14624
 
14625
 
3959 dpurdie 14626
    CLOSE packages_cur;
1373 dpurdie 14627
 
3959 dpurdie 14628
END New_Package_Name;
4040 dpurdie 14629
 
1374 dpurdie 14630
/
1373 dpurdie 14631
 
4040 dpurdie 14632
/
14633
--------------------------------------------------------
14634
--  DDL for Procedure NEW_PATCH
14635
--------------------------------------------------------
14636
set define off;
14637
 
1373 dpurdie 14638
  CREATE OR REPLACE PROCEDURE "NEW_PATCH" ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
14639
 	   	  		  					  	NNparent_id IN NUMBER,
14640
                                        sPatchIdList IN VARCHAR2,
14641
										NNuser_id IN NUMBER ) IS
14642
/* ---------------------------------------------------------------------------
14643
    Version: 3.5
14644
   --------------------------------------------------------------------------- */
14645
 
14646
    patchPv_id    NUMBER;
14647
	parPkg_id	  NUMBER;
14648
    LastInstallOrder NUMBER;
14649
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
14650
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
14651
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
14652
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
14653
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
14654
 
14655
	CURSOR parent_cur IS
14656
        SELECT pv.*, pkg.pkg_name
14657
          FROM package_versions pv,
14658
		       packages pkg
14659
         WHERE pv.pv_id = NNparent_id
14660
		   AND pv.pkg_id = pkg.pkg_id;
14661
    parent_rec parent_cur%ROWTYPE;
14662
 
14663
    CURSOR patch_cur IS
14664
        SELECT pv.*, pg.pkg_name
14665
          FROM package_versions pv,
14666
		       packages pg
14667
         WHERE pv.pkg_id = parPkg_id
14668
		   AND pv.pkg_version = SSpatch_version
14669
		   AND pv.pkg_id = pg.pkg_id;
14670
    patch_rec patch_cur%ROWTYPE;
14671
 
14672
	CURSOR releases_cur IS
14673
        SELECT rc.pv_id
14674
		  FROM release_content rc
14675
		 WHERE rc.pv_id = patch_rec.pv_id;
14676
    releases_rec releases_cur%ROWTYPE;
14677
 
14678
 
14679
BEGIN
14680
 
14681
	-- Get Last Install Order
14682
    SELECT Count(*) INTO LastInstallOrder
14683
	  FROM PACKAGE_PATCHES pp
14684
	 WHERE pp.PV_ID = NNparent_id;
14685
 
14686
 
14687
    -- Get parent details
14688
	OPEN parent_cur;
14689
    FETCH parent_cur INTO parent_rec;
14690
	parPkg_id := parent_rec.pkg_id;
14691
 
14692
 
14693
	-- Find if patch exists in database
14694
    OPEN patch_cur;
14695
    FETCH patch_cur INTO patch_rec;
14696
 
14697
 
14698
    -- Parent must be official
14699
    IF parent_rec.dlocked = 'Y' THEN
14700
 
14701
	    IF patch_cur%NOTFOUND
14702
	    THEN
14703
        	isPatchDlocked := 'N';
14704
 
14705
	        -- Create new patch version --
14706
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
14707
 
14708
 
14709
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
14710
 
14711
	        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 )
14712
				   VALUES (
14713
						   patchPv_id,
14714
	                       parPkg_id,
14715
	                       SSpatch_version,
14716
	                       isPatchDlocked,
14717
	                       ORA_SYSDATE,
14718
	                       NNuser_id,
14719
	                       ORA_SYSDATETIME,
14720
	                       NNuser_id,
14721
	                       SSV_MM,
14722
	                       SSV_NMM,
14723
	                       SSV_EXT,
14724
	                       parent_rec.src_path,
14725
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
14726
	                       NNuser_id,
14727
						   'Y',
14728
                           patchPv_id,
14729
						   parent_rec.bs_id,
14730
						   parent_rec.is_autobuildable,
14731
						   parent_rec.ripple_field
14732
 
14733
						   );
14734
 
14735
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
14736
		    	   ( SELECT NNparent_id AS pv_id,
14737
				            pv.pv_id AS patch_id,
14738
	                        LastInstallOrder + 1 AS INSTALL_ORDER
14739
				       FROM package_versions pv
14740
					  WHERE pv.pv_id = patchPv_id
14741
					    AND pv.is_patch = 'Y' );
14742
 
14743
	        /* LOG ACTION */
14744
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
14745
        			     'Patch version created: '|| SSpatch_version );
14746
 
14747
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
14748
        			     'New patch created and attached: '|| SSpatch_version );
14749
 
14750
 
14751
	    ELSE
14752
 
14753
		    patchPv_id := patch_rec.pv_id;
14754
	    	isPatchDlocked := patch_rec.dlocked;
14755
 
14756
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
14757
		    OPEN releases_cur;
14758
		    FETCH releases_cur INTO releases_rec;
14759
 
14760
			IF releases_cur%NOTFOUND
14761
	   		THEN
14762
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
14763
				UPDATE package_versions SET
14764
					   is_patch = 'Y'
14765
					   WHERE pv_id = patchPv_id;
14766
 
14767
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
14768
			    	   ( SELECT NNparent_id AS pv_id,
14769
					            pv.pv_id AS patch_id,
14770
	                            LastInstallOrder + 1 AS INSTALL_ORDER
14771
					       FROM package_versions pv
14772
						  WHERE pv.pv_id = patchPv_id
14773
						    AND pv.is_patch = 'Y' );
14774
 
14775
			END IF;
14776
 
14777
			CLOSE releases_cur;
14778
 
14779
            /* LOG ACTION */
14780
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
14781
        			     'Patch version was found and attached: '|| SSpatch_version );
14782
 
14783
	    END IF;
14784
 
14785
 
14786
 
14787
 
14788
    END IF;
14789
 
14790
 
14791
 
14792
    /* Create Patch Dependencies */
14793
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
14794
 
14795
 
14796
    -- Make sure patch is unofficial before altering its dependencies
14797
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
14798
    	-- Delete Existing Dependencies
14799
        DELETE
14800
          FROM PACKAGE_DEPENDENCIES dep
14801
         WHERE dep.PV_ID = patchPv_id;
14802
 
14803
 
14804
        -- Insert new dependencies
14805
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
14806
        SELECT patchPv_id AS PV_ID,
14807
        	   pv.PV_ID AS DPV_ID,
14808
               parPkg_id AS PKG_ID,
14809
               pv.PKG_ID AS DPKG_ID,
14810
               'L' AS BUILD_TYPE
14811
          FROM PACKAGE_VERSIONS pv
14812
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
14813
 
14814
 
14815
    END IF;
14816
 
14817
 
14818
    CLOSE parent_cur;
14819
    CLOSE patch_cur;
14820
END New_Patch;
4040 dpurdie 14821
 
1374 dpurdie 14822
/
1373 dpurdie 14823
 
4040 dpurdie 14824
/
14825
--------------------------------------------------------
14826
--  DDL for Procedure NEW_UNIT_TEST
14827
--------------------------------------------------------
14828
set define off;
14829
 
3959 dpurdie 14830
  CREATE OR REPLACE PROCEDURE "NEW_UNIT_TEST" ( nPv_id IN NUMBER,
14831
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
14832
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
14833
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
14834
                                            sDpkg_path IN VARCHAR2,
14835
                                            sResults IN VARCHAR2,
14836
                                            sCompletion_date IN VARCHAR2,
14837
                                            nCompleted_by IN NUMBER,
14838
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
14839
											enumTEST_TYPE_NOT_DONE IN NUMBER,
14840
											outFileName OUT VARCHAR2
14841
                                           ) IS
14842
/* ---------------------------------------------------------------------------
14843
    Version: 3.2.0
14844
   --------------------------------------------------------------------------- */
1373 dpurdie 14845
 
3959 dpurdie 14846
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 14847
 
3959 dpurdie 14848
    newID NUMBER;
14849
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
14850
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
1373 dpurdie 14851
 
3959 dpurdie 14852
BEGIN
1373 dpurdie 14853
 
3959 dpurdie 14854
	-- Get new ID --
14855
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
1373 dpurdie 14856
 
3959 dpurdie 14857
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
14858
       	ResultsURL := sResults;
14859
       ELSE
14860
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
14861
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
14862
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
14863
           END IF;
14864
       END IF;
1373 dpurdie 14865
 
3959 dpurdie 14866
	-- Remove NOT_DONE entry if exists
14867
	DELETE FROM UNIT_TESTS
14868
	 WHERE pv_id = nPv_id
14869
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
1373 dpurdie 14870
 
3959 dpurdie 14871
	--- Add Additional Note ---
14872
    INSERT INTO UNIT_TESTS ( TEST_ID,
14873
								PV_ID,
14874
								TEST_TYPES_FK,
14875
								TEST_SUMMARY,
14876
								COMPLETION_DATE,
14877
								COMPLETED_BY,
14878
								RESULTS_URL,
14879
								RESULTS_ATTACHMENT_NAME,
14880
								NUMOF_TEST )
14881
    VALUES (
14882
       	newID,
14883
           nPv_id,
14884
           nTestTypeId,
14885
           sTest_summary,
14886
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
14887
           nCompleted_by,
14888
           ResultsURL,
14889
           ResultsAttachment,
14890
		   sNumOfTest );
1373 dpurdie 14891
 
3959 dpurdie 14892
END New_Unit_Test;
4040 dpurdie 14893
 
1374 dpurdie 14894
/
1373 dpurdie 14895
 
1374 dpurdie 14896
/
4040 dpurdie 14897
--------------------------------------------------------
14898
--  DDL for Procedure OLE
14899
--------------------------------------------------------
14900
set define off;
1373 dpurdie 14901
 
3959 dpurdie 14902
  CREATE OR REPLACE PROCEDURE "OLE" 
14903
IS retval VARCHAR2(40);   
14904
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
14905
DBMS_OUTPUT.PUT_LINE(retval);
4040 dpurdie 14906
 
3959 dpurdie 14907
/
1373 dpurdie 14908
 
4040 dpurdie 14909
/
14910
--------------------------------------------------------
14911
--  DDL for Procedure PAOLO_BUILD_TREE
14912
--------------------------------------------------------
14913
set define off;
14914
 
3959 dpurdie 14915
  CREATE OR REPLACE PROCEDURE "PAOLO_BUILD_TREE" ( nRtag_id IN NUMBER ) IS
1373 dpurdie 14916
 
3959 dpurdie 14917
    sessionNumber NUMBER := 0;
14918
    iteration NUMBER := 1; 
14919
    rowCnt NUMBER := 0;
14920
    maxIterations 	NUMBER := 50;
14921
 
1373 dpurdie 14922
BEGIN
3959 dpurdie 14923
 
14924
 
14925
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
14926
    SELECT sessionNumber, iteration, rc.PV_ID
14927
      FROM RELEASE_CONTENT rc
14928
     WHERE rc.RTAG_ID = nRtag_id;
14929
 
14930
    iteration := iteration + 1;
14931
    LOOP
14932
 
14933
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
14934
		SELECT sessionNumber,     
14935
               iteration,
14936
               dep.DPV_ID
14937
          FROM TEMP_TREE_BROWSE ttb,
14938
               PACKAGE_DEPENDENCIES dep
14939
         WHERE dep.PV_ID = ttb.PV_ID 
14940
           AND ttb.LEVEL_NUM = iteration - 1 
14941
 
14942
         MINUS  
14943
 
14944
        SELECT sessionNumber, iteration, ttb.PV_ID
14945
          FROM TEMP_TREE_BROWSE ttb;   
14946
 
14947
 
14948
 
14949
 
14950
		rowCnt := SQL%ROWCOUNT;
14951
		IF rowCnt > 0 THEN
14952
           iteration := iteration + 1;
14953
		END IF;
14954
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
14955
    END LOOP; 
14956
 
14957
END PAOLO_Build_Tree;
4040 dpurdie 14958
 
1374 dpurdie 14959
/
1373 dpurdie 14960
 
4040 dpurdie 14961
/
14962
--------------------------------------------------------
14963
--  DDL for Procedure REBUILD_ENVIRONMENT
14964
--------------------------------------------------------
14965
set define off;
14966
 
1373 dpurdie 14967
  CREATE OR REPLACE PROCEDURE "REBUILD_ENVIRONMENT" ( NNrtag_id IN NUMBER ) IS
14968
 
14969
/* ---------------------------------------------------------------------------
14970
    Version: 3.3
14971
   --------------------------------------------------------------------------- */
14972
    rowCnt NUMBER := 0;
14973
    iteration NUMBER := 2;          -- Iterations counter
14974
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
14975
                                    -- This will prevent infinite loops if cyrcular dependencies are found
14976
    sessionNum NUMBER;
14977
BEGIN
14978
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
14979
 
14980
 
14981
    -- Redo Patch Ignore warnings
14982
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
14983
 
14984
 
14985
    Level_One_Conflicts ( NNrtag_id, sessionNum );
14986
 
14987
    LOOP
14988
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
14989
        iteration := iteration + 1;
14990
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
14991
    END LOOP;
14992
 
14993
    Update_Package_States ( NNrtag_id, sessionNum );
14994
 
14995
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
14996
 
14997
    -- Flag Packages with New Patches Available
14998
    Check_New_Patches ( NNrtag_id );
14999
 
15000
	Clean_Do_Not_Ripple( NNrtag_id );
15001
 
15002
 
15003
	/* Circular Dependency Flag */
15004
    /*
15005
	IF iteration > maxIterations
15006
	THEN
15007
		UPDATE release_tags SET
15008
		   	   circular_dependency = 'Y'
15009
		 WHERE rtag_id = NNrtag_id;
15010
	ELSE
15011
		UPDATE release_tags SET
15012
		   	   circular_dependency = NULL
15013
		 WHERE rtag_id = NNrtag_id;
15014
	END IF;
15015
    */
15016
END Rebuild_Environment;
4040 dpurdie 15017
 
1374 dpurdie 15018
/
1373 dpurdie 15019
 
4040 dpurdie 15020
/
15021
--------------------------------------------------------
15022
--  DDL for Procedure RELEASE_MANAGER_MAILOUT
15023
--------------------------------------------------------
15024
set define off;
15025
 
3959 dpurdie 15026
  CREATE OR REPLACE PROCEDURE "RELEASE_MANAGER_MAILOUT" (
15027
  sender      IN VARCHAR2,
15028
  recipient   IN VARCHAR2,
15029
  ccrecipient IN VARCHAR2,
15030
  subject     IN VARCHAR2,
15031
  message     IN VARCHAR2
15032
  ) IS
15033
 
15034
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
15035
  connection utl_smtp.connection;
15036
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
15037
  header VARCHAR2(1000);
15038
 
15039
BEGIN
15040
 
15041
  --
15042
  -- Start the connection.
15043
  --
15044
  connection := utl_smtp.open_connection(mailhost,25);
15045
 
15046
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
15047
     'From: '||sender||''||crlf||
15048
  'Subject: '||subject||crlf||
15049
       'To: '||recipient||crlf||
15050
       'CC: '||ccrecipient;
15051
 
15052
  --
15053
  -- Handshake with the SMTP server
15054
  --
15055
  utl_smtp.helo(connection, mailhost);
15056
  utl_smtp.mail(connection, sender);
15057
  utl_smtp.rcpt(connection, recipient);
15058
  utl_smtp.rcpt(connection, ccrecipient);
15059
  utl_smtp.open_data(connection);
15060
  --
15061
  -- Write the header
15062
  --
15063
  utl_smtp.write_data(connection, header);
15064
  --
15065
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
15066
  --
15067
  utl_smtp.write_data(connection, crlf ||message);
15068
  utl_smtp.close_data(connection);
15069
  utl_smtp.quit(connection);
15070
 
15071
EXCEPTION
15072
  WHEN UTL_SMTP.INVALID_OPERATION THEN
15073
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
15074
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
15075
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
15076
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
15077
    dbms_output.put_line(' Errors in code for SMTP transaction.');
15078
 
15079
END RELEASE_MANAGER_MAILOUT;
4040 dpurdie 15080
 
3959 dpurdie 15081
/
15082
 
4040 dpurdie 15083
/
15084
--------------------------------------------------------
15085
--  DDL for Procedure REMOVE_COMPONENTS
15086
--------------------------------------------------------
15087
set define off;
15088
 
3959 dpurdie 15089
  CREATE OR REPLACE PROCEDURE "REMOVE_COMPONENTS" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
15090
/* ---------------------------------------------------------------------------
15091
    Version: 3.0.0
15092
   --------------------------------------------------------------------------- */
15093
 
15094
 
15095
BEGIN
15096
 
15097
	 --- Delete From RELEASE_COMPONENTS
15098
	 DELETE FROM RELEASE_COMPONENTS
15099
	 WHERE PV_ID = nPvId;
15100
 
15101
END Remove_Components;
4040 dpurdie 15102
 
3959 dpurdie 15103
/
15104
 
4040 dpurdie 15105
/
15106
--------------------------------------------------------
15107
--  DDL for Procedure REMOVE_DOCUMENT
15108
--------------------------------------------------------
15109
set define off;
15110
 
3959 dpurdie 15111
  CREATE OR REPLACE PROCEDURE "REMOVE_DOCUMENT" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15112
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
15113
                                              nUserId IN NUMBER ) IS
15114
/* ---------------------------------------------------------------------------
15115
    Version: 3.0
15116
   --------------------------------------------------------------------------- */
15117
 
15118
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
15119
 
15120
BEGIN
15121
 
15122
	-- Get Doc Num
15123
    SELECT pd.DOC_NUM INTO DocNumber
15124
      FROM PACKAGE_DOCUMENTS pd
15125
     WHERE pd.PV_ID = nPvId
15126
       AND pd.DOC_ID = nDocId;
15127
 
15128
 
15129
	-- Delete Document
15130
    DELETE
15131
      FROM PACKAGE_DOCUMENTS pd
15132
     WHERE pd.PV_ID = nPvId
15133
       AND pd.DOC_ID = nDocId;
15134
 
15135
 
15136
    /* LOG ACTION */
15137
   	Log_Action ( nPvId, 'document_remove', nUserId,
15138
   			     'Document number: '|| DocNumber );
15139
 
15140
 
15141
END Remove_Document;
4040 dpurdie 15142
 
3959 dpurdie 15143
/
15144
 
4040 dpurdie 15145
/
15146
--------------------------------------------------------
15147
--  DDL for Procedure REMOVE_PACKAGE_INTEREST
15148
--------------------------------------------------------
15149
set define off;
15150
 
3959 dpurdie 15151
  CREATE OR REPLACE PROCEDURE "REMOVE_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
15152
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
15153
												  	nUserId IN NUMBER
15154
	   	  		  									) IS
15155
 
1373 dpurdie 15156
/******************************************************************************
3959 dpurdie 15157
   NAME:       REMOVE_PACKAGE_INTEREST
15158
   PURPOSE:    To remove interest in a given package per project
1373 dpurdie 15159
 
15160
   REVISIONS:
15161
   Ver        Date        Author           Description
15162
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 15163
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
1373 dpurdie 15164
 
15165
   NOTES:
15166
 
15167
   Automatically available Auto Replace Keywords:
3959 dpurdie 15168
      Object Name:     REMOVE_PACKAGE_INTEREST
15169
      Sysdate:         12/05/2006
15170
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
1373 dpurdie 15171
      Username:         (set in TOAD Options, Procedure Editor)
15172
      Table Name:       (set in the "New PL/SQL Object" dialog)
15173
 
15174
******************************************************************************/
15175
BEGIN
15176
 
3959 dpurdie 15177
	 --Delete from PACKAGE_INTEREST
15178
	 DELETE FROM PACKAGE_INTEREST
15179
	 WHERE PROJ_ID = nProjId
15180
	 AND PKG_ID = nPkgId
15181
	 AND USER_ID = nUserId;
15182
 
15183
END REMOVE_PACKAGE_INTEREST;
4040 dpurdie 15184
 
1374 dpurdie 15185
/
1373 dpurdie 15186
 
4040 dpurdie 15187
/
15188
--------------------------------------------------------
15189
--  DDL for Procedure REMOVE_PATCH
15190
--------------------------------------------------------
15191
set define off;
15192
 
3959 dpurdie 15193
  CREATE OR REPLACE PROCEDURE "REMOVE_PATCH" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
15194
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
15195
                                           nUserId IN NUMBER ) IS
1373 dpurdie 15196
/* ---------------------------------------------------------------------------
3959 dpurdie 15197
    Version: 4.0
1373 dpurdie 15198
   --------------------------------------------------------------------------- */
15199
 
3959 dpurdie 15200
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
1373 dpurdie 15201
 
3959 dpurdie 15202
CURSOR curPatch IS
15203
	SELECT pp.PV_ID,
15204
		   pp.PATCH_ID,
15205
	       ROWNUM AS NEW_INSTALL_ORDER
15206
	  FROM PACKAGE_PATCHES pp
15207
	 WHERE pp.PV_ID = nPvId
15208
	ORDER BY pp.INSTALL_ORDER;
15209
recPatch curPatch%ROWTYPE;
15210
 
1373 dpurdie 15211
BEGIN
15212
 
3959 dpurdie 15213
	 -- Delete Patch
15214
     DELETE
15215
       FROM PACKAGE_PATCHES pp
15216
      WHERE pp.PV_ID = nPvId
15217
        AND pp.PATCH_ID = nPatchId;
1373 dpurdie 15218
 
15219
 
3959 dpurdie 15220
	-- Redo Install Order
15221
    OPEN curPatch;
15222
	FETCH curPatch INTO recPatch;
15223
 
15224
	WHILE curPatch%FOUND
15225
	LOOP
15226
 
15227
		UPDATE PACKAGE_PATCHES pp SET
15228
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
15229
		WHERE pp.PV_ID = nPvId
15230
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
15231
 
15232
		FETCH curPatch INTO recPatch;
15233
	END LOOP;
15234
 
15235
	CLOSE curPatch;
15236
 
15237
 
15238
 
15239
 
15240
    /* LOG ACTION */
15241
    SELECT pv.PKG_VERSION INTO PatchVersion
1373 dpurdie 15242
      FROM PACKAGE_VERSIONS pv
3959 dpurdie 15243
     WHERE pv.PV_ID = nPatchId;
1373 dpurdie 15244
 
3959 dpurdie 15245
   	Log_Action ( nPvId, 'patch_remove', nUserId,
15246
   			     'Version: '|| PatchVersion );
1373 dpurdie 15247
 
3959 dpurdie 15248
END Remove_Patch;
4040 dpurdie 15249
 
1374 dpurdie 15250
/
1373 dpurdie 15251
 
4040 dpurdie 15252
/
15253
--------------------------------------------------------
15254
--  DDL for Procedure REMOVE_PROJECT_VIEW_OWNER
15255
--------------------------------------------------------
15256
set define off;
15257
 
3959 dpurdie 15258
  CREATE OR REPLACE PROCEDURE "REMOVE_PROJECT_VIEW_OWNER" (nProjId IN NUMBER,
15259
	   	  		  						 			  nViewId IN NUMBER,
15260
										 			  sUserIdList IN VARCHAR2,
15261
										 			  nUserId IN NUMBER ) IS
1373 dpurdie 15262
 
3959 dpurdie 15263
GroupId NUMBER;													  
15264
 
15265
 
15266
 
1373 dpurdie 15267
/******************************************************************************
3959 dpurdie 15268
   NAME:       UPDATE_VIEW
15269
   PURPOSE:    
1373 dpurdie 15270
 
15271
   REVISIONS:
3959 dpurdie 15272
   Ver        Date        Author           		Description
1373 dpurdie 15273
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 15274
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
1373 dpurdie 15275
 
15276
   NOTES:
15277
 
15278
   Automatically available Auto Replace Keywords:
3959 dpurdie 15279
      Object Name:     UPDATE_VIEW
15280
      Sysdate:         10/04/2006
15281
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
1373 dpurdie 15282
      Username:         (set in TOAD Options, Procedure Editor)
15283
      Table Name:       (set in the "New PL/SQL Object" dialog)
15284
 
15285
******************************************************************************/
15286
 
15287
BEGIN
3959 dpurdie 15288
	 SELECT GROUP_EMAIL_ID into GroupId
15289
	 FROM AUTOBUILD_FAILURE
15290
	 WHERE PROJ_ID = nProjId
15291
	 AND VIEW_ID = nViewId;
15292
 
15293
	 DELETE FROM MEMBERS_GROUP
15294
	 WHERE GROUP_EMAIL_ID = GroupId
15295
	 AND USER_ID IN (
15296
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
15297
	 );
15298
 
1373 dpurdie 15299
 
3959 dpurdie 15300
 
15301
END REMOVE_PROJECT_VIEW_OWNER;
4040 dpurdie 15302
 
3959 dpurdie 15303
/
1373 dpurdie 15304
 
4040 dpurdie 15305
/
15306
--------------------------------------------------------
15307
--  DDL for Procedure REMOVE_RELEASE_CONTENT
15308
--------------------------------------------------------
15309
set define off;
15310
 
3959 dpurdie 15311
  CREATE OR REPLACE PROCEDURE "REMOVE_RELEASE_CONTENT" ( sPvIdList IN VARCHAR2,
15312
													 sNotPvIdList IN VARCHAR2,
15313
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
15314
/* ---------------------------------------------------------------------------
15315
    Version: 3.0
15316
   --------------------------------------------------------------------------- */
1373 dpurdie 15317
 
3959 dpurdie 15318
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
15319
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
1373 dpurdie 15320
 
3959 dpurdie 15321
BEGIN
15322
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
15323
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
15324
 
15325
    -- Delete From Release Content
15326
    DELETE
15327
      FROM RELEASE_CONTENT
15328
	 WHERE rtag_id = nRTagId
15329
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
15330
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
15331
 
15332
 
15333
 
15334
END Remove_Release_Content;
4040 dpurdie 15335
 
1374 dpurdie 15336
/
3959 dpurdie 15337
 
4040 dpurdie 15338
/
15339
--------------------------------------------------------
15340
--  DDL for Procedure REMOVE_RUNTIME
15341
--------------------------------------------------------
15342
set define off;
15343
 
3959 dpurdie 15344
  CREATE OR REPLACE PROCEDURE "REMOVE_RUNTIME" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15345
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
15346
                                             nUserId IN NUMBER ) IS
15347
/* ---------------------------------------------------------------------------
15348
    Version: 3.0
15349
   --------------------------------------------------------------------------- */
15350
 
15351
   RuntimeDependency VARCHAR2(4000);
15352
 
15353
BEGIN
15354
 
15355
	-- Get Runtime dependency
15356
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
15357
	  FROM RUNTIME_DEPENDENCIES rtd,
15358
	  	   PACKAGES pkg,
15359
	       PACKAGE_VERSIONS pv
15360
	 WHERE rtd.PV_ID = nPvId
15361
	   AND pv.PKG_ID = pkg.PKG_ID
15362
	   AND rtd.RTD_ID = pv.PV_ID
15363
	   AND rtd.RTD_ID = nRuntimeId;
15364
 
15365
 
15366
	-- Delete Document
15367
    DELETE
15368
      FROM RUNTIME_DEPENDENCIES rtd
15369
     WHERE rtd.PV_ID = nPvId
15370
       AND rtd.RTD_ID = nRuntimeId;
15371
 
15372
 
15373
    /* LOG ACTION */
15374
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
15375
   			     'Runtime package: '|| RuntimeDependency );
15376
 
15377
 
15378
END Remove_Runtime;
4040 dpurdie 15379
 
3959 dpurdie 15380
/
15381
 
4040 dpurdie 15382
/
15383
--------------------------------------------------------
15384
--  DDL for Procedure RENAME_PACKAGE_VERSION
15385
--------------------------------------------------------
15386
set define off;
15387
 
3959 dpurdie 15388
  CREATE OR REPLACE PROCEDURE "RENAME_PACKAGE_VERSION" ( NNpv_id IN NUMBER,
4211 dpurdie 15389
                                  SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15390
                                  cBuildType IN CHAR,
15391
                                  cChangeType IN CHAR,
15392
                                  NNuser_id IN NUMBER,
15393
                                  errMessage OUT VARCHAR2 ) IS
3959 dpurdie 15394
/* ---------------------------------------------------------------------------
15395
    Version: 3.2
15396
   --------------------------------------------------------------------------- */
15397
 
15398
    sPackageVersion VARCHAR2(4000);
4211 dpurdie 15399
    sLabel VARCHAR2(4000) := NULL;
15400
    sChangeType VARCHAR2(100) := NULL;
15401
    uChangeType CHAR := cChangeType;
3959 dpurdie 15402
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
15403
 
15404
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
15405
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
15406
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
15407
 
15408
    CURSOR package_versions_cur IS
15409
        SELECT pv_id
4211 dpurdie 15410
          FROM package_versions
15411
         WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
15412
           AND pkg_version = SSpkg_version;
3959 dpurdie 15413
    package_versions_rec package_versions_cur%ROWTYPE;
15414
 
15415
 
15416
BEGIN
15417
 
15418
    /* ---------------------------------------------------- */
15419
    /* Find if package_version exists                       */
15420
    /* ---------------------------------------------------- */
15421
 
4211 dpurdie 15422
    errMessage := NULL;
3959 dpurdie 15423
 
4211 dpurdie 15424
    -- Get previous version
15425
    SELECT pv.PKG_VERSION INTO OldPkgVersion
3959 dpurdie 15426
      FROM PACKAGE_VERSIONS pv
15427
     WHERE pv.PV_ID = NNpv_id;
15428
 
4211 dpurdie 15429
    sPackageVersion := SSpkg_version;
3959 dpurdie 15430
 
4211 dpurdie 15431
    IF OldPkgVersion != sPackageVersion THEN
3959 dpurdie 15432
 
4211 dpurdie 15433
        OPEN package_versions_cur;
15434
        FETCH package_versions_cur INTO package_versions_rec;
3959 dpurdie 15435
 
4211 dpurdie 15436
        IF package_versions_cur%NOTFOUND
15437
        THEN
3959 dpurdie 15438
 
4211 dpurdie 15439
            -- Split current version in parts
15440
            Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
3959 dpurdie 15441
 
15442
 
4211 dpurdie 15443
                -- Automated built config
15444
                IF ( cBuildType = 'M' ) THEN
15445
                    uChangeType := 'F';
15446
                END IF;  
15447
 
15448
                -- Automated version numbering
15449
                -- Make sure that version is still unique
15450
                IF (uChangeType != 'F') THEN
15451
                    sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;
15452
                END IF;
3959 dpurdie 15453
 
4211 dpurdie 15454
                -- Packge version not found, hence rename it.
15455
                UPDATE package_versions
15456
                   SET pkg_version = sPackageVersion,
15457
                       v_mm = SSV_MM,
15458
                       v_nmm = SSV_NMM,
15459
                       v_ext = SSV_EXT,
15460
                       modified_stamp = ORA_SYSDATETIME,
15461
                       modifier_id = NNuser_id,
15462
                       build_type = cBuildType,
15463
                       change_type = uChangeType,
15464
                       pkg_label = NULL
15465
                 WHERE pv_id = NNpv_id;
15466
 
15467
                sLabel := GET_AUTOMATED_LABEL( NNpv_id );
15468
                UPDATE PACKAGE_VERSIONS pv SET
15469
                    pv.PKG_LABEL = sLabel
15470
                WHERE pv_id = NNpv_id;
3959 dpurdie 15471
 
15472
 
4211 dpurdie 15473
              /* LOG ACTION */
15474
              IF (cChangeType = 'F') THEN
15475
                  Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| sPackageVersion );
15476
              ELSE 
15477
 
15478
                  IF cChangeType = 'M' THEN
15479
                    sChangeType := 'Major Change';
15480
                  ELSIF cChangeType = 'N' THEN 
15481
                    sChangeType := 'Minor Change';
15482
                  ELSIF cChangeType = 'P' THEN 
15483
                    sChangeType := 'Patch Change';
15484
                  ELSE
15485
                    sChangeType := 'Unknown Change';
15486
                  END IF;
3959 dpurdie 15487
 
4211 dpurdie 15488
                  Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| sPackageVersion || ',' || sChangeType );
15489
              END IF;
3959 dpurdie 15490
 
4211 dpurdie 15491
        ELSE
15492
            -- Package version exists. Cannot proceed.
15493
            errMessage := 'enum_MSG_VERSION_EXISTS';
3959 dpurdie 15494
 
4211 dpurdie 15495
        END IF;
3959 dpurdie 15496
 
4211 dpurdie 15497
        CLOSE package_versions_cur;
3959 dpurdie 15498
 
4211 dpurdie 15499
    END IF;
3959 dpurdie 15500
 
15501
END Rename_Package_Version;
4040 dpurdie 15502
 
3959 dpurdie 15503
/
15504
 
4040 dpurdie 15505
/
15506
--------------------------------------------------------
15507
--  DDL for Procedure RESET_IGNORE_WARNINGS
15508
--------------------------------------------------------
15509
set define off;
15510
 
3959 dpurdie 15511
  CREATE OR REPLACE PROCEDURE "RESET_IGNORE_WARNINGS" ( sPvIdList IN VARCHAR2,
15512
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
15513
/* ---------------------------------------------------------------------------
15514
    Version: 5.0
15515
   --------------------------------------------------------------------------- */
15516
 
15517
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
15518
 
15519
BEGIN
15520
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
15521
 
15522
    -- Remove Ignore Warnings
15523
     DELETE
15524
       FROM ignore_warnings
15525
	  WHERE (rtag_id, pv_id, dpv_id) IN
15526
	     (
15527
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
15528
	        FROM ignore_warnings igw,
15529
	             package_versions dpv,
15530
	             package_versions pv
15531
	       WHERE igw.dpv_id = dpv.pv_id
15532
	         AND igw.rtag_id = nRTagId
15533
	         AND dpv.pkg_id = pv.pkg_id
15534
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
15535
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
15536
         );
15537
 
15538
END Reset_Ignore_Warnings;
4040 dpurdie 15539
 
3959 dpurdie 15540
/
15541
 
4040 dpurdie 15542
/
15543
--------------------------------------------------------
15544
--  DDL for Procedure RIPPLE_PACKAGE
15545
--------------------------------------------------------
15546
set define off;
15547
 
3959 dpurdie 15548
  CREATE OR REPLACE PROCEDURE "RIPPLE_PACKAGE" (
15549
        sPvIdList IN VARCHAR2,
15550
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
15551
        nUserId IN NUMBER
15552
    ) IS
15553
/* ---------------------------------------------------------------------------
15554
    Version: 4.1
15555
   --------------------------------------------------------------------------- */
15556
 
15557
BEGIN
15558
 
15559
    IF (sPvIdList IS NULL) THEN
15560
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
15561
    END IF;
15562
 
15563
    -- Ripple Package
15564
    DELETE FROM DO_NOT_RIPPLE
15565
    WHERE RTAG_ID = nRtagId
15566
    AND PV_ID IN (
15567
        SELECT *
15568
        FROM THE (
15569
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
15570
            AS RELMGR_NUMBER_TAB_t )
15571
            FROM DUAL
15572
        )
15573
    );
15574
 
15575
    /* LOG ACTION */
15576
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
15577
 
15578
END Ripple_Package;
4040 dpurdie 15579
 
3959 dpurdie 15580
/
15581
 
4040 dpurdie 15582
/
15583
--------------------------------------------------------
15584
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS
15585
--------------------------------------------------------
15586
set define off;
15587
 
15588
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
3959 dpurdie 15589
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15590
                                                          NNuser_id IN NUMBER,
15591
                                                          retPV_ID OUT NUMBER,
15592
                                                          nCloneFromPvId IN NUMBER DEFAULT NULL,
15593
                                                          nBuildType IN CHAR DEFAULT 'M',
15594
                                                          nChangeType IN CHAR DEFAULT 'F') IS
15595
/* ---------------------------------------------------------------------------
15596
    Version: 4.0
15597
   --------------------------------------------------------------------------- */
15598
 
15599
    parPkg_id   NUMBER;
15600
    parPv_id    NUMBER;
15601
    cloneFrom_pv_id NUMBER;
15602
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
15603
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
15604
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
15605
    spackageversion VARCHAR2 (4000);
4211 dpurdie 15606
    slabel VARCHAR2 (4000) := NULL;
3959 dpurdie 15607
 
15608
    CURSOR packages_cur IS
15609
        SELECT pkg_id FROM PACKAGES
15610
        WHERE pkg_name = SSpkg_name;
15611
    packages_rec packages_cur%ROWTYPE;
15612
 
15613
    CURSOR package_versions_cur IS
15614
        SELECT pv_id FROM PACKAGE_VERSIONS
15615
        WHERE pkg_id = parPkg_id
15616
        AND pkg_version = SSpkg_version;
15617
    package_versions_rec package_versions_cur%ROWTYPE;
15618
 
15619
    CURSOR clone_package_versions_cur IS
15620
        SELECT MAX(pv_id) AS pv_id
15621
          FROM PACKAGE_VERSIONS
15622
         WHERE pkg_id = parPkg_id
15623
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
15624
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
15625
 
15626
BEGIN
15627
    /* -------------------------------------------- */
15628
    /* Find if pkg_name exists and seed if required */
15629
    /* -------------------------------------------- */
15630
    OPEN packages_cur;
15631
    FETCH packages_cur INTO packages_rec;
15632
 
15633
    IF packages_cur%NOTFOUND
15634
    THEN
15635
        /* INSERT into packages table */
15636
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
15637
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
15638
 
15639
    ELSE
15640
        parPkg_id := packages_rec.pkg_id;
15641
 
15642
    END IF;
15643
 
15644
    CLOSE packages_cur;
15645
 
15646
 
15647
    /* ---------------------------------------------------- */
15648
    /* Find if package_version exists and seed if required  */
15649
    /* ---------------------------------------------------- */
15650
    OPEN package_versions_cur;
15651
    FETCH package_versions_cur INTO package_versions_rec;
15652
 
15653
    IF package_versions_cur%NOTFOUND
15654
    THEN
15655
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
15656
 
15657
        /* Generate automated version Number */
15658
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
15659
        spackageversion := SSpkg_version;
15660
 
4211 dpurdie 15661
        IF ( nChangeType <> 'F' )
3959 dpurdie 15662
        THEN
15663
            spackageversion := '(' || parPv_id || ')' || SSV_EXT;
15664
        END If;
15665
 
15666
        /* LOG ACTION */
15667
        Log_Action ( parPv_id, 'new_version', NNuser_id,
15668
                     'New package version: '|| spackageversion );
15669
 
15670
 
15671
        /* Find similar pkg_name + ext to clone from */
15672
        OPEN clone_package_versions_cur;
15673
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
15674
 
15675
 
15676
        IF NOT clone_package_versions_rec.pv_id IS NULL
15677
        THEN
15678
            /* CLONE details from similar version  OR  from nCloneFromPvId */
15679
            IF ( NOT nCloneFromPvId IS NULL) THEN
15680
                cloneFrom_pv_id := nCloneFromPvId;
15681
            ELSE
15682
                cloneFrom_pv_id := clone_package_versions_rec.pv_id;
15683
            END IF;
15684
 
15685
            -- Clone Package Version Details --
15686
            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,
15687
                                           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  )
15688
                SELECT parPv_id         AS pv_id,
15689
                       parPkg_id        AS pkg_id,
15690
                       spackageversion  AS pkg_version,
15691
                       'N'              AS dlocked,
15692
                       Ora_Sysdate      AS created_stamp,
15693
                       NNuser_id        AS creator_id,
15694
                       Ora_Sysdatetime  AS modified_stamp,
15695
                       NNuser_id        AS modifier_id,
15696
                       SSV_MM           AS V_MM,
15697
                       SSV_NMM          AS V_NMM,
15698
                       SSV_EXT          AS V_EXT,
15699
                       pv.src_path,
15700
                       pv.pv_description,
15701
                       pv.PV_OVERVIEW,
15702
                       cloneFrom_pv_id  AS LAST_PV_ID,
15703
                       pv.owner_id,
15704
                       nBuildType       AS BUILD_TYPE,
15705
                       pv.IS_BUILD_ENV_REQUIRED,
15706
                       pv.BS_ID,
15707
                       pv.is_autobuildable,
15708
                       pv.IS_DEPLOYABLE, 
15709
                       pv.ripple_field,
15710
                       nChangeType       AS change_type
15711
                  FROM PACKAGE_VERSIONS pv
15712
                 WHERE pv.pv_id = cloneFrom_pv_id;
15713
 
15714
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
15715
 
15716
        ELSE
15717
            /* BRAND NEW version + ext */
15718
            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 )
15719
            VALUES (
15720
                    parPv_id,
15721
                    parPkg_id,
15722
                    spackageversion,
15723
                    'N',
15724
                    Ora_Sysdate,
15725
                    NNuser_id,
15726
                    Ora_Sysdatetime,
15727
                    NNuser_id,
15728
                    SSV_MM,
15729
                    SSV_NMM,
15730
                    SSV_EXT,
15731
                    NNuser_id,
15732
                    parPv_id,
15733
                    nBuildType,
15734
                    'b',
15735
                    nChangeType
15736
                   );
15737
 
15738
        END IF;
15739
 
4211 dpurdie 15740
        /* Insert initial package label */
15741
        slabel := get_automated_label (parPv_id);
15742
        UPDATE package_versions pv
15743
        SET pv.pkg_label = slabel
15744
        WHERE pv.pv_id = parPv_id;
15745
 
3959 dpurdie 15746
        CLOSE clone_package_versions_cur;
15747
        retPV_ID := parPv_id;
15748
 
15749
    ELSE
15750
        retPV_ID := package_versions_rec.pv_id;
15751
 
15752
    END IF;
15753
 
15754
    CLOSE package_versions_cur;
15755
 
15756
END Seed_Package_Names_Versions;
4040 dpurdie 15757
 
3959 dpurdie 15758
/
15759
 
4040 dpurdie 15760
/
15761
--------------------------------------------------------
15762
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS2
15763
--------------------------------------------------------
15764
set define off;
1373 dpurdie 15765
 
15766
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS2" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
15767
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15768
                                                          NNuser_id IN NUMBER,
15769
                                                          retPV_ID OUT NUMBER,
15770
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
15771
/* ---------------------------------------------------------------------------
15772
    Version: 4.0
15773
   --------------------------------------------------------------------------- */
15774
 
15775
    parPkg_id   NUMBER;
15776
    parPv_id    NUMBER;
15777
    cloneFrom_pv_id NUMBER;
15778
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
15779
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
15780
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
15781
 
15782
    CURSOR packages_cur IS
15783
        SELECT pkg_id FROM PACKAGES
15784
        WHERE pkg_name = SSpkg_name;
15785
    packages_rec packages_cur%ROWTYPE;
15786
 
15787
    CURSOR package_versions_cur IS
15788
        SELECT pv_id FROM PACKAGE_VERSIONS
15789
        WHERE pkg_id = parPkg_id
15790
        AND pkg_version = SSpkg_version;
15791
    package_versions_rec package_versions_cur%ROWTYPE;
15792
 
15793
    CURSOR clone_package_versions_cur IS
15794
        SELECT MAX(pv_id) AS pv_id
15795
          FROM PACKAGE_VERSIONS
15796
         WHERE pkg_id = parPkg_id
15797
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
15798
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
15799
 
15800
BEGIN
15801
    /* -------------------------------------------- */
15802
    /* Find if pkg_name exists and seed if required */
15803
    /* -------------------------------------------- */
15804
    OPEN packages_cur;
15805
    FETCH packages_cur INTO packages_rec;
15806
 
15807
    IF packages_cur%NOTFOUND
15808
    THEN
15809
        /* INSERT into packages table */
15810
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
15811
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
15812
 
15813
    ELSE
15814
        parPkg_id := packages_rec.pkg_id;
15815
 
15816
    END IF;
15817
 
15818
    CLOSE packages_cur;
15819
 
15820
 
15821
 
15822
    /* ---------------------------------------------------- */
15823
    /* Find if package_version exists and seed if required  */
15824
    /* ---------------------------------------------------- */
15825
    OPEN package_versions_cur;
15826
    FETCH package_versions_cur INTO package_versions_rec;
15827
 
15828
    IF package_versions_cur%NOTFOUND
15829
    THEN
15830
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
15831
 
15832
        /* LOG ACTION */
15833
        Log_Action ( parPv_id, 'new_version', NNuser_id,
15834
        			 'New package version: '|| SSpkg_version );
15835
 
15836
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
15837
 
15838
 
15839
 
15840
 
15841
 
15842
            /* CLONE details from similar version  OR  from nCloneFromPvId */
15843
			IF ( NOT nCloneFromPvId IS NULL) THEN
15844
            	cloneFrom_pv_id := nCloneFromPvId;
15845
			ELSE
15846
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
15847
			END IF;
15848
 
15849
            -- Clone Package Version Details --
15850
            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,
15851
                                           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 )
15852
                SELECT parPv_id         AS pv_id,
15853
                       parPkg_id        AS pkg_id,
15854
                       SSpkg_version    AS pkg_version,
15855
                       'N'              AS dlocked,
15856
                       Ora_Sysdate      AS created_stamp,
15857
                       NNuser_id        AS creator_id,
15858
                       Ora_Sysdatetime  AS modified_stamp,
15859
                       NNuser_id        AS modifier_id,
15860
                       SSV_MM           AS V_MM,
15861
                       SSV_NMM          AS V_NMM,
15862
                       SSV_EXT          AS V_EXT,
15863
                       pv.src_path,
15864
                       pv.pv_description,
15865
                       pv.PV_OVERVIEW,
15866
                       cloneFrom_pv_id 	AS LAST_PV_ID,
15867
                       pv.owner_id,
15868
					   pv.BUILD_TYPE,
15869
					   pv.IS_BUILD_ENV_REQUIRED,
15870
					   pv.bs_id,
15871
					   pv.is_autobuildable,
15872
					   pv.IS_DEPLOYABLE,
15873
					   pv.ripple_field
15874
                  FROM PACKAGE_VERSIONS pv
15875
                 WHERE pv.pv_id = cloneFrom_pv_id;
15876
 
15877
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
15878
 
15879
        retPV_ID := parPv_id;
15880
 
15881
    ELSE
15882
        retPV_ID := package_versions_rec.pv_id;
15883
 
15884
    END IF;
15885
 
15886
    CLOSE package_versions_cur;
15887
 
15888
 
15889
 
15890
 
15891
END Seed_Package_Names_Versions2;
4040 dpurdie 15892
 
1374 dpurdie 15893
/
1373 dpurdie 15894
 
4040 dpurdie 15895
/
15896
--------------------------------------------------------
15897
--  DDL for Procedure SET_ADVISORY_RIPPLE
15898
--------------------------------------------------------
15899
set define off;
15900
 
3959 dpurdie 15901
  CREATE OR REPLACE PROCEDURE "SET_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
1373 dpurdie 15902
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
15903
											 nUserId IN NUMBER ) IS
15904
/* ---------------------------------------------------------------------------
15905
    Version: 4.0
15906
   --------------------------------------------------------------------------- */
15907
 
15908
BEGIN
15909
 
3959 dpurdie 15910
    -- Set Advisory Ripple Package
15911
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
15912
	VALUES (nRtagId, nPvId);
1373 dpurdie 15913
 
15914
    /* LOG ACTION */
3959 dpurdie 15915
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
1373 dpurdie 15916
 
15917
	/*Rebuild_Environment(nRtagId);*/
15918
 
3959 dpurdie 15919
END Set_Advisory_Ripple;
4040 dpurdie 15920
 
1374 dpurdie 15921
/
1373 dpurdie 15922
 
4040 dpurdie 15923
/
15924
--------------------------------------------------------
15925
--  DDL for Procedure SET_PACKAGE_BUILD_ENV
15926
--------------------------------------------------------
15927
set define off;
15928
 
3959 dpurdie 15929
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
15930
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
1373 dpurdie 15931
/* ---------------------------------------------------------------------------
3959 dpurdie 15932
    Last Modified: Rupesh Solanki
15933
	Version: 3.0.1
1373 dpurdie 15934
   --------------------------------------------------------------------------- */
15935
 
15936
 
15937
BEGIN
15938
 
3959 dpurdie 15939
   -- Delete Current Build Env settings
15940
   DELETE FROM PACKAGE_BUILD_ENV
15941
   WHERE pv_id = nPvId;
15942
 
15943
   -- Delet Current Package Build Info Settings
15944
   DELETE FROM PACKAGE_BUILD_INFO
15945
   WHERE pv_id = nPvId;
1373 dpurdie 15946
 
3959 dpurdie 15947
   -- Reset flag to N
15948
   UPDATE PACKAGE_VERSIONS SET
15949
	   IS_BUILD_ENV_REQUIRED = 'N'
15950
   WHERE PV_ID = nPvId;
1373 dpurdie 15951
 
15952
 
3959 dpurdie 15953
   -- Set new Build Env
15954
   IF NOT sBuildEnvIdList IS NULL THEN
15955
   	  -- Insert into PACKAGE_BUILD_ENV
15956
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
15957
	  SELECT nPvId AS PV_ID,
15958
	  		 be.BE_ID
15959
	    FROM BUILD_ENVIRONMENTS be
15960
	   WHERE be.BE_ID IN (
15961
	   		 		  	   SELECT *
15962
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
15963
	   		 		  	 );
15964
 
15965
   	  -- Insert into PACKAGE_BUILD_INFO
15966
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
15967
	  SELECT nPvId AS PV_ID,
15968
	  		 be.BM_ID
15969
	    FROM BUILD_MACHINES be
15970
	   WHERE be.BM_ID IN (
15971
	   		 		  	   SELECT *
15972
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
15973
	   		 		  	 );						 
1373 dpurdie 15974
 
3959 dpurdie 15975
	   -- Set flag to Y
15976
	   UPDATE PACKAGE_VERSIONS SET
15977
		   IS_BUILD_ENV_REQUIRED = 'Y'
15978
	   WHERE PV_ID = nPvId;
1373 dpurdie 15979
 
3959 dpurdie 15980
   END IF;
1373 dpurdie 15981
 
15982
 
3959 dpurdie 15983
END Set_Package_Build_Env;
4040 dpurdie 15984
 
1374 dpurdie 15985
/
1373 dpurdie 15986
 
4040 dpurdie 15987
/
15988
--------------------------------------------------------
15989
--  DDL for Procedure SET_PACKAGE_BUILD_ENV_TEMP
15990
--------------------------------------------------------
15991
set define off;
15992
 
1373 dpurdie 15993
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV_TEMP" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
15994
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
15995
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
15996
														 ) IS
15997
/* ---------------------------------------------------------------------------
15998
    Last Modified: Rupesh Solanki
15999
	Version: 3.0.1
16000
   --------------------------------------------------------------------------- */
16001
 
16002
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
16003
   BsId NUMBER;
16004
   HackBsId NUMBER;
16005
 
16006
 
16007
BEGIN
16008
 
16009
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
16010
 
16011
   -- Delete Current Build Env settings
16012
   DELETE FROM PACKAGE_BUILD_ENV
16013
   WHERE pv_id = nPvId;
16014
 
16015
   -- Delet Current Package Build Info Settings
16016
   DELETE FROM PACKAGE_BUILD_INFO
16017
   WHERE pv_id = nPvId;
16018
 
16019
   -- Reset flag to N
16020
   UPDATE PACKAGE_VERSIONS SET
16021
	   IS_BUILD_ENV_REQUIRED = 'N'
16022
   WHERE PV_ID = nPvId;
16023
 
16024
 
16025
   -- Set new Build Env
16026
   IF NOT sBuildEnvIdList IS NULL THEN
16027
	FOR i IN 1..nBsCollector.COUNT
16028
	LOOP   
16029
 
16030
	BsId := nBsCollector(i);
16031
 
16032
	IF nBuildStandard = 2 THEN
16033
	   IF BsId = 1 THEN
16034
	   	  HackBsId := 11;
16035
	   ELSE
16036
	   	  HackBsId := 12;
16037
	   END IF;
16038
 
16039
   	  -- Insert into PACKAGE_BUILD_ENV
16040
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
16041
	  SELECT nPvId AS PV_ID,
16042
	  		 be.BE_ID
16043
	    FROM BUILD_ENVIRONMENTS be
16044
	   WHERE be.BE_ID IN ( HackBsId );
16045
 
16046
   	  -- Insert into PACKAGE_BUILD_INFO
16047
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
16048
	  SELECT nPvId AS PV_ID,
16049
	  		 be.BM_ID
16050
	    FROM BUILD_MACHINES be
16051
	   WHERE be.BM_ID IN ( BsId );						 
16052
 
16053
	   -- Set flag to Y
16054
	   UPDATE PACKAGE_VERSIONS SET
16055
		   IS_BUILD_ENV_REQUIRED = 'Y'
16056
	   WHERE PV_ID = nPvId;	
16057
 
16058
 
16059
	ELSE
16060
 
16061
   	  -- Insert into PACKAGE_BUILD_ENV
16062
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
16063
	  SELECT nPvId AS PV_ID,
16064
	  		 be.BE_ID
16065
	    FROM BUILD_ENVIRONMENTS be
16066
	   WHERE be.BE_ID IN ( BsId );
16067
 
16068
   	  -- Insert into PACKAGE_BUILD_INFO
16069
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
16070
	  SELECT nPvId AS PV_ID,
16071
	  		 be.BM_ID
16072
	    FROM BUILD_MACHINES be
16073
	   WHERE be.BM_ID IN ( BsId );						 
16074
 
16075
	   -- Set flag to Y
16076
	   UPDATE PACKAGE_VERSIONS SET
16077
		   IS_BUILD_ENV_REQUIRED = 'Y'
16078
	   WHERE PV_ID = nPvId;
16079
 
16080
	END IF;  
16081
 
16082
 
16083
	END LOOP;	   
16084
 
16085
   END IF;
16086
 
16087
 
16088
END Set_Package_Build_Env_Temp;
4040 dpurdie 16089
 
1374 dpurdie 16090
/
1373 dpurdie 16091
 
4040 dpurdie 16092
/
16093
--------------------------------------------------------
16094
--  DDL for Procedure SET_TO_AUTOBUILDABLE
16095
--------------------------------------------------------
16096
set define off;
16097
 
3959 dpurdie 16098
  CREATE OR REPLACE PROCEDURE "SET_TO_AUTOBUILDABLE" (
16099
   nrtagid     IN   NUMBER,
16100
   spvidlist   IN   VARCHAR2
16101
)
16102
IS
16103
/******************************************************************************
16104
   NAME:       SET_TO_AUTOBUILDABLE
16105
   PURPOSE:
1373 dpurdie 16106
 
3959 dpurdie 16107
   REVISIONS:
16108
   Ver        Date        Author           Description
16109
   ---------  ----------  ---------------  ------------------------------------
16110
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
1373 dpurdie 16111
 
3959 dpurdie 16112
   NOTES:
1373 dpurdie 16113
 
3959 dpurdie 16114
   Automatically available Auto Replace Keywords:
16115
      Object Name:     SET_TO_AUTOBUILDABLE
16116
      Sysdate:         15/12/2006
16117
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
16118
      Username:         (set in TOAD Options, Procedure Editor)
16119
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16120
 
3959 dpurdie 16121
******************************************************************************/
16122
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
16123
   PvId NUMBER;
1373 dpurdie 16124
BEGIN
16125
 
3959 dpurdie 16126
   npvidcollector := in_list_number2 (spvidlist);
16127
 
16128
   UPDATE package_versions
16129
      SET is_autobuildable = 'N'
16130
    WHERE pv_id IN (SELECT pv_id
16131
                      FROM release_content
16132
                     WHERE rtag_id = nrtagid);
1373 dpurdie 16133
 
3959 dpurdie 16134
 
16135
 
16136
   	FOR i IN 1..npvidcollector.COUNT
16137
	LOOP
16138
		PvId := npvidcollector(i);
1373 dpurdie 16139
 
3959 dpurdie 16140
		UPDATE package_versions
16141
		set is_autobuildable = 'Y'
16142
		where pv_id = PvId;
1373 dpurdie 16143
 
3959 dpurdie 16144
	END LOOP;
16145
 
16146
 
16147
END set_to_autobuildable;
4040 dpurdie 16148
 
3959 dpurdie 16149
/
1373 dpurdie 16150
 
4040 dpurdie 16151
/
16152
--------------------------------------------------------
16153
--  DDL for Procedure SHIFT_INSTALL_ORDER
16154
--------------------------------------------------------
16155
set define off;
16156
 
3959 dpurdie 16157
  CREATE OR REPLACE PROCEDURE "SHIFT_INSTALL_ORDER" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
16158
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
16159
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
16160
/* ---------------------------------------------------------------------------
16161
    Version: 3.0
16162
   --------------------------------------------------------------------------- */
1373 dpurdie 16163
 
3959 dpurdie 16164
currInstallOrder NUMBER;
16165
FromInstallOrder NUMBER;
1373 dpurdie 16166
 
3959 dpurdie 16167
BEGIN
1373 dpurdie 16168
 
3959 dpurdie 16169
	 -- Get Current Install Order
16170
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
16171
       FROM PACKAGE_PATCHES pp
16172
      WHERE pp.PV_ID = nPvId
16173
        AND pp.PATCH_ID = nPatchId;
1373 dpurdie 16174
 
16175
 
3959 dpurdie 16176
	 IF currInstallOrder > nToInstallOrder
16177
	 THEN
1373 dpurdie 16178
 
3959 dpurdie 16179
		FromInstallOrder := nToInstallOrder;
1373 dpurdie 16180
 
3959 dpurdie 16181
	    -- Shift others Up
16182
		UPDATE PACKAGE_PATCHES pp SET
16183
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
16184
		 WHERE pp.PV_ID = nPvId
16185
           AND pp.PATCH_ID != nPatchId
16186
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
1373 dpurdie 16187
 
16188
 
3959 dpurdie 16189
	 ELSIF currInstallOrder < nToInstallOrder
16190
	 THEN
1373 dpurdie 16191
 
3959 dpurdie 16192
		FromInstallOrder := currInstallOrder + 1;
1373 dpurdie 16193
 
3959 dpurdie 16194
		-- Shift others Down
16195
        UPDATE PACKAGE_PATCHES pp SET
16196
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
16197
		 WHERE pp.PV_ID = nPvId
16198
           AND pp.PATCH_ID != nPatchId
16199
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
1373 dpurdie 16200
 
3959 dpurdie 16201
	 END IF;
1373 dpurdie 16202
 
16203
 
3959 dpurdie 16204
	 -- Move Patch to new install order
16205
     UPDATE PACKAGE_PATCHES pp SET
16206
		    pp.INSTALL_ORDER = nToInstallOrder
16207
	  WHERE pp.PV_ID = nPvId
16208
	    AND pp.PATCH_ID = nPatchId;
1373 dpurdie 16209
 
16210
 
3959 dpurdie 16211
END Shift_Install_Order;
4040 dpurdie 16212
 
1374 dpurdie 16213
/
1373 dpurdie 16214
 
4040 dpurdie 16215
/
16216
--------------------------------------------------------
16217
--  DDL for Procedure SPLIT_VERSION
16218
--------------------------------------------------------
16219
set define off;
16220
 
3959 dpurdie 16221
  CREATE OR REPLACE PROCEDURE "SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
16222
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
16223
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
16224
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
1373 dpurdie 16225
/* ---------------------------------------------------------------------------
3959 dpurdie 16226
    Version: 3.0.0
1373 dpurdie 16227
   --------------------------------------------------------------------------- */
16228
 
3959 dpurdie 16229
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
16230
        INDEX BY BINARY_INTEGER;
1373 dpurdie 16231
 
3959 dpurdie 16232
    version_components VERSION_COMPONENTS_TYPE;
16233
    lastDot NUMBER := 0;
16234
    currDot NUMBER := 0;
1373 dpurdie 16235
 
16236
BEGIN
3959 dpurdie 16237
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
1373 dpurdie 16238
 
3959 dpurdie 16239
    IF ( currDot > 0 )
1373 dpurdie 16240
    THEN
3959 dpurdie 16241
        -- YES dot separator found --
16242
        SSV_EXT := GET_V_EXT( SSpkg_version );
1373 dpurdie 16243
 
3959 dpurdie 16244
        IF NOT SSV_EXT IS NULL
1373 dpurdie 16245
        THEN
3959 dpurdie 16246
            lastDot := currDot;
16247
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
1373 dpurdie 16248
 
3959 dpurdie 16249
            IF ( currDot > 0 )
16250
            THEN
16251
                -- XXXX.M.E
16252
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
16253
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
16254
            ELSE
16255
                -- XXXX.E
16256
                SSV_MM := NULL;
16257
                SSV_NMM := SSpkg_version;
16258
            END IF;
1373 dpurdie 16259
 
16260
        ELSE
3959 dpurdie 16261
            -- XXXX.M
16262
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
16263
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
1373 dpurdie 16264
 
16265
        END IF;
16266
 
16267
    ELSE
3959 dpurdie 16268
        -- NO dot separator found --
16269
        -- XXXXXX
16270
        SSV_MM  := NULL;
16271
        SSV_NMM := SSpkg_version;
16272
        SSV_EXT := NULL;
1373 dpurdie 16273
 
16274
    END IF;
16275
 
3959 dpurdie 16276
END Split_Version;
4040 dpurdie 16277
 
1374 dpurdie 16278
/
1373 dpurdie 16279
 
4040 dpurdie 16280
/
16281
--------------------------------------------------------
16282
--  DDL for Procedure SWITCH_REPRODUCIBLE_PACKAGE
16283
--------------------------------------------------------
16284
set define off;
16285
 
3959 dpurdie 16286
  CREATE OR REPLACE PROCEDURE "SWITCH_REPRODUCIBLE_PACKAGE" (nPvId IN NUMBER, nUserId IN NUMBER)IS
16287
Auto CHAR;
16288
/******************************************************************************
16289
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
16290
   PURPOSE:    
1373 dpurdie 16291
 
3959 dpurdie 16292
   REVISIONS:
16293
   Ver        Date        Author           Description
16294
   ---------  ----------  ---------------  ------------------------------------
16295
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
1373 dpurdie 16296
 
3959 dpurdie 16297
   NOTES:
1373 dpurdie 16298
 
3959 dpurdie 16299
   Automatically available Auto Replace Keywords:
16300
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
16301
      Sysdate:         14/12/2006
16302
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
16303
      Username:         (set in TOAD Options, Procedure Editor)
16304
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16305
 
3959 dpurdie 16306
******************************************************************************/
1373 dpurdie 16307
BEGIN
16308
 
3959 dpurdie 16309
	 SELECT IS_AUTOBUILDABLE into Auto
16310
	 FROM PACKAGE_VERSIONS 
16311
	 WHERE PV_ID = nPvId;
1373 dpurdie 16312
 
3959 dpurdie 16313
	 IF Auto = 'N' Then
16314
 
16315
	 	UPDATE PACKAGE_VERSIONS
16316
	 	SET IS_AUTOBUILDABLE = 'Y'
16317
	 	WHERE PV_ID = nPvId;
16318
 
16319
 
16320
	 	/* LOG ACTION */
16321
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
16322
 
16323
	 Else
16324
 
16325
		 UPDATE PACKAGE_VERSIONS
16326
		 SET IS_AUTOBUILDABLE = 'N'
16327
		 WHERE PV_ID = nPvId;
16328
 
16329
 
16330
	 	 /* LOG ACTION */
16331
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
16332
 
16333
	 End If;
16334
 
16335
 
1373 dpurdie 16336
 
3959 dpurdie 16337
 
1373 dpurdie 16338
 
16339
 
16340
 
16341
 
3959 dpurdie 16342
END SWITCH_REPRODUCIBLE_PACKAGE;
4040 dpurdie 16343
 
1374 dpurdie 16344
/
1373 dpurdie 16345
 
4040 dpurdie 16346
/
16347
--------------------------------------------------------
16348
--  DDL for Procedure SYNC_PROJECTS_NEW_VERSION
16349
--------------------------------------------------------
16350
set define off;
16351
 
3959 dpurdie 16352
  CREATE OR REPLACE PROCEDURE "SYNC_PROJECTS_NEW_VERSION" ( nPv_id 				IN NUMBER,
16353
														  sSyncRtagsInList		IN VARCHAR2,
16354
				                                          nUser_id 				IN NUMBER ) IS
1373 dpurdie 16355
/* ---------------------------------------------------------------------------
16356
    Version: 3.0.0
16357
   --------------------------------------------------------------------------- */
16358
 
3959 dpurdie 16359
	CURSOR sync_rtags_cur IS
16360
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
16361
		  FROM release_content rc,
16362
		  	   package_versions pv,
16363
		       package_versions opv
16364
		 WHERE rc.pv_id = pv.pv_id
16365
		   AND opv.pkg_id = pv.pkg_id
16366
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
16367
		   AND opv.pv_id = nPv_id
16368
		   AND rtag_id IN ( SELECT *
16369
		   	   		   	      FROM THE (
16370
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
16371
					       		   	    FROM dual
16372
									   )
16373
						  );
16374
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
1373 dpurdie 16375
 
16376
BEGIN
16377
 
3959 dpurdie 16378
	OPEN sync_rtags_cur;
16379
	FETCH sync_rtags_cur INTO sync_rtags_rec;
1373 dpurdie 16380
 
3959 dpurdie 16381
	WHILE sync_rtags_cur%FOUND
16382
	LOOP
16383
		DELETE FROM RELEASE_CONTENT
16384
		 WHERE rtag_id = sync_rtags_rec.rtag_id
16385
	       AND pv_id = sync_rtags_rec.pv_id;
1373 dpurdie 16386
 
3959 dpurdie 16387
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
16388
	   		   VALUES ( sync_rtags_rec.rtag_id,
16389
		       		  	nPv_id,
16390
						sync_rtags_rec.BASE_VIEW_ID,
16391
	           			Ora_Sysdate,
16392
	           			nUser_id,
16393
 
16394
	      	   		   );
1373 dpurdie 16395
 
3959 dpurdie 16396
-- 		UPDATE RELEASE_CONTENT
16397
-- 	       SET pv_id = nPv_id,
16398
-- 	           insert_stamp = Ora_Sysdate,
16399
-- 	           insertor_id = nUser_id
16400
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
16401
-- 	       AND pv_id = sync_rtags_rec.pv_id;
1373 dpurdie 16402
 
3959 dpurdie 16403
		FETCH sync_rtags_cur INTO sync_rtags_rec;
16404
	END LOOP;
1373 dpurdie 16405
 
3959 dpurdie 16406
	CLOSE sync_rtags_cur;
16407
 
16408
END Sync_Projects_New_Version;
4040 dpurdie 16409
 
1374 dpurdie 16410
/
1373 dpurdie 16411
 
4040 dpurdie 16412
/
16413
--------------------------------------------------------
16414
--  DDL for Procedure TEST
16415
--------------------------------------------------------
16416
set define off;
16417
 
3959 dpurdie 16418
  CREATE OR REPLACE PROCEDURE "TEST" 
16419
IS
1373 dpurdie 16420
 
3959 dpurdie 16421
proc_id NUMBER;
16422
/******************************************************************************
16423
   NAME:       DELETE_DO_NOT_RIPPLE
16424
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
16425
               IS RELEASED
1373 dpurdie 16426
 
3959 dpurdie 16427
   REVISIONS:
16428
   Ver        Date        Author           Description
16429
   ---------  ----------  ---------------  ------------------------------------
16430
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 16431
 
3959 dpurdie 16432
   NOTES:
16433
 
16434
   Automatically available Auto Replace Keywords:
16435
      Object Name:     DELETE_DO_NOT_RIPPLE
16436
      Sysdate:         21/04/2006
16437
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
16438
      Username:         (set in TOAD Options, Procedure Editor)
16439
      Table Name:       (set in the "New PL/SQL Object" dialog)
16440
 
16441
******************************************************************************/
16442
   CURSOR ripple_cur
16443
   IS
16444
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
16445
 
16446
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 16447
BEGIN
3959 dpurdie 16448
   OPEN ripple_cur;
1373 dpurdie 16449
 
3959 dpurdie 16450
   FETCH ripple_cur
16451
    INTO ripple_rec;
1373 dpurdie 16452
 
3959 dpurdie 16453
   WHILE ripple_cur%FOUND
16454
   LOOP
16455
 
16456
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
16457
 
16458
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
16459
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
1373 dpurdie 16460
 
3959 dpurdie 16461
      FETCH ripple_cur
16462
       INTO ripple_rec;
16463
   END LOOP;
16464
END test;
4040 dpurdie 16465
 
1374 dpurdie 16466
/
1373 dpurdie 16467
 
4040 dpurdie 16468
/
16469
--------------------------------------------------------
16470
--  DDL for Procedure TEST_MARCO
16471
--------------------------------------------------------
16472
set define off;
16473
 
3959 dpurdie 16474
  CREATE OR REPLACE PROCEDURE "TEST_MARCO" IS
1373 dpurdie 16475
/******************************************************************************
3959 dpurdie 16476
   NAME:       TEST_MARCO
1373 dpurdie 16477
   PURPOSE:    
16478
 
16479
   REVISIONS:
16480
   Ver        Date        Author           Description
16481
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 16482
   1.0        2/03/2007          1. Created this procedure.
1373 dpurdie 16483
 
16484
   NOTES:
16485
 
16486
   Automatically available Auto Replace Keywords:
3959 dpurdie 16487
      Object Name:     TEST_MARCO
16488
      Sysdate:         2/03/2007
16489
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
1373 dpurdie 16490
      Username:         (set in TOAD Options, Procedure Editor)
16491
      Table Name:       (set in the "New PL/SQL Object" dialog)
16492
 
16493
******************************************************************************/
16494
 
3959 dpurdie 16495
parPv_id    NUMBER;
16496
parPkg_id   NUMBER;
16497
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
16498
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
16499
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
1373 dpurdie 16500
BEGIN
16501
 
3959 dpurdie 16502
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
1373 dpurdie 16503
 
3959 dpurdie 16504
        /* LOG ACTION */
16505
        Log_Action ( parPv_id, 'new_version', 3764,
16506
        			 'New package version: '|| parPv_id || '.' );
16507
 
16508
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
1373 dpurdie 16509
 
3959 dpurdie 16510
     -- Clone Package Version Details --
16511
            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,
16512
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
16513
                SELECT parPv_id         AS pv_id,
16514
                       pv.pkg_id        AS pkg_id,
16515
                       parPv_id || '.'    AS pkg_version,
16516
                       'N'              AS dlocked,
16517
                       Ora_Sysdate      AS created_stamp,
16518
                       3764        AS creator_id,
16519
                       Ora_Sysdatetime  AS modified_stamp,
16520
                       3764        AS modifier_id,
16521
                       SSV_MM          AS V_MM,
16522
                       SSV_NMM         AS V_NMM,
16523
                       SSV_EXT          AS V_EXT,
16524
                       pv.src_path,
16525
                       pv.pv_description,
16526
                       pv.PV_OVERVIEW,
16527
                       112982 	AS LAST_PV_ID,
16528
                       pv.owner_id,
16529
					   pv.BUILD_TYPE,
16530
					   pv.IS_BUILD_ENV_REQUIRED,
16531
					   pv.bs_id,
16532
					   pv.is_autobuildable,
16533
					   pv.IS_DEPLOYABLE
16534
                  FROM PACKAGE_VERSIONS pv
16535
                 WHERE pv.pv_id = 112982;		
1373 dpurdie 16536
 
3959 dpurdie 16537
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
1373 dpurdie 16538
 
16539
 
3959 dpurdie 16540
END TEST_MARCO;
4040 dpurdie 16541
 
3959 dpurdie 16542
/
1373 dpurdie 16543
 
4040 dpurdie 16544
/
16545
--------------------------------------------------------
16546
--  DDL for Procedure TOUCH_RELEASE
16547
--------------------------------------------------------
16548
set define off;
16549
 
3959 dpurdie 16550
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE" ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
16551
/* ---------------------------------------------------------------------------
16552
    The purpose of this procedure is to flag in the database that the specified
16553
    release has changed to an extent that the procedure Rebuild_Environment
16554
    should be called at the next opportunity in order that the package state
16555
    icons are all re-evaluated.
16556
    The package state icons are controlled using the pkg_state column in the
16557
    release_content table, and Rebuild_Environment updates that column.
16558
    It will be through user action in the website that Rebuild_Environment will
16559
    be called, for example:
16560
      a) when setting/clearing ignore warnings checkboxes
16561
      b) when someone opens a page upon a rtag/pvid and rebuild_en flag is set
16562
      c) when someone opens the build order report form
16563
      d) when someone modifies dependencies of a package
16564
      + other scenarios (?)
16565
   --------------------------------------------------------------------------- */
16566
BEGIN
16567
   -- Touch Release for Rebuild
16568
   UPDATE RELEASE_TAGS rt SET
16569
          rt.REBUILD_ENV = 'Y',
16570
          rt.REBUILD_STAMP = 0
16571
    WHERE rt.RTAG_ID = nRtagId;
1373 dpurdie 16572
 
3959 dpurdie 16573
END Touch_Release;
4040 dpurdie 16574
 
1374 dpurdie 16575
/
1373 dpurdie 16576
 
4040 dpurdie 16577
/
16578
--------------------------------------------------------
16579
--  DDL for Procedure TOUCH_RELEASE_BULK
16580
--------------------------------------------------------
16581
set define off;
16582
 
1373 dpurdie 16583
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE_BULK" ( nRtagIdList IN VARCHAR2 ) IS
16584
/* ---------------------------------------------------------------------------
16585
    Version: 3.0
16586
   --------------------------------------------------------------------------- */
16587
 
16588
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16589
 
16590
BEGIN
16591
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
16592
 
16593
	 -- Touch Release for Rebuild
16594
     UPDATE RELEASE_TAGS rt SET
16595
     	rt.REBUILD_ENV = 'Y',
16596
        rt.REBUILD_STAMP = 0
16597
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
16598
 
16599
 
16600
END Touch_Release_Bulk;
4040 dpurdie 16601
 
1374 dpurdie 16602
/
1373 dpurdie 16603
 
4040 dpurdie 16604
/
16605
--------------------------------------------------------
16606
--  DDL for Procedure TO_INSERT_VTREE_ID
16607
--------------------------------------------------------
16608
set define off;
16609
 
3959 dpurdie 16610
  CREATE OR REPLACE PROCEDURE "TO_INSERT_VTREE_ID" IS
1373 dpurdie 16611
 
3959 dpurdie 16612
/******************************************************************************
16613
   NAME:       TO_INSERT_VTREE_ID
16614
   PURPOSE:    
1373 dpurdie 16615
 
3959 dpurdie 16616
   REVISIONS:
16617
   Ver        Date        Author           Description
16618
   ---------  ----------  ---------------  ------------------------------------
16619
   1.0        2/02/2007          1. Created this procedure.
1373 dpurdie 16620
 
3959 dpurdie 16621
   NOTES:
1373 dpurdie 16622
 
3959 dpurdie 16623
   Automatically available Auto Replace Keywords:
16624
      Object Name:     TO_INSERT_VTREE_ID
16625
      Sysdate:         2/02/2007
16626
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
16627
      Username:         (set in TOAD Options, Procedure Editor)
16628
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16629
 
3959 dpurdie 16630
******************************************************************************/
16631
VTreeId NUMBER;																			  																	   
1373 dpurdie 16632
 
16633
 
3959 dpurdie 16634
	CURSOR curInfo IS
16635
    SELECT RTAG_ID
16636
	FROM RELEASE_TAGS
16637
	WHERE VTREE_ID IS NULL;
16638
    recInfo curInfo%ROWTYPE;
16639
 
16640
 
1373 dpurdie 16641
BEGIN
16642
 
3959 dpurdie 16643
	OPEN curInfo;
16644
    FETCH curInfo INTO recInfo;
16645
 
16646
	WHILE curInfo%FOUND
16647
	LOOP
16648
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
1373 dpurdie 16649
 
3959 dpurdie 16650
		UPDATE RELEASE_TAGS
16651
		SET VTREE_ID = VTreeId
16652
		WHERE RTAG_ID = recInfo.RTAG_ID;
1373 dpurdie 16653
 
3959 dpurdie 16654
		FETCH curInfo INTO recInfo;
16655
	END LOOP;
1373 dpurdie 16656
 
3959 dpurdie 16657
	CLOSE curInfo;
1373 dpurdie 16658
 
3959 dpurdie 16659
END TO_INSERT_VTREE_ID;
4040 dpurdie 16660
 
1374 dpurdie 16661
/
1373 dpurdie 16662
 
4040 dpurdie 16663
/
16664
--------------------------------------------------------
16665
--  DDL for Procedure UNDEPRECATE_PACKAGE
16666
--------------------------------------------------------
16667
set define off;
16668
 
1373 dpurdie 16669
  CREATE OR REPLACE PROCEDURE "UNDEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
16670
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
16671
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
16672
											   	 nUserId IN NUMBER) IS
16673
 
16674
ext VARCHAR2(50);
16675
PvIdList VARCHAR2(32767);
16676
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16677
PvId NUMBER;
16678
sComments VARCHAR2(32767);
16679
 
16680
BEGIN
16681
 
16682
 
16683
 
16684
	--Extract the package extension
16685
	SELECT V_EXT into ext 
16686
	FROM PACKAGE_VERSIONS 
16687
	WHERE PV_ID = nPvId;
16688
 
16689
	--SELECT COMMENTS into sComments 
16690
	--FROM DEPRECATED_PACKAGES
16691
	--WHERE RTAG_ID = nRtagId
16692
	--AND V_EXT = ext
16693
	--AND PKG_ID = nPkgId;
16694
 
16695
	--SELECT PV_ID into PvIdList FROM
16696
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
16697
	--AND PKG_STATE = 6
16698
	--AND PV_ID NOT IN nPvId;
16699
 
16700
 
16701
	IF ext IS NOT NULL THEN
16702
       -- Undeprecate Package
16703
       DELETE FROM DEPRECATED_PACKAGES 
16704
	   WHERE RTAG_ID = nRtagId 
16705
	   AND PKG_ID = nPkgId
16706
	   AND V_EXT = ext;	
16707
 
16708
		UPDATE RELEASE_CONTENT 
16709
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
16710
		WHERE RTAG_ID = nRtagId
16711
		AND PV_ID IN (SELECT PV.PV_ID 
16712
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
16713
					  WHERE PKG.PKG_ID = PV.PKG_ID
16714
					  AND PKG.PKG_ID = nPkgId
16715
					  AND PV.V_EXT = ext
16716
					  UNION
16717
					  SELECT DISTINCT
16718
	 	 		  	 		   qry.PV_ID
16719
							        FROM (
16720
									 	  SELECT dep.*,
16721
										  LEVEL AS LEVEL_NUM
16722
										  FROM PACKAGE_DEPENDENCIES dep
16723
	 								START WITH dep.DPV_ID IN ( nPvId )
16724
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
16725
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
16726
	 								) qry,
16727
									PACKAGES pkg,
16728
									PACKAGE_VERSIONS pv,
16729
									RELEASE_CONTENT rc
16730
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
16731
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
16732
 
16733
					 );	 
16734
 
16735
	ELSE
16736
       -- Undeprecate Package
16737
       DELETE FROM DEPRECATED_PACKAGES 
16738
	   WHERE RTAG_ID = nRtagId 
16739
	   AND PKG_ID = nPkgId
16740
	   AND V_EXT IS NULL;	
16741
 
16742
		UPDATE RELEASE_CONTENT 
16743
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
16744
		WHERE RTAG_ID = nRtagId
16745
		AND PV_ID IN (SELECT PV.PV_ID 
16746
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
16747
					  WHERE PKG.PKG_ID = PV.PKG_ID
16748
					  AND PKG.PKG_ID = nPkgId
16749
					  AND PV.V_EXT IS NULL
16750
					  UNION
16751
					  SELECT DISTINCT
16752
	 	 		  	 		   qry.PV_ID
16753
							        FROM (
16754
									 	  SELECT dep.*,
16755
										  LEVEL AS LEVEL_NUM
16756
										  FROM PACKAGE_DEPENDENCIES dep
16757
	 								START WITH dep.DPV_ID IN ( nPvId )
16758
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
16759
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
16760
	 								) qry,
16761
									PACKAGES pkg,
16762
									PACKAGE_VERSIONS pv,
16763
									RELEASE_CONTENT rc
16764
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
16765
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
16766
 
16767
					 );	 	   
16768
 
16769
	END IF;
16770
 
16771
	--IF PvIdList IS NOT NULL THEN
16772
 
16773
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
16774
 
16775
	 --  FOR i IN 1..nIdCollector.COUNT
16776
	 --  LOOP
16777
	--	   PvId := nIdCollector(i);
16778
 
16779
 
16780
 
16781
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
16782
	--		END LOOP;
16783
	--END IF;
16784
 
16785
	Rebuild_environment(nRtagId);			 
16786
 
16787
 
16788
 
16789
END Undeprecate_Package;
4040 dpurdie 16790
 
1374 dpurdie 16791
/
1373 dpurdie 16792
 
4040 dpurdie 16793
/
16794
--------------------------------------------------------
16795
--  DDL for Procedure UNLOCK_PACKAGE
16796
--------------------------------------------------------
16797
set define off;
16798
 
3959 dpurdie 16799
  CREATE OR REPLACE PROCEDURE "UNLOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
16800
											 nUserId IN NUMBER ) IS
16801
/* ---------------------------------------------------------------------------
16802
    Author: Rupesh Solanki
16803
 
16804
	Version: 4.0
16805
   --------------------------------------------------------------------------- */
16806
   STATE CHAR;
16807
 
16808
BEGIN
16809
 
16810
	SELECT DLOCKED INTO STATE
16811
	FROM PACKAGE_VERSIONS
16812
	WHERE PV_ID = nPvId; 
1373 dpurdie 16813
 
3959 dpurdie 16814
	IF STATE = 'A' THEN --It was made official for autobuilds
16815
		-- Unlock Package
16816
		UPDATE PACKAGE_VERSIONS pv SET
16817
		pv.DLOCKED = 'P'
16818
		WHERE pv.PV_ID = nPvId;	
16819
	ELSE
16820
		-- Unlock Package
16821
		UPDATE PACKAGE_VERSIONS pv SET
16822
		pv.DLOCKED = 'N'
16823
		WHERE pv.PV_ID = nPvId;	
16824
 
16825
	END IF;	   
16826
 
16827
    /* LOG ACTION */
16828
   	Log_Action ( nPvId, 'unlock_package', nUserId );
16829
 
16830
END Unlock_Package;
4040 dpurdie 16831
 
3959 dpurdie 16832
/
16833
 
4040 dpurdie 16834
/
16835
--------------------------------------------------------
16836
--  DDL for Procedure UNRIPPLE_PACKAGE
16837
--------------------------------------------------------
16838
set define off;
16839
 
3959 dpurdie 16840
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE" (
16841
        sPvIdList IN VARCHAR2,
16842
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
16843
        nUserId IN NUMBER
16844
    ) IS
16845
/* ---------------------------------------------------------------------------
16846
    Version: 4.1
16847
   --------------------------------------------------------------------------- */
16848
 
16849
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16850
 
16851
BEGIN
16852
 
16853
    IF (sPvIdList IS NULL) THEN
16854
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
16855
    END IF;
16856
 
16857
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
16858
 
16859
    -- UnRipple Package
16860
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
16861
    SELECT nRtagId, pv.PV_ID
16862
    FROM PACKAGE_VERSIONS pv
16863
    WHERE pv.PV_ID IN (
16864
        SELECT *
16865
        FROM TABLE (
16866
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
16867
        )
16868
    );
16869
 
16870
    /* LOG ACTION */
16871
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
16872
 
16873
END UnRipple_Package;
4040 dpurdie 16874
 
3959 dpurdie 16875
/
16876
 
4040 dpurdie 16877
/
16878
--------------------------------------------------------
16879
--  DDL for Procedure UNRIPPLE_PACKAGE_INDIRECT
16880
--------------------------------------------------------
16881
set define off;
16882
 
3959 dpurdie 16883
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE_INDIRECT" (
16884
        nPvId IN NUMBER,
16885
        nRtagId IN NUMBER,
16886
        nUserId IN NUMBER,
16887
        nrootCausePvId IN NUMBER,
16888
        srootCause IN VARCHAR2,
16889
        srootFile IN VARCHAR2
16890
    ) IS
16891
    ReleaseLocation VARCHAR2(4000);
16892
BEGIN
16893
 
16894
    -- UnRipple Package
16895
    delete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;
16896
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);
16897
 
16898
    /* LOG ACTION */
16899
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16900
              FROM PROJECTS proj,
16901
                   RELEASE_TAGS rt
16902
             WHERE rt.RTAG_ID = nRtagId
16903
               AND rt.PROJ_ID = proj.PROJ_ID;
16904
 
16905
    /* LOG ACTION */
16906
    Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );
16907
 
16908
END UnRipple_Package_Indirect;
4040 dpurdie 16909
 
3959 dpurdie 16910
/
16911
 
4040 dpurdie 16912
/
16913
--------------------------------------------------------
16914
--  DDL for Procedure UPDATE_ADDITIONAL_NOTE
16915
--------------------------------------------------------
16916
set define off;
16917
 
3959 dpurdie 16918
  CREATE OR REPLACE PROCEDURE "UPDATE_ADDITIONAL_NOTE" ( pnNote_id IN NUMBER,
16919
													 pnPv_id IN NUMBER,
16920
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
16921
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
16922
                                                     pnUser_id IN NUMBER,
16923
                                                     outErrCode OUT NUMBER
16924
                                                    ) IS
16925
/* ---------------------------------------------------------------------------
16926
    Version: 3.0.1
16927
   --------------------------------------------------------------------------- */
16928
 
16929
    newID NUMBER;
16930
 
16931
    /* Disallow duplicate Note Titles */
16932
	CURSOR an_duplicate_cur IS
16933
        SELECT COUNT(*) AS cnt_note
16934
          FROM ADDITIONAL_NOTES
16935
         WHERE pv_id = pnPv_id
16936
           AND note_id != pnNote_id
16937
           AND note_title = psNote_title;
16938
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
16939
 
16940
BEGIN
16941
	outErrCode := -1;		-- Set default return error code to ERROR state
16942
 
16943
	OPEN an_duplicate_cur;
16944
    FETCH an_duplicate_cur INTO an_duplicate_rec;
16945
 
16946
    IF an_duplicate_rec.cnt_note < 1
16947
    THEN
16948
		--- Update Additional Note ---
16949
	    UPDATE ADDITIONAL_NOTES SET
16950
		       note_title = psNote_title,
16951
		       note_body = psNote_body,
16952
		       mod_date = Ora_Sysdate,
16953
		       mod_user = pnUser_id
16954
         WHERE note_id = pnNote_id
16955
           AND pv_id = pnPv_id;
16956
		outErrCode := 0;		-- Set return to SUCCESS
16957
	END IF;
16958
 
16959
	CLOSE an_duplicate_cur;
16960
END Update_Additional_Note;
4040 dpurdie 16961
 
3959 dpurdie 16962
/
16963
 
4040 dpurdie 16964
/
16965
--------------------------------------------------------
16966
--  DDL for Procedure UPDATE_DEPRECATION_STATE
16967
--------------------------------------------------------
16968
set define off;
16969
 
3959 dpurdie 16970
  CREATE OR REPLACE PROCEDURE "UPDATE_DEPRECATION_STATE" (nnrtag_id IN NUMBER) AS
16971
 
16972
recno NUMBER;
16973
 
16974
CURSOR deprecate_cur IS
16975
 
16976
SELECT rc.pv_id
16977
FROM release_content rc
16978
WHERE rtag_id = nnrtag_id
16979
 AND deprecated_state IN(7);
16980
 
16981
deprecate_rec deprecate_cur % rowtype;
16982
 
16983
BEGIN
16984
 
16985
  OPEN deprecate_cur;
16986
 
16987
  FETCH deprecate_cur
16988
  INTO deprecate_rec;
16989
 
16990
  WHILE deprecate_cur % FOUND
16991
  LOOP
16992
 
16993
    SELECT COUNT(*)
16994
    INTO recno
16995
    FROM package_dependencies pd,
16996
      release_content rc
16997
    WHERE pd.pv_id = deprecate_rec.pv_id
16998
     AND rc.pv_id = pd.dpv_id
16999
     AND rc.rtag_id = nnrtag_id
17000
     AND rc.deprecated_state IN(6,   7);
17001
 
17002
    IF recno = 0 THEN
17003
 
17004
      UPDATE release_content
17005
      SET pkg_id = NULL, deprecated_state = NULL
17006
      WHERE pv_id = deprecate_rec.pv_id
17007
       AND rtag_id = nnrtag_id;
17008
 
17009
    END IF;
17010
 
17011
    FETCH deprecate_cur
17012
    INTO deprecate_rec;
17013
  END LOOP;
17014
 
17015
END;
4040 dpurdie 17016
 
3959 dpurdie 17017
/
17018
 
4040 dpurdie 17019
/
17020
--------------------------------------------------------
17021
--  DDL for Procedure UPDATE_MISC_VIEW
17022
--------------------------------------------------------
17023
set define off;
17024
 
3959 dpurdie 17025
  CREATE OR REPLACE PROCEDURE "UPDATE_MISC_VIEW" IS
1373 dpurdie 17026
/******************************************************************************
3959 dpurdie 17027
   NAME:       UPDATE_MISC_VIEW
17028
   PURPOSE:    
1373 dpurdie 17029
 
17030
   REVISIONS:
17031
   Ver        Date        Author           Description
17032
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 17033
   1.0        16/03/2007          1. Created this procedure.
1373 dpurdie 17034
 
17035
   NOTES:
17036
 
17037
   Automatically available Auto Replace Keywords:
3959 dpurdie 17038
      Object Name:     UPDATE_MISC_VIEW
17039
      Sysdate:         16/03/2007
17040
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
1373 dpurdie 17041
      Username:         (set in TOAD Options, Procedure Editor)
17042
      Table Name:       (set in the "New PL/SQL Object" dialog)
17043
 
17044
******************************************************************************/
3959 dpurdie 17045
   CURSOR view_cur /*Create a record set to store the ripple data*/
17046
   IS
17047
   	 SELECT pkg.pkg_id, rc.base_view_id 
17048
	 FROM package_versions pv, packages pkg, release_content rc
17049
	 where rc.rtag_id = 2362
17050
	 and rc.pv_id = pv.pv_id
17051
	 and pv.pkg_id = pkg.pkg_id;
17052
   view_rec   view_cur%ROWTYPE;
17053
 
17054
 
17055
 
1373 dpurdie 17056
BEGIN
3959 dpurdie 17057
   OPEN view_cur;
1373 dpurdie 17058
 
3959 dpurdie 17059
   FETCH view_cur
17060
    INTO view_rec;
1373 dpurdie 17061
 
3959 dpurdie 17062
   WHILE view_cur%FOUND
17063
   LOOP
1373 dpurdie 17064
 
3959 dpurdie 17065
 
17066
	   update release_content
17067
	   set base_view_id = view_rec.base_view_id
17068
	   where rtag_id = 8027
17069
	   and pv_id IN 
17070
	   (
17071
	   	select pv.pv_id from release_content rc, package_versions pv
17072
		where rc.rtag_id = 8027
17073
		and pv.pv_id = rc.pv_id
17074
		and pv.pkg_id = view_rec.pkg_id 
17075
 
17076
	   );
17077
 
17078
 
1373 dpurdie 17079
 
3959 dpurdie 17080
 
17081
 
17082
 
17083
 
17084
 
1373 dpurdie 17085
 
3959 dpurdie 17086
   FETCH view_cur
17087
   		 INTO view_rec;
17088
   END LOOP;	 
1373 dpurdie 17089
 
17090
 
17091
 
17092
 
3959 dpurdie 17093
 
17094
END UPDATE_MISC_VIEW; 
4040 dpurdie 17095
 
1374 dpurdie 17096
/
1373 dpurdie 17097
 
4040 dpurdie 17098
/
17099
--------------------------------------------------------
17100
--  DDL for Procedure UPDATE_PACKAGE_DEPENDENCY
17101
--------------------------------------------------------
17102
set define off;
17103
 
3959 dpurdie 17104
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_DEPENDENCY" ( NNpv_id IN NUMBER,
17105
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
17106
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
17107
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
17108
                                                        NNuser_id IN NUMBER,
17109
                                                        NNdelete_old_dependency IN NUMBER
17110
                                                       ) IS
1373 dpurdie 17111
/* ---------------------------------------------------------------------------
3959 dpurdie 17112
    Version: 3.3
1373 dpurdie 17113
   --------------------------------------------------------------------------- */
17114
 
3959 dpurdie 17115
    retPV_ID NUMBER;
17116
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
17117
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
17118
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
17119
    NNpkg_id NUMBER;
17120
    NNdpkg_id NUMBER;
1373 dpurdie 17121
 
17122
BEGIN
3959 dpurdie 17123
    --- Seed database with package_name and version if required ---
17124
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
1373 dpurdie 17125
 
3959 dpurdie 17126
    -- get v_ext,pkg_id of current dependency
17127
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
17128
      FROM PACKAGE_VERSIONS
17129
     WHERE pv_id = retPV_ID;
1373 dpurdie 17130
 
3959 dpurdie 17131
    -- get pkg_id of parent package
17132
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
17133
      FROM PACKAGE_VERSIONS
17134
     WHERE pv_id = NNpv_id;
1373 dpurdie 17135
 
17136
 
3959 dpurdie 17137
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
17138
    	( (PvIsPatch IS NOT NULL) )THEN
1373 dpurdie 17139
 
3959 dpurdie 17140
	    IF NNdelete_old_dependency = 1 THEN
17141
	        /* Used for CUSTOM dependency add/edit */
1373 dpurdie 17142
 
3959 dpurdie 17143
	        --- Remove old dependency ---
17144
            IF (PvIsPatch IS NULL) THEN
17145
            	-- Do it for Packages
17146
		        DELETE FROM PACKAGE_DEPENDENCIES
17147
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
17148
		            (
17149
		            SELECT dep.*
17150
		              FROM PACKAGE_DEPENDENCIES dep,
17151
		                   PACKAGE_VERSIONS dpv,
17152
		                   PACKAGE_VERSIONS pv
17153
		             WHERE dep.dpv_id = dpv.pv_id
17154
		               AND dep.pv_id = NNpv_id
17155
		               AND pv.pv_id = retPV_ID
17156
		               AND dpv.pkg_id = pv.pkg_id
17157
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
17158
		            );
17159
            ELSE
17160
            	-- Do it for Patches
17161
                DELETE FROM PACKAGE_DEPENDENCIES
17162
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
17163
		            (
17164
		            SELECT dep.*
17165
		              FROM PACKAGE_DEPENDENCIES dep
17166
		             WHERE dep.dpv_id = retPV_ID
17167
		               AND dep.pv_id = NNpv_id
17168
		            );
17169
			END IF;
1373 dpurdie 17170
 
3959 dpurdie 17171
	    END IF;
1373 dpurdie 17172
 
3959 dpurdie 17173
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
17174
 
17175
	    --- Add new dependency ---
17176
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
17177
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
17178
 
17179
	END IF;
17180
 
17181
END Update_Package_Dependency;
4040 dpurdie 17182
 
1374 dpurdie 17183
/
1373 dpurdie 17184
 
4040 dpurdie 17185
/
17186
--------------------------------------------------------
17187
--  DDL for Procedure UPDATE_PACKAGE_STATES
17188
--------------------------------------------------------
17189
set define off;
17190
 
3959 dpurdie 17191
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_STATES" ( NNrtag_id IN NUMBER,
17192
                                                    NNsession_num IN NUMBER ) IS
17193
/* =============  STATE RULES =================== */
17194
/*
17195
   MNR   MRR   MN   MR    |   pkg_state
17196
   ------------------------------------
17197
 
17198
 
17199
 
17200
 
17201
   ------------------------------------
17202
 
17203
 
17204
 
17205
 
17206
   ------------------------------------
17207
    1     0     0     0   |      MINOR_READY
17208
    1     0     0     1   |      MAJOR
17209
    1     0     1     0   |      MINOR
17210
    1     0     1     1   |      MAJOR
17211
   ------------------------------------
17212
    1     1     0     0   |      MAJOR_READY
17213
    1     1     0     1   |      MAJOR
17214
    1     1     1     0   |      MAJOR
17215
    1     1     1     1   |      MAJOR
17216
   ------------------------------------
17217
*/
17218
BEGIN
17219
    /*----------------------------------------------
17220
    ||              MINOR READY
17221
    */----------------------------------------------
1373 dpurdie 17222
 
3959 dpurdie 17223
    UPDATE release_content
17224
       SET pkg_state = 4
17225
     WHERE rtag_id = NNrtag_id
17226
       AND pv_id IN
17227
           (
17228
           SELECT DISTINCT pv_id
17229
           FROM temp_env_states
17230
           WHERE session_num = NNsession_num
17231
             AND level_num = 1
17232
             AND tes_state = 2
17233
           );
1373 dpurdie 17234
 
3959 dpurdie 17235
    /*----------------------------------------------
17236
    ||              MAJOR READY
17237
    */----------------------------------------------
17238
    UPDATE release_content
17239
       SET pkg_state = 3
17240
     WHERE rtag_id = NNrtag_id
17241
       AND pv_id IN
17242
           (
17243
           SELECT DISTINCT pv_id
17244
           FROM temp_env_states
17245
           WHERE session_num = NNsession_num
17246
             AND level_num = 1
17247
             AND tes_state IN (0,1)
17248
           );
1373 dpurdie 17249
 
3959 dpurdie 17250
    /*----------------------------------------------
17251
    ||                MINOR
17252
    */----------------------------------------------
17253
    UPDATE release_content
17254
       SET pkg_state = 2
17255
     WHERE rtag_id = NNrtag_id
17256
       AND pv_id IN
17257
           (
17258
           SELECT DISTINCT pv_id
17259
            FROM temp_env_states
17260
            WHERE session_num = NNsession_num
17261
              AND level_num >= 2
17262
              AND tes_state = 2
17263
            MINUS
17264
           SELECT pv_id
17265
             FROM release_content
17266
            WHERE rtag_id = NNrtag_id
17267
              AND pkg_state = 3
17268
           );
1373 dpurdie 17269
 
3959 dpurdie 17270
    /*----------------------------------------------
17271
    ||                MAJOR
17272
    */----------------------------------------------
17273
    UPDATE release_content
17274
       SET pkg_state = 1
17275
     WHERE rtag_id = NNrtag_id
17276
       AND pv_id IN
17277
           (
17278
           SELECT DISTINCT pv_id
17279
           FROM temp_env_states
17280
           WHERE session_num = NNsession_num
17281
             AND level_num >= 2
17282
             AND tes_state IN (0,1)
17283
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
17284
           UNION
17285
           SELECT DISTINCT tes.pv_id
17286
           FROM temp_env_states tes,
17287
                release_content rc
17288
           WHERE tes.session_num = NNsession_num
17289
             AND tes.level_num >= 2
17290
             AND tes.tes_state = 2
17291
             AND rtag_id = NNrtag_id
17292
             AND rc.pv_id = tes.pv_id
17293
             AND rc.pkg_state = 3
17294
           );
1373 dpurdie 17295
 
3959 dpurdie 17296
    /*----------------------------------------------
17297
    ||                 OK
17298
    */----------------------------------------------
17299
    UPDATE release_content
17300
       SET pkg_state = 0
17301
     WHERE rtag_id = NNrtag_id
17302
       AND pv_id IN
17303
           (
17304
           SELECT rc.pv_id
17305
             FROM release_content rc
17306
            WHERE rc.rtag_id = NNrtag_id
17307
              AND NOT rc.pv_id IN
17308
                    (
17309
                     SELECT DISTINCT pv_id
17310
                     FROM temp_env_states WHERE session_num = NNsession_num
17311
                    )
17312
           );
1373 dpurdie 17313
 
3959 dpurdie 17314
      Update_Deprecation_State (NNrtag_id);
1373 dpurdie 17315
 
3959 dpurdie 17316
    /*----------------------------------------------
17317
    ||              PEGGED VERSIONS DEPENDENT
17318
    */----------------------------------------------
17319
    UPDATE release_content
17320
       SET pkg_state = 10
17321
     WHERE rtag_id = NNrtag_id
17322
       AND pv_id IN
17323
           (
17324
           SELECT DISTINCT pv_id
17325
           FROM pegged_versions pegv
17326
           WHERE pegv.rtag_id = NNrtag_id
17327
           );
1373 dpurdie 17328
 
3959 dpurdie 17329
    /*----------------------------------------------
17330
    ||              ADVISORY RIPPLE
17331
    */----------------------------------------------
17332
    UPDATE release_content
17333
       SET pkg_state = 8
17334
     WHERE rtag_id = NNrtag_id
17335
       AND pv_id IN
17336
           (
17337
           SELECT DISTINCT pv_id
17338
           FROM advisory_ripple ar
17339
           WHERE ar.rtag_id = NNrtag_id
17340
           )
17341
       AND pv_id IN
17342
           (
17343
           SELECT DISTINCT pv_id
17344
           FROM release_content rc
17345
           WHERE rc.rtag_id = NNrtag_id
17346
           );
1373 dpurdie 17347
 
3959 dpurdie 17348
END Update_Package_States;
4040 dpurdie 17349
 
3959 dpurdie 17350
/
1373 dpurdie 17351
 
4040 dpurdie 17352
/
17353
--------------------------------------------------------
17354
--  DDL for Procedure UPDATE_PROCESSES
17355
--------------------------------------------------------
17356
set define off;
17357
 
3959 dpurdie 17358
  CREATE OR REPLACE PROCEDURE "UPDATE_PROCESSES" 
17359
IS
1373 dpurdie 17360
 
3959 dpurdie 17361
proc_id NUMBER;
17362
/******************************************************************************
17363
   NAME:       DELETE_DO_NOT_RIPPLE
17364
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
17365
               IS RELEASED
1373 dpurdie 17366
 
3959 dpurdie 17367
   REVISIONS:
17368
   Ver        Date        Author           Description
17369
   ---------  ----------  ---------------  ------------------------------------
17370
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 17371
 
3959 dpurdie 17372
   NOTES:
1373 dpurdie 17373
 
3959 dpurdie 17374
   Automatically available Auto Replace Keywords:
17375
      Object Name:     DELETE_DO_NOT_RIPPLE
17376
      Sysdate:         21/04/2006
17377
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
17378
      Username:         (set in TOAD Options, Procedure Editor)
17379
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 17380
 
3959 dpurdie 17381
******************************************************************************/
17382
   CURSOR ripple_cur
17383
   IS
17384
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
1373 dpurdie 17385
 
3959 dpurdie 17386
   ripple_rec   ripple_cur%ROWTYPE;
17387
BEGIN
17388
   OPEN ripple_cur;
17389
 
17390
   FETCH ripple_cur
17391
    INTO ripple_rec;
17392
 
17393
   WHILE ripple_cur%FOUND
17394
   LOOP
17395
 
17396
 
17397
update deployment_manager.processes_config 
17398
set proc_id = ripple_rec.proc_id
17399
where pkg_health_tag = ripple_rec.proc_name
17400
and cmd_interface IS NULL
17401
and pkg_owner IS NULL
17402
and is_interface IS NULL; 
17403
 
17404
 
17405
      FETCH ripple_cur
17406
       INTO ripple_rec;
17407
   END LOOP;
17408
END UPDATE_PROCESSES;
4040 dpurdie 17409
 
1374 dpurdie 17410
/
1373 dpurdie 17411
 
4040 dpurdie 17412
/
17413
--------------------------------------------------------
17414
--  DDL for Procedure UPDATE_RUNTIME_DEPENDENCY
17415
--------------------------------------------------------
17416
set define off;
17417
 
3959 dpurdie 17418
  CREATE OR REPLACE PROCEDURE "UPDATE_RUNTIME_DEPENDENCY" ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
17419
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
17420
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
17421
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
17422
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
17423
													    NNuser_id IN NUMBER ) IS
1373 dpurdie 17424
/* ---------------------------------------------------------------------------
3959 dpurdie 17425
    Version: 3.0.1
1373 dpurdie 17426
   --------------------------------------------------------------------------- */
17427
 
3959 dpurdie 17428
    retRTD_ID	NUMBER;
17429
	CURSOR rtd_cur IS
17430
	    SELECT pv.pkg_version, pkg.pkg_name
17431
		  FROM runtime_dependencies rtd,
17432
		       package_versions pv,
17433
			   packages pkg
17434
		 WHERE rtd.rtd_id = pv.pv_id
17435
		   AND pv.pkg_id = pkg.pkg_id
17436
		   AND rtd.pv_id = NNpv_id
17437
		   AND rtd.rtd_id = NNrtd_id;
17438
	   rtd_rec rtd_cur%ROWTYPE;
1373 dpurdie 17439
 
3959 dpurdie 17440
	CURSOR old_rtd_cur IS
17441
	    SELECT pv.pv_id
17442
		  FROM package_versions pv
17443
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
17444
		 	   			 	    FROM package_versions rtdpv
17445
							   WHERE rtdpv.pv_id = NNrtd_id )
17446
		   AND pv.pkg_version = SSrtd_version;
17447
	old_rtd_rec old_rtd_cur%ROWTYPE;
1373 dpurdie 17448
 
3959 dpurdie 17449
 
1373 dpurdie 17450
BEGIN
17451
 
3959 dpurdie 17452
    -- Get current runtime dependency details
17453
	OPEN rtd_cur;
17454
    FETCH rtd_cur INTO rtd_rec;
1373 dpurdie 17455
 
17456
 
17457
 
17458
 
3959 dpurdie 17459
	IF rtd_rec.pkg_version != SSrtd_version THEN
17460
           -- Version has changed, hence create new runtime dependency --
17461
	    /* NOTE: You must create new version as updating just a version will affect
17462
		        all packages using this runtime dependency and user does not expect that.
17463
		        It is safer to create new version */
17464
		OPEN old_rtd_cur;
17465
		FETCH old_rtd_cur INTO old_rtd_rec;
1373 dpurdie 17466
 
17467
 
3959 dpurdie 17468
		IF old_rtd_cur%NOTFOUND
17469
		THEN
17470
			-- Version not found, hence Create New version --
17471
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
1373 dpurdie 17472
 
3959 dpurdie 17473
			-- Update runtime dependency table --
17474
			UPDATE runtime_dependencies SET
17475
				   rtd_id = retRTD_ID,
17476
				   rtd_url = SSrtd_url,
17477
				   rtd_comments = SSrtd_comments
17478
			 WHERE pv_id = NNpv_id
17479
			   AND rtd_id = NNrtd_id;
1373 dpurdie 17480
 
3959 dpurdie 17481
		ELSE
17482
			-- Update runtime dependency table --
17483
			UPDATE runtime_dependencies SET
17484
				   rtd_id = old_rtd_rec.pv_id,
17485
				   rtd_url = SSrtd_url,
17486
				   rtd_comments = SSrtd_comments
17487
			 WHERE pv_id = NNpv_id
17488
			   AND rtd_id = NNrtd_id;
17489
 
17490
		END IF;
17491
 
17492
 
17493
		CLOSE old_rtd_cur;
17494
 
17495
	ELSE
17496
		--  Version has not changed, hence update everithing except	version --
17497
		UPDATE runtime_dependencies SET
17498
			   rtd_url = SSrtd_url,
17499
			   rtd_comments = SSrtd_comments
17500
		 WHERE pv_id = NNpv_id
17501
		   AND rtd_id = NNrtd_id;
17502
 
17503
 
17504
 
17505
	END IF;
17506
 
17507
 
17508
	CLOSE rtd_cur;
17509
 
17510
END Update_Runtime_Dependency;
4040 dpurdie 17511
 
1374 dpurdie 17512
/
1373 dpurdie 17513
 
4040 dpurdie 17514
/
17515
--------------------------------------------------------
17516
--  DDL for Procedure UPDATE_UNIT_TEST
17517
--------------------------------------------------------
17518
set define off;
17519
 
3959 dpurdie 17520
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST" ( nTest_id IN NUMBER,
17521
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
17522
											   nPv_id IN NUMBER,
17523
											   nUserId IN NUMBER,
17524
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
17525
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
17526
	                                           sCompletion_date IN VARCHAR2,
17527
											   sDpkg_path IN VARCHAR2,
17528
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
17529
											   sResults IN VARCHAR2,
17530
											   outFileName OUT VARCHAR2
17531
                                              ) IS
1373 dpurdie 17532
/* ---------------------------------------------------------------------------
3959 dpurdie 17533
    Version: 3.1.0
1373 dpurdie 17534
   --------------------------------------------------------------------------- */
3959 dpurdie 17535
 
17536
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 17537
 
3959 dpurdie 17538
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
17539
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
1373 dpurdie 17540
 
3959 dpurdie 17541
 
1373 dpurdie 17542
BEGIN
17543
 
3959 dpurdie 17544
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
17545
       	ResultsURL := sResults;
17546
       ELSE
17547
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
17548
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
17549
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
17550
           END IF;
17551
       END IF;
1373 dpurdie 17552
 
3959 dpurdie 17553
	--- Update Unit Test ---
17554
    UPDATE UNIT_TESTS SET
17555
           TEST_SUMMARY = sTest_summary,
17556
		   NUMOF_TEST = sNumof_test,
17557
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
17558
		   COMPLETED_BY = nUserId,
17559
		   RESULTS_URL = ResultsURL,
17560
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
17561
     WHERE TEST_ID = nTest_id
17562
       AND PV_ID = nPv_id;
1373 dpurdie 17563
 
3959 dpurdie 17564
END Update_Unit_Test;
4040 dpurdie 17565
 
3959 dpurdie 17566
/
1373 dpurdie 17567
 
4040 dpurdie 17568
/
17569
--------------------------------------------------------
17570
--  DDL for Procedure UPDATE_UNIT_TEST_ACCEPTANCE
17571
--------------------------------------------------------
17572
set define off;
17573
 
3959 dpurdie 17574
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_ACCEPTANCE" ( pnTest_id IN NUMBER,
17575
														  pnPv_id IN NUMBER,
17576
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
17577
														  sAcceptanceDate IN VARCHAR2,
17578
														  sAcceptedBy IN NUMBER,
17579
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
17580
														  cUpdateAcceptedStateOnly IN CHAR
17581
					                                     ) IS
17582
/* ---------------------------------------------------------------------------
17583
    Version: 3.0.0
17584
   --------------------------------------------------------------------------- */
1373 dpurdie 17585
 
17586
 
17587
 
3959 dpurdie 17588
BEGIN
17589
	IF cUpdateAcceptedStateOnly = 'Y'
17590
	THEN
17591
		--- Update Accepted State Only ---
17592
		IF ( sAccepted IS NULL )
17593
		THEN
17594
			-- Clear alleptance
17595
			UPDATE UNIT_TESTS SET
17596
		           TEST_ACCEPTED = NULL,
17597
		           ACCEPTANCE_DATE = NULL,
17598
				   ACCEPTED_BY = NULL,
17599
				   REVIEW_COMMENTS = NULL
17600
		     WHERE TEST_ID = pnTest_id
17601
		       AND PV_ID = pnPv_id;
17602
 
17603
	    ELSE
17604
			UPDATE UNIT_TESTS SET
17605
		           TEST_ACCEPTED = sAccepted,
17606
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
17607
				   ACCEPTED_BY = sAcceptedBy
17608
		     WHERE TEST_ID = pnTest_id
17609
		       AND PV_ID = pnPv_id;
17610
 
17611
		END IF;
17612
 
17613
 
17614
	ELSE
17615
		--- Update Unit Test Acceptance ---
17616
	    UPDATE UNIT_TESTS SET
17617
	           TEST_ACCEPTED = sAccepted,
17618
			   REVIEW_COMMENTS = sReviewComments,
17619
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
17620
			   ACCEPTED_BY = sAcceptedBy
17621
	     WHERE TEST_ID = pnTest_id
17622
	       AND PV_ID = pnPv_id;
17623
 
17624
	END IF;
17625
 
17626
END Update_Unit_Test_Acceptance;
4040 dpurdie 17627
 
1374 dpurdie 17628
/
1373 dpurdie 17629
 
4040 dpurdie 17630
/
17631
--------------------------------------------------------
17632
--  DDL for Procedure UPDATE_UNIT_TEST_TEST
17633
--------------------------------------------------------
17634
set define off;
17635
 
3959 dpurdie 17636
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_TEST" ( nTest_id IN NUMBER,
17637
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
17638
											   nPv_id IN NUMBER,
17639
											   nUserId IN NUMBER,
17640
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
17641
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
17642
	                                           sCompletion_date IN VARCHAR2,
17643
											   sDpkg_path IN VARCHAR2,
17644
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
17645
											   sResults IN VARCHAR2,
17646
											   outFileName OUT VARCHAR2
17647
                                              ) IS
1373 dpurdie 17648
/* ---------------------------------------------------------------------------
3959 dpurdie 17649
    Version: 3.1.0
1373 dpurdie 17650
   --------------------------------------------------------------------------- */
3959 dpurdie 17651
 
17652
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 17653
 
3959 dpurdie 17654
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
17655
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
17656
 
17657
 
1373 dpurdie 17658
BEGIN
17659
 
3959 dpurdie 17660
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
17661
       	ResultsURL := sResults;
17662
       ELSE
17663
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
17664
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
17665
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
17666
           END IF;
17667
       END IF;
1373 dpurdie 17668
 
3959 dpurdie 17669
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
17670
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
17671
    		sResults_url:= 'doc' || '/' || 
17672
			;
17673
        END IF;*/
17674
	--- Update Unit Test ---
17675
    UPDATE UNIT_TESTS SET
17676
           TEST_SUMMARY = sTest_summary,
17677
		   NUMOF_TEST = sNumof_test,
17678
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
17679
		   COMPLETED_BY = nUserId,
17680
		   RESULTS_URL = ResultsURL,
17681
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
17682
     WHERE TEST_ID = nTest_id
17683
       AND PV_ID = nPv_id;
1373 dpurdie 17684
 
3959 dpurdie 17685
END Update_Unit_Test_Test;
4040 dpurdie 17686
 
17687
/
17688
 
17689
/
17690
--------------------------------------------------------
17691
--  DDL for Synonymn APPLICATIONS
17692
--------------------------------------------------------
17693
 
17694
  CREATE OR REPLACE SYNONYM "APPLICATIONS" FOR "APPLICATIONS";
17695
/
17696
--------------------------------------------------------
17697
--  DDL for Synonymn APPLICATION_PAGES
17698
--------------------------------------------------------
17699
 
17700
  CREATE OR REPLACE SYNONYM "APPLICATION_PAGES" FOR "APPLICATION_PAGES";
17701
/
17702
--------------------------------------------------------
17703
--  DDL for Synonymn CONTROL_OBJECTS
17704
--------------------------------------------------------
17705
 
17706
  CREATE OR REPLACE SYNONYM "CONTROL_OBJECTS" FOR "CONTROL_OBJECTS";
17707
/
17708
--------------------------------------------------------
17709
--  DDL for Synonymn DATA_PERMISSIONS
17710
--------------------------------------------------------
17711
 
17712
  CREATE OR REPLACE SYNONYM "DATA_PERMISSIONS" FOR "DATA_PERMISSIONS";
17713
/
17714
--------------------------------------------------------
17715
--  DDL for Synonymn DATA_TABLES
17716
--------------------------------------------------------
17717
 
17718
  CREATE OR REPLACE SYNONYM "DATA_TABLES" FOR "DATA_TABLES";
17719
/
17720
--------------------------------------------------------
17721
--  DDL for Synonymn PAGE_CONTROL_OBJECTS
17722
--------------------------------------------------------
17723
 
17724
  CREATE OR REPLACE SYNONYM "PAGE_CONTROL_OBJECTS" FOR "PAGE_CONTROL_OBJECTS";
17725
/
17726
--------------------------------------------------------
17727
--  DDL for Synonymn PERMISSION_TYPES
17728
--------------------------------------------------------
17729
 
17730
  CREATE OR REPLACE SYNONYM "PERMISSION_TYPES" FOR "PERMISSION_TYPES";
17731
/
17732
--------------------------------------------------------
17733
--  DDL for Synonymn PK_AMUTILS
17734
--------------------------------------------------------
17735
 
17736
  CREATE OR REPLACE SYNONYM "PK_AMUTILS" FOR "PK_AMUTILS";
17737
/
17738
--------------------------------------------------------
17739
--  DDL for Synonymn PK_SECURITY
17740
--------------------------------------------------------
17741
 
17742
  CREATE OR REPLACE SYNONYM "PK_SECURITY" FOR "PK_SECURITY";
17743
/
17744
--------------------------------------------------------
17745
--  DDL for Synonymn ROLES
17746
--------------------------------------------------------
17747
 
17748
  CREATE OR REPLACE SYNONYM "ROLES" FOR "ROLES";
17749
/
17750
--------------------------------------------------------
17751
--  DDL for Synonymn ROLE_PRIVILEGES
17752
--------------------------------------------------------
17753
 
17754
  CREATE OR REPLACE SYNONYM "ROLE_PRIVILEGES" FOR "ROLE_PRIVILEGES";
17755
/
17756
--------------------------------------------------------
17757
--  DDL for Synonymn USERS
17758
--------------------------------------------------------
17759
 
17760
  CREATE OR REPLACE SYNONYM "USERS" FOR "USERS";
17761
/
17762
--------------------------------------------------------
17763
--  DDL for Synonymn USER_APPLICATIONS
17764
--------------------------------------------------------
17765
 
17766
  CREATE OR REPLACE SYNONYM "USER_APPLICATIONS" FOR "USER_APPLICATIONS";
17767
/
17768
--------------------------------------------------------
17769
--  DDL for Synonymn USER_ROLES
17770
--------------------------------------------------------
17771
 
17772
  CREATE OR REPLACE SYNONYM "USER_ROLES" FOR "USER_ROLES";
17773
/