Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
1374 dpurdie 1
--------------------------------------------------------
4211 dpurdie 2
--  File created - Wednesday-April-30-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
 
4211 dpurdie 42
   CREATE SEQUENCE  "SEQ_ADDITIONAL_NOTES"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 34609 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 43
/
44
--------------------------------------------------------
45
--  DDL for Sequence SEQ_BMCON_ID
46
--------------------------------------------------------
47
 
4211 dpurdie 48
   CREATE SEQUENCE  "SEQ_BMCON_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 121 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
 
4211 dpurdie 60
   CREATE SEQUENCE  "SEQ_CR_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 84501 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 61
/
62
--------------------------------------------------------
63
--  DDL for Sequence SEQ_DAEMON_INSTRUCTION_ID
64
--------------------------------------------------------
65
 
4211 dpurdie 66
   CREATE SEQUENCE  "SEQ_DAEMON_INSTRUCTION_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 148162 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
 
4211 dpurdie 90
   CREATE SEQUENCE  "SEQ_PKG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 59025 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 91
/
92
--------------------------------------------------------
93
--  DDL for Sequence SEQ_PROJ_ID
94
--------------------------------------------------------
95
 
4211 dpurdie 96
   CREATE SEQUENCE  "SEQ_PROJ_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 761 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 97
/
98
--------------------------------------------------------
99
--  DDL for Sequence SEQ_PV_ID
100
--------------------------------------------------------
101
 
4211 dpurdie 102
   CREATE SEQUENCE  "SEQ_PV_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 968148 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 103
/
104
--------------------------------------------------------
105
--  DDL for Sequence SEQ_RCON_ID
106
--------------------------------------------------------
107
 
4211 dpurdie 108
   CREATE SEQUENCE  "SEQ_RCON_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 24443 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 109
/
110
--------------------------------------------------------
111
--  DDL for Sequence SEQ_RTAG_ID
112
--------------------------------------------------------
113
 
4211 dpurdie 114
   CREATE SEQUENCE  "SEQ_RTAG_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 29563 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 115
/
116
--------------------------------------------------------
117
--  DDL for Sequence SEQ_SCHEDULED_ID
118
--------------------------------------------------------
119
 
4211 dpurdie 120
   CREATE SEQUENCE  "SEQ_SCHEDULED_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999990 INCREMENT BY 1 START WITH 26221 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 121
/
122
--------------------------------------------------------
123
--  DDL for Sequence SEQ_SESSION_NUM
124
--------------------------------------------------------
125
 
4211 dpurdie 126
   CREATE SEQUENCE  "SEQ_SESSION_NUM"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 992162 CACHE 20 ORDER  NOCYCLE ;
4040 dpurdie 127
/
128
--------------------------------------------------------
129
--  DDL for Sequence SEQ_UNIT_TESTS
130
--------------------------------------------------------
131
 
4211 dpurdie 132
   CREATE SEQUENCE  "SEQ_UNIT_TESTS"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 346943 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
 
4211 dpurdie 156
   CREATE SEQUENCE  "SEQ_VTREE_ID"  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 26382 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), 
877
	"GBE_BUILDFILTER" VARCHAR2(255)
878
   ) ;
879
/
880
--------------------------------------------------------
881
--  DDL for Table RELEASE_CONTENT
882
--------------------------------------------------------
883
 
884
  CREATE TABLE "RELEASE_CONTENT" 
885
   (	"RTAG_ID" NUMBER, 
886
	"PV_ID" NUMBER, 
887
	"BASE_VIEW_ID" NUMBER, 
888
	"INSERT_STAMP" DATE, 
889
	"INSERTOR_ID" NUMBER, 
890
	"PKG_STATE" NUMBER, 
891
	"PKG_ID" NUMBER, 
892
	"DEPRECATED_STATE" NUMBER, 
893
	"PRODUCT_STATE" NUMBER
894
   ) ;
895
/
896
--------------------------------------------------------
897
--  DDL for Table RELEASE_LINKS
898
--------------------------------------------------------
899
 
900
  CREATE TABLE "RELEASE_LINKS" 
901
   (	"RTAG_ID" NUMBER, 
902
	"REF_RTAG_ID" NUMBER
903
   ) ;
904
/
905
--------------------------------------------------------
906
--  DDL for Table RELEASE_METRICS
907
--------------------------------------------------------
908
 
909
  CREATE TABLE "RELEASE_METRICS" 
910
   (	"RTAG_ID" NUMBER, 
911
	"TOTAL_PACKAGES" NUMBER, 
912
	"AUTOBUILT" NUMBER, 
913
	"LINES_OF_CODE" NUMBER, 
914
	"UNIT_TESTED" NUMBER, 
915
	"AUTOTESTED" NUMBER, 
916
	"BRANCHES" NUMBER, 
917
	"LAST_BUILD_TIME" DATE
918
   ) ;
919
/
920
--------------------------------------------------------
921
--  DDL for Table RELEASE_TAGS
922
--------------------------------------------------------
923
 
924
  CREATE TABLE "RELEASE_TAGS" 
925
   (	"RTAG_ID" NUMBER, 
926
	"VTREE_ID" NUMBER, 
927
	"RTAG_NAME" VARCHAR2(50), 
928
	"DESCRIPTION" VARCHAR2(4000), 
929
	"CREATED_STAMP" DATE, 
930
	"CREATOR_ID" NUMBER, 
931
	"OFFICIAL_STAMP" DATE, 
932
	"RELEASOR_ID" NUMBER, 
933
	"OFFICIAL" CHAR(1), 
934
	"REBUILD_ENV" CHAR(1), 
935
	"REBUILD_STAMP" NUMBER, 
936
	"RTAG_VERSION" VARCHAR2(4000), 
937
	"RTAG_LIFE_CYCLE" NUMBER, 
938
	"PARENT_RTAG_ID" NUMBER, 
939
	"PROJ_ID" NUMBER, 
940
	"DISPLAY_ORDER" NUMBER, 
941
	"OWNER_EMAIL" VARCHAR2(1000), 
942
	"ASSOC_MASS_REF" NUMBER, 
943
	"OWNER_PERSONAL_EMAIL" VARCHAR2(1000), 
944
	"CONFIG_SPEC_BRANCH" VARCHAR2(4000), 
4211 dpurdie 945
	"PRODUCT_STATE_USED" CHAR(1), 
946
	"OFFICIAL_ID" NUMBER
4040 dpurdie 947
   ) ;
948
/
949
--------------------------------------------------------
950
--  DDL for Table REPEAT_SCHEDULE
951
--------------------------------------------------------
952
 
953
  CREATE TABLE "REPEAT_SCHEDULE" 
954
   (	"RPT_ID" NUMBER, 
955
	"REPEAT" CHAR(1)
956
   ) ;
957
/
958
--------------------------------------------------------
959
--  DDL for Table RIPPLE_FIELD_STATES
960
--------------------------------------------------------
961
 
962
  CREATE TABLE "RIPPLE_FIELD_STATES" 
963
   (	"STATE_ID" NUMBER, 
964
	"STATE_ACRONYM" CHAR(1), 
965
	"STATE_NAME" VARCHAR2(50)
966
   ) ;
967
/
968
--------------------------------------------------------
969
--  DDL for Table RM_PACKAGE_ISSUES
970
--------------------------------------------------------
971
 
972
  CREATE TABLE "RM_PACKAGE_ISSUES" 
973
   (	"PKG_ID" NUMBER, 
974
	"PKG_NAME" VARCHAR2(50), 
975
	"PV_ID" NUMBER, 
976
	"PKG_VERSION" VARCHAR2(50), 
977
	"DPV_ID" NUMBER, 
978
	"DPKG_NAME" VARCHAR2(50), 
979
	"DPKG_VERSION" VARCHAR2(50), 
980
	"ISS_DB" NUMBER, 
981
	"ISS_ID" NUMBER
982
   ) ;
983
/
984
--------------------------------------------------------
985
--  DDL for Table RM_PKG_ISSUES
986
--------------------------------------------------------
987
 
988
  CREATE GLOBAL TEMPORARY TABLE "RM_PKG_ISSUES" 
989
   (	"PKG_ID" NUMBER, 
990
	"PKG_NAME" VARCHAR2(50), 
991
	"PV_ID" NUMBER, 
992
	"PKG_VERSION" VARCHAR2(50), 
993
	"DPV_ID" NUMBER, 
994
	"DPKG_NAME" VARCHAR2(50), 
995
	"DPKG_VERSION" VARCHAR2(50), 
996
	"ISS_DB" NUMBER, 
997
	"ISS_ID" NUMBER
998
   ) ON COMMIT PRESERVE ROWS ;
999
/
1000
--------------------------------------------------------
1001
--  DDL for Table RUNTIME_DEPENDENCIES
1002
--------------------------------------------------------
1003
 
1004
  CREATE TABLE "RUNTIME_DEPENDENCIES" 
1005
   (	"PV_ID" NUMBER, 
1006
	"RTD_ID" NUMBER, 
1007
	"RTD_COMMENTS" VARCHAR2(2000), 
1008
	"RTD_URL" VARCHAR2(2000), 
1009
	"MOD_DATE" DATE, 
1010
	"MOD_USER" NUMBER
1011
   ) ;
1012
/
1013
--------------------------------------------------------
1014
--  DDL for Table RUN_LEVEL
1015
--------------------------------------------------------
1016
 
1017
  CREATE TABLE "RUN_LEVEL" 
1018
   (	"RCON_ID" NUMBER, 
1019
	"CURRENT_BUILD_FILES" CLOB, 
1020
	"CURRENT_RUN_LEVEL" NUMBER, 
1021
	"PAUSE" NUMBER, 
1022
	"CURRENT_PKG_ID_BEING_BUILT" NUMBER, 
1023
	"KEEP_ALIVE" DATE
1024
   ) ;
1025
/
1026
--------------------------------------------------------
1027
--  DDL for Table RUN_LEVEL_SCHEDULE
1028
--------------------------------------------------------
1029
 
1030
  CREATE TABLE "RUN_LEVEL_SCHEDULE" 
1031
   (	"SCHEDULED_ID" NUMBER, 
1032
	"SCHEDULED_PAUSE" DATE, 
1033
	"SCHEDULED_RESUME" DATE, 
1034
	"REPEAT" CHAR(1), 
1035
	"INDEFINITE_PAUSE" CHAR(1)
1036
   ) ;
1037
/
1038
--------------------------------------------------------
1039
--  DDL for Table TEMP_ENV_STATES
1040
--------------------------------------------------------
1041
 
1042
  CREATE TABLE "TEMP_ENV_STATES" 
1043
   (	"SESSION_NUM" NUMBER, 
1044
	"LEVEL_NUM" NUMBER, 
1045
	"PV_ID" NUMBER, 
1046
	"PKG_ID" NUMBER, 
1047
	"V_EXT" VARCHAR2(50), 
1048
	"TES_STATE" NUMBER
1049
   ) ;
1050
/
1051
--------------------------------------------------------
1052
--  DDL for Table TEMP_SASH
1053
--------------------------------------------------------
1054
 
1055
  CREATE TABLE "TEMP_SASH" 
1056
   (	"RTAG_ID" NUMBER, 
1057
	"PROJ_ID" NUMBER
1058
   ) ;
1059
/
1060
--------------------------------------------------------
1061
--  DDL for Table TEMP_TREE_BROWSE
1062
--------------------------------------------------------
1063
 
1064
  CREATE TABLE "TEMP_TREE_BROWSE" 
1065
   (	"SESSION_NUM" NUMBER, 
1066
	"LEVEL_NUM" NUMBER, 
1067
	"PV_ID" NUMBER, 
1068
	"PKG_ID" NUMBER, 
1069
	"V_EXT" VARCHAR2(50), 
1070
	"DIRECTION" NUMBER
1071
   ) ;
1072
/
1073
--------------------------------------------------------
1074
--  DDL for Table TEST_TYPES
1075
--------------------------------------------------------
1076
 
1077
  CREATE TABLE "TEST_TYPES" 
1078
   (	"TEST_TYPE_ID" NUMBER, 
1079
	"TEST_TYPE_NAME" VARCHAR2(50), 
1080
	"DISPLAY_ORDER" NUMBER
1081
   ) ;
1082
/
1083
--------------------------------------------------------
1084
--  DDL for Table UNIT_TESTS
1085
--------------------------------------------------------
1086
 
1087
  CREATE TABLE "UNIT_TESTS" 
1088
   (	"TEST_ID" NUMBER, 
1089
	"PV_ID" NUMBER, 
1090
	"TEST_TYPES_FK" NUMBER, 
1091
	"TEST_SUMMARY" VARCHAR2(4000), 
1092
	"COMPLETION_DATE" DATE, 
1093
	"COMPLETED_BY" NUMBER, 
1094
	"RESULTS_URL" VARCHAR2(2000), 
1095
	"RESULTS_ATTACHMENT_NAME" VARCHAR2(2000), 
1096
	"TEST_ACCEPTED" CHAR(1), 
1097
	"ACCEPTANCE_DATE" DATE, 
1098
	"ACCEPTED_BY" NUMBER, 
1099
	"REVIEW_COMMENTS" VARCHAR2(4000), 
1100
	"NUMOF_TEST" VARCHAR2(50)
1101
   ) ;
1102
/
1103
--------------------------------------------------------
1104
--  DDL for Table VALIDATION_RULES
1105
--------------------------------------------------------
1106
 
1107
  CREATE TABLE "VALIDATION_RULES" 
1108
   (	"FIELD_NAME" VARCHAR2(1000), 
1109
	"IS_REQUIRED" CHAR(1), 
1110
	"IS_NUMERIC" CHAR(1), 
1111
	"MIN_NUMERIC_VALUE" NUMBER, 
1112
	"MAX_NUMERIC_VALUE" NUMBER, 
1113
	"IS_DATE" CHAR(1), 
1114
	"START_DATE" DATE, 
1115
	"END_DATE" DATE, 
1116
	"MIN_STRING_LENGTH" NUMBER, 
1117
	"MAX_STRING_LENGTH" NUMBER, 
1118
	"REGEXP" VARCHAR2(4000), 
1119
	"REGEXP_DESCRIPTION" VARCHAR2(50)
1120
   ) ;
1121
/
1122
--------------------------------------------------------
1123
--  DDL for Table VCS_TYPE
1124
--------------------------------------------------------
1125
 
1126
  CREATE TABLE "VCS_TYPE" 
1127
   (	"VCS_TYPE_ID" NUMBER, 
1128
	"NAME" VARCHAR2(128), 
1129
	"TAG" VARCHAR2(32)
1130
   ) ;
1131
/
1132
--------------------------------------------------------
1133
--  DDL for Table VIEWS
1134
--------------------------------------------------------
1135
 
1136
  CREATE TABLE "VIEWS" 
1137
   (	"VIEW_ID" NUMBER, 
1138
	"VIEW_NAME" VARCHAR2(30), 
1139
	"OWNER_ID" NUMBER, 
1140
	"BASE_VIEW" CHAR(1), 
1141
	"PUBLIC_READ" CHAR(1)
1142
   ) ;
1143
/
1144
--------------------------------------------------------
1145
--  DDL for Table VIEW_DEF
1146
--------------------------------------------------------
1147
 
1148
  CREATE TABLE "VIEW_DEF" 
1149
   (	"VIEW_ID" NUMBER, 
1150
	"PKG_ID" NUMBER
1151
   ) ;
1152
/
1153
--------------------------------------------------------
1154
--  DDL for Table VIEW_SETTINGS
1155
--------------------------------------------------------
1156
 
1157
  CREATE TABLE "VIEW_SETTINGS" 
1158
   (	"USER_ID" NUMBER, 
1159
	"VIEW_ID" NUMBER
1160
   ) ;
1161
/
1162
--------------------------------------------------------
1163
--  DDL for Table VTREES
1164
--------------------------------------------------------
1165
 
1166
  CREATE TABLE "VTREES" 
1167
   (	"VTREE_ID" NUMBER, 
1168
	"PROJ_ID" NUMBER, 
1169
	"VTREE_NAME" VARCHAR2(50), 
1170
	"HIDE" CHAR(1)
1171
   ) ;
1172
/
1173
--------------------------------------------------------
1174
--  DDL for Table VTREES_WORLD
1175
--------------------------------------------------------
1176
 
1177
  CREATE TABLE "VTREES_WORLD" 
1178
   (	"WORLD_ID" NUMBER, 
1179
	"VTREE_ID" NUMBER
1180
   ) ;
1181
/
1182
--------------------------------------------------------
1183
--  DDL for Table WORK_IN_PROGRESS
1184
--------------------------------------------------------
1185
 
1186
  CREATE TABLE "WORK_IN_PROGRESS" 
1187
   (	"RTAG_ID" NUMBER, 
1188
	"PV_ID" NUMBER, 
1189
	"VIEW_ID" NUMBER
1190
   ) ;
1191
/
1192
--------------------------------------------------------
1193
--  DDL for Table WORLDS
1194
--------------------------------------------------------
1195
 
1196
  CREATE TABLE "WORLDS" 
1197
   (	"WORLD_ID" NUMBER, 
1198
	"WORLD_NAME" VARCHAR2(30), 
1199
	"WORLD_DESC" VARCHAR2(255)
1200
   ) ;
1201
/
1202
--------------------------------------------------------
1203
--  DDL for View ENVIRONMENT_VIEW
1204
--------------------------------------------------------
1205
 
1206
  CREATE OR REPLACE VIEW "ENVIRONMENT_VIEW" ("ENV_AREA", "PV_ID", "RTAG_ID", "VIEW_ID", "PKG_STATE", "DEPRECATED_STATE", "INSERTOR_ID", "INSERT_STAMP", "OPERATION") AS 
1207
  SELECT 2 AS ENV_AREA,
1208
    rc.PV_ID,
1209
    rc.RTAG_ID,
1210
    rc.BASE_VIEW_ID AS VIEW_ID,
1211
    rc.PKG_STATE,
1212
 rc.DEPRECATED_STATE,
1213
    rc.INSERTOR_ID,
1214
    rc.INSERT_STAMP,
1215
    ' ' AS OPERATION
1216
  FROM RELEASE_CONTENT rc
1217
UNION
1218
SELECT 0 AS ENV_AREA,
1219
    wip.PV_ID,
1220
    wip.RTAG_ID,
1221
    wip.VIEW_ID,
1222
    NULL AS PKG_STATE,
1223
 NULL AS DEPRECATED_STATE,
1224
    NULL AS INSERTOR_ID,
1225
    NULL AS INSERT_STAMP,
1226
    ' ' AS OPERATION
1227
  FROM WORK_IN_PROGRESS wip
1228
UNION
1229
SELECT 1 AS ENV_AREA,
1230
    pl.PV_ID,
1231
    pl.RTAG_ID,
1232
    pl.VIEW_ID,
1233
    NULL AS PKG_STATE,
1234
 NULL AS DEPRECATED_STATE,
1235
    NULL AS INSERTOR_ID,
1236
    NULL AS INSERT_STAMP,
1237
    pl.operation
1238
FROM PLANNED pl;
1239
/
1240
--------------------------------------------------------
1241
--  DDL for View RM_PKG_ISSUES_ID
1242
--------------------------------------------------------
1243
 
1244
  CREATE OR REPLACE VIEW "RM_PKG_ISSUES_ID" ("ISS_ID", "PKG_VERSION") AS 
1245
  SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PACKAGE_ISSUES WHERE ISS_ID IS NOT NULL
1246
 
1247
;
1248
/
1249
--------------------------------------------------------
4211 dpurdie 1250
--  DDL for Index PK_LICENCES
4040 dpurdie 1251
--------------------------------------------------------
1252
 
4211 dpurdie 1253
  CREATE UNIQUE INDEX "PK_LICENCES" ON "LICENCES" ("LICENCE") 
4040 dpurdie 1254
  ;
1255
/
1256
--------------------------------------------------------
4211 dpurdie 1257
--  DDL for Index UNQ_PKG_BUILD_ENV
4040 dpurdie 1258
--------------------------------------------------------
1259
 
4211 dpurdie 1260
  CREATE UNIQUE INDEX "UNQ_PKG_BUILD_ENV" ON "PACKAGE_BUILD_ENV" ("PV_ID", "BE_ID") 
4040 dpurdie 1261
  ;
1262
/
1263
--------------------------------------------------------
4211 dpurdie 1264
--  DDL for Index UNQ_PACKAGES
4040 dpurdie 1265
--------------------------------------------------------
1266
 
4211 dpurdie 1267
  CREATE UNIQUE INDEX "UNQ_PACKAGES" ON "PACKAGES" ("PKG_NAME") 
4040 dpurdie 1268
  ;
1269
/
1270
--------------------------------------------------------
1271
--  DDL for Index CODE_REVIEW_URL_PK
1272
--------------------------------------------------------
1273
 
1274
  CREATE UNIQUE INDEX "CODE_REVIEW_URL_PK" ON "CODE_REVIEW_URL" ("CR_ID") 
1275
  ;
1276
/
1277
--------------------------------------------------------
4211 dpurdie 1278
--  DDL for Index INX_UT_COMPLETED
4040 dpurdie 1279
--------------------------------------------------------
1280
 
4211 dpurdie 1281
  CREATE INDEX "INX_UT_COMPLETED" ON "UNIT_TESTS" ("COMPLETION_DATE", "COMPLETED_BY") 
4040 dpurdie 1282
  ;
1283
/
1284
--------------------------------------------------------
4211 dpurdie 1285
--  DDL for Index INX_PV_ID_PKGDOC
1286
--------------------------------------------------------
4040 dpurdie 1287
 
4211 dpurdie 1288
  CREATE INDEX "INX_PV_ID_PKGDOC" ON "PACKAGE_DOCUMENTS" ("PV_ID") 
4040 dpurdie 1289
  ;
1290
/
4211 dpurdie 1291
--------------------------------------------------------
1292
--  DDL for Index UNQ_VIEW_SETTINGS
1293
--------------------------------------------------------
4040 dpurdie 1294
 
4211 dpurdie 1295
  CREATE UNIQUE INDEX "UNQ_VIEW_SETTINGS" ON "VIEW_SETTINGS" ("USER_ID", "VIEW_ID") 
4040 dpurdie 1296
  ;
1297
/
4211 dpurdie 1298
--------------------------------------------------------
1299
--  DDL for Index INX_PP_PV_ID
1300
--------------------------------------------------------
4040 dpurdie 1301
 
4211 dpurdie 1302
  CREATE INDEX "INX_PP_PV_ID" ON "PACKAGE_PATCHES" ("PV_ID") 
4040 dpurdie 1303
  ;
1304
/
4211 dpurdie 1305
--------------------------------------------------------
1306
--  DDL for Index PK_VIEWS
1307
--------------------------------------------------------
4040 dpurdie 1308
 
4211 dpurdie 1309
  CREATE UNIQUE INDEX "PK_VIEWS" ON "VIEWS" ("VIEW_ID") 
4040 dpurdie 1310
  ;
1311
/
4211 dpurdie 1312
--------------------------------------------------------
1313
--  DDL for Index PK_PACKAGES
1314
--------------------------------------------------------
4040 dpurdie 1315
 
4211 dpurdie 1316
  CREATE UNIQUE INDEX "PK_PACKAGES" ON "PACKAGES" ("PKG_ID") 
4040 dpurdie 1317
  ;
1318
/
4211 dpurdie 1319
--------------------------------------------------------
1320
--  DDL for Index PK_TEST_TYPES
1321
--------------------------------------------------------
4040 dpurdie 1322
 
4211 dpurdie 1323
  CREATE UNIQUE INDEX "PK_TEST_TYPES" ON "TEST_TYPES" ("TEST_TYPE_ID") 
4040 dpurdie 1324
  ;
1325
/
4211 dpurdie 1326
--------------------------------------------------------
1327
--  DDL for Index UNQ_ACTTYPE_ID
1328
--------------------------------------------------------
4040 dpurdie 1329
 
4211 dpurdie 1330
  CREATE UNIQUE INDEX "UNQ_ACTTYPE_ID" ON "ACTION_TYPE" ("ACTTYPE_ID") 
4040 dpurdie 1331
  ;
1332
/
4211 dpurdie 1333
--------------------------------------------------------
1334
--  DDL for Index INX_PROJ_ACTION_DATE_TIME
1335
--------------------------------------------------------
4040 dpurdie 1336
 
4211 dpurdie 1337
  CREATE INDEX "INX_PROJ_ACTION_DATE_TIME" ON "PROJECT_ACTION_LOG" ("ACTION_DATETIME") 
4040 dpurdie 1338
  ;
1339
/
4211 dpurdie 1340
--------------------------------------------------------
1341
--  DDL for Index INX_RC_PKG_STATE
1342
--------------------------------------------------------
4040 dpurdie 1343
 
4211 dpurdie 1344
  CREATE INDEX "INX_RC_PKG_STATE" ON "RELEASE_CONTENT" ("PKG_STATE") 
4040 dpurdie 1345
  ;
1346
/
4211 dpurdie 1347
--------------------------------------------------------
1348
--  DDL for Index PROCESSES_PK
1349
--------------------------------------------------------
4040 dpurdie 1350
 
4211 dpurdie 1351
  CREATE UNIQUE INDEX "PROCESSES_PK" ON "PROCESSES" ("PROC_ID") 
4040 dpurdie 1352
  ;
1353
/
4211 dpurdie 1354
--------------------------------------------------------
1355
--  DDL for Index INX_PACKAGE_DEPS_DPV_ID
1356
--------------------------------------------------------
4040 dpurdie 1357
 
4211 dpurdie 1358
  CREATE INDEX "INX_PACKAGE_DEPS_DPV_ID" ON "PACKAGE_DEPENDENCIES" ("DPV_ID") 
4040 dpurdie 1359
  ;
1360
/
4211 dpurdie 1361
--------------------------------------------------------
1362
--  DDL for Index INX_PACKAGES_PKG_VERSION
1363
--------------------------------------------------------
4040 dpurdie 1364
 
4211 dpurdie 1365
  CREATE INDEX "INX_PACKAGES_PKG_VERSION" ON "PACKAGE_VERSIONS" ("PKG_VERSION") 
4040 dpurdie 1366
  ;
1367
/
4211 dpurdie 1368
--------------------------------------------------------
1369
--  DDL for Index UNQ_PACKAGE_METRICS
1370
--------------------------------------------------------
4040 dpurdie 1371
 
4211 dpurdie 1372
  CREATE UNIQUE INDEX "UNQ_PACKAGE_METRICS" ON "PACKAGE_METRICS" ("PV_ID") 
4040 dpurdie 1373
  ;
1374
/
4211 dpurdie 1375
--------------------------------------------------------
1376
--  DDL for Index UNQ_PLATFORM
1377
--------------------------------------------------------
4040 dpurdie 1378
 
4211 dpurdie 1379
  CREATE UNIQUE INDEX "UNQ_PLATFORM" ON "PLATFORMS" ("NAME") 
4040 dpurdie 1380
  ;
1381
/
4211 dpurdie 1382
--------------------------------------------------------
1383
--  DDL for Index UNQ_VIEWS
1384
--------------------------------------------------------
4040 dpurdie 1385
 
4211 dpurdie 1386
  CREATE UNIQUE INDEX "UNQ_VIEWS" ON "VIEWS" ("VIEW_NAME", "OWNER_ID") 
4040 dpurdie 1387
  ;
1388
/
4211 dpurdie 1389
--------------------------------------------------------
1390
--  DDL for Index PRODUCT_STATES_PK
4040 dpurdie 1391
--------------------------------------------------------
1392
 
4211 dpurdie 1393
  CREATE UNIQUE INDEX "PRODUCT_STATES_PK" ON "PRODUCT_STATES" ("STATE_ID") 
4040 dpurdie 1394
  ;
1395
/
1396
--------------------------------------------------------
4211 dpurdie 1397
--  DDL for Index PK_MESSAGE_BOARD
4040 dpurdie 1398
--------------------------------------------------------
1399
 
4211 dpurdie 1400
  CREATE UNIQUE INDEX "PK_MESSAGE_BOARD" ON "MESSAGE_BOARD" ("MSG_ID") 
4040 dpurdie 1401
  ;
1402
/
4211 dpurdie 1403
--------------------------------------------------------
1404
--  DDL for Index PK_BUILD_MACHINE_CONFIG
1405
--------------------------------------------------------
4040 dpurdie 1406
 
4211 dpurdie 1407
  CREATE UNIQUE INDEX "PK_BUILD_MACHINE_CONFIG" ON "BUILD_MACHINE_CONFIG" ("BMCON_ID") 
4040 dpurdie 1408
  ;
1409
/
4211 dpurdie 1410
--------------------------------------------------------
1411
--  DDL for Index INX_MSGBOARD
1412
--------------------------------------------------------
4040 dpurdie 1413
 
4211 dpurdie 1414
  CREATE INDEX "INX_MSGBOARD" ON "MESSAGE_BOARD" ("EXPIRY_DATE", "DUE_DATE") 
4040 dpurdie 1415
  ;
1416
/
4211 dpurdie 1417
--------------------------------------------------------
1418
--  DDL for Index PK_VTREES
1419
--------------------------------------------------------
4040 dpurdie 1420
 
4211 dpurdie 1421
  CREATE UNIQUE INDEX "PK_VTREES" ON "VTREES" ("VTREE_ID") 
4040 dpurdie 1422
  ;
1423
/
4211 dpurdie 1424
--------------------------------------------------------
1425
--  DDL for Index UNQ_UT_PART1
1426
--------------------------------------------------------
4040 dpurdie 1427
 
4211 dpurdie 1428
  CREATE UNIQUE INDEX "UNQ_UT_PART1" ON "UNIT_TESTS" ("PV_ID", "TEST_ID") 
4040 dpurdie 1429
  ;
1430
/
4211 dpurdie 1431
--------------------------------------------------------
1432
--  DDL for Index UNQ_BUILD_ENV
1433
--------------------------------------------------------
4040 dpurdie 1434
 
4211 dpurdie 1435
  CREATE UNIQUE INDEX "UNQ_BUILD_ENV" ON "BUILD_ENVIRONMENTS" ("BE_NAME") 
4040 dpurdie 1436
  ;
1437
/
1438
--------------------------------------------------------
4211 dpurdie 1439
--  DDL for Index INX_ACTION_DATE_TIME
4040 dpurdie 1440
--------------------------------------------------------
1441
 
4211 dpurdie 1442
  CREATE INDEX "INX_ACTION_DATE_TIME" ON "ACTION_LOG" ("ACTION_DATETIME") 
4040 dpurdie 1443
  ;
1444
/
1445
--------------------------------------------------------
4211 dpurdie 1446
--  DDL for Index UNQ_BUILD_MACHINE_CONFIG02
1447
--------------------------------------------------------
4040 dpurdie 1448
 
4211 dpurdie 1449
  CREATE UNIQUE INDEX "UNQ_BUILD_MACHINE_CONFIG02" ON "BUILD_MACHINE_CONFIG" ("MACHINE_HOSTNAME") 
4040 dpurdie 1450
  ;
1451
/
4211 dpurdie 1452
--------------------------------------------------------
1453
--  DDL for Index BUILD_MACHINES_PK
1454
--------------------------------------------------------
4040 dpurdie 1455
 
4211 dpurdie 1456
  CREATE UNIQUE INDEX "BUILD_MACHINES_PK" ON "BUILD_MACHINES" ("BM_ID") 
4040 dpurdie 1457
  ;
1458
/
4211 dpurdie 1459
--------------------------------------------------------
1460
--  DDL for Index INX_TTB_SESSION
1461
--------------------------------------------------------
4040 dpurdie 1462
 
4211 dpurdie 1463
  CREATE INDEX "INX_TTB_SESSION" ON "TEMP_TREE_BROWSE" ("SESSION_NUM") 
4040 dpurdie 1464
  ;
1465
/
4211 dpurdie 1466
--------------------------------------------------------
1467
--  DDL for Index UNQ_RTD
1468
--------------------------------------------------------
4040 dpurdie 1469
 
4211 dpurdie 1470
  CREATE INDEX "UNQ_RTD" ON "RUNTIME_DEPENDENCIES" ("PV_ID", "RTD_ID") 
4040 dpurdie 1471
  ;
1472
/
4211 dpurdie 1473
--------------------------------------------------------
1474
--  DDL for Index INX_RL_RTAG_ID
4040 dpurdie 1475
--------------------------------------------------------
1476
 
4211 dpurdie 1477
  CREATE INDEX "INX_RL_RTAG_ID" ON "RELEASE_LINKS" ("RTAG_ID") 
4040 dpurdie 1478
  ;
1479
/
1480
--------------------------------------------------------
4211 dpurdie 1481
--  DDL for Index UNQ_VIEW_DEF
4040 dpurdie 1482
--------------------------------------------------------
1483
 
4211 dpurdie 1484
  CREATE UNIQUE INDEX "UNQ_VIEW_DEF" ON "VIEW_DEF" ("VIEW_ID", "PKG_ID") 
4040 dpurdie 1485
  ;
1486
/
1487
--------------------------------------------------------
4211 dpurdie 1488
--  DDL for Index INX_PACKAGES_PKG_NAME
4040 dpurdie 1489
--------------------------------------------------------
1490
 
4211 dpurdie 1491
  CREATE INDEX "INX_PACKAGES_PKG_NAME" ON "PACKAGE_VERSIONS" ("PKG_ID") 
4040 dpurdie 1492
  ;
1493
/
1494
--------------------------------------------------------
4211 dpurdie 1495
--  DDL for Index INX_PCOMP_FK_PV_ID
4040 dpurdie 1496
--------------------------------------------------------
1497
 
4211 dpurdie 1498
  CREATE INDEX "INX_PCOMP_FK_PV_ID" ON "PRODUCT_COMPONENTS" ("PV_ID") 
4040 dpurdie 1499
  ;
1500
/
1501
--------------------------------------------------------
4211 dpurdie 1502
--  DDL for Index DAEMON_INSTRUCTIONS_UK1
4040 dpurdie 1503
--------------------------------------------------------
1504
 
4211 dpurdie 1505
  CREATE UNIQUE INDEX "DAEMON_INSTRUCTIONS_UK1" ON "DAEMON_INSTRUCTIONS" ("OP_CODE", "RTAG_ID", "PV_ID") 
4040 dpurdie 1506
  ;
1507
/
1508
--------------------------------------------------------
4211 dpurdie 1509
--  DDL for Index INX_FILE_NAME
4040 dpurdie 1510
--------------------------------------------------------
1511
 
4211 dpurdie 1512
  CREATE INDEX "INX_FILE_NAME" ON "RELEASE_COMPONENTS" (UPPER("FILE_NAME")) 
4040 dpurdie 1513
  ;
1514
/
1515
--------------------------------------------------------
4211 dpurdie 1516
--  DDL for Index INX_IS_PATCH_IGNORE
4040 dpurdie 1517
--------------------------------------------------------
1518
 
4211 dpurdie 1519
  CREATE INDEX "INX_IS_PATCH_IGNORE" ON "IGNORE_WARNINGS" ("IS_PATCH_IGNORE") 
4040 dpurdie 1520
  ;
1521
/
1522
--------------------------------------------------------
4211 dpurdie 1523
--  DDL for Index UNQ_BUILD_ENV_DOCS
4040 dpurdie 1524
--------------------------------------------------------
1525
 
4211 dpurdie 1526
  CREATE UNIQUE INDEX "UNQ_BUILD_ENV_DOCS" ON "BUILD_ENV_DOCUMENTS" ("BE_ID", "DOC_NUM") 
4040 dpurdie 1527
  ;
1528
/
1529
--------------------------------------------------------
4211 dpurdie 1530
--  DDL for Index INX_PROJ_ACTION_LOG_PROJ
4040 dpurdie 1531
--------------------------------------------------------
1532
 
4211 dpurdie 1533
  CREATE INDEX "INX_PROJ_ACTION_LOG_PROJ" ON "PROJECT_ACTION_LOG" ("PROJ_ID") 
4040 dpurdie 1534
  ;
1535
/
1536
--------------------------------------------------------
1537
--  DDL for Index INX_TTB_LEVEL_NUM
1538
--------------------------------------------------------
1539
 
1540
  CREATE INDEX "INX_TTB_LEVEL_NUM" ON "TEMP_TREE_BROWSE" ("LEVEL_NUM") 
1541
  ;
1542
/
1543
--------------------------------------------------------
4211 dpurdie 1544
--  DDL for Index UNQ_WORK_IN_PROGRESS
4040 dpurdie 1545
--------------------------------------------------------
1546
 
4211 dpurdie 1547
  CREATE UNIQUE INDEX "UNQ_WORK_IN_PROGRESS" ON "WORK_IN_PROGRESS" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1548
  ;
1549
/
1550
--------------------------------------------------------
4211 dpurdie 1551
--  DDL for Index INX_PACKAGES_V_NMM
4040 dpurdie 1552
--------------------------------------------------------
1553
 
4211 dpurdie 1554
  CREATE INDEX "INX_PACKAGES_V_NMM" ON "PACKAGE_VERSIONS" ("V_NMM") 
4040 dpurdie 1555
  ;
1556
/
1557
--------------------------------------------------------
4211 dpurdie 1558
--  DDL for Index UNQ_PLANNED
4040 dpurdie 1559
--------------------------------------------------------
1560
 
4211 dpurdie 1561
  CREATE INDEX "UNQ_PLANNED" ON "PLANNED" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1562
  ;
1563
/
1564
--------------------------------------------------------
4211 dpurdie 1565
--  DDL for Index INX_TES_PKGEXT
4040 dpurdie 1566
--------------------------------------------------------
1567
 
4211 dpurdie 1568
  CREATE INDEX "INX_TES_PKGEXT" ON "TEMP_ENV_STATES" ("PKG_ID", "V_EXT") 
4040 dpurdie 1569
  ;
1570
/
4211 dpurdie 1571
--------------------------------------------------------
1572
--  DDL for Index UNQ_BUILD_MACHINE_CONFIG01
1573
--------------------------------------------------------
4040 dpurdie 1574
 
4211 dpurdie 1575
  CREATE UNIQUE INDEX "UNQ_BUILD_MACHINE_CONFIG01" ON "BUILD_MACHINE_CONFIG" (LOWER("DISPLAY_NAME")) 
4040 dpurdie 1576
  ;
1577
/
1578
--------------------------------------------------------
4211 dpurdie 1579
--  DDL for Index UNQ_RELEASE_LINKS
4040 dpurdie 1580
--------------------------------------------------------
1581
 
4211 dpurdie 1582
  CREATE UNIQUE INDEX "UNQ_RELEASE_LINKS" ON "RELEASE_LINKS" ("RTAG_ID", "REF_RTAG_ID") 
4040 dpurdie 1583
  ;
1584
/
4211 dpurdie 1585
--------------------------------------------------------
1586
--  DDL for Index UNQ_PKG_DOC
1587
--------------------------------------------------------
4040 dpurdie 1588
 
4211 dpurdie 1589
  CREATE UNIQUE INDEX "UNQ_PKG_DOC" ON "PACKAGE_DOCUMENTS" ("PV_ID", "DOC_NUM") 
4040 dpurdie 1590
  ;
1591
/
1592
--------------------------------------------------------
4211 dpurdie 1593
--  DDL for Index DAEMON_INSTRUCTIONS_PK
4040 dpurdie 1594
--------------------------------------------------------
1595
 
4211 dpurdie 1596
  CREATE UNIQUE INDEX "DAEMON_INSTRUCTIONS_PK" ON "DAEMON_INSTRUCTIONS" ("DAEMON_INSTRUCTIONS_ID") 
4040 dpurdie 1597
  ;
1598
/
4211 dpurdie 1599
--------------------------------------------------------
1600
--  DDL for Index INX_DAEMON_INST_SCHED_DATETIME
1601
--------------------------------------------------------
4040 dpurdie 1602
 
4211 dpurdie 1603
  CREATE INDEX "INX_DAEMON_INST_SCHED_DATETIME" ON "DAEMON_INSTRUCTIONS" ("SCHEDULED_DATETIME") 
4040 dpurdie 1604
  ;
1605
/
1606
--------------------------------------------------------
4211 dpurdie 1607
--  DDL for Index INX_TTB_PKG
4040 dpurdie 1608
--------------------------------------------------------
1609
 
4211 dpurdie 1610
  CREATE INDEX "INX_TTB_PKG" ON "TEMP_TREE_BROWSE" ("PKG_ID", "V_EXT") 
4040 dpurdie 1611
  ;
1612
/
1613
--------------------------------------------------------
4211 dpurdie 1614
--  DDL for Index UNQ_VALIDATION_RULES
4040 dpurdie 1615
--------------------------------------------------------
1616
 
4211 dpurdie 1617
  CREATE UNIQUE INDEX "UNQ_VALIDATION_RULES" ON "VALIDATION_RULES" ("FIELD_NAME") 
4040 dpurdie 1618
  ;
1619
/
4211 dpurdie 1620
--------------------------------------------------------
1621
--  DDL for Index BUILD_STANDARDS_ADDENDUM_PK
1622
--------------------------------------------------------
4040 dpurdie 1623
 
4211 dpurdie 1624
  CREATE UNIQUE INDEX "BUILD_STANDARDS_ADDENDUM_PK" ON "BUILD_STANDARDS_ADDENDUM" ("BSA_ID") 
4040 dpurdie 1625
  ;
1626
/
1627
--------------------------------------------------------
4211 dpurdie 1628
--  DDL for Index INX_PV_OWNER_ID
4040 dpurdie 1629
--------------------------------------------------------
1630
 
4211 dpurdie 1631
  CREATE INDEX "INX_PV_OWNER_ID" ON "PACKAGE_VERSIONS" ("OWNER_ID") 
4040 dpurdie 1632
  ;
1633
/
1634
--------------------------------------------------------
4211 dpurdie 1635
--  DDL for Index INX_TES_TES_STATE
4040 dpurdie 1636
--------------------------------------------------------
1637
 
4211 dpurdie 1638
  CREATE INDEX "INX_TES_TES_STATE" ON "TEMP_ENV_STATES" ("TES_STATE") 
4040 dpurdie 1639
  ;
1640
/
1641
--------------------------------------------------------
4211 dpurdie 1642
--  DDL for Index UNQ_AN_PART1
1643
--------------------------------------------------------
4040 dpurdie 1644
 
4211 dpurdie 1645
  CREATE UNIQUE INDEX "UNQ_AN_PART1" ON "ADDITIONAL_NOTES" ("PV_ID", "NOTE_ID") 
4040 dpurdie 1646
  ;
1647
/
4211 dpurdie 1648
--------------------------------------------------------
1649
--  DDL for Index UNQ_RELEASE_CONTENTS
4040 dpurdie 1650
--------------------------------------------------------
1651
 
4211 dpurdie 1652
  CREATE UNIQUE INDEX "UNQ_RELEASE_CONTENTS" ON "RELEASE_CONTENT" ("RTAG_ID", "PV_ID") 
4040 dpurdie 1653
  ;
1654
/
4211 dpurdie 1655
--------------------------------------------------------
1656
--  DDL for Index INX_ACTION_LOG_PV_ID
1657
--------------------------------------------------------
4040 dpurdie 1658
 
4211 dpurdie 1659
  CREATE INDEX "INX_ACTION_LOG_PV_ID" ON "ACTION_LOG" ("PV_ID") 
4040 dpurdie 1660
  ;
1661
/
1662
--------------------------------------------------------
4211 dpurdie 1663
--  DDL for Index UNQ_TEST_TYPE_NAME
4040 dpurdie 1664
--------------------------------------------------------
1665
 
4211 dpurdie 1666
  CREATE UNIQUE INDEX "UNQ_TEST_TYPE_NAME" ON "TEST_TYPES" ("TEST_TYPE_NAME") 
4040 dpurdie 1667
  ;
1668
/
1669
--------------------------------------------------------
4211 dpurdie 1670
--  DDL for Index PKNOTE_MANAGER1
1671
--------------------------------------------------------
4040 dpurdie 1672
 
4211 dpurdie 1673
  CREATE UNIQUE INDEX "PKNOTE_MANAGER1" ON "NOTE_MANAGER" ("NID") 
4040 dpurdie 1674
  ;
1675
/
4211 dpurdie 1676
--------------------------------------------------------
1677
--  DDL for Index INX_PACKAGES_V_MM
1678
--------------------------------------------------------
4040 dpurdie 1679
 
4211 dpurdie 1680
  CREATE INDEX "INX_PACKAGES_V_MM" ON "PACKAGE_VERSIONS" ("V_MM") 
4040 dpurdie 1681
  ;
1682
/
4211 dpurdie 1683
--------------------------------------------------------
1684
--  DDL for Index INX_CODE_REVIEW
1685
--------------------------------------------------------
4040 dpurdie 1686
 
4211 dpurdie 1687
  CREATE UNIQUE INDEX "INX_CODE_REVIEW" ON "CODE_REVIEWS" ("PV_ID") 
4040 dpurdie 1688
  ;
1689
/
4211 dpurdie 1690
--------------------------------------------------------
1691
--  DDL for Index UNQ_VTREES
4040 dpurdie 1692
--------------------------------------------------------
1693
 
4211 dpurdie 1694
  CREATE UNIQUE INDEX "UNQ_VTREES" ON "VTREES" ("PROJ_ID", "VTREE_NAME") 
4040 dpurdie 1695
  ;
1696
/
4211 dpurdie 1697
--------------------------------------------------------
1698
--  DDL for Index INX_PACKAGE_DEPS_PKG_ID
1699
--------------------------------------------------------
4040 dpurdie 1700
 
4211 dpurdie 1701
  CREATE INDEX "INX_PACKAGE_DEPS_PKG_ID" ON "PACKAGE_DEPENDENCIES" ("PKG_ID") 
4040 dpurdie 1702
  ;
1703
/
1704
--------------------------------------------------------
4211 dpurdie 1705
--  DDL for Index UNQ_PROJECTS
4040 dpurdie 1706
--------------------------------------------------------
1707
 
4211 dpurdie 1708
  CREATE UNIQUE INDEX "UNQ_PROJECTS" ON "PROJECTS" ("PROJ_NAME") 
4040 dpurdie 1709
  ;
1710
/
4211 dpurdie 1711
--------------------------------------------------------
1712
--  DDL for Index INX_PACKAGES_V_EXT
1713
--------------------------------------------------------
4040 dpurdie 1714
 
4211 dpurdie 1715
  CREATE INDEX "INX_PACKAGES_V_EXT" ON "PACKAGE_VERSIONS" ("V_EXT") 
4040 dpurdie 1716
  ;
1717
/
1718
--------------------------------------------------------
4211 dpurdie 1719
--  DDL for Index PK_PROJECTS
4040 dpurdie 1720
--------------------------------------------------------
1721
 
4211 dpurdie 1722
  CREATE UNIQUE INDEX "PK_PROJECTS" ON "PROJECTS" ("PROJ_ID") 
4040 dpurdie 1723
  ;
1724
/
4211 dpurdie 1725
--------------------------------------------------------
1726
--  DDL for Index INX_TES_PV
1727
--------------------------------------------------------
4040 dpurdie 1728
 
4211 dpurdie 1729
  CREATE INDEX "INX_TES_PV" ON "TEMP_ENV_STATES" ("PV_ID") 
4040 dpurdie 1730
  ;
1731
/
1732
--------------------------------------------------------
4211 dpurdie 1733
--  DDL for Index UNQ_VTREE_WORLD
4040 dpurdie 1734
--------------------------------------------------------
1735
 
4211 dpurdie 1736
  CREATE UNIQUE INDEX "UNQ_VTREE_WORLD" ON "VTREES_WORLD" ("WORLD_ID", "VTREE_ID") 
4040 dpurdie 1737
  ;
1738
/
1739
--------------------------------------------------------
4211 dpurdie 1740
--  DDL for Index UNQ_IGW
1741
--------------------------------------------------------
4040 dpurdie 1742
 
4211 dpurdie 1743
  CREATE UNIQUE INDEX "UNQ_IGW" ON "IGNORE_WARNINGS" ("RTAG_ID", "PV_ID", "DPV_ID") 
4040 dpurdie 1744
  ;
1745
/
4211 dpurdie 1746
--------------------------------------------------------
1747
--  DDL for Index INX_DAEMON_INST_RTAG_ID
1748
--------------------------------------------------------
4040 dpurdie 1749
 
4211 dpurdie 1750
  CREATE INDEX "INX_DAEMON_INST_RTAG_ID" ON "DAEMON_INSTRUCTIONS" ("RTAG_ID") 
4040 dpurdie 1751
  ;
1752
/
4211 dpurdie 1753
--------------------------------------------------------
1754
--  DDL for Index PK_NOTIFICATION_HISTORY
1755
--------------------------------------------------------
4040 dpurdie 1756
 
4211 dpurdie 1757
  CREATE UNIQUE INDEX "PK_NOTIFICATION_HISTORY" ON "NOTIFICATION_HISTORY" ("RTAG_ID", "PV_ID", "USER_ID") 
4040 dpurdie 1758
  ;
1759
/
4211 dpurdie 1760
--------------------------------------------------------
1761
--  DDL for Index UNQ_PACKAGE_DEPENDENCIES
1762
--------------------------------------------------------
4040 dpurdie 1763
 
4211 dpurdie 1764
  CREATE UNIQUE INDEX "UNQ_PACKAGE_DEPENDENCIES" ON "PACKAGE_DEPENDENCIES" ("PV_ID", "DPV_ID") 
4040 dpurdie 1765
  ;
1766
/
4211 dpurdie 1767
--------------------------------------------------------
1768
--  DDL for Index INX_PACKAGE_DEPS_PV_ID
1769
--------------------------------------------------------
4040 dpurdie 1770
 
4211 dpurdie 1771
  CREATE INDEX "INX_PACKAGE_DEPS_PV_ID" ON "PACKAGE_DEPENDENCIES" ("PV_ID") 
4040 dpurdie 1772
  ;
1773
/
4211 dpurdie 1774
--------------------------------------------------------
1775
--  DDL for Index BUILD_STANDARDS_PK
4040 dpurdie 1776
--------------------------------------------------------
1777
 
4211 dpurdie 1778
  CREATE UNIQUE INDEX "BUILD_STANDARDS_PK" ON "BUILD_STANDARDS" ("BS_ID") 
4040 dpurdie 1779
  ;
1780
/
4211 dpurdie 1781
--------------------------------------------------------
1782
--  DDL for Index UNQ_CQ
1783
--------------------------------------------------------
4040 dpurdie 1784
 
1785
  CREATE UNIQUE INDEX "UNQ_CQ" ON "CQ_ISSUES" ("PV_ID", "ISS_ID", "ISS_DB") 
1786
  ;
1787
/
1788
--------------------------------------------------------
4211 dpurdie 1789
--  DDL for Index UNQ_PACKAGE_VERSIONS
4040 dpurdie 1790
--------------------------------------------------------
1791
 
4211 dpurdie 1792
  CREATE UNIQUE INDEX "UNQ_PACKAGE_VERSIONS" ON "PACKAGE_VERSIONS" ("PKG_ID", "PKG_VERSION") 
4040 dpurdie 1793
  ;
1794
/
4211 dpurdie 1795
--------------------------------------------------------
1796
--  DDL for Index INX_PV_ID_TEST_ID_PKGDOC
1797
--------------------------------------------------------
4040 dpurdie 1798
 
4211 dpurdie 1799
  CREATE INDEX "INX_PV_ID_TEST_ID_PKGDOC" ON "PACKAGE_DOCUMENTS" ("PV_ID", "TEST_ID") 
4040 dpurdie 1800
  ;
1801
/
1802
--------------------------------------------------------
4211 dpurdie 1803
--  DDL for Index UNQ_PACKAGE_PATCHES
4040 dpurdie 1804
--------------------------------------------------------
1805
 
4211 dpurdie 1806
  CREATE UNIQUE INDEX "UNQ_PACKAGE_PATCHES" ON "PACKAGE_PATCHES" ("PATCH_ID") 
4040 dpurdie 1807
  ;
1808
/
1809
--------------------------------------------------------
4211 dpurdie 1810
--  DDL for Index UNQ_REL_COMPONENTS
1811
--------------------------------------------------------
4040 dpurdie 1812
 
4211 dpurdie 1813
  CREATE UNIQUE INDEX "UNQ_REL_COMPONENTS" ON "RELEASE_COMPONENTS" ("PV_ID", "FILE_NAME", "FILE_PATH") 
4040 dpurdie 1814
  ;
1815
/
4211 dpurdie 1816
--------------------------------------------------------
1817
--  DDL for Index PK_PACKAGE_VERSIONS
1818
--------------------------------------------------------
4040 dpurdie 1819
 
4211 dpurdie 1820
  CREATE UNIQUE INDEX "PK_PACKAGE_VERSIONS" ON "PACKAGE_VERSIONS" ("PV_ID") 
4040 dpurdie 1821
  ;
1822
/
4211 dpurdie 1823
--------------------------------------------------------
1824
--  DDL for Index UNQ_RELEASE_METRICS
1825
--------------------------------------------------------
4040 dpurdie 1826
 
4211 dpurdie 1827
  CREATE UNIQUE INDEX "UNQ_RELEASE_METRICS" ON "RELEASE_METRICS" ("RTAG_ID") 
4040 dpurdie 1828
  ;
1829
/
4211 dpurdie 1830
--------------------------------------------------------
1831
--  DDL for Index UNQ_BUILD_ORDER
1832
--------------------------------------------------------
4040 dpurdie 1833
 
4211 dpurdie 1834
  CREATE UNIQUE INDEX "UNQ_BUILD_ORDER" ON "BUILD_ORDER" ("RTAG_ID", "PV_ID", "STEP_NUM") 
4040 dpurdie 1835
  ;
1836
/
4211 dpurdie 1837
--------------------------------------------------------
1838
--  DDL for Index PK_BUILD_ENVIRONMENTS
1839
--------------------------------------------------------
4040 dpurdie 1840
 
4211 dpurdie 1841
  CREATE UNIQUE INDEX "PK_BUILD_ENVIRONMENTS" ON "BUILD_ENVIRONMENTS" ("BE_ID") 
4040 dpurdie 1842
  ;
1843
/
4211 dpurdie 1844
--------------------------------------------------------
1845
--  DDL for Index INX_PACKAGE_DEPS_DPKG_ID
1846
--------------------------------------------------------
4040 dpurdie 1847
 
4211 dpurdie 1848
  CREATE INDEX "INX_PACKAGE_DEPS_DPKG_ID" ON "PACKAGE_DEPENDENCIES" ("DPKG_ID") 
4040 dpurdie 1849
  ;
1850
/
4211 dpurdie 1851
--------------------------------------------------------
1852
--  DDL for Index INX_RL_REFRTAG_ID
1853
--------------------------------------------------------
4040 dpurdie 1854
 
4211 dpurdie 1855
  CREATE INDEX "INX_RL_REFRTAG_ID" ON "RELEASE_LINKS" ("REF_RTAG_ID") 
4040 dpurdie 1856
  ;
1857
/
4211 dpurdie 1858
--------------------------------------------------------
1859
--  DDL for Index INX_RC_BASE_VIEW_ID
1860
--------------------------------------------------------
4040 dpurdie 1861
 
4211 dpurdie 1862
  CREATE INDEX "INX_RC_BASE_VIEW_ID" ON "RELEASE_CONTENT" ("BASE_VIEW_ID") 
4040 dpurdie 1863
  ;
1864
/
4211 dpurdie 1865
--------------------------------------------------------
1866
--  DDL for Index INX_DAEMON_INST_PV_ID
1867
--------------------------------------------------------
1868
 
1869
  CREATE INDEX "INX_DAEMON_INST_PV_ID" ON "DAEMON_INSTRUCTIONS" ("PV_ID") 
1870
  ;
1871
/
1872
--------------------------------------------------------
4040 dpurdie 1873
--  DDL for Index UNQ_PROJECT_EXT
1874
--------------------------------------------------------
1875
 
1876
  CREATE UNIQUE INDEX "UNQ_PROJECT_EXT" ON "PROJECT_EXTENTIONS" ("PROJ_ID", "EXT_NAME") 
1877
  ;
1878
/
4211 dpurdie 1879
--------------------------------------------------------
1880
--  DDL for Index VCS_TYPE_PK
1881
--------------------------------------------------------
4040 dpurdie 1882
 
4211 dpurdie 1883
  CREATE UNIQUE INDEX "VCS_TYPE_PK" ON "VCS_TYPE" ("VCS_TYPE_ID") 
4040 dpurdie 1884
  ;
1885
/
1886
--------------------------------------------------------
4211 dpurdie 1887
--  DDL for Index INX_PC_FILE_NAME
4040 dpurdie 1888
--------------------------------------------------------
1889
 
4211 dpurdie 1890
  CREATE INDEX "INX_PC_FILE_NAME" ON "PRODUCT_COMPONENTS" (UPPER("FILE_NAME")) 
4040 dpurdie 1891
  ;
1892
/
4211 dpurdie 1893
--------------------------------------------------------
1894
--  DDL for Index PK_RELEASE_TAGS
1895
--------------------------------------------------------
4040 dpurdie 1896
 
4211 dpurdie 1897
  CREATE UNIQUE INDEX "PK_RELEASE_TAGS" ON "RELEASE_TAGS" ("RTAG_ID") 
4040 dpurdie 1898
  ;
1899
/
1900
--------------------------------------------------------
4211 dpurdie 1901
--  DDL for Index FK_PROJ_ID_RELEASE_TAGS
4040 dpurdie 1902
--------------------------------------------------------
1903
 
4211 dpurdie 1904
  CREATE INDEX "FK_PROJ_ID_RELEASE_TAGS" ON "RELEASE_TAGS" ("PROJ_ID") 
4040 dpurdie 1905
  ;
1906
/
1907
--------------------------------------------------------
4211 dpurdie 1908
--  DDL for Index INX_RCOMP_PV_ID
4040 dpurdie 1909
--------------------------------------------------------
1910
 
4211 dpurdie 1911
  CREATE INDEX "INX_RCOMP_PV_ID" ON "RELEASE_COMPONENTS" ("PV_ID") 
4040 dpurdie 1912
  ;
1913
/
4211 dpurdie 1914
--------------------------------------------------------
1915
--  DDL for Index MICROSOFT_PK_DTPROPERTIES
1916
--------------------------------------------------------
4040 dpurdie 1917
 
4211 dpurdie 1918
  CREATE UNIQUE INDEX "MICROSOFT_PK_DTPROPERTIES" ON "MICROSOFTDTPROPERTIES" ("ID", "PROPERTY") 
4040 dpurdie 1919
  ;
1920
/
1921
--------------------------------------------------------
4211 dpurdie 1922
--  DDL for Index INX_UT_PV_TEST_TYPE
1923
--------------------------------------------------------
4040 dpurdie 1924
 
4211 dpurdie 1925
  CREATE INDEX "INX_UT_PV_TEST_TYPE" ON "UNIT_TESTS" ("PV_ID", "TEST_TYPES_FK") 
4040 dpurdie 1926
  ;
1927
/
4211 dpurdie 1928
--------------------------------------------------------
1929
--  DDL for Index PK_WORLDS
1930
--------------------------------------------------------
4040 dpurdie 1931
 
4211 dpurdie 1932
  CREATE UNIQUE INDEX "PK_WORLDS" ON "WORLDS" ("WORLD_ID") 
4040 dpurdie 1933
  ;
1934
/
4211 dpurdie 1935
--------------------------------------------------------
1936
--  DDL for Index UNQ_AN_PART2
1937
--------------------------------------------------------
4040 dpurdie 1938
 
4211 dpurdie 1939
  CREATE UNIQUE INDEX "UNQ_AN_PART2" ON "ADDITIONAL_NOTES" ("PV_ID", "NOTE_TITLE") 
4040 dpurdie 1940
  ;
1941
/
4211 dpurdie 1942
--------------------------------------------------------
1943
--  Constraints for Table RELEASE_TAGS
4040 dpurdie 1944
--------------------------------------------------------
1945
 
4211 dpurdie 1946
  ALTER TABLE "RELEASE_TAGS" ADD CONSTRAINT "PK_RELEASE_TAGS" PRIMARY KEY ("RTAG_ID") ENABLE;
1947
  ALTER TABLE "RELEASE_TAGS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
1948
  ALTER TABLE "RELEASE_TAGS" MODIFY ("PARENT_RTAG_ID" NOT NULL ENABLE);
1949
  ALTER TABLE "RELEASE_TAGS" MODIFY ("REBUILD_STAMP" NOT NULL ENABLE);
1950
  ALTER TABLE "RELEASE_TAGS" MODIFY ("REBUILD_ENV" NOT NULL ENABLE);
1951
  ALTER TABLE "RELEASE_TAGS" MODIFY ("OFFICIAL" NOT NULL ENABLE);
1952
  ALTER TABLE "RELEASE_TAGS" MODIFY ("RTAG_NAME" NOT NULL ENABLE);
1953
  ALTER TABLE "RELEASE_TAGS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 1954
/
1955
--------------------------------------------------------
4211 dpurdie 1956
--  Constraints for Table RIPPLE_FIELD_STATES
1957
--------------------------------------------------------
4040 dpurdie 1958
 
4211 dpurdie 1959
  ALTER TABLE "RIPPLE_FIELD_STATES" MODIFY ("STATE_ACRONYM" NOT NULL DISABLE);
1960
  ALTER TABLE "RIPPLE_FIELD_STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
4040 dpurdie 1961
/
4211 dpurdie 1962
--------------------------------------------------------
1963
--  Constraints for Table RUNTIME_DEPENDENCIES
4040 dpurdie 1964
--------------------------------------------------------
1965
 
4211 dpurdie 1966
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("MOD_USER" NOT NULL ENABLE);
1967
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
1968
  ALTER TABLE "RUNTIME_DEPENDENCIES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 1969
/
4211 dpurdie 1970
--------------------------------------------------------
1971
--  Constraints for Table PACKAGE_PROCESSES
1972
--------------------------------------------------------
4040 dpurdie 1973
 
4211 dpurdie 1974
  ALTER TABLE "PACKAGE_PROCESSES" MODIFY ("PROC_ID" NOT NULL ENABLE);
1975
  ALTER TABLE "PACKAGE_PROCESSES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 1976
/
1977
--------------------------------------------------------
4211 dpurdie 1978
--  Constraints for Table DO_NOT_RIPPLE
4040 dpurdie 1979
--------------------------------------------------------
1980
 
4211 dpurdie 1981
  ALTER TABLE "DO_NOT_RIPPLE" MODIFY ("RTAG_ID" NOT NULL ENABLE);
1982
  ALTER TABLE "DO_NOT_RIPPLE" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 1983
/
1984
--------------------------------------------------------
4211 dpurdie 1985
--  Constraints for Table RELEASE_COMPONENTS
4040 dpurdie 1986
--------------------------------------------------------
1987
 
4211 dpurdie 1988
  ALTER TABLE "RELEASE_COMPONENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 1989
/
4211 dpurdie 1990
--------------------------------------------------------
1991
--  Constraints for Table VIEW_SETTINGS
1992
--------------------------------------------------------
1993
 
1994
  ALTER TABLE "VIEW_SETTINGS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
1995
  ALTER TABLE "VIEW_SETTINGS" MODIFY ("USER_ID" NOT NULL ENABLE);
1996
/
4040 dpurdie 1997
--------------------------------------------------------
4211 dpurdie 1998
--  Constraints for Table WORLDS
4040 dpurdie 1999
--------------------------------------------------------
2000
 
4211 dpurdie 2001
  ALTER TABLE "WORLDS" ADD CONSTRAINT "PK_WORLDS" PRIMARY KEY ("WORLD_ID") ENABLE;
2002
  ALTER TABLE "WORLDS" MODIFY ("WORLD_NAME" NOT NULL ENABLE);
2003
  ALTER TABLE "WORLDS" MODIFY ("WORLD_ID" NOT NULL ENABLE);
4040 dpurdie 2004
/
2005
--------------------------------------------------------
4211 dpurdie 2006
--  Constraints for Table UNIT_TESTS
4040 dpurdie 2007
--------------------------------------------------------
2008
 
4211 dpurdie 2009
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_TYPES_FK" NOT NULL ENABLE);
2010
  ALTER TABLE "UNIT_TESTS" MODIFY ("PV_ID" NOT NULL ENABLE);
2011
  ALTER TABLE "UNIT_TESTS" MODIFY ("TEST_ID" NOT NULL ENABLE);
4040 dpurdie 2012
/
2013
--------------------------------------------------------
4211 dpurdie 2014
--  Constraints for Table PACKAGE_DOCUMENTS
4040 dpurdie 2015
--------------------------------------------------------
2016
 
4211 dpurdie 2017
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("DOC_NUM" NOT NULL ENABLE);
2018
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("DOC_ID" NOT NULL ENABLE);
2019
  ALTER TABLE "PACKAGE_DOCUMENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2020
/
2021
--------------------------------------------------------
4211 dpurdie 2022
--  Constraints for Table PACKAGE_BUILD_INFO
4040 dpurdie 2023
--------------------------------------------------------
2024
 
4211 dpurdie 2025
  ALTER TABLE "PACKAGE_BUILD_INFO" MODIFY ("BM_ID" NOT NULL ENABLE);
2026
  ALTER TABLE "PACKAGE_BUILD_INFO" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2027
/
2028
--------------------------------------------------------
2029
--  Constraints for Table ADVISORY_RIPPLE
2030
--------------------------------------------------------
2031
 
2032
  ALTER TABLE "ADVISORY_RIPPLE" MODIFY ("PV_ID" NOT NULL ENABLE);
2033
  ALTER TABLE "ADVISORY_RIPPLE" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2034
/
2035
--------------------------------------------------------
4211 dpurdie 2036
--  Constraints for Table PRODUCT_STATES
4040 dpurdie 2037
--------------------------------------------------------
2038
 
4211 dpurdie 2039
  ALTER TABLE "PRODUCT_STATES" ADD CONSTRAINT "PRODUCT_STATES_PK" PRIMARY KEY ("STATE_ID") ENABLE;
2040
  ALTER TABLE "PRODUCT_STATES" MODIFY ("STATE" NOT NULL ENABLE);
2041
  ALTER TABLE "PRODUCT_STATES" MODIFY ("STATE_ID" NOT NULL ENABLE);
4040 dpurdie 2042
/
4211 dpurdie 2043
--------------------------------------------------------
2044
--  Constraints for Table PRODUCT_COMPONENTS
2045
--------------------------------------------------------
4040 dpurdie 2046
 
4211 dpurdie 2047
  ALTER TABLE "PRODUCT_COMPONENTS" MODIFY ("OS_ID" NOT NULL ENABLE);
2048
  ALTER TABLE "PRODUCT_COMPONENTS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2049
/
4211 dpurdie 2050
--------------------------------------------------------
2051
--  Constraints for Table PACKAGE_PATCHES
2052
--------------------------------------------------------
4040 dpurdie 2053
 
4211 dpurdie 2054
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("INSTALL_ORDER" NOT NULL ENABLE);
2055
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("PATCH_ID" NOT NULL ENABLE);
2056
  ALTER TABLE "PACKAGE_PATCHES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2057
/
4211 dpurdie 2058
--------------------------------------------------------
2059
--  Constraints for Table RUN_LEVEL_SCHEDULE
2060
--------------------------------------------------------
4040 dpurdie 2061
 
4211 dpurdie 2062
  ALTER TABLE "RUN_LEVEL_SCHEDULE" ADD PRIMARY KEY ("SCHEDULED_ID") ENABLE;
2063
  ALTER TABLE "RUN_LEVEL_SCHEDULE" MODIFY ("SCHEDULED_ID" NOT NULL ENABLE);
4040 dpurdie 2064
/
2065
--------------------------------------------------------
4211 dpurdie 2066
--  Constraints for Table MICROSOFTDTPROPERTIES
4040 dpurdie 2067
--------------------------------------------------------
2068
 
4211 dpurdie 2069
  ALTER TABLE "MICROSOFTDTPROPERTIES" ADD CONSTRAINT "MICROSOFT_PK_DTPROPERTIES" PRIMARY KEY ("ID", "PROPERTY") ENABLE;
2070
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("VERSION" CONSTRAINT "MICROSOFT_NN_VERSION" NOT NULL ENABLE);
2071
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("PROPERTY" CONSTRAINT "MICROSOFT_NN_PROPERTY" NOT NULL ENABLE);
2072
  ALTER TABLE "MICROSOFTDTPROPERTIES" MODIFY ("ID" CONSTRAINT "MICROSOFT_NN_ID" NOT NULL ENABLE);
4040 dpurdie 2073
/
2074
--------------------------------------------------------
4211 dpurdie 2075
--  Constraints for Table NOTE_MANAGER
4040 dpurdie 2076
--------------------------------------------------------
2077
 
4211 dpurdie 2078
  ALTER TABLE "NOTE_MANAGER" ADD CONSTRAINT "PKNOTE_MANAGER1" PRIMARY KEY ("NID") ENABLE;
2079
  ALTER TABLE "NOTE_MANAGER" MODIFY ("NID" NOT NULL ENABLE);
4040 dpurdie 2080
/
2081
--------------------------------------------------------
4211 dpurdie 2082
--  Constraints for Table BUILD_SERVICE_CONFIG
2083
--------------------------------------------------------
4040 dpurdie 2084
 
4211 dpurdie 2085
  ALTER TABLE "BUILD_SERVICE_CONFIG" MODIFY ("CONFIG" NOT NULL ENABLE);
2086
  ALTER TABLE "BUILD_SERVICE_CONFIG" MODIFY ("SERVICE" NOT NULL ENABLE);
4040 dpurdie 2087
/
4211 dpurdie 2088
--------------------------------------------------------
2089
--  Constraints for Table GBE_MACHTYPE
2090
--------------------------------------------------------
4040 dpurdie 2091
 
4211 dpurdie 2092
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("BM_ID" NOT NULL ENABLE);
2093
  ALTER TABLE "GBE_MACHTYPE" ADD PRIMARY KEY ("GBE_ID") ENABLE;
2094
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("GBE_VALUE" NOT NULL ENABLE);
2095
  ALTER TABLE "GBE_MACHTYPE" MODIFY ("GBE_ID" NOT NULL ENABLE);
4040 dpurdie 2096
/
4211 dpurdie 2097
--------------------------------------------------------
2098
--  Constraints for Table ACTION_LOG
4040 dpurdie 2099
--------------------------------------------------------
2100
 
4211 dpurdie 2101
  ALTER TABLE "ACTION_LOG" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
2102
  ALTER TABLE "ACTION_LOG" MODIFY ("PV_ID" NOT NULL ENABLE);
2103
  ALTER TABLE "ACTION_LOG" MODIFY ("ACTION_DATETIME" NOT NULL ENABLE);
2104
  ALTER TABLE "ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2105
/
4211 dpurdie 2106
--------------------------------------------------------
2107
--  Constraints for Table ADDITIONAL_NOTES
2108
--------------------------------------------------------
4040 dpurdie 2109
 
4211 dpurdie 2110
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("MOD_USER" NOT NULL ENABLE);
2111
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2112
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("NOTE_TITLE" NOT NULL ENABLE);
2113
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("PV_ID" NOT NULL ENABLE);
2114
  ALTER TABLE "ADDITIONAL_NOTES" MODIFY ("NOTE_ID" NOT NULL ENABLE);
4040 dpurdie 2115
/
2116
--------------------------------------------------------
4211 dpurdie 2117
--  Constraints for Table BUILD_STANDARDS_ADDENDUM
2118
--------------------------------------------------------
4040 dpurdie 2119
 
2120
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_PK" PRIMARY KEY ("BSA_ID") ENABLE;
2121
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BS_ID" NOT NULL ENABLE);
2122
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BSA_NAME" NOT NULL ENABLE);
2123
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" MODIFY ("BSA_ID" NOT NULL ENABLE);
2124
/
4211 dpurdie 2125
--------------------------------------------------------
2126
--  Constraints for Table TEST_TYPES
4040 dpurdie 2127
--------------------------------------------------------
2128
 
4211 dpurdie 2129
  ALTER TABLE "TEST_TYPES" ADD CONSTRAINT "PK_TEST_TYPES" PRIMARY KEY ("TEST_TYPE_ID") ENABLE;
2130
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_NAME" NOT NULL ENABLE);
2131
  ALTER TABLE "TEST_TYPES" MODIFY ("TEST_TYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2132
/
2133
--------------------------------------------------------
4211 dpurdie 2134
--  Constraints for Table TEMP_ENV_STATES
4040 dpurdie 2135
--------------------------------------------------------
2136
 
4211 dpurdie 2137
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("TES_STATE" NOT NULL ENABLE);
2138
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2139
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("PV_ID" NOT NULL ENABLE);
2140
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("LEVEL_NUM" NOT NULL ENABLE);
2141
  ALTER TABLE "TEMP_ENV_STATES" MODIFY ("SESSION_NUM" NOT NULL ENABLE);
4040 dpurdie 2142
/
2143
--------------------------------------------------------
4211 dpurdie 2144
--  Constraints for Table VTREES_WORLD
4040 dpurdie 2145
--------------------------------------------------------
2146
 
4211 dpurdie 2147
  ALTER TABLE "VTREES_WORLD" MODIFY ("VTREE_ID" NOT NULL ENABLE);
2148
  ALTER TABLE "VTREES_WORLD" MODIFY ("WORLD_ID" NOT NULL ENABLE);
4040 dpurdie 2149
/
2150
--------------------------------------------------------
4211 dpurdie 2151
--  Constraints for Table RELEASE_CONFIG
4040 dpurdie 2152
--------------------------------------------------------
2153
 
4211 dpurdie 2154
  ALTER TABLE "RELEASE_CONFIG" ADD PRIMARY KEY ("RCON_ID") ENABLE;
2155
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("GBE_ID" NOT NULL ENABLE);
2156
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2157
  ALTER TABLE "RELEASE_CONFIG" MODIFY ("RCON_ID" NOT NULL ENABLE);
4040 dpurdie 2158
/
2159
--------------------------------------------------------
4211 dpurdie 2160
--  Constraints for Table VIEWS
4040 dpurdie 2161
--------------------------------------------------------
2162
 
4211 dpurdie 2163
  ALTER TABLE "VIEWS" ADD CONSTRAINT "PK_VIEWS" PRIMARY KEY ("VIEW_ID") ENABLE;
2164
  ALTER TABLE "VIEWS" MODIFY ("PUBLIC_READ" NOT NULL ENABLE);
2165
  ALTER TABLE "VIEWS" MODIFY ("BASE_VIEW" NOT NULL ENABLE);
2166
  ALTER TABLE "VIEWS" MODIFY ("OWNER_ID" NOT NULL ENABLE);
2167
  ALTER TABLE "VIEWS" MODIFY ("VIEW_NAME" NOT NULL ENABLE);
2168
  ALTER TABLE "VIEWS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
4040 dpurdie 2169
/
2170
--------------------------------------------------------
4211 dpurdie 2171
--  Constraints for Table JIRA_ISSUES
4040 dpurdie 2172
--------------------------------------------------------
2173
 
4211 dpurdie 2174
  ALTER TABLE "JIRA_ISSUES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2175
/
4211 dpurdie 2176
--------------------------------------------------------
2177
--  Constraints for Table PLATFORMS
2178
--------------------------------------------------------
4040 dpurdie 2179
 
4211 dpurdie 2180
  ALTER TABLE "PLATFORMS" MODIFY ("NAME" NOT NULL ENABLE);
2181
  ALTER TABLE "PLATFORMS" MODIFY ("CODE" NOT NULL ENABLE);
4040 dpurdie 2182
/
2183
--------------------------------------------------------
2184
--  Constraints for Table IGNORE_WARNINGS
2185
--------------------------------------------------------
2186
 
2187
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("DPV_ID" NOT NULL ENABLE);
2188
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("PV_ID" NOT NULL ENABLE);
2189
  ALTER TABLE "IGNORE_WARNINGS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2190
/
2191
--------------------------------------------------------
4211 dpurdie 2192
--  Constraints for Table DASH_BOARD
4040 dpurdie 2193
--------------------------------------------------------
2194
 
4211 dpurdie 2195
  ALTER TABLE "DASH_BOARD" MODIFY ("TOTAL_PACKAGES" NOT NULL ENABLE);
2196
  ALTER TABLE "DASH_BOARD" MODIFY ("AUTOMATED_PACKAGES" NOT NULL ENABLE);
2197
  ALTER TABLE "DASH_BOARD" MODIFY ("LAST_BUILD_TIME" NOT NULL ENABLE);
2198
  ALTER TABLE "DASH_BOARD" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2199
  ALTER TABLE "DASH_BOARD" MODIFY ("PROJ_ID" NOT NULL ENABLE);
4040 dpurdie 2200
/
2201
--------------------------------------------------------
4211 dpurdie 2202
--  Constraints for Table ACTION_TYPE
4040 dpurdie 2203
--------------------------------------------------------
2204
 
4211 dpurdie 2205
  ALTER TABLE "ACTION_TYPE" ADD CONSTRAINT "UNQ_ACTTYPE_ID" PRIMARY KEY ("ACTTYPE_ID") ENABLE;
2206
  ALTER TABLE "ACTION_TYPE" MODIFY ("NAME" NOT NULL ENABLE);
2207
  ALTER TABLE "ACTION_TYPE" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2208
/
2209
--------------------------------------------------------
4211 dpurdie 2210
--  Constraints for Table PACKAGE_VERSIONS
4040 dpurdie 2211
--------------------------------------------------------
2212
 
4211 dpurdie 2213
  ALTER TABLE "PACKAGE_VERSIONS" ADD CONSTRAINT "PK_PACKAGE_VERSIONS" PRIMARY KEY ("PV_ID") ENABLE;
2214
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("BUILD_TYPE" NOT NULL ENABLE);
2215
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("LAST_PV_ID" NOT NULL ENABLE);
2216
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("OWNER_ID" NOT NULL ENABLE);
2217
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("CREATOR_ID" NOT NULL ENABLE);
2218
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("MODIFIER_ID" NOT NULL ENABLE);
2219
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("DLOCKED" NOT NULL ENABLE);
2220
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PKG_VERSION" NOT NULL ENABLE);
2221
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PKG_ID" NOT NULL ENABLE);
2222
  ALTER TABLE "PACKAGE_VERSIONS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2223
/
2224
--------------------------------------------------------
4211 dpurdie 2225
--  Constraints for Table PACKAGE_INTEREST
4040 dpurdie 2226
--------------------------------------------------------
2227
 
4211 dpurdie 2228
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("USER_ID" NOT NULL ENABLE);
2229
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2230
  ALTER TABLE "PACKAGE_INTEREST" MODIFY ("PKG_ID" NOT NULL ENABLE);
4040 dpurdie 2231
/
2232
--------------------------------------------------------
4211 dpurdie 2233
--  Constraints for Table RELEASE_CONTENT
4040 dpurdie 2234
--------------------------------------------------------
2235
 
4211 dpurdie 2236
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("PKG_STATE" NOT NULL ENABLE);
2237
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("INSERTOR_ID" NOT NULL ENABLE);
2238
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("INSERT_STAMP" NOT NULL ENABLE);
2239
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("BASE_VIEW_ID" NOT NULL ENABLE);
2240
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("PV_ID" NOT NULL ENABLE);
2241
  ALTER TABLE "RELEASE_CONTENT" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2242
/
2243
--------------------------------------------------------
4211 dpurdie 2244
--  Constraints for Table RELEASE_METRICS
4040 dpurdie 2245
--------------------------------------------------------
2246
 
4211 dpurdie 2247
  ALTER TABLE "RELEASE_METRICS" ADD CONSTRAINT "UNQ_RELEASE_METRICS" UNIQUE ("RTAG_ID") ENABLE;
2248
  ALTER TABLE "RELEASE_METRICS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2249
/
2250
--------------------------------------------------------
4211 dpurdie 2251
--  Constraints for Table PROJECT_EXTENTIONS
4040 dpurdie 2252
--------------------------------------------------------
2253
 
4211 dpurdie 2254
  ALTER TABLE "PROJECT_EXTENTIONS" MODIFY ("EXT_NAME" NOT NULL ENABLE);
4040 dpurdie 2255
/
2256
--------------------------------------------------------
4211 dpurdie 2257
--  Constraints for Table ABT_ACTION_LOG
4040 dpurdie 2258
--------------------------------------------------------
2259
 
4211 dpurdie 2260
  ALTER TABLE "ABT_ACTION_LOG" MODIFY ("RCON_ID" NOT NULL ENABLE);
4040 dpurdie 2261
/
2262
--------------------------------------------------------
4211 dpurdie 2263
--  Constraints for Table DAEMON_ACTION_LOG
4040 dpurdie 2264
--------------------------------------------------------
2265
 
4211 dpurdie 2266
  ALTER TABLE "DAEMON_ACTION_LOG" MODIFY ("RCON_ID" NOT NULL ENABLE);
2267
  ALTER TABLE "DAEMON_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2268
/
2269
--------------------------------------------------------
4211 dpurdie 2270
--  Constraints for Table PACKAGE_METRICS
4040 dpurdie 2271
--------------------------------------------------------
2272
 
4211 dpurdie 2273
  ALTER TABLE "PACKAGE_METRICS" ADD CONSTRAINT "UNQ_PACKAGE_METRICS" UNIQUE ("PV_ID") ENABLE;
2274
  ALTER TABLE "PACKAGE_METRICS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2275
/
2276
--------------------------------------------------------
4211 dpurdie 2277
--  Constraints for Table CODE_REVIEW_URL
4040 dpurdie 2278
--------------------------------------------------------
2279
 
4211 dpurdie 2280
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PK" PRIMARY KEY ("CR_ID") ENABLE;
2281
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("DATE_OF_REVIEW" NOT NULL ENABLE);
2282
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("URL" NOT NULL ENABLE);
2283
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2284
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("PV_ID" NOT NULL ENABLE);
2285
  ALTER TABLE "CODE_REVIEW_URL" MODIFY ("CR_ID" NOT NULL ENABLE);
4040 dpurdie 2286
/
2287
--------------------------------------------------------
4211 dpurdie 2288
--  Constraints for Table AUTOBUILD_FAILURE
4040 dpurdie 2289
--------------------------------------------------------
2290
 
4211 dpurdie 2291
  ALTER TABLE "AUTOBUILD_FAILURE" ADD PRIMARY KEY ("GROUP_EMAIL_ID") ENABLE;
2292
  ALTER TABLE "AUTOBUILD_FAILURE" MODIFY ("GROUP_EMAIL_ID" NOT NULL ENABLE);
4040 dpurdie 2293
/
2294
--------------------------------------------------------
4211 dpurdie 2295
--  Constraints for Table BUILD_MACHINE_CONFIG
4040 dpurdie 2296
--------------------------------------------------------
2297
 
4211 dpurdie 2298
  ALTER TABLE "BUILD_MACHINE_CONFIG" ADD CONSTRAINT "PK_BUILD_MACHINE_CONFIG" PRIMARY KEY ("BMCON_ID") ENABLE;
2299
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("GBE_ID" NOT NULL ENABLE);
2300
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("MACHINE_HOSTNAME" NOT NULL ENABLE);
2301
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("DISPLAY_NAME" NOT NULL ENABLE);
2302
  ALTER TABLE "BUILD_MACHINE_CONFIG" MODIFY ("BMCON_ID" NOT NULL ENABLE);
4040 dpurdie 2303
/
2304
--------------------------------------------------------
4211 dpurdie 2305
--  Constraints for Table VIEW_DEF
4040 dpurdie 2306
--------------------------------------------------------
2307
 
4211 dpurdie 2308
  ALTER TABLE "VIEW_DEF" MODIFY ("PKG_ID" NOT NULL ENABLE);
2309
  ALTER TABLE "VIEW_DEF" MODIFY ("VIEW_ID" NOT NULL ENABLE);
4040 dpurdie 2310
/
2311
--------------------------------------------------------
4211 dpurdie 2312
--  Constraints for Table BUILD_STANDARDS
4040 dpurdie 2313
--------------------------------------------------------
2314
 
4211 dpurdie 2315
  ALTER TABLE "BUILD_STANDARDS" ADD CONSTRAINT "BUILD_STANDARDS_PK" PRIMARY KEY ("BS_ID") ENABLE;
2316
  ALTER TABLE "BUILD_STANDARDS" MODIFY ("BS_NAME" NOT NULL ENABLE);
2317
  ALTER TABLE "BUILD_STANDARDS" MODIFY ("BS_ID" NOT NULL ENABLE);
4040 dpurdie 2318
/
4211 dpurdie 2319
--------------------------------------------------------
2320
--  Constraints for Table PACKAGE_BUILD_ENV
2321
--------------------------------------------------------
4040 dpurdie 2322
 
4211 dpurdie 2323
  ALTER TABLE "PACKAGE_BUILD_ENV" MODIFY ("BE_ID" NOT NULL ENABLE);
2324
  ALTER TABLE "PACKAGE_BUILD_ENV" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2325
/
2326
--------------------------------------------------------
4211 dpurdie 2327
--  Constraints for Table VTREES
4040 dpurdie 2328
--------------------------------------------------------
2329
 
4211 dpurdie 2330
  ALTER TABLE "VTREES" ADD CONSTRAINT "PK_VTREES" PRIMARY KEY ("VTREE_ID") ENABLE;
2331
  ALTER TABLE "VTREES" MODIFY ("HIDE" NOT NULL ENABLE);
2332
  ALTER TABLE "VTREES" MODIFY ("VTREE_NAME" NOT NULL ENABLE);
2333
  ALTER TABLE "VTREES" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2334
  ALTER TABLE "VTREES" MODIFY ("VTREE_ID" NOT NULL ENABLE);
4040 dpurdie 2335
/
2336
--------------------------------------------------------
4211 dpurdie 2337
--  Constraints for Table NOTIFICATION_HISTORY
2338
--------------------------------------------------------
4040 dpurdie 2339
 
4211 dpurdie 2340
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "PK_NOTIFICATION_HISTORY" PRIMARY KEY ("RTAG_ID", "PV_ID", "USER_ID") ENABLE;
2341
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
2342
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("USER_ID" NOT NULL ENABLE);
2343
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("PV_ID" NOT NULL ENABLE);
2344
  ALTER TABLE "NOTIFICATION_HISTORY" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2345
/
4211 dpurdie 2346
--------------------------------------------------------
2347
--  Constraints for Table RELEASE_LINKS
2348
--------------------------------------------------------
4040 dpurdie 2349
 
4211 dpurdie 2350
  ALTER TABLE "RELEASE_LINKS" MODIFY ("REF_RTAG_ID" NOT NULL ENABLE);
2351
  ALTER TABLE "RELEASE_LINKS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2352
/
4211 dpurdie 2353
--------------------------------------------------------
2354
--  Constraints for Table PACKAGES
2355
--------------------------------------------------------
4040 dpurdie 2356
 
4211 dpurdie 2357
  ALTER TABLE "PACKAGES" ADD CONSTRAINT "PK_PACKAGES" PRIMARY KEY ("PKG_ID") ENABLE;
2358
  ALTER TABLE "PACKAGES" MODIFY ("PKG_NAME" NOT NULL ENABLE);
2359
  ALTER TABLE "PACKAGES" MODIFY ("PKG_ID" NOT NULL ENABLE);
4040 dpurdie 2360
/
4211 dpurdie 2361
--------------------------------------------------------
2362
--  Constraints for Table REPEAT_SCHEDULE
2363
--------------------------------------------------------
4040 dpurdie 2364
 
4211 dpurdie 2365
  ALTER TABLE "REPEAT_SCHEDULE" ADD PRIMARY KEY ("RPT_ID") ENABLE;
4040 dpurdie 2366
/
4211 dpurdie 2367
--------------------------------------------------------
2368
--  Constraints for Table PROJECTS
2369
--------------------------------------------------------
4040 dpurdie 2370
 
4211 dpurdie 2371
  ALTER TABLE "PROJECTS" ADD CONSTRAINT "PK_PROJECTS" PRIMARY KEY ("PROJ_ID") ENABLE;
2372
  ALTER TABLE "PROJECTS" MODIFY ("PROJ_NAME" NOT NULL ENABLE);
2373
  ALTER TABLE "PROJECTS" MODIFY ("PROJ_ID" NOT NULL ENABLE);
4040 dpurdie 2374
/
4211 dpurdie 2375
--------------------------------------------------------
2376
--  Constraints for Table LICENCING
2377
--------------------------------------------------------
4040 dpurdie 2378
 
4211 dpurdie 2379
  ALTER TABLE "LICENCING" MODIFY ("LICENCE" NOT NULL ENABLE);
2380
  ALTER TABLE "LICENCING" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2381
/
4211 dpurdie 2382
--------------------------------------------------------
2383
--  Constraints for Table MESSAGE_BOARD
2384
--------------------------------------------------------
4040 dpurdie 2385
 
4211 dpurdie 2386
  ALTER TABLE "MESSAGE_BOARD" ADD CONSTRAINT "PK_MESSAGE_BOARD" PRIMARY KEY ("MSG_ID") ENABLE;
2387
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("SUBMITION_DATE" NOT NULL ENABLE);
2388
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_DETAILS" NOT NULL ENABLE);
2389
  ALTER TABLE "MESSAGE_BOARD" MODIFY ("MSG_ID" NOT NULL ENABLE);
4040 dpurdie 2390
/
4211 dpurdie 2391
--------------------------------------------------------
2392
--  Constraints for Table PROJECT_ACTION_LOG
2393
--------------------------------------------------------
4040 dpurdie 2394
 
2395
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("ACTTYPE_ID" NOT NULL ENABLE);
2396
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("PROJ_ID" NOT NULL ENABLE);
2397
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("ACTION_DATETIME" NOT NULL ENABLE);
2398
  ALTER TABLE "PROJECT_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
2399
/
4211 dpurdie 2400
--------------------------------------------------------
2401
--  Constraints for Table ARCHIVE_DATA
2402
--------------------------------------------------------
4040 dpurdie 2403
 
4211 dpurdie 2404
  ALTER TABLE "ARCHIVE_DATA" MODIFY ("PV_ID" NOT NULL ENABLE);
2405
  ALTER TABLE "ARCHIVE_DATA" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2406
/
4211 dpurdie 2407
--------------------------------------------------------
2408
--  Constraints for Table VALIDATION_RULES
2409
--------------------------------------------------------
4040 dpurdie 2410
 
4211 dpurdie 2411
  ALTER TABLE "VALIDATION_RULES" MODIFY ("IS_REQUIRED" NOT NULL ENABLE);
2412
  ALTER TABLE "VALIDATION_RULES" MODIFY ("FIELD_NAME" NOT NULL ENABLE);
4040 dpurdie 2413
/
4211 dpurdie 2414
--------------------------------------------------------
2415
--  Constraints for Table LICENCES
2416
--------------------------------------------------------
4040 dpurdie 2417
 
4211 dpurdie 2418
  ALTER TABLE "LICENCES" ADD CONSTRAINT "PK_LICENCES" PRIMARY KEY ("LICENCE") ENABLE;
2419
  ALTER TABLE "LICENCES" MODIFY ("NAME" NOT NULL ENABLE);
2420
  ALTER TABLE "LICENCES" MODIFY ("LICENCE" NOT NULL ENABLE);
4040 dpurdie 2421
/
4211 dpurdie 2422
--------------------------------------------------------
2423
--  Constraints for Table MEMBERS_GROUP
2424
--------------------------------------------------------
4040 dpurdie 2425
 
4211 dpurdie 2426
  ALTER TABLE "MEMBERS_GROUP" MODIFY ("GROUP_EMAIL_ID" NOT NULL ENABLE);
4040 dpurdie 2427
/
4211 dpurdie 2428
--------------------------------------------------------
2429
--  Constraints for Table CQ_ISSUES
2430
--------------------------------------------------------
4040 dpurdie 2431
 
4211 dpurdie 2432
  ALTER TABLE "CQ_ISSUES" MODIFY ("MOD_DATE" NOT NULL ENABLE);
2433
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_STATE" NOT NULL ENABLE);
2434
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_ID" NOT NULL ENABLE);
2435
  ALTER TABLE "CQ_ISSUES" MODIFY ("ISS_DB" NOT NULL ENABLE);
2436
  ALTER TABLE "CQ_ISSUES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2437
/
4211 dpurdie 2438
--------------------------------------------------------
2439
--  Constraints for Table ARCHIVE_ACTION_LOG
2440
--------------------------------------------------------
4040 dpurdie 2441
 
4211 dpurdie 2442
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("DESCRIPTION" NOT NULL ENABLE);
2443
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("RTAG_ID" NOT NULL ENABLE);
2444
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("DATE_TIME_STAMP" NOT NULL ENABLE);
2445
  ALTER TABLE "ARCHIVE_ACTION_LOG" MODIFY ("USER_ID" NOT NULL ENABLE);
4040 dpurdie 2446
/
4211 dpurdie 2447
--------------------------------------------------------
2448
--  Constraints for Table CODE_REVIEWS
4040 dpurdie 2449
--------------------------------------------------------
2450
 
4211 dpurdie 2451
  ALTER TABLE "CODE_REVIEWS" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2452
/
4211 dpurdie 2453
--------------------------------------------------------
2454
--  Constraints for Table PLANNED
2455
--------------------------------------------------------
4040 dpurdie 2456
 
4211 dpurdie 2457
  ALTER TABLE "PLANNED" ADD CONSTRAINT "UNIQUE_PV_RTAG" UNIQUE ("PV_ID", "RTAG_ID") ENABLE;
2458
  ALTER TABLE "PLANNED" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2459
  ALTER TABLE "PLANNED" MODIFY ("PV_ID" NOT NULL ENABLE);
2460
  ALTER TABLE "PLANNED" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2461
/
4211 dpurdie 2462
--------------------------------------------------------
2463
--  Constraints for Table VCS_TYPE
2464
--------------------------------------------------------
4040 dpurdie 2465
 
4211 dpurdie 2466
  ALTER TABLE "VCS_TYPE" ADD CONSTRAINT "VCS_TYPE_PK" PRIMARY KEY ("VCS_TYPE_ID") ENABLE;
2467
  ALTER TABLE "VCS_TYPE" MODIFY ("TAG" NOT NULL ENABLE);
2468
  ALTER TABLE "VCS_TYPE" MODIFY ("NAME" NOT NULL ENABLE);
2469
  ALTER TABLE "VCS_TYPE" MODIFY ("VCS_TYPE_ID" NOT NULL ENABLE);
4040 dpurdie 2470
/
4211 dpurdie 2471
--------------------------------------------------------
2472
--  Constraints for Table BUILD_MACHINES
2473
--------------------------------------------------------
4040 dpurdie 2474
 
4211 dpurdie 2475
  ALTER TABLE "BUILD_MACHINES" ADD CONSTRAINT "BUILD_MACHINES_PK" PRIMARY KEY ("BM_ID") ENABLE;
2476
  ALTER TABLE "BUILD_MACHINES" MODIFY ("BM_NAME" NOT NULL ENABLE);
2477
  ALTER TABLE "BUILD_MACHINES" MODIFY ("BM_ID" NOT NULL ENABLE);
4040 dpurdie 2478
/
4211 dpurdie 2479
--------------------------------------------------------
2480
--  Constraints for Table PEGGED_VERSIONS
2481
--------------------------------------------------------
4040 dpurdie 2482
 
4211 dpurdie 2483
  ALTER TABLE "PEGGED_VERSIONS" MODIFY ("PV_ID" NOT NULL ENABLE);
2484
  ALTER TABLE "PEGGED_VERSIONS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2485
/
4211 dpurdie 2486
--------------------------------------------------------
2487
--  Constraints for Table DAEMON_INSTRUCTIONS
2488
--------------------------------------------------------
4040 dpurdie 2489
 
4211 dpurdie 2490
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_UK1" UNIQUE ("OP_CODE", "RTAG_ID", "PV_ID") ENABLE;
2491
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_PK" PRIMARY KEY ("DAEMON_INSTRUCTIONS_ID") ENABLE;
2492
  ALTER TABLE "DAEMON_INSTRUCTIONS" MODIFY ("OP_CODE" NOT NULL ENABLE);
2493
  ALTER TABLE "DAEMON_INSTRUCTIONS" MODIFY ("DAEMON_INSTRUCTIONS_ID" NOT NULL ENABLE);
4040 dpurdie 2494
/
2495
--------------------------------------------------------
4211 dpurdie 2496
--  Constraints for Table WORK_IN_PROGRESS
4040 dpurdie 2497
--------------------------------------------------------
2498
 
4211 dpurdie 2499
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("VIEW_ID" NOT NULL ENABLE);
2500
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("PV_ID" NOT NULL ENABLE);
2501
  ALTER TABLE "WORK_IN_PROGRESS" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2502
/
2503
--------------------------------------------------------
4211 dpurdie 2504
--  Constraints for Table BUILD_ENV_DOCUMENTS
2505
--------------------------------------------------------
4040 dpurdie 2506
 
4211 dpurdie 2507
  ALTER TABLE "BUILD_ENV_DOCUMENTS" MODIFY ("DOC_NUM" NOT NULL ENABLE);
2508
  ALTER TABLE "BUILD_ENV_DOCUMENTS" MODIFY ("BE_ID" NOT NULL ENABLE);
4040 dpurdie 2509
/
4211 dpurdie 2510
--------------------------------------------------------
2511
--  Constraints for Table BUILD_ORDER
4040 dpurdie 2512
--------------------------------------------------------
2513
 
4211 dpurdie 2514
  ALTER TABLE "BUILD_ORDER" MODIFY ("PV_ID" NOT NULL ENABLE);
2515
  ALTER TABLE "BUILD_ORDER" MODIFY ("STEP_NUM" NOT NULL ENABLE);
2516
  ALTER TABLE "BUILD_ORDER" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2517
/
4211 dpurdie 2518
--------------------------------------------------------
2519
--  Constraints for Table PACKAGE_DEPENDENCIES
2520
--------------------------------------------------------
4040 dpurdie 2521
 
4211 dpurdie 2522
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("BUILD_TYPE" NOT NULL ENABLE);
2523
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("DPKG_ID" NOT NULL ENABLE);
2524
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2525
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("DPV_ID" NOT NULL ENABLE);
2526
  ALTER TABLE "PACKAGE_DEPENDENCIES" MODIFY ("PV_ID" NOT NULL ENABLE);
4040 dpurdie 2527
/
4211 dpurdie 2528
--------------------------------------------------------
2529
--  Constraints for Table PROCESSES
2530
--------------------------------------------------------
4040 dpurdie 2531
 
4211 dpurdie 2532
  ALTER TABLE "PROCESSES" ADD CONSTRAINT "PROCESSES_PK" PRIMARY KEY ("PROC_ID") ENABLE;
2533
  ALTER TABLE "PROCESSES" MODIFY ("PROC_NAME" NOT NULL ENABLE);
2534
  ALTER TABLE "PROCESSES" MODIFY ("PROC_ID" NOT NULL ENABLE);
4040 dpurdie 2535
/
4211 dpurdie 2536
--------------------------------------------------------
2537
--  Constraints for Table BUILD_ENVIRONMENTS
2538
--------------------------------------------------------
4040 dpurdie 2539
 
4211 dpurdie 2540
  ALTER TABLE "BUILD_ENVIRONMENTS" ADD CONSTRAINT "PK_BUILD_ENVIRONMENTS" PRIMARY KEY ("BE_ID") ENABLE;
2541
  ALTER TABLE "BUILD_ENVIRONMENTS" MODIFY ("BE_NAME" NOT NULL ENABLE);
2542
  ALTER TABLE "BUILD_ENVIRONMENTS" MODIFY ("BE_ID" NOT NULL ENABLE);
4040 dpurdie 2543
/
4211 dpurdie 2544
--------------------------------------------------------
2545
--  Constraints for Table DEPRECATED_PACKAGES
2546
--------------------------------------------------------
4040 dpurdie 2547
 
4211 dpurdie 2548
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("COMMENTS" NOT NULL ENABLE);
2549
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("PKG_ID" NOT NULL ENABLE);
2550
  ALTER TABLE "DEPRECATED_PACKAGES" MODIFY ("RTAG_ID" NOT NULL ENABLE);
4040 dpurdie 2551
/
2552
--------------------------------------------------------
2553
--  Ref Constraints for Table ABT_ACTION_LOG
2554
--------------------------------------------------------
2555
 
2556
  ALTER TABLE "ABT_ACTION_LOG" ADD FOREIGN KEY ("RCON_ID")
2557
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2558
/
2559
--------------------------------------------------------
2560
--  Ref Constraints for Table ACTION_LOG
2561
--------------------------------------------------------
2562
 
2563
  ALTER TABLE "ACTION_LOG" ADD CONSTRAINT "REFACTION_TYPE48" FOREIGN KEY ("ACTTYPE_ID")
2564
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2565
/
2566
--------------------------------------------------------
2567
--  Ref Constraints for Table ADDITIONAL_NOTES
2568
--------------------------------------------------------
2569
 
2570
  ALTER TABLE "ADDITIONAL_NOTES" ADD CONSTRAINT "FK_ADDITION_REF_PV_ID" FOREIGN KEY ("PV_ID")
2571
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2572
/
2573
--------------------------------------------------------
2574
--  Ref Constraints for Table ADVISORY_RIPPLE
2575
--------------------------------------------------------
2576
 
2577
  ALTER TABLE "ADVISORY_RIPPLE" ADD FOREIGN KEY ("RTAG_ID")
2578
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2579
  ALTER TABLE "ADVISORY_RIPPLE" ADD FOREIGN KEY ("PV_ID")
2580
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2581
/
2582
--------------------------------------------------------
2583
--  Ref Constraints for Table AUTOBUILD_FAILURE
2584
--------------------------------------------------------
2585
 
2586
  ALTER TABLE "AUTOBUILD_FAILURE" ADD FOREIGN KEY ("PROJ_ID")
2587
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2588
  ALTER TABLE "AUTOBUILD_FAILURE" ADD FOREIGN KEY ("VIEW_ID")
2589
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2590
/
2591
--------------------------------------------------------
2592
--  Ref Constraints for Table BUILD_ENV_DOCUMENTS
2593
--------------------------------------------------------
2594
 
2595
  ALTER TABLE "BUILD_ENV_DOCUMENTS" ADD CONSTRAINT "FK_BUILD_E_DOCS_REF_BUILD_ENV" FOREIGN KEY ("BE_ID")
2596
	  REFERENCES "BUILD_ENVIRONMENTS" ("BE_ID") ENABLE;
2597
/
2598
--------------------------------------------------------
2599
--  Ref Constraints for Table BUILD_MACHINE_CONFIG
2600
--------------------------------------------------------
2601
 
2602
  ALTER TABLE "BUILD_MACHINE_CONFIG" ADD CONSTRAINT "FK_BM_GBE_ID" FOREIGN KEY ("GBE_ID")
2603
	  REFERENCES "GBE_MACHTYPE" ("GBE_ID") ENABLE;
2604
/
2605
--------------------------------------------------------
2606
--  Ref Constraints for Table BUILD_ORDER
2607
--------------------------------------------------------
2608
 
2609
  ALTER TABLE "BUILD_ORDER" ADD CONSTRAINT "FK_BO_PV_ID" FOREIGN KEY ("PV_ID")
2610
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") DISABLE;
2611
  ALTER TABLE "BUILD_ORDER" ADD CONSTRAINT "FK_BO_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2612
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2613
/
2614
--------------------------------------------------------
2615
--  Ref Constraints for Table BUILD_STANDARDS_ADDENDUM
2616
--------------------------------------------------------
2617
 
2618
  ALTER TABLE "BUILD_STANDARDS_ADDENDUM" ADD CONSTRAINT "BUILD_STANDARDS_ADDENDUM_R01" FOREIGN KEY ("BS_ID")
2619
	  REFERENCES "BUILD_STANDARDS" ("BS_ID") ENABLE;
2620
/
2621
--------------------------------------------------------
2622
--  Ref Constraints for Table CODE_REVIEWS
2623
--------------------------------------------------------
2624
 
2625
  ALTER TABLE "CODE_REVIEWS" ADD CONSTRAINT "FK_CODE_REV_REF_PV_ID" FOREIGN KEY ("PV_ID")
2626
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2627
/
2628
--------------------------------------------------------
2629
--  Ref Constraints for Table CODE_REVIEW_URL
2630
--------------------------------------------------------
2631
 
2632
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PACKAGE_V_FK1" FOREIGN KEY ("PV_ID")
2633
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2634
  ALTER TABLE "CODE_REVIEW_URL" ADD CONSTRAINT "CODE_REVIEW_URL_PROJECT_V_FK1" FOREIGN KEY ("PROJ_ID")
2635
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2636
/
2637
--------------------------------------------------------
2638
--  Ref Constraints for Table CQ_ISSUES
2639
--------------------------------------------------------
2640
 
2641
  ALTER TABLE "CQ_ISSUES" ADD CONSTRAINT "FK_CQ_PV_ID" FOREIGN KEY ("PV_ID")
2642
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2643
/
2644
--------------------------------------------------------
2645
--  Ref Constraints for Table DAEMON_ACTION_LOG
2646
--------------------------------------------------------
2647
 
2648
  ALTER TABLE "DAEMON_ACTION_LOG" ADD FOREIGN KEY ("RCON_ID")
2649
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2650
  ALTER TABLE "DAEMON_ACTION_LOG" ADD FOREIGN KEY ("ACTTYPE_ID")
2651
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2652
/
2653
--------------------------------------------------------
2654
--  Ref Constraints for Table DAEMON_INSTRUCTIONS
2655
--------------------------------------------------------
2656
 
2657
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_PV_ID_FK" FOREIGN KEY ("PV_ID")
2658
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2659
  ALTER TABLE "DAEMON_INSTRUCTIONS" ADD CONSTRAINT "DAEMON_INSTRUCTIONS_RTAG_ID_FK" FOREIGN KEY ("RTAG_ID")
2660
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2661
/
2662
--------------------------------------------------------
2663
--  Ref Constraints for Table DASH_BOARD
2664
--------------------------------------------------------
2665
 
2666
  ALTER TABLE "DASH_BOARD" ADD FOREIGN KEY ("PROJ_ID")
2667
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2668
  ALTER TABLE "DASH_BOARD" ADD FOREIGN KEY ("RTAG_ID")
2669
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2670
/
2671
--------------------------------------------------------
2672
--  Ref Constraints for Table DO_NOT_RIPPLE
2673
--------------------------------------------------------
2674
 
2675
  ALTER TABLE "DO_NOT_RIPPLE" ADD FOREIGN KEY ("PV_ID")
2676
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2677
  ALTER TABLE "DO_NOT_RIPPLE" ADD FOREIGN KEY ("RTAG_ID")
2678
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2679
/
2680
--------------------------------------------------------
2681
--  Ref Constraints for Table GBE_MACHTYPE
2682
--------------------------------------------------------
2683
 
2684
  ALTER TABLE "GBE_MACHTYPE" ADD CONSTRAINT "GBE_MACHTYPE_BUILD_MACHIN_FK1" FOREIGN KEY ("BM_ID")
2685
	  REFERENCES "BUILD_MACHINES" ("BM_ID") ENABLE;
2686
/
2687
--------------------------------------------------------
2688
--  Ref Constraints for Table IGNORE_WARNINGS
2689
--------------------------------------------------------
2690
 
2691
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_DPV_ID" FOREIGN KEY ("DPV_ID")
2692
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2693
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_PV_ID" FOREIGN KEY ("PV_ID")
2694
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2695
  ALTER TABLE "IGNORE_WARNINGS" ADD CONSTRAINT "FK_IGW_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2696
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2697
/
2698
--------------------------------------------------------
2699
--  Ref Constraints for Table JIRA_ISSUES
2700
--------------------------------------------------------
2701
 
2702
  ALTER TABLE "JIRA_ISSUES" ADD CONSTRAINT "FK_JIRA_PV_ID" FOREIGN KEY ("PV_ID")
2703
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2704
/
2705
--------------------------------------------------------
2706
--  Ref Constraints for Table LICENCING
2707
--------------------------------------------------------
2708
 
2709
  ALTER TABLE "LICENCING" ADD FOREIGN KEY ("PV_ID")
2710
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2711
  ALTER TABLE "LICENCING" ADD FOREIGN KEY ("LICENCE")
2712
	  REFERENCES "LICENCES" ("LICENCE") ENABLE;
2713
/
2714
--------------------------------------------------------
2715
--  Ref Constraints for Table MEMBERS_GROUP
2716
--------------------------------------------------------
2717
 
2718
  ALTER TABLE "MEMBERS_GROUP" ADD FOREIGN KEY ("GROUP_EMAIL_ID")
2719
	  REFERENCES "AUTOBUILD_FAILURE" ("GROUP_EMAIL_ID") ENABLE;
2720
/
2721
--------------------------------------------------------
2722
--  Ref Constraints for Table NOTIFICATION_HISTORY
2723
--------------------------------------------------------
2724
 
2725
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "FK_NH_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2726
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2727
  ALTER TABLE "NOTIFICATION_HISTORY" ADD CONSTRAINT "FK_NK_PV_ID" FOREIGN KEY ("PV_ID")
2728
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") DISABLE;
2729
/
2730
--------------------------------------------------------
2731
--  Ref Constraints for Table PACKAGE_BUILD_ENV
2732
--------------------------------------------------------
2733
 
2734
  ALTER TABLE "PACKAGE_BUILD_ENV" ADD CONSTRAINT "FK_PKG_BUILD_E_REF_BUILD_ENV" FOREIGN KEY ("BE_ID")
2735
	  REFERENCES "BUILD_ENVIRONMENTS" ("BE_ID") ENABLE;
2736
  ALTER TABLE "PACKAGE_BUILD_ENV" ADD CONSTRAINT "FK_PKG_BUILD_E_REF_PKG_VERSION" FOREIGN KEY ("PV_ID")
2737
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2738
/
2739
--------------------------------------------------------
2740
--  Ref Constraints for Table PACKAGE_BUILD_INFO
2741
--------------------------------------------------------
2742
 
2743
  ALTER TABLE "PACKAGE_BUILD_INFO" ADD FOREIGN KEY ("PV_ID")
2744
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2745
  ALTER TABLE "PACKAGE_BUILD_INFO" ADD FOREIGN KEY ("BM_ID")
2746
	  REFERENCES "BUILD_MACHINES" ("BM_ID") ENABLE;
2747
/
2748
--------------------------------------------------------
2749
--  Ref Constraints for Table PACKAGE_DOCUMENTS
2750
--------------------------------------------------------
2751
 
2752
  ALTER TABLE "PACKAGE_DOCUMENTS" ADD CONSTRAINT "FK_PKGDOCS_REF_PV" FOREIGN KEY ("PV_ID")
2753
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2754
/
2755
--------------------------------------------------------
2756
--  Ref Constraints for Table PACKAGE_INTEREST
2757
--------------------------------------------------------
2758
 
2759
  ALTER TABLE "PACKAGE_INTEREST" ADD FOREIGN KEY ("PROJ_ID")
2760
	  REFERENCES "PROJECTS" ("PROJ_ID") ENABLE;
2761
/
2762
--------------------------------------------------------
2763
--  Ref Constraints for Table PACKAGE_METRICS
2764
--------------------------------------------------------
2765
 
2766
  ALTER TABLE "PACKAGE_METRICS" ADD CONSTRAINT "FK_PACKAGE_METRICS_PV_ID" FOREIGN KEY ("PV_ID")
2767
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2768
/
2769
--------------------------------------------------------
2770
--  Ref Constraints for Table PACKAGE_PATCHES
2771
--------------------------------------------------------
2772
 
2773
  ALTER TABLE "PACKAGE_PATCHES" ADD CONSTRAINT "FK_PP_PATCH_ID" FOREIGN KEY ("PATCH_ID")
2774
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2775
  ALTER TABLE "PACKAGE_PATCHES" ADD CONSTRAINT "FK_PP_PV_ID" FOREIGN KEY ("PV_ID")
2776
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2777
/
2778
--------------------------------------------------------
2779
--  Ref Constraints for Table PACKAGE_PROCESSES
2780
--------------------------------------------------------
2781
 
2782
  ALTER TABLE "PACKAGE_PROCESSES" ADD CONSTRAINT "PACKAGE_PROCESSES_R01" FOREIGN KEY ("PV_ID")
2783
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2784
  ALTER TABLE "PACKAGE_PROCESSES" ADD CONSTRAINT "PACKAGE_PROCESSES_R02" FOREIGN KEY ("PROC_ID")
2785
	  REFERENCES "PROCESSES" ("PROC_ID") ENABLE;
2786
/
2787
--------------------------------------------------------
2788
--  Ref Constraints for Table PACKAGE_VERSIONS
2789
--------------------------------------------------------
2790
 
2791
  ALTER TABLE "PACKAGE_VERSIONS" ADD CONSTRAINT "PACKAGE_VERSIONS_VCS_TYPE" FOREIGN KEY ("VCS_TYPE_ID")
2792
	  REFERENCES "VCS_TYPE" ("VCS_TYPE_ID") ENABLE;
2793
  ALTER TABLE "PACKAGE_VERSIONS" ADD FOREIGN KEY ("BS_ID")
2794
	  REFERENCES "BUILD_STANDARDS" ("BS_ID") ENABLE;
2795
/
2796
--------------------------------------------------------
2797
--  Ref Constraints for Table PEGGED_VERSIONS
2798
--------------------------------------------------------
2799
 
2800
  ALTER TABLE "PEGGED_VERSIONS" ADD CONSTRAINT "PEGGED_VERSIONS_PACKAG_FK1" FOREIGN KEY ("PV_ID")
2801
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2802
  ALTER TABLE "PEGGED_VERSIONS" ADD CONSTRAINT "PEGGED_VERSIONS_RELEAS_FK1" FOREIGN KEY ("RTAG_ID")
2803
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2804
/
2805
--------------------------------------------------------
2806
--  Ref Constraints for Table PLANNED
2807
--------------------------------------------------------
2808
 
2809
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFPACKAGE_VERSIONS54" FOREIGN KEY ("PV_ID")
2810
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2811
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFRELEASE_TAGS53" FOREIGN KEY ("RTAG_ID")
2812
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2813
  ALTER TABLE "PLANNED" ADD CONSTRAINT "REFVIEWS55" FOREIGN KEY ("VIEW_ID")
2814
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2815
/
2816
--------------------------------------------------------
2817
--  Ref Constraints for Table PLANNED_VERSIONS
2818
--------------------------------------------------------
2819
 
2820
  ALTER TABLE "PLANNED_VERSIONS" ADD FOREIGN KEY ("PKG_ID")
2821
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2822
/
2823
--------------------------------------------------------
2824
--  Ref Constraints for Table PRODUCT_COMPONENTS
2825
--------------------------------------------------------
2826
 
2827
  ALTER TABLE "PRODUCT_COMPONENTS" ADD CONSTRAINT "REFPACKAGE_VERSIONS49" FOREIGN KEY ("PV_ID")
2828
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2829
/
2830
--------------------------------------------------------
2831
--  Ref Constraints for Table PROJECT_ACTION_LOG
2832
--------------------------------------------------------
2833
 
2834
  ALTER TABLE "PROJECT_ACTION_LOG" ADD CONSTRAINT "REFACTION_TYPE63" FOREIGN KEY ("ACTTYPE_ID")
2835
	  REFERENCES "ACTION_TYPE" ("ACTTYPE_ID") ENABLE;
2836
  ALTER TABLE "PROJECT_ACTION_LOG" ADD FOREIGN KEY ("RTAG_ID")
2837
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") DISABLE;
2838
/
2839
--------------------------------------------------------
2840
--  Ref Constraints for Table RELEASE_COMPONENTS
2841
--------------------------------------------------------
2842
 
2843
  ALTER TABLE "RELEASE_COMPONENTS" ADD CONSTRAINT "FK_RCONT_PV_ID" FOREIGN KEY ("PV_ID")
2844
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2845
/
2846
--------------------------------------------------------
2847
--  Ref Constraints for Table RELEASE_CONFIG
2848
--------------------------------------------------------
2849
 
2850
  ALTER TABLE "RELEASE_CONFIG" ADD FOREIGN KEY ("RTAG_ID")
2851
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2852
  ALTER TABLE "RELEASE_CONFIG" ADD FOREIGN KEY ("GBE_ID")
2853
	  REFERENCES "GBE_MACHTYPE" ("GBE_ID") ENABLE;
2854
/
2855
--------------------------------------------------------
2856
--  Ref Constraints for Table RELEASE_CONTENT
2857
--------------------------------------------------------
2858
 
2859
  ALTER TABLE "RELEASE_CONTENT" ADD FOREIGN KEY ("PKG_ID")
2860
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2861
  ALTER TABLE "RELEASE_CONTENT" ADD FOREIGN KEY ("PRODUCT_STATE")
2862
	  REFERENCES "PRODUCT_STATES" ("STATE_ID") ENABLE;
2863
/
2864
--------------------------------------------------------
2865
--  Ref Constraints for Table RELEASE_LINKS
2866
--------------------------------------------------------
2867
 
2868
  ALTER TABLE "RELEASE_LINKS" ADD CONSTRAINT "REFRELEASE_TAGS56" FOREIGN KEY ("RTAG_ID")
2869
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2870
  ALTER TABLE "RELEASE_LINKS" ADD CONSTRAINT "REFRELEASE_TAGS58" FOREIGN KEY ("REF_RTAG_ID")
2871
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2872
/
2873
--------------------------------------------------------
2874
--  Ref Constraints for Table RELEASE_METRICS
2875
--------------------------------------------------------
2876
 
2877
  ALTER TABLE "RELEASE_METRICS" ADD CONSTRAINT "FK_RELEASE_METRICS_RTAG_ID" FOREIGN KEY ("RTAG_ID")
2878
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2879
/
2880
--------------------------------------------------------
2881
--  Ref Constraints for Table RUNTIME_DEPENDENCIES
2882
--------------------------------------------------------
2883
 
2884
  ALTER TABLE "RUNTIME_DEPENDENCIES" ADD CONSTRAINT "FK_RTD_PV_ID" FOREIGN KEY ("PV_ID")
2885
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2886
  ALTER TABLE "RUNTIME_DEPENDENCIES" ADD CONSTRAINT "FK_RTD_RTD_ID" FOREIGN KEY ("RTD_ID")
2887
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2888
/
2889
--------------------------------------------------------
2890
--  Ref Constraints for Table RUN_LEVEL
2891
--------------------------------------------------------
2892
 
2893
  ALTER TABLE "RUN_LEVEL" ADD FOREIGN KEY ("RCON_ID")
2894
	  REFERENCES "RELEASE_CONFIG" ("RCON_ID") ENABLE;
2895
  ALTER TABLE "RUN_LEVEL" ADD FOREIGN KEY ("CURRENT_PKG_ID_BEING_BUILT")
2896
	  REFERENCES "PACKAGES" ("PKG_ID") ENABLE;
2897
/
2898
--------------------------------------------------------
2899
--  Ref Constraints for Table UNIT_TESTS
2900
--------------------------------------------------------
2901
 
2902
  ALTER TABLE "UNIT_TESTS" ADD CONSTRAINT "FK_UT_REF_PV_ID" FOREIGN KEY ("PV_ID")
2903
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2904
  ALTER TABLE "UNIT_TESTS" ADD CONSTRAINT "FK_UT_REF_TEST_TYPES" FOREIGN KEY ("TEST_TYPES_FK")
2905
	  REFERENCES "TEST_TYPES" ("TEST_TYPE_ID") ENABLE;
2906
/
2907
--------------------------------------------------------
2908
--  Ref Constraints for Table VTREES_WORLD
2909
--------------------------------------------------------
2910
 
2911
  ALTER TABLE "VTREES_WORLD" ADD CONSTRAINT "FK_VW_REF_VTREE_ID" FOREIGN KEY ("VTREE_ID")
2912
	  REFERENCES "VTREES" ("VTREE_ID") ENABLE;
2913
  ALTER TABLE "VTREES_WORLD" ADD CONSTRAINT "FK_VW_REF_WORLD_ID" FOREIGN KEY ("WORLD_ID")
2914
	  REFERENCES "WORLDS" ("WORLD_ID") ENABLE;
2915
/
2916
--------------------------------------------------------
2917
--  Ref Constraints for Table WORK_IN_PROGRESS
2918
--------------------------------------------------------
2919
 
2920
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFPACKAGE_VERSIONS51" FOREIGN KEY ("PV_ID")
2921
	  REFERENCES "PACKAGE_VERSIONS" ("PV_ID") ENABLE;
2922
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFRELEASE_TAGS50" FOREIGN KEY ("RTAG_ID")
2923
	  REFERENCES "RELEASE_TAGS" ("RTAG_ID") ENABLE;
2924
  ALTER TABLE "WORK_IN_PROGRESS" ADD CONSTRAINT "REFVIEWS52" FOREIGN KEY ("VIEW_ID")
2925
	  REFERENCES "VIEWS" ("VIEW_ID") ENABLE;
2926
/
2927
--------------------------------------------------------
2928
--  DDL for Function CAN_EDIT_PKG_IN_PROJECT
2929
--------------------------------------------------------
2930
 
1373 dpurdie 2931
  CREATE OR REPLACE FUNCTION "CAN_EDIT_PKG_IN_PROJECT" ( nPvId IN NUMBER, nRtagId IN NUMBER ) RETURN NUMBER IS
2932
 
2933
/* ---------------------------------------------------------------------------
2934
    Version: 3.0.0
2935
   --------------------------------------------------------------------------- */
2936
 
2937
    VExt PACKAGE_VERSIONS.V_EXT%TYPE;
2938
	ProjId NUMBER;
2939
	RowCount NUMBER;
2940
	cReleaseMode CHAR(1);
2941
 
2942
BEGIN
2943
 
2944
	--RETURN 1;
2945
 
2946
 
2947
	/*--------------- Business Rules Here -------------------*/
2948
	IF (nRtagId IS NULL)  OR  (nRtagId < 1)THEN
2949
		RETURN 0;
2950
	END IF;
2951
	/*-------------------------------------------------------*/
2952
 
2953
 
2954
 
2955
 
2956
 
2957
 
2958
	/*-- First Check. See if package is used through release reference --*/
2959
	SELECT COUNT(rc.PV_ID) INTO RowCount
2960
	  FROM (
2961
	  		SELECT rl.REF_RTAG_ID
2962
			  FROM RELEASE_LINKS rl
2963
			 WHERE rl.RTAG_ID = nRtagId
2964
	  		) rl,
2965
			RELEASE_CONTENT rc
2966
	  WHERE rc.RTAG_ID = rl.REF_RTAG_ID
2967
	    AND rc.PV_ID = nPvId;			
2968
 
2969
 
2970
	-- Decide if package can be edited  
2971
	IF RowCount > 0 THEN
2972
		-- Package is referenced from other release, hence cannot be edited
2973
		RETURN 0;	
2974
 
2975
	ELSE
2976
 
2977
		-- Check is only done for releases in restrictive mode
2978
		SELECT rt.OFFICIAL INTO cReleaseMode
2979
		  FROM RELEASE_TAGS rt
2980
		 WHERE rt.RTAG_ID = nRtagId;
2981
 
2982
		IF cReleaseMode = 'N'OR cReleaseMode = 'R' THEN
2983
			-- Do not do any firther checking,
2984
			-- Package is editable here
2985
			RETURN 1;
2986
		END IF;	
2987
 
2988
	END IF;
2989
 
2990
 
2991
 
2992
 
2993
	/*-- Further checking --*/
2994
	-- Get proj_id
2995
	SELECT rt.PROJ_ID  INTO  ProjId
2996
	  FROM RELEASE_TAGS rt
2997
	 WHERE rt.RTAG_ID = nRtagId;
2998
 
2999
 
3000
 
3001
	BEGIN
3002
 
3003
		-- Get v_ext
3004
		SELECT pv.V_EXT  INTO  Vext
3005
		  FROM PACKAGE_VERSIONS pv
3006
		 WHERE pv.PV_ID = nPvId;  
3007
 
3008
		EXCEPTION
3009
	    	WHEN NO_DATA_FOUND THEN
3010
	       		Vext := NULL;
3011
 
3012
	END;	 
3013
 
3014
 
3015
	--Temp Hack for Step Project
3016
	IF ProjId != 281 THEN
3017
		-- Find if package can be edited in this project
3018
			SELECT COUNT(pe.EXT_NAME) INTO RowCount
3019
	 		FROM PROJECT_EXTENTIONS pe
3020
			WHERE pe.PROJ_ID != ProjId  
3021
	  		AND pe.EXT_NAME = VExt;
3022
	END IF;		
3023
 
3024
 
3025
	-- Decide if package can be edited  
3026
	IF RowCount > 0 THEN
3027
		-- Package extension is found in other projects, hece NOT EDITABLE
3028
		RETURN 0;
3029
	ELSE
3030
		RETURN 1;	
3031
	END IF;
3032
 
3033
 
3034
END CAN_EDIT_PKG_IN_PROJECT;
4040 dpurdie 3035
 
1374 dpurdie 3036
/
1373 dpurdie 3037
 
4040 dpurdie 3038
/
3039
--------------------------------------------------------
3040
--  DDL for Function DT_ADDUSEROBJECT
3041
--------------------------------------------------------
3042
 
3959 dpurdie 3043
  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 3044
 
3959 dpurdie 3045
/
3046
 
4040 dpurdie 3047
/
3048
--------------------------------------------------------
3049
--  DDL for Function GET_AUTOMATED_LABEL
3050
--------------------------------------------------------
3051
 
3959 dpurdie 3052
  CREATE OR REPLACE FUNCTION "GET_AUTOMATED_LABEL" ( nPvId IN NUMBER ) RETURN VARCHAR2 IS
3053
 
3054
/* ---------------------------------------------------------------------------
3055
    Version: 3.0.0
3056
   --------------------------------------------------------------------------- */
3057
 
4211 dpurdie 3058
  sPkgName VARCHAR2(4000);
3059
  sPkgVersion VARCHAR2(4000);
3060
  sVext VARCHAR2(4000);
3061
  cChangeType CHAR;
3062
  cBuildType CHAR;
3063
 
3959 dpurdie 3064
 
1373 dpurdie 3065
BEGIN
3066
 
3959 dpurdie 3067
	-- Get package details
4211 dpurdie 3068
	SELECT pkg.PKG_NAME, pv.V_EXT, pv.build_type, pv.change_type, pv.pkg_version INTO sPkgName, sVext,cBuildType, cChangeType, sPkgVersion  
3959 dpurdie 3069
	  FROM PACKAGE_VERSIONS pv,
3070
	  	   PACKAGES pkg
3071
	 WHERE pv.PKG_ID = pkg.PKG_ID
3072
	   AND pv.PV_ID = nPvId;
3073
 
4211 dpurdie 3074
  -- Generate Label for manually built package
3075
  If cBuildType = 'M' Then
3076
    return (sPkgName ||'_'|| sPkgVersion );
3077
  End If;
3959 dpurdie 3078
 
4211 dpurdie 3079
  -- Generate Label for automated build with specified package version
3080
  IF cchangetype = 'F' Then
3081
    return (sPkgName ||'_'|| sPkgVersion ||'.WIP');
3082
  End If;
3083
 
3959 dpurdie 3084
	-- Generate Label for automated build
3085
	RETURN UPPER( sPkgName ||'.'|| nPvId || sVext ||'.WIP' );
3086
 
3087
END GET_AUTOMATED_LABEL;
4040 dpurdie 3088
 
1374 dpurdie 3089
/
1373 dpurdie 3090
 
4040 dpurdie 3091
/
3092
--------------------------------------------------------
3093
--  DDL for Function GET_BUILD_NUMBER
3094
--------------------------------------------------------
3095
 
1373 dpurdie 3096
  CREATE OR REPLACE FUNCTION "GET_BUILD_NUMBER" (s_version IN VARCHAR2) RETURN VARCHAR2
3097
IS
3098
/* ---------------------------------------------------------------------------
3099
    Version: 1.0.0
3100
   --------------------------------------------------------------------------- */
3101
BEGIN
3102
    IF is_number(s_version) AND LENGTH(s_version) > 3
3103
    THEN
3104
        RETURN MOD(TO_NUMBER(s_version), 1000);
3105
    ELSE
3106
        RETURN 0;
3107
    END IF;
3108
END get_build_number;
4040 dpurdie 3109
 
1374 dpurdie 3110
/
1373 dpurdie 3111
 
4040 dpurdie 3112
/
3113
--------------------------------------------------------
3114
--  DDL for Function GET_PATCH_VERSION
3115
--------------------------------------------------------
3116
 
3959 dpurdie 3117
  CREATE OR REPLACE FUNCTION "GET_PATCH_VERSION" (s_version IN VARCHAR2) RETURN VARCHAR2
1373 dpurdie 3118
IS
3119
/* ---------------------------------------------------------------------------
3959 dpurdie 3120
    Version: 1.0.0
1373 dpurdie 3121
   --------------------------------------------------------------------------- */
3122
BEGIN
3959 dpurdie 3123
    IF is_number(s_version) AND LENGTH(s_version) > 3
1373 dpurdie 3124
    THEN
3959 dpurdie 3125
        RETURN FLOOR(TO_NUMBER(s_version) / 1000);
1373 dpurdie 3126
    ELSE
3959 dpurdie 3127
        RETURN s_version;
1373 dpurdie 3128
    END IF;
3959 dpurdie 3129
END get_patch_version;
4040 dpurdie 3130
 
1374 dpurdie 3131
/
1373 dpurdie 3132
 
4040 dpurdie 3133
/
3134
--------------------------------------------------------
3135
--  DDL for Function GET_PV_FIRST_MODIFIED
3136
--------------------------------------------------------
3137
 
3959 dpurdie 3138
  CREATE OR REPLACE FUNCTION "GET_PV_FIRST_MODIFIED" (v_pv_id NUMBER) RETURN DATE IS
3139
  ret DATE;
1373 dpurdie 3140
BEGIN
3959 dpurdie 3141
  SELECT q.modified_stamp
3142
    INTO ret
3143
    FROM (
3144
            SELECT level AS lvl, pvc.pv_id, pvc.modified_stamp, pvc.change_type
3145
              FROM package_versions pvc
3146
              START WITH pvc.pv_id = v_pv_id
3147
            CONNECT BY NOCYCLE pvc.pv_id = PRIOR pvc.last_pv_id
3148
          ) Q
3149
  WHERE q.change_type IS NOT NULL
3150
    AND rownum = 1
3151
  ORDER BY q.lvl;
3152
 
3153
  RETURN ret;
3154
END;
4040 dpurdie 3155
 
1374 dpurdie 3156
/
1373 dpurdie 3157
 
4040 dpurdie 3158
/
3159
--------------------------------------------------------
3160
--  DDL for Function GET_V_EXT
3161
--------------------------------------------------------
3162
 
3959 dpurdie 3163
  CREATE OR REPLACE FUNCTION "GET_V_EXT" (SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE) RETURN VARCHAR2 IS
3164
 
1373 dpurdie 3165
/* ---------------------------------------------------------------------------
3959 dpurdie 3166
    Version: 3.0.0
1373 dpurdie 3167
   --------------------------------------------------------------------------- */
3959 dpurdie 3168
 
3169
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
3170
    lastDot NUMBER;
3171
 
1373 dpurdie 3172
BEGIN
3959 dpurdie 3173
    lastDot := INSTR (SSpkg_version, '.', -1);
3174
 
3175
    IF ( lastDot > 0 ) AND ( lastDot != LENGTH(SSpkg_version) )
1373 dpurdie 3176
    THEN
3959 dpurdie 3177
        -- YES dot separator found --
3178
        SSV_EXT := SUBSTR (SSpkg_version, lastDot, LENGTH(SSpkg_version)-lastDot+1);
3179
 
3180
        IF IS_VERSION_EXTENSION ( SSV_EXT )
3181
        THEN
3182
            RETURN SSV_EXT;
3183
        ELSE
3184
            RETURN NULL;
3185
        END IF;
3186
 
1373 dpurdie 3187
    ELSE
3959 dpurdie 3188
        -- NO dot separator found --
3189
        RETURN NULL;
1373 dpurdie 3190
    END IF;
3959 dpurdie 3191
 
3192
END GET_V_EXT;
4040 dpurdie 3193
 
1374 dpurdie 3194
/
1373 dpurdie 3195
 
4040 dpurdie 3196
/
3197
--------------------------------------------------------
3198
--  DDL for Function IN_LIST_NUMBER
3199
--------------------------------------------------------
3200
 
3959 dpurdie 3201
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
1373 dpurdie 3202
 
3203
/* ---------------------------------------------------------------------------
3204
    Version: 3.0.0
3205
   --------------------------------------------------------------------------- */
3206
 
3207
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
3208
	pos				   NUMBER;
3959 dpurdie 3209
	in_list			   VARCHAR2(4000) := sInList || ',';
1373 dpurdie 3210
 
3211
BEGIN
3212
 
3213
	IF NOT sInList IS NULL
3214
	THEN
3215
		LOOP
3216
	        EXIT WHEN in_list IS NULL;
3217
	        pos := INSTR ( in_list, ',' );
3218
	        sync_rtags.extend;
3219
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3220
	        in_list := SUBSTR ( in_list, pos+1 );
3221
		END LOOP;
3222
	END IF;
3223
 
3224
	RETURN sync_rtags;
3959 dpurdie 3225
END IN_LIST_NUMBER;
4040 dpurdie 3226
 
1374 dpurdie 3227
/
1373 dpurdie 3228
 
4040 dpurdie 3229
/
3230
--------------------------------------------------------
3231
--  DDL for Function IN_LIST_NUMBER2
3232
--------------------------------------------------------
3233
 
3959 dpurdie 3234
  CREATE OR REPLACE FUNCTION "IN_LIST_NUMBER2" ( sInList IN VARCHAR2 ) RETURN RELMGR_NUMBER_TAB_t IS
1373 dpurdie 3235
 
3236
/* ---------------------------------------------------------------------------
3237
    Version: 3.0.0
3238
   --------------------------------------------------------------------------- */
3239
 
3240
    sync_rtags		   RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
3241
	pos				   NUMBER;
3959 dpurdie 3242
	in_list			   VARCHAR2(32767) := sInList || ',';
1373 dpurdie 3243
 
3244
BEGIN
3245
 
3246
	IF NOT sInList IS NULL
3247
	THEN
3248
		LOOP
3249
	        EXIT WHEN in_list IS NULL;
3250
	        pos := INSTR ( in_list, ',' );
3251
	        sync_rtags.extend;
3252
	        sync_rtags(sync_rtags.count) := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3253
	        in_list := SUBSTR ( in_list, pos+1 );
3254
		END LOOP;
3255
	END IF;
3256
 
3257
	RETURN sync_rtags;
3959 dpurdie 3258
END IN_LIST_NUMBER2;
4040 dpurdie 3259
 
1374 dpurdie 3260
/
1373 dpurdie 3261
 
4040 dpurdie 3262
/
3263
--------------------------------------------------------
3264
--  DDL for Function IN_LIST_VARCHAR2
3265
--------------------------------------------------------
3266
 
1373 dpurdie 3267
  CREATE OR REPLACE FUNCTION "IN_LIST_VARCHAR2" ( sInList IN VARCHAR2, cSeparator IN VARCHAR2 ) RETURN RELMGR_VARCHAR2_TAB_t IS
3268
 
3269
/* ---------------------------------------------------------------------------
3270
    Version: 3.1
3271
   --------------------------------------------------------------------------- */
3272
 
3273
    cItemCollection	   RELMGR_VARCHAR2_TAB_t := RELMGR_VARCHAR2_TAB_t();
3274
	pos				   NUMBER;
3275
	in_list			   VARCHAR2(4000) := sInList || cSeparator;
3276
	val				   VARCHAR2(4000);
3277
 
3278
BEGIN
3279
 
3280
	IF NOT sInList IS NULL
3281
	THEN
3282
		LOOP
3283
	        EXIT WHEN in_list IS NULL;
3284
	        pos := INSTR ( in_list, cSeparator );
3285
			val := LTRIM ( RTRIM ( SUBSTR ( in_list, 1, pos-1 ) ) );
3286
 
3287
			IF (NOT val IS NULL) THEN
3288
		        cItemCollection.extend;
3289
		        cItemCollection(cItemCollection.count) := val;
3290
			END IF;
3291
 
3292
	        in_list := SUBSTR ( in_list, pos+1 );
3293
		END LOOP;
3294
	END IF;
3295
 
3296
	RETURN cItemCollection;
3297
END IN_LIST_VARCHAR2;
4040 dpurdie 3298
 
1374 dpurdie 3299
/
1373 dpurdie 3300
 
4040 dpurdie 3301
/
3302
--------------------------------------------------------
3303
--  DDL for Function IS_NUMBER
3304
--------------------------------------------------------
3305
 
3959 dpurdie 3306
  CREATE OR REPLACE FUNCTION "IS_NUMBER" (p_val IN VARCHAR2) RETURN BOOLEAN
3307
IS
3308
   temp_num NUMBER;
3309
/* ---------------------------------------------------------------------------
3310
    Version: 1.0.0
3311
   --------------------------------------------------------------------------- */
3312
BEGIN
3313
   temp_num := TO_NUMBER(p_val);
3314
   RETURN true;
3315
EXCEPTION WHEN VALUE_ERROR THEN
3316
   RETURN false;
3317
END IS_NUMBER;
4040 dpurdie 3318
 
3959 dpurdie 3319
/
1373 dpurdie 3320
 
4040 dpurdie 3321
/
3322
--------------------------------------------------------
3323
--  DDL for Function IS_VERSION_EXTENSION
3324
--------------------------------------------------------
3325
 
3959 dpurdie 3326
  CREATE OR REPLACE FUNCTION "IS_VERSION_EXTENSION" (SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE) RETURN BOOLEAN
3327
IS
3328
/* ---------------------------------------------------------------------------
3329
    Version: 3.0.0
3330
   --------------------------------------------------------------------------- */
1373 dpurdie 3331
 
3959 dpurdie 3332
BEGIN
3333
    IF LENGTH ( TRIM (TRANSLATE (SSV_EXT, '.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',' ') ) ) > 0
3334
    THEN
3335
        RETURN FALSE;
3336
    ELSE
3337
        RETURN TRUE;
3338
    END IF;
1373 dpurdie 3339
 
3959 dpurdie 3340
END IS_VERSION_EXTENSION;
4040 dpurdie 3341
 
1374 dpurdie 3342
/
1373 dpurdie 3343
 
4040 dpurdie 3344
/
3345
--------------------------------------------------------
3346
--  DDL for Function ORA_SYSDATE
3347
--------------------------------------------------------
3348
 
3959 dpurdie 3349
  CREATE OR REPLACE FUNCTION "ORA_SYSDATE" 
3350
RETURN DATE
1373 dpurdie 3351
IS
3959 dpurdie 3352
/* ---------------------------------------------------------------------------
3353
    Version: 3.0.0
3354
   --------------------------------------------------------------------------- */
3355
BEGIN
1373 dpurdie 3356
 
3959 dpurdie 3357
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY' ),'DD-MON-YYYY' );
3358
END ORA_SYSDATE;
4040 dpurdie 3359
 
3959 dpurdie 3360
/
1373 dpurdie 3361
 
4040 dpurdie 3362
/
3363
--------------------------------------------------------
3364
--  DDL for Function ORA_SYSDATETIME
3365
--------------------------------------------------------
3366
 
3959 dpurdie 3367
  CREATE OR REPLACE FUNCTION "ORA_SYSDATETIME" 
3368
RETURN DATE
3369
IS
3370
/* ---------------------------------------------------------------------------
3371
    Version: 3.0.0
3372
   --------------------------------------------------------------------------- */
3373
BEGIN
1373 dpurdie 3374
 
3959 dpurdie 3375
    RETURN TO_DATE( TO_CHAR( SYSDATE,'DD-MON-YYYY HH24:MI:SS' ),'DD-MON-YYYY HH24:MI:SS' );
3376
END ORA_SYSDATETIME;
4040 dpurdie 3377
 
3959 dpurdie 3378
/
1373 dpurdie 3379
 
4040 dpurdie 3380
/
3381
--------------------------------------------------------
3382
--  DDL for Function PERL_DBD_TESTFUNC
3383
--------------------------------------------------------
3384
 
3959 dpurdie 3385
  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 3386
 
1374 dpurdie 3387
/
1373 dpurdie 3388
 
4040 dpurdie 3389
/
3390
--------------------------------------------------------
3391
--  DDL for Function RELEASE_MODE
3392
--------------------------------------------------------
3393
 
3959 dpurdie 3394
  CREATE OR REPLACE FUNCTION "RELEASE_MODE" ( nRtagId IN NUMBER ) RETURN CHAR IS
1373 dpurdie 3395
 
3959 dpurdie 3396
/* ---------------------------------------------------------------------------
3397
    Version: 3.0.0
3398
   --------------------------------------------------------------------------- */
1373 dpurdie 3399
 
3959 dpurdie 3400
   returnValue CHAR(1);
1373 dpurdie 3401
 
3959 dpurdie 3402
BEGIN
1373 dpurdie 3403
 
3959 dpurdie 3404
    /*--------------- Business Rules Here -------------------*/
3405
	/*-------------------------------------------------------*/
3406
 
3407
	-- Get release mode
3408
	SELECT rt.OFFICIAL INTO returnValue
3409
	  FROM RELEASE_TAGS rt
3410
	 WHERE rt.RTAG_ID = nRtagId;
3411
 
3412
	RETURN returnValue;
3413
 
3414
END RELEASE_MODE;
4040 dpurdie 3415
 
1374 dpurdie 3416
/
1373 dpurdie 3417
 
4040 dpurdie 3418
/
3419
--------------------------------------------------------
3420
--  DDL for Package PK_APP_UTILS
3421
--------------------------------------------------------
3422
 
1373 dpurdie 3423
  CREATE OR REPLACE PACKAGE "PK_APP_UTILS" IS
3424
/*
3425
------------------------------
3426
||  Last Modified:  S.Vukovic
3427
||  Modified Date:  26/Apr/2005
3428
||  Spec Version:   1.0
3429
------------------------------
3430
*/
3431
 
3432
	TYPE typeCur IS REF CURSOR;
3433
 
3434
    /*================================================================================================*/
3435
 
3436
	PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur);
3437
 
3438
	/*================================================================================================*/
3439
 
3440
END PK_APP_UTILS;
4040 dpurdie 3441
 
1374 dpurdie 3442
/
1373 dpurdie 3443
 
4040 dpurdie 3444
/
3445
--------------------------------------------------------
3446
--  DDL for Package PK_ARCHIVE
3447
--------------------------------------------------------
3448
 
3959 dpurdie 3449
  CREATE OR REPLACE PACKAGE "PK_ARCHIVE" 
1373 dpurdie 3450
IS
3959 dpurdie 3451
/*
3452
------------------------------
3453
||  Author:  Rupesh Solanki
3454
||  Date:    26 October 2006
3455
||  Version:   1.0
3456
------------------------------
3457
*/
1373 dpurdie 3458
 
3959 dpurdie 3459
   /*================================================================================================*/
3460
   PROCEDURE populate_packages_table;
3461
 
3462
   PROCEDURE populate_archive_data_table (
3463
      nrtagid   IN   release_tags.rtag_id%TYPE
3464
   );
1373 dpurdie 3465
 
3959 dpurdie 3466
   PROCEDURE migrate_pv_to_archive_SCHEMA (nrtagid IN release_tags.rtag_id%TYPE);
1373 dpurdie 3467
 
3959 dpurdie 3468
   PROCEDURE migrate_rtag_to_archive_schema (
3469
      nrtagid   IN   release_tags.rtag_id%TYPE
3470
   );
1373 dpurdie 3471
 
3959 dpurdie 3472
   PROCEDURE clean_up_archive_data_table (
3473
      nrtagid   IN   release_tags.rtag_id%TYPE
3474
   );
1373 dpurdie 3475
 
3959 dpurdie 3476
   PROCEDURE write_action_log (
3477
      nuserid   IN   NUMBER,
3478
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 3479
   );
3480
/*================================================================================================*/
3959 dpurdie 3481
END pk_archive;
4040 dpurdie 3482
 
1374 dpurdie 3483
/
1373 dpurdie 3484
 
4040 dpurdie 3485
/
3486
--------------------------------------------------------
3487
--  DDL for Package PK_BUILDAPI
3488
--------------------------------------------------------
3489
 
1373 dpurdie 3490
  CREATE OR REPLACE PACKAGE "PK_BUILDAPI" 
3491
IS
3492
   /*================================================================================================*/
3493
   PROCEDURE add_product_component (
3494
      npvid           IN   NUMBER,
3495
      sosname         IN   VARCHAR2,
3496
      sorigfilepath   IN   VARCHAR2,
3497
      sfilename       IN   VARCHAR2,
3498
      sdestfilepath   IN   VARCHAR2,
3499
      nbytesize       IN   NUMBER,
3500
      scrccksum       IN   VARCHAR2
3501
   );
3502
 
3503
   PROCEDURE remove_all_product_components (
3504
      npvid     IN   NUMBER,
3505
      sosname   IN   VARCHAR2
3506
   );
3507
 
3508
   /*================================================================================================*/
3509
   FUNCTION get_osid (sosname IN VARCHAR2)
3510
      RETURN NUMBER;
3511
 
4211 dpurdie 3512
/*================================================================================================*/
1373 dpurdie 3513
   PROCEDURE update_build_service_info (
3514
      sdatabaseserver   IN   VARCHAR2,
3515
      sarchiveserver    IN   VARCHAR2,
3516
      smailserver       IN   VARCHAR2,
3517
      smailsender       IN   VARCHAR2,
4211 dpurdie 3518
      faultmlist        IN   VARCHAR2,
1373 dpurdie 3519
      sdiskspace        IN   VARCHAR2,
3520
      ssbommanagement   IN   VARCHAR2
3521
   );
3522
 
3523
   /*================================================================================================*/
4040 dpurdie 3524
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2, sgbeclass IN NUMBER);
1373 dpurdie 3525
 
3526
   /*================================================================================================*/
3527
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER);
3528
 
3529
   /*================================================================================================*/
4040 dpurdie 3530
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2, sgbeclass IN NUMBER);
1373 dpurdie 3531
 
4040 dpurdie 3532
  /*================================================================================================*/
3533
   PROCEDURE add_buildmachine (sbmvalue IN VARCHAR2);
3534
 
1373 dpurdie 3535
   /*================================================================================================*/
4040 dpurdie 3536
   PROCEDURE remove_buildmachine (nbm_id IN NUMBER);
3537
 
3538
   /*================================================================================================*/
3539
   PROCEDURE update_buildmachine (nbm_id IN NUMBER, sbmvalue IN VARCHAR2);
3540
 
3541
   /*================================================================================================*/
1373 dpurdie 3542
   PROCEDURE add_daemon (
3543
      sdaemonhostname   IN   VARCHAR2,
3544
      nrtagid           IN   NUMBER,
3545
      ngbeid            IN   NUMBER,
3546
      sgbebuildfilter   IN   VARCHAR2
3547
   );
3548
 
3549
   /*================================================================================================*/
3550
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2);
3551
 
3552
   /*================================================================================================*/
3553
   PROCEDURE update_daemon (
3554
      sdaemonhostname   IN   VARCHAR2,
3555
      nrconid           IN   NUMBER,
3556
      ngbeid            IN   NUMBER,
3557
      sgbebuildfilter   IN   VARCHAR2
3558
   );
3559
 
3560
   /*================================================================================================*/
3561
   PROCEDURE insert_schedule_info (
3562
      dschedulepause     IN   DATE,
3563
      dscheduleresume    IN   DATE,
3564
      crepeat            IN   VARCHAR2,
3565
      cindefinitepause   IN   VARCHAR2
3566
   );
3567
 
3568
   /*================================================================================================*/
3569
   PROCEDURE delete_schedule (nscheduleid IN NUMBER);
3570
 
3571
   /*================================================================================================*/
3572
   PROCEDURE set_infinite_pause;
3573
 
3574
   /*================================================================================================*/
3575
   PROCEDURE set_resume;
3576
 
3577
   /*================================================================================================*/
3578
   PROCEDURE delete_out_of_date_schedule;
3579
 
3580
   /*================================================================================================*/
3581
   PROCEDURE set_daemon_resume (nrconid IN NUMBER);
3582
 
3583
   /*================================================================================================*/
3584
   PROCEDURE set_daemon_pause (nrconid IN NUMBER);
3585
 
3586
   /*================================================================================================*/
3587
   PROCEDURE set_daemon_disable (nrconid NUMBER);
3588
 
3589
   /*================================================================================================*/
3590
   PROCEDURE set_daemon_states (nrtagid NUMBER, nstate NUMBER);
3591
 
3592
   /*================================================================================================*/
3593
   PROCEDURE mark_daemon_inst_in_progress( nInstId IN NUMBER );
3594
   /*================================================================================================*/
3595
   PROCEDURE mark_daemon_inst_completed( nInstId IN NUMBER );
3596
   /*================================================================================================*/
3597
   FUNCTION get_daemon_inst(
3598
      nRtag_id IN NUMBER,
3599
      nInst_id IN OUT NUMBER,
3600
      nOp_code IN OUT NUMBER,
3601
      nPv_id OUT NUMBER,
3602
      nUser_id OUT NUMBER,
3603
      nInProgress OUT NUMBER
3604
   ) RETURN NUMBER;
3605
   /*================================================================================================*/
3606
   PROCEDURE cleanup_stranded_daemon_insts;
3607
   /*================================================================================================*/
3608
   PROCEDURE insert_daemon_inst(
3609
      nOp_code IN NUMBER,
3610
      nRtag_id IN NUMBER,
3611
      nPv_id IN NUMBER,
3612
      nSchedDate IN DATE,
3613
      nRepeatSecs IN NUMBER,
3614
      nAddedDate IN DATE,
3615
      nUser_id IN NUMBER
3616
   );
3617
   /*================================================================================================*/
3618
   PROCEDURE del_daemon_inst( nInstId IN NUMBER );
3619
   /*================================================================================================*/
3620
   PROCEDURE del_daemon_inst_by_rtag_pvid(
3621
      nOp_code IN NUMBER,
3622
      nRtag_id IN NUMBER,
3623
      nPv_id IN NUMBER
3624
   );
3625
   /*================================================================================================*/
3626
   PROCEDURE update_daemon_inst(
3627
      nInstId IN NUMBER,
3628
      nOp_code IN NUMBER,
3629
      nRtag_id IN NUMBER,
3630
      nPv_id IN NUMBER,
3631
      nSchedDate IN DATE,
3632
      nRepeatSecs IN NUMBER,
3633
      nAddedDate IN DATE,
3634
      nUser_id IN NUMBER
3635
   );
3636
   /*================================================================================================*/
3637
   FUNCTION daemon_ops_for_rtag_pvid(
3638
      nRtag_id IN NUMBER,
3639
      nPv_id IN NUMBER
3640
   ) RETURN VARCHAR2;
3641
   /*================================================================================================*/
3642
   FUNCTION daemon_ops_for_rtag(
3643
      nRtag_id IN NUMBER
3644
   ) RETURN VARCHAR2;
3645
   /*================================================================================================*/
3646
   PROCEDURE add_daemon_config (
3647
      nrtagid           IN   NUMBER,
3648
      nbmcon_id         IN   NUMBER,
3649
      sdaemon_mode      IN   VARCHAR2,
3650
      sgbebuildfilter   IN   VARCHAR2
3651
   );
3652
   /*================================================================================================*/
3653
   PROCEDURE update_daemon_config (
3654
      nrconid           IN   NUMBER,
3655
      nbmcon_id         IN   NUMBER,
3656
      sdaemon_mode      IN   VARCHAR2,
3657
      sgbebuildfilter   IN   VARCHAR2
3658
   );
3659
 
3660
   /*================================================================================================*/
3661
   PROCEDURE add_build_machine (
3662
      sdisplay_name          IN   VARCHAR2,
3663
      smachine_hostname      IN   VARCHAR2,
3664
      ngbeid                 IN   NUMBER,
3665
      sdescription           IN   VARCHAR2
3666
   );
3667
   /*================================================================================================*/
3668
   PROCEDURE delete_build_machine (sbmcon_id_list IN VARCHAR2);
3669
   /*================================================================================================*/
3670
   PROCEDURE update_build_machine (
3671
      nbmcon_id              IN   NUMBER,
3672
      sdisplay_name          IN   VARCHAR2,
3673
      smachine_hostname      IN   VARCHAR2,
3674
      ngbeid                 IN   NUMBER,
3675
      sdescription           IN   VARCHAR2
3676
   );
3677
END pk_buildapi;
4040 dpurdie 3678
 
1374 dpurdie 3679
/
1373 dpurdie 3680
 
4040 dpurdie 3681
/
3682
--------------------------------------------------------
3683
--  DDL for Package PK_ENVIRONMENT
3684
--------------------------------------------------------
3685
 
3959 dpurdie 3686
  CREATE OR REPLACE PACKAGE "PK_ENVIRONMENT" IS
1373 dpurdie 3687
/*
3688
------------------------------
3959 dpurdie 3689
||  Last Modified:  G.Huddy
3690
||  Modified Date:  28/May/2008
3691
||  Spec Version:   1.2
1373 dpurdie 3692
------------------------------
3693
*/
3694
 
3959 dpurdie 3695
	TYPE typeCur IS REF CURSOR;
3696
 
1373 dpurdie 3697
	/*================================================================================================*/
3698
 
3959 dpurdie 3699
	FUNCTION SELECT_ENVIRONMENT_AREA ( cDlock IN PACKAGE_VERSIONS.DLOCKED%TYPE ) RETURN NUMBER;
3700
	FUNCTION GET_PACKAGE_AREA ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3701
	FUNCTION GET_VIEW_LOCATION ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3702
	PROCEDURE ADD_PACKAGE ( PvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3703
	PROCEDURE ADD_PACKAGE_BULK ( PvIdList IN VARCHAR2, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3704
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3705
	FUNCTION REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, ForceRemove IN CHAR ) RETURN NUMBER;
3706
 
3707
	PROCEDURE GET_ENVIRONMENT_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3708
	PROCEDURE GET_RELEASED_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3709
	PROCEDURE GET_PENDING_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3710
	PROCEDURE GET_WORK_IN_PROGRESS_ITEMS ( ViewType IN NUMBER, UserId IN NUMBER, RtagId IN NUMBER,  sViewIdShowList IN VARCHAR2, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3711
 
3712
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
3713
 
3714
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3715
 
3716
 
3717
	PROCEDURE MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3718
	PROCEDURE MAKE_UNRELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3719
 
3720
	PROCEDURE MAKE_PENDING ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3721
	PROCEDURE MAKE_APPROVED ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3722
	PROCEDURE MAKE_REJECT ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3723
	PROCEDURE APPROVE_MERGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3724
 
3725
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3726
 
3727
	PROCEDURE FIND_PACKAGE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, RecordSet OUT typeCur );
3728
	PROCEDURE FIND_FILE ( sKeyword IN VARCHAR2, nRtagId IN NUMBER, nSearchArea IN NUMBER, nPageSize IN NUMBER, RecordSet OUT typeCur );
3729
 
3730
	PROCEDURE AUTO_MAKE_RELEASE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, VExt IN
3731
							 PACKAGE_VERSIONS.V_EXT%TYPE, SSV_EXT IN PACKAGE_VERSIONS.V_EXT%TYPE,
3732
							 CloneFromPvId IN NUMBER );
3733
 
3734
	PROCEDURE GET_PRODRELEASE_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3735
 
3736
	PROCEDURE GET_INTEGRATION_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3737
 
3738
	PROCEDURE GET_TEST_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3739
 
3740
	PROCEDURE GET_DEPLOY_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
3741
 
3742
	PROCEDURE GET_REJECT_ITEMS ( RtagId IN NUMBER, nTrueRecordCount OUT NUMBER, RecordSet OUT typeCur );
1373 dpurdie 3743
	/*================================================================================================*/
3959 dpurdie 3744
 
3745
END PK_ENVIRONMENT;
4040 dpurdie 3746
 
1374 dpurdie 3747
/
1373 dpurdie 3748
 
4040 dpurdie 3749
/
3750
--------------------------------------------------------
3751
--  DDL for Package PK_LICENCING
3752
--------------------------------------------------------
3753
 
3959 dpurdie 3754
  CREATE OR REPLACE PACKAGE "PK_LICENCING" IS
3755
/*
3756
------------------------------
3757
||  Last Modified:  G.Huddy
3758
||  Modified Date:  19/Aug/2008
3759
||  Spec Version:   1.0
3760
------------------------------
3761
*/
3762
 
3763
   TYPE typeCur IS REF CURSOR;
3764
 
3765
    /*================================================================================================*/
3766
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
3767
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER );
3768
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER );
3769
   FUNCTION  IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER;
3770
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER );
3771
   /*================================================================================================*/
3772
 
3773
END PK_LICENCING;
4040 dpurdie 3774
 
3959 dpurdie 3775
/
3776
 
4040 dpurdie 3777
/
3778
--------------------------------------------------------
3779
--  DDL for Package PK_PACKAGE
3780
--------------------------------------------------------
3781
 
3959 dpurdie 3782
  CREATE OR REPLACE PACKAGE "PK_PACKAGE" 
1373 dpurdie 3783
IS
3784
/*
3785
------------------------------
3959 dpurdie 3786
||  Last Modified:  Jeremy Tweddle
3787
||  Modified Date:  24/08/2007
1373 dpurdie 3788
||
3789
------------------------------
3790
*/
3791
   TYPE typecur IS REF CURSOR;
3792
 
3793
/*================================================================================================*/
3794
   PROCEDURE new_version (
3795
      nlastpvid                   IN       NUMBER,
3796
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
3797
      cbuildtype                  IN       CHAR,
4211 dpurdie 3798
      cchangetype                 IN       CHAR,
1373 dpurdie 3799
      nsettopvid                  IN       NUMBER DEFAULT NULL,
3800
      nrtagid                     IN       NUMBER,
3801
      nuserid                     IN       NUMBER,
3802
      enumissues_state_imported   IN       NUMBER,
3803
      returnpvid                  OUT      NUMBER
3804
   );
3805
 
3806
   PROCEDURE change_state (
3807
      pvid       IN   NUMBER,
3808
      newstate   IN   package_versions.dlocked%TYPE,
3809
      userid     IN   NUMBER
3810
   );
3811
 
3812
   PROCEDURE new_patch (
3813
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
3814
      nparentpvid        IN       NUMBER,
3815
      spatchidlist       IN       VARCHAR2,
3816
      nuserid            IN       NUMBER,
3817
      returnpatchid      OUT      NUMBER
3818
   );
3819
 
3820
   PROCEDURE obsolete_patch (
3821
      patchid            IN   NUMBER,
3822
      isobsolete         IN   CHAR,
3823
      obsoletecomments   IN   VARCHAR2,
3824
      userid             IN   NUMBER
3825
   );
3826
 
3827
   PROCEDURE obsolete_patches (
3828
      spatchidlist       IN   VARCHAR2,
3829
      isobsolete         IN   CHAR,
3830
      obsoletecomments   IN   VARCHAR2,
3831
      userid             IN   NUMBER
3832
   );
3833
 
3834
   PROCEDURE destroy_package (
3835
      pvid               IN       NUMBER,
3836
      overridewarnings   IN       CHAR DEFAULT 'N',
3837
      problemstring      OUT      VARCHAR2
3838
   );
3839
 
3840
   PROCEDURE add_process (
3841
      nprocid         IN   processes.proc_id%TYPE,
3842
      shealthtag      IN   processes.proc_name%TYPE,
3843
      sprocdesc       IN   processes.proc_description%TYPE,
3844
      scmdinterface   IN   processes.run_as%TYPE,
3845
      spkgowner       IN   processes.pkg_owner%TYPE,
3846
      sisinterface    IN   processes.is_interface%TYPE,
3847
      npvid           IN   package_processes.pv_id%TYPE,
3848
      nuserid         IN   NUMBER
3849
   );
3850
 
3851
   PROCEDURE add_package_process (
3852
      nprocidlist   IN   VARCHAR2,
3853
      npvid         IN   package_processes.pv_id%TYPE,
3854
      nuserid       IN   NUMBER
3855
   );
3856
 
3857
 
3858
 
3859
   PROCEDURE remove_process (
3860
      nprocid   IN   package_processes.proc_id%TYPE,
3861
      npvid     IN   package_processes.pv_id%TYPE,
3862
      nuserid   IN   NUMBER
3863
   );
3864
 
3865
   PROCEDURE move_package (
3866
   	  npvid  			  IN package_versions.pv_id%TYPE,
3867
	  nrtagid 			  IN release_tags.rtag_id%TYPE,
3868
	  nnewrtagid 		  IN release_tags.rtag_id%TYPE,
3869
	  nuserid			  IN NUMBER		 
3870
   ); 
3871
 
3959 dpurdie 3872
   PROCEDURE modify_product_state (
1373 dpurdie 3873
   	  npvid IN package_versions.pv_id%TYPE,
3959 dpurdie 3874
	  nrtagid IN release_tags.rtag_id%TYPE,
1373 dpurdie 3875
	  nstateid IN product_states.state_id%TYPE,
3876
	  nuserid IN NUMBER
3877
   );
3959 dpurdie 3878
 
3879
   PROCEDURE add_code_review_url (
3880
        npvid           IN    NUMBER,
3881
        nprojid         IN    NUMBER,
3882
        surl            IN    VARCHAR2,
3883
        sreason         IN    VARCHAR2,
3884
        ddateofreview   IN    DATE
3885
   );
3886
 
3887
   PROCEDURE update_code_review_url (
3888
        ncrid           IN    NUMBER,
3889
        nprojid         IN    NUMBER,
3890
        surl            IN    VARCHAR2,
3891
        sreason         IN    VARCHAR2
3892
   );
3893
 
3894
   PROCEDURE remove_code_review_url (
3895
        ncrid           IN    NUMBER
3896
   );
1373 dpurdie 3897
/*================================================================================================*/
3959 dpurdie 3898
END pk_package;
4040 dpurdie 3899
 
1374 dpurdie 3900
/
1373 dpurdie 3901
 
4040 dpurdie 3902
/
3903
--------------------------------------------------------
3904
--  DDL for Package PK_PLANNED
3905
--------------------------------------------------------
3906
 
1373 dpurdie 3907
  CREATE OR REPLACE PACKAGE "PK_PLANNED" IS
3908
/*
3909
------------------------------
3910
||  Last Modified:  G.Huddy
3911
||  Modified Date:  28/May/2008
3912
||  Spec Version:   1.1
3913
------------------------------
3914
*/
3915
 
3916
	TYPE typeCur IS REF CURSOR;
3917
 
3918
    /*================================================================================================*/
3919
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3920
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3921
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3922
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );
3923
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3924
	PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR);
3925
	/*================================================================================================*/
3926
 
3927
END PK_PLANNED;
4040 dpurdie 3928
 
1374 dpurdie 3929
/
1373 dpurdie 3930
 
4040 dpurdie 3931
/
3932
--------------------------------------------------------
3933
--  DDL for Package PK_PROJECT
3934
--------------------------------------------------------
3935
 
3959 dpurdie 3936
  CREATE OR REPLACE PACKAGE "PK_PROJECT" IS
1373 dpurdie 3937
 
3959 dpurdie 3938
    TYPE typecur IS REF CURSOR;
1373 dpurdie 3939
 
3959 dpurdie 3940
    /*------------------------------------------------------------------------*/
3941
    PROCEDURE update_base_url (
3942
        nprojid   IN  projects.proj_id%TYPE,
3943
        sbaseurl  IN  VARCHAR2
3944
    );
3945
    /*------------------------------------------------------------------------*/
3946
    PROCEDURE update_project_config (
3947
    nprojid   IN  projects.proj_id%TYPE,
3948
    sbaseurl  IN  VARCHAR2,
3949
    sjirakey  IN  VARCHAR2
3950
    );
3951
    /*------------------------------------------------------------------------*/
1373 dpurdie 3952
 
3959 dpurdie 3953
    END pk_project;
4040 dpurdie 3954
 
1374 dpurdie 3955
/
1373 dpurdie 3956
 
4040 dpurdie 3957
/
3958
--------------------------------------------------------
3959
--  DDL for Package PK_RELEASE
3960
--------------------------------------------------------
3961
 
1373 dpurdie 3962
  CREATE OR REPLACE PACKAGE "PK_RELEASE" IS
3963
/*
3964
------------------------------
3965
||  Last Modified:  S.Vukovic
3966
||  Modified Date:  12/Sep/2005
3967
||  Body Version:   3.0
3968
------------------------------
3969
*/
3970
 
3971
	TYPE typeCur IS REF CURSOR;
3972
 
3973
    /*================================================================================================*/
3974
	PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER );
3975
	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 );
3976
	PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  );
3977
	PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER );
3978
	PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER );
3979
	PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER );
3980
	FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR ) RETURN NUMBER;
3981
	PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER );
3982
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );								 
3983
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3984
	--PROCEDURE ADD_DEPRECATE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, nPkgId IN NUMBER );
3985
	PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3986
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3987
	PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3988
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3989
	PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER );
3990
	PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER );
3991
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
3992
	PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 );
3993
	PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER );
3994
	PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR );
3995
 
3996
	/*================================================================================================*/
3997
 
3998
END PK_RELEASE;
4040 dpurdie 3999
 
1374 dpurdie 4000
/
1373 dpurdie 4001
 
4040 dpurdie 4002
/
4003
--------------------------------------------------------
4004
--  DDL for Package PK_RMAPI
4005
--------------------------------------------------------
4006
 
3959 dpurdie 4007
  CREATE OR REPLACE PACKAGE "PK_RMAPI" 
4008
IS
4009
   TYPE typecur IS REF CURSOR;
1373 dpurdie 4010
 
3959 dpurdie 4011
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
4012
      RETURN typecur;
1373 dpurdie 4013
 
3959 dpurdie 4014
   FUNCTION wip_iteration_package (
4015
      projname        VARCHAR2,
4016
      iterationname   VARCHAR2,
4017
      pkgname         VARCHAR2
4018
   )
4019
      RETURN typecur;
1373 dpurdie 4020
 
3959 dpurdie 4021
   FUNCTION auto_make_vcsrelease (
4022
      rtagid                   IN   NUMBER,
4023
      pkgname                  IN   VARCHAR2,
4024
      vext                     IN   VARCHAR2,
4025
      newpkgversion            IN   VARCHAR2,
4026
      vcstag                   IN   VARCHAR2,
4027
      dependenciesimportlist   IN   VARCHAR2,
4028
      isrippled                IN   NUMBER,
4029
      username                 IN   VARCHAR2
4030
   )
4031
      RETURN NUMBER;
1373 dpurdie 4032
 
4033
 
3959 dpurdie 4034
   PROCEDURE import_dependencies (
4035
      pvid                     IN   NUMBER,
4036
      dependenciesimportlist   IN   VARCHAR2,
4037
      userid                   IN   NUMBER
4038
   );
1373 dpurdie 4039
 
3959 dpurdie 4040
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
4041
      RETURN VARCHAR2;
1373 dpurdie 4042
 
3959 dpurdie 4043
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
4044
      RETURN VARCHAR2;
1373 dpurdie 4045
 
3959 dpurdie 4046
   PROCEDURE update_dash_board (rtagid IN NUMBER);
1373 dpurdie 4047
 
3959 dpurdie 4048
   FUNCTION exclude_from_build (
4049
      pvid          IN   NUMBER,
4050
      spkgversion   IN   VARCHAR2,
4051
      rtagid        IN   NUMBER,
4052
      username      IN   VARCHAR2
4053
   )
4054
      RETURN NUMBER;
1373 dpurdie 4055
 
3959 dpurdie 4056
   FUNCTION exclude_indirect_from_build (
4057
      pvid          IN   NUMBER,
4058
      spkgversion   IN   VARCHAR2,
4059
      rtagid        IN   NUMBER,
4060
      username      IN   VARCHAR2,
4061
      rootpvid      IN   NUMBER,
4062
      rootcause     IN   VARCHAR2,
4063
      rootfile      IN   VARCHAR2
4064
   )
4065
      RETURN NUMBER;
1373 dpurdie 4066
 
3959 dpurdie 4067
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2);
1373 dpurdie 4068
 
3959 dpurdie 4069
   FUNCTION insert_package_metrics (
4070
      rtagid IN NUMBER,
4071
      pkgname IN VARCHAR2,
4072
      vext IN VARCHAR2,
4073
      metricstring IN VARCHAR2
4074
   )
4075
      RETURN NUMBER;
1373 dpurdie 4076
 
3959 dpurdie 4077
   PROCEDURE update_release_metrics (rtagid IN NUMBER);
1373 dpurdie 4078
 
3959 dpurdie 4079
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2;
4080
 
4081
   PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER);
4082
 
4083
   FUNCTION isSVN( pkgid IN NUMBER ) RETURN NUMBER;
4084
 
4085
   FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) RETURN NUMBER;
4086
 
4087
END pk_rmapi;
4040 dpurdie 4088
 
1374 dpurdie 4089
/
1373 dpurdie 4090
 
4040 dpurdie 4091
/
4092
--------------------------------------------------------
4093
--  DDL for Package PK_WORK_IN_PROGRESS
4094
--------------------------------------------------------
4095
 
3959 dpurdie 4096
  CREATE OR REPLACE PACKAGE "PK_WORK_IN_PROGRESS" IS
1373 dpurdie 4097
/*
4098
------------------------------
4099
||  Last Modified:  S.Vukovic
3959 dpurdie 4100
||  Modified Date:  2/May/2005
4101
||  Spec Version:   1.0
1373 dpurdie 4102
------------------------------
4103
*/
4104
 
4105
	TYPE typeCur IS REF CURSOR;
4106
 
4107
    /*================================================================================================*/
4108
	PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
4109
	PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER );
3959 dpurdie 4110
	PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER );
4111
 
1373 dpurdie 4112
	FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER;
3959 dpurdie 4113
	PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur );	
1373 dpurdie 4114
	PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER );
4115
	/*================================================================================================*/
3959 dpurdie 4116
 
4117
END PK_WORK_IN_PROGRESS;
4040 dpurdie 4118
 
1374 dpurdie 4119
/
1373 dpurdie 4120
 
4040 dpurdie 4121
/
4122
--------------------------------------------------------
4123
--  DDL for Package RM_ISSUES
4124
--------------------------------------------------------
4125
 
3959 dpurdie 4126
  CREATE OR REPLACE PACKAGE "RM_ISSUES" AS
1373 dpurdie 4127
 
3959 dpurdie 4128
	TYPE T_Cur IS REF CURSOR;
1373 dpurdie 4129
 
3959 dpurdie 4130
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
4131
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER;
4132
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER;
4133
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER;
1373 dpurdie 4134
 
3959 dpurdie 4135
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
4136
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 );
4137
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 );
1373 dpurdie 4138
 
3959 dpurdie 4139
END Rm_Issues;
4040 dpurdie 4140
 
3959 dpurdie 4141
/
1373 dpurdie 4142
 
4040 dpurdie 4143
/
4144
--------------------------------------------------------
4145
--  DDL for Package Body PK_APP_UTILS
4146
--------------------------------------------------------
4147
 
3959 dpurdie 4148
  CREATE OR REPLACE PACKAGE BODY "PK_APP_UTILS" IS
1373 dpurdie 4149
 
3959 dpurdie 4150
/*
4151
------------------------------
4152
||  Last Modified:  S.Vukovic
4153
||  Modified Date:  26/Apr/2005
4154
||  Body Version:   1.0
4155
------------------------------
4156
*/
1373 dpurdie 4157
 
4158
 
4159
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4160
PROCEDURE GET_CURRENT_PARAMETERS ( ProjId IN VARCHAR2, RtagId IN VARCHAR2, records OUT typeCur)   IS
1373 dpurdie 4161
 
4162
 
4163
BEGIN
4164
 
4165
 
3959 dpurdie 4166
	IF (NOT RtagId IS NULL) THEN
4167
		-- Case with RTAG_ID present
4168
		OPEN records FOR
4169
		SELECT rt.PROJ_ID,
4170
			   rt.RTAG_ID AS RTAG_ID
4171
		  FROM RELEASE_TAGS rt
4172
		 WHERE rt.RTAG_ID = TO_NUMBER(RtagId);
1373 dpurdie 4173
 
3959 dpurdie 4174
	ELSIF (NOT ProjId IS NULL) THEN
4175
		-- Case with PROJ_ID present
4176
		OPEN records FOR
4177
		SELECT TO_NUMBER(ProjId) AS PROJ_ID,
4178
			   -1 AS RTAG_ID
4179
		  FROM DUAL;
1373 dpurdie 4180
 
3959 dpurdie 4181
	ELSE
4182
		-- Case with none present
4183
		OPEN records FOR
4184
		SELECT -1 AS PROJ_ID,
4185
			   -1 AS RTAG_ID
4186
		  FROM DUAL;
1373 dpurdie 4187
 
3959 dpurdie 4188
	END IF;
1373 dpurdie 4189
 
4190
 
4191
 
4192
 
3959 dpurdie 4193
   	--RETURN records;
1373 dpurdie 4194
 
4195
END;
4196
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4197
END PK_APP_UTILS;
4040 dpurdie 4198
 
1374 dpurdie 4199
/
1373 dpurdie 4200
 
4040 dpurdie 4201
/
4202
--------------------------------------------------------
4203
--  DDL for Package Body PK_ARCHIVE
4204
--------------------------------------------------------
4205
 
3959 dpurdie 4206
  CREATE OR REPLACE PACKAGE BODY "PK_ARCHIVE" 
1373 dpurdie 4207
IS
3959 dpurdie 4208
/*
4209
------------------------------
4210
||  Author:  Rupesh Solanki
4211
||  Date:    26 October 2006
4212
||  Version:   1.0
4213
------------------------------
4214
*/
4215
/*---------------------------*/
4216
PROCEDURE populate_packages_table IS
1373 dpurdie 4217
 
3959 dpurdie 4218
BEGIN
4219
		  INSERT INTO archive_manager.PACKAGES
4220
		  (
4221
		  select * from packages where pkg_id not in 
4222
		  		  (select pkg_id from archive_manager.packages)
4223
		  );
1373 dpurdie 4224
 
3959 dpurdie 4225
          INSERT INTO archive_manager.PROCESSES
4226
          (
4227
          select * from processes where proc_id not in 
4228
            (select proc_id from archive_manager.processes)
4229
          );
4230
 
1373 dpurdie 4231
 
4232
 
3959 dpurdie 4233
END;
1373 dpurdie 4234
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4235
   PROCEDURE populate_archive_data_table (
4236
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4237
   )
4238
   IS
3959 dpurdie 4239
/*
4240
Reason: To populate the archive_data table with information regarding the
4241
         number of package versions that exist in other releases.
4242
*/
4243
      numcount      NUMBER;
4244
      numusedby     NUMBER;
4245
      numruntime    NUMBER;
4246
 
4247
      /* Get all the package versions in the release */
4248
      CURSOR archive_cur
4249
      IS
4250
         SELECT pv_id
4251
           FROM release_content
4252
          WHERE rtag_id = nrtagid;
4253
 
4254
      archive_rec   archive_cur%ROWTYPE;
1373 dpurdie 4255
   BEGIN
3959 dpurdie 4256
/*--------------- Business Rules Here -------------------*/
4257
/*-------------------------------------------------------*/
4258
      OPEN archive_cur;
1373 dpurdie 4259
 
3959 dpurdie 4260
      FETCH archive_cur
4261
       INTO archive_rec;
4262
 
4263
      WHILE archive_cur%FOUND
4264
      LOOP
4265
        /* How many packages depend on this package version? */
4266
         SELECT COUNT (*)
4267
           INTO numusedby
4268
           FROM package_dependencies
4269
          WHERE dpv_id = archive_rec.pv_id;
4270
 
4271
        /* How many project releases use this package version?  */
4272
         SELECT COUNT (*)
4273
           INTO numcount
4274
           FROM release_content
4275
          WHERE pv_id = archive_rec.pv_id;
4276
 
4277
        /* How many packages have this package version as runtime
4278
        dependency? */
4279
         SELECT COUNT (*)
4280
           INTO numruntime
4281
           FROM runtime_dependencies
4282
          WHERE rtd_id = archive_rec.pv_id;
4283
 
4284
        /* Insert into the archive_data table if they are not runtime dependant
4285
        and package dependant and they exist in that particular release only*/
4286
         IF numusedby = 0 AND numcount = 1 AND numruntime = 0
1373 dpurdie 4287
         THEN
3959 dpurdie 4288
            INSERT INTO archive_data
4289
                        (rtag_id, pv_id
4290
                        )
4291
                 VALUES (nrtagid, archive_rec.pv_id
4292
                        );
1373 dpurdie 4293
         END IF;
4294
 
3959 dpurdie 4295
         FETCH archive_cur
4296
          INTO archive_rec;
4297
      END LOOP;
1373 dpurdie 4298
   END;
4299
 
4300
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4301
   PROCEDURE migrate_pv_to_archive_schema (
4302
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4303
   )
4304
   IS
4305
   BEGIN
4306
 
3959 dpurdie 4307
      /* MIGRATION - PACKAGE_VERSIONS */
4308
      INSERT INTO archive_manager.package_versions
4309
         SELECT *
4310
           FROM package_versions
4311
          WHERE pv_id IN (SELECT pv_id
4312
                            FROM archive_data);
1373 dpurdie 4313
 
3959 dpurdie 4314
      /* MIGRATION - PACKAGE_BUILD_ENV */
4315
      INSERT INTO archive_manager.package_build_env
4316
         SELECT *
4317
           FROM package_build_env
4318
          WHERE pv_id IN (SELECT pv_id
4319
                            FROM archive_data);
1373 dpurdie 4320
 
3959 dpurdie 4321
      /* PURGE DATA FROM PACKAGE_BUILD_ENV */
4322
      DELETE FROM package_build_env
4323
            WHERE pv_id IN (SELECT pv_id
4324
                              FROM archive_data);
1373 dpurdie 4325
 
3959 dpurdie 4326
      /* MIGRATION - PACKAGE_BUILD_INFO */
4327
      INSERT INTO archive_manager.package_build_info
4328
         SELECT *
4329
           FROM package_build_info
4330
          WHERE pv_id IN (SELECT pv_id
4331
                            FROM archive_data);
1373 dpurdie 4332
 
3959 dpurdie 4333
      /* PURGE DATA FROM PACKAGE_BUILD_info */
4334
      DELETE FROM package_build_info
4335
            WHERE pv_id IN (SELECT pv_id
4336
                              FROM archive_data);							  
1373 dpurdie 4337
 
3959 dpurdie 4338
      /* MIGRATION - UNIT_TESTS  */
4339
      INSERT INTO archive_manager.unit_tests
4340
         SELECT *
4341
           FROM unit_tests
4342
          WHERE pv_id IN (SELECT pv_id
4343
                            FROM archive_data);
1373 dpurdie 4344
 
3959 dpurdie 4345
      /* PURGE DATA FROM UNIT_TESTS*/
4346
      DELETE FROM unit_tests
4347
            WHERE pv_id IN (SELECT pv_id
4348
                              FROM archive_data);
1373 dpurdie 4349
 
3959 dpurdie 4350
      /* MIGRATION - PACKAGE_PROCESSES */
4351
      INSERT INTO archive_manager.package_processes
4352
         SELECT *
4353
           FROM package_processes
4354
          WHERE pv_id IN (SELECT pv_id
4355
                            FROM archive_data);
1373 dpurdie 4356
 
3959 dpurdie 4357
      /* PURGE DATA FROM PACKAGE_PROCESSES*/
4358
      DELETE FROM package_processes
4359
            WHERE pv_id IN (SELECT pv_id
4360
                              FROM archive_data);
1373 dpurdie 4361
 
3959 dpurdie 4362
      /* MIGRATION - PACKAGE_DEPENDENCIES */
4363
      INSERT INTO archive_manager.package_dependencies
4364
         SELECT *
4365
           FROM package_dependencies
4366
          WHERE pv_id IN (SELECT pv_id
4367
                            FROM archive_data);
2735 dpurdie 4368
 
3959 dpurdie 4369
      /* PURGE DATA FROM PACKAGE_DEPENDENCIES*/
4370
      DELETE FROM package_dependencies
4371
            WHERE pv_id IN (SELECT pv_id
4372
                              FROM archive_data);
1373 dpurdie 4373
 
3959 dpurdie 4374
      /* MIGRATION - CODE_REVIEWS */
4375
      INSERT INTO archive_manager.code_reviews
4376
         SELECT *
4377
           FROM code_reviews
4378
          WHERE pv_id IN (SELECT pv_id
4379
                            FROM archive_data);
1373 dpurdie 4380
 
3959 dpurdie 4381
      /* PURGE DATA FROM CODE_REVIEWS*/
4382
      DELETE FROM code_reviews
4383
            WHERE pv_id IN (SELECT pv_id
4384
                              FROM archive_data);
1373 dpurdie 4385
 
3959 dpurdie 4386
      /* MIGRATION - RUNTIME_DEPENDENCIES*/
4387
      INSERT INTO archive_manager.runtime_dependencies
4388
         SELECT *
4389
           FROM runtime_dependencies
4390
          WHERE pv_id IN (SELECT pv_id
4391
                            FROM archive_data);
1373 dpurdie 4392
 
3959 dpurdie 4393
      /* PURGE DATA FROM RUNTIME_DEPENDENCIES*/
4394
      DELETE FROM runtime_dependencies
4395
            WHERE pv_id IN (SELECT pv_id
4396
                              FROM archive_data);
1373 dpurdie 4397
 
3959 dpurdie 4398
      /* MIGRATION - PACKAGE_DOCUMENTS */
4399
      INSERT INTO archive_manager.package_documents
4400
         SELECT *
4401
           FROM package_documents
4402
          WHERE pv_id IN (SELECT pv_id
4403
                            FROM archive_data);
1373 dpurdie 4404
 
3959 dpurdie 4405
      /* PURGE DATA FROM PACKAGE_DOCUMENTS*/
4406
      DELETE FROM package_documents
4407
            WHERE pv_id IN (SELECT pv_id
4408
                              FROM archive_data);
1373 dpurdie 4409
 
3959 dpurdie 4410
      /* MIGRATION - PACKAGE_PATCHES */
4411
      INSERT INTO archive_manager.package_patches
4412
         SELECT *
4413
           FROM package_patches
4414
          WHERE pv_id IN (SELECT pv_id
4415
                            FROM archive_data);
1373 dpurdie 4416
 
3959 dpurdie 4417
      /* PURGE DATA FROM PACKAGE_PATCHES*/
4418
      DELETE FROM package_patches
4419
            WHERE pv_id IN (SELECT pv_id
4420
                              FROM archive_data);
1373 dpurdie 4421
 
3959 dpurdie 4422
      /* MIGRATION - CQ_ISSUES */
4423
      INSERT INTO archive_manager.cq_issues
4424
         SELECT *
4425
           FROM cq_issues
4426
          WHERE pv_id IN (SELECT pv_id
4427
                            FROM archive_data);
1373 dpurdie 4428
 
3959 dpurdie 4429
      /* PURGE DATA FROM CQ_ISSUES*/
4430
      DELETE FROM cq_issues
4431
            WHERE pv_id IN (SELECT pv_id
4432
                              FROM archive_data);
1373 dpurdie 4433
 
3959 dpurdie 4434
      /* MIGRATION - ADDITIONAL_NOTES */
4435
      INSERT INTO archive_manager.additional_notes
4436
         SELECT *
4437
           FROM additional_notes
4438
          WHERE pv_id IN (SELECT pv_id
4439
                            FROM archive_data);
1373 dpurdie 4440
 
3959 dpurdie 4441
      /* PURGE DATA FROM ADDITIONAL_NOTES*/
4442
      DELETE FROM additional_notes
4443
            WHERE pv_id IN (SELECT pv_id
4444
                              FROM archive_data);
1373 dpurdie 4445
 
3959 dpurdie 4446
      /* MIGRATION - RELEASE_COMPONENTS */
4447
      INSERT INTO archive_manager.release_components
4448
         SELECT *
4449
           FROM release_components
4450
          WHERE pv_id IN (SELECT pv_id
4451
                            FROM archive_data);
1373 dpurdie 4452
 
3959 dpurdie 4453
      /* PURGE DATA FROM RELEASE_COMPONENTS*/
4454
      DELETE FROM release_components
4455
            WHERE pv_id IN (SELECT pv_id
4456
                              FROM archive_data);
1373 dpurdie 4457
 
3959 dpurdie 4458
      /* MIGRATION - IGNORE_WARNINGS */
4459
      INSERT INTO archive_manager.ignore_warnings
4460
         SELECT *
4461
           FROM ignore_warnings
4462
          WHERE pv_id IN (SELECT pv_id
4463
                            FROM archive_data);
1374 dpurdie 4464
 
3959 dpurdie 4465
      /* PURGE DATA FROM IGNORE_WARNINGS*/
4466
      DELETE FROM ignore_warnings
4467
            WHERE pv_id IN (SELECT pv_id
4468
                              FROM archive_data);
1373 dpurdie 4469
 
3959 dpurdie 4470
      /* PURGE DATA FROM WORK_IN_PROGRESS */
4471
      DELETE FROM work_in_progress
4472
            WHERE rtag_id = nrtagid;
1374 dpurdie 4473
 
3959 dpurdie 4474
      /* PURGE DATA FROM PLANNED */
4475
      DELETE FROM planned
4476
            WHERE rtag_id = nrtagid;
1373 dpurdie 4477
 
3959 dpurdie 4478
      /* MIGRATION - JIRA_ISSUES */
4479
      INSERT INTO archive_manager.jira_issues
4480
         SELECT *
4481
           FROM jira_issues
4482
          WHERE pv_id IN (SELECT pv_id
4483
                            FROM archive_data);
1373 dpurdie 4484
 
3959 dpurdie 4485
      /* PURGE DATA FROM JIRA_ISSUES*/
4486
      DELETE FROM jira_issues
4487
            WHERE pv_id IN (SELECT pv_id
4488
                              FROM archive_data);
1373 dpurdie 4489
 
3959 dpurdie 4490
      /* MIGRATION - PRODUCT_COMPONENTS */
4491
      INSERT INTO archive_manager.product_components
4492
         SELECT *
4493
           FROM product_components
4494
          WHERE pv_id IN (SELECT pv_id
4495
                            FROM archive_data);
1373 dpurdie 4496
 
3959 dpurdie 4497
      /* PURGE DATA FROM PRODUCT_COMPONENTS*/
4498
      DELETE FROM product_components
4499
            WHERE pv_id IN (SELECT pv_id
4500
                              FROM archive_data);
1373 dpurdie 4501
 
3959 dpurdie 4502
      /* MIGRATION - ACTION_LOG */
4503
      INSERT INTO archive_manager.action_log
4504
         SELECT *
4505
           FROM action_log
4506
          WHERE pv_id IN (SELECT pv_id
4507
                            FROM archive_data);
1373 dpurdie 4508
 
3959 dpurdie 4509
      /* PURGE DATA FROM ACTION_LOG*/
4510
      DELETE FROM action_log
4511
            WHERE pv_id IN (SELECT pv_id
4512
                              FROM archive_data);
1373 dpurdie 4513
 
4514
 
4515
   END;
4516
 
4517
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4518
   PROCEDURE migrate_rtag_to_archive_schema (
4519
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4520
   )
4521
   IS
4522
   BEGIN
3959 dpurdie 4523
      /* MIGRATION - DO_NOT_RIPPLE */
4524
      INSERT INTO archive_manager.do_not_ripple
4525
         SELECT *
4526
           FROM do_not_ripple dnp
4527
          WHERE rtag_id = nrtagid;
1373 dpurdie 4528
 
3959 dpurdie 4529
      /* PURGE DATA FROM DO_NOT_RIPPLE */
4530
      DELETE FROM do_not_ripple
4531
            WHERE rtag_id = nrtagid;
4532
 
4533
      /* MIGRATION - ADVISORY_RIPPLES*/
4534
      INSERT INTO archive_manager.advisory_ripples
4535
         SELECT *
4536
           FROM advisory_ripple dnp
4537
          WHERE rtag_id = nrtagid;
1373 dpurdie 4538
 
3959 dpurdie 4539
      /* PURGE DATA FROM ADVISORY_RIPPLES*/
4540
      DELETE FROM advisory_ripple
4541
            WHERE rtag_id = nrtagid;			
1373 dpurdie 4542
 
3959 dpurdie 4543
      /* MIGRATION - RELEASE_CONTENT */
4544
      INSERT INTO archive_manager.release_content
4545
         SELECT *
4546
           FROM release_content
4547
          WHERE rtag_id = nrtagid;
1373 dpurdie 4548
 
3959 dpurdie 4549
      /* PURGE DATA FROM RELEASE_CONTENT*/
4550
      DELETE FROM release_content
4551
            WHERE rtag_id = nrtagid;
1373 dpurdie 4552
 
3959 dpurdie 4553
      /* MIGRATION - NOTIFICATION_HISTORY */
4554
      INSERT INTO archive_manager.notification_history
4555
         SELECT *
4556
           FROM notification_history
4557
          WHERE rtag_id = nrtagid;
1373 dpurdie 4558
 
3959 dpurdie 4559
      /* PURGE DATA FROM NOTIFICATION_HISTORY*/
4560
      DELETE FROM notification_history
4561
            WHERE rtag_id = nrtagid;
1373 dpurdie 4562
 
3959 dpurdie 4563
      /* MIGRATION - BUILD_ORDER   */
4564
      INSERT INTO archive_manager.build_order
4565
         SELECT *
4566
           FROM build_order
4567
          WHERE rtag_id = nrtagid;
1373 dpurdie 4568
 
3959 dpurdie 4569
      /* PURGE DATA FROM BUILD_ORDER*/
4570
      DELETE FROM build_order
4571
            WHERE rtag_id = nrtagid;
1373 dpurdie 4572
 
3959 dpurdie 4573
      /* MIGRATION - PROJECT_ACTION_LOG */
4574
      INSERT INTO archive_manager.project_action_log
4575
         SELECT *
4576
           FROM project_action_log
4577
          WHERE rtag_id = nrtagid;
1373 dpurdie 4578
 
3959 dpurdie 4579
      /* PURGE DATA FROM PROJECT_ACTION_LOG */
4580
      DELETE FROM project_action_log
4581
            WHERE rtag_id = nrtagid;
1373 dpurdie 4582
 
3959 dpurdie 4583
      /* MIGRATION - DEPRECATED_PACKAGES */
4584
      INSERT INTO archive_manager.deprecated_packages
4585
         SELECT *
4586
           FROM deprecated_packages
4587
          WHERE rtag_id = nrtagid;
1373 dpurdie 4588
 
3959 dpurdie 4589
      /* PURGE DATA FROM DEPRECATED_PACKAGES */
4590
      DELETE FROM deprecated_packages
4591
            WHERE rtag_id = nrtagid;
4592
 
4593
      /* MIGRATION - RELEASE_TAGS */
4594
      INSERT INTO archive_manager.release_tags
4595
         SELECT *
1373 dpurdie 4596
           FROM release_tags
3959 dpurdie 4597
          WHERE rtag_id = nrtagid;
4598
 
4599
 
4600
      /* PURGE DATA FROM PACKAGE_VERSIONS*/
4601
      DELETE FROM package_versions
4602
            WHERE pv_id IN (SELECT pv_id
4603
                              FROM archive_data);
4604
 
4605
 
1373 dpurdie 4606
   END;
4607
 
4608
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4609
   PROCEDURE clean_up_archive_data_table (
4610
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4611
   )
4612
   IS
4613
   BEGIN
3959 dpurdie 4614
      /* Cleaning Up The Archive_Data Table */
4615
      DELETE FROM archive_data
4616
            WHERE rtag_id = nrtagid;
1373 dpurdie 4617
   END;
4618
 
4619
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4620
   PROCEDURE write_action_log (
4621
      nuserid   IN   NUMBER,
4622
      nrtagid   IN   release_tags.rtag_id%TYPE
1373 dpurdie 4623
   )
4624
   IS
4625
   BEGIN
3959 dpurdie 4626
      /* Write Into Archive_Action_Log Table */
4627
      INSERT INTO archive_action_log
4628
                  (user_id, date_time_stamp, rtag_id,
4629
                   description
1373 dpurdie 4630
                  )
3959 dpurdie 4631
           VALUES (nuserid, ora_sysdatetime, nrtagid,
4632
                   'Release has been archived to the ARCHIVE_MANAGER schema'
1373 dpurdie 4633
                  );
4634
   END;
4635
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 4636
END pk_archive; 
4040 dpurdie 4637
 
1374 dpurdie 4638
/
1373 dpurdie 4639
 
4040 dpurdie 4640
/
4641
--------------------------------------------------------
4642
--  DDL for Package Body PK_BUILDAPI
4643
--------------------------------------------------------
4644
 
1373 dpurdie 4645
  CREATE OR REPLACE PACKAGE BODY "PK_BUILDAPI" 
4646
IS
4647
   /*-------------------------------------------------------------------------------------------------------*/
4648
   PROCEDURE add_product_component (
4649
      npvid           IN   NUMBER,
4650
      sosname         IN   VARCHAR2,
4651
      sorigfilepath   IN   VARCHAR2,
4652
      sfilename       IN   VARCHAR2,
4653
      sdestfilepath   IN   VARCHAR2,
4654
      nbytesize       IN   NUMBER,
4655
      scrccksum       IN   VARCHAR2
4656
   )
4657
   IS
4658
      nosid   NUMBER;
4659
   BEGIN
4660
      /*--------------- Business Rules Here -------------------*/
4661
      -- OS Name Requirements --
4662
      IF (sosname IS NULL)
4663
      THEN
4664
         raise_application_error (-20000, 'OsName cannot be NULL.');
4665
      END IF;
4666
 
4667
      -- File Requirements --
4668
      IF (NOT sfilename IS NULL)
4669
      THEN
4670
         IF (nbytesize IS NULL)
4671
         THEN
4672
            raise_application_error (-20000, 'Byte Size cannot be NULL.');
4673
         ELSIF (scrccksum IS NULL)
4674
         THEN
4675
            raise_application_error (-20000, 'CRC CKSUM cannot be NULL.');
4676
         END IF;
4677
      END IF;
4678
 
4679
      -- Folder Requirements --
4680
      -- No requirements for now.
4681
 
4682
      /*-------------------------------------------------------*/
4683
 
4684
      -- Get OsId
4685
      nosid := get_osid (sosname);
4686
 
4687
      -- Insert component entry
4688
      INSERT INTO product_components
4689
                  (pv_id, os_id, file_path, file_name, destination_path,
4690
                  byte_size, crc_cksum
4691
                  )
4692
         VALUES (npvid, nosid, sorigfilepath, sfilename, sdestfilepath,
4693
                  nbytesize, scrccksum
4694
                  );
4695
   EXCEPTION
4696
      WHEN DUP_VAL_ON_INDEX
4697
      THEN
4698
         raise_application_error (-20000,
4699
                                 'Cannot have duplicate product components.'
4700
                                 );
4701
   END;
4702
 
4703
/*-------------------------------------------------------------------------------------------------------*/
4704
   PROCEDURE remove_all_product_components (
4705
      npvid     IN   NUMBER,
4706
      sosname   IN   VARCHAR2
4707
   )
4708
   IS
4709
      nosid   NUMBER;
4710
   BEGIN
4711
/*--------------- Business Rules Here -------------------*/
4712
/*-------------------------------------------------------*/
4713
 
4714
      -- Get OsId
4715
      nosid := get_osid (sosname);
4716
 
4717
      -- Delete component entry
4718
      DELETE FROM product_components pc
4719
            WHERE pc.pv_id = npvid AND pc.os_id = nosid;
4720
   END;
4721
 
4722
/*-------------------------------------------------------------------------------------------------------*/
4723
   FUNCTION get_osid (sosname IN VARCHAR2)
4724
      RETURN NUMBER
4725
   IS
4726
      code   NUMBER;
4727
   BEGIN
4728
      -- Get Platform Code --
4729
      SELECT pf.code
4730
      INTO code
4731
      FROM platforms pf
4732
      WHERE UPPER (pf.NAME) = UPPER (sosname);
4733
 
4734
      RETURN code;
4735
   EXCEPTION
4736
      WHEN NO_DATA_FOUND
4737
      THEN
4738
         raise_application_error
4739
            (-20000,
4740
               'Platform '
4741
            || sosname
4742
            || ' is not valid. It needs to be added to PLATFORMS table in Release Manager.'
4743
            );
4744
         RAISE;
4745
   END;
4746
 
4747
/*-------------------------------------------------------------------------------------------------------*/
4748
   PROCEDURE update_build_service_info (
4749
      sdatabaseserver   IN   VARCHAR2,
4750
      sarchiveserver    IN   VARCHAR2,
4751
      smailserver       IN   VARCHAR2,
4752
      smailsender       IN   VARCHAR2,
4211 dpurdie 4753
      faultmlist        IN   VARCHAR2,
1373 dpurdie 4754
      sdiskspace        IN   VARCHAR2,
4755
      ssbommanagement   IN   VARCHAR2
4756
   )
4757
   IS
4758
   BEGIN
4759
      UPDATE build_service_config
4760
         SET config = sdatabaseserver
4761
      WHERE service = 'DATABASE SERVER';
4762
 
4763
      UPDATE build_service_config
4764
         SET config = sarchiveserver
4765
      WHERE service = 'ARCHIVE SERVER';
4766
 
4767
      UPDATE build_service_config
4768
         SET config = smailserver
4769
      WHERE service = 'MAIL SERVER';
4770
 
4771
      UPDATE build_service_config
4772
         SET config = smailsender
4773
      WHERE service = 'BUILD FAILURE MAIL SENDER';
4774
 
4775
      UPDATE build_service_config
4211 dpurdie 4776
         SET config = faultmlist
4777
      WHERE service = 'FAULT EMAIL ADDRESS LIST';
4778
 
4779
      UPDATE build_service_config
1373 dpurdie 4780
         SET config = sdiskspace
4781
      WHERE service = 'DPKG_ARCHIVE DISK SPACE USED';
4782
 
4783
      UPDATE build_service_config
4784
         SET config = ssbommanagement
4785
      WHERE service = 'SBOM MANAGEMENT';
4786
   END;
4787
 
4788
 
4789
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4790
   PROCEDURE add_gbe_machtype (sgbevalue IN VARCHAR2, sgbeclass IN NUMBER)
1373 dpurdie 4791
   IS
4792
      gbe_id   NUMBER;
4793
   BEGIN
4794
      -- Get GBE_ID
4795
      SELECT seq_gbe_id.NEXTVAL
4796
      INTO gbe_id
4797
      FROM DUAL;
4798
 
4799
      INSERT INTO gbe_machtype
4040 dpurdie 4800
                  (gbe_id, gbe_value, bm_id )
4801
         VALUES (gbe_id, sgbevalue, sgbeclass );
1373 dpurdie 4802
   END;
4803
 
4804
/*-------------------------------------------------------------------------------------------------------*/
4805
   PROCEDURE remove_gbe_machtype (ngbe_id IN NUMBER)
4806
   IS
4807
   BEGIN
4808
      DELETE FROM gbe_machtype
4809
            WHERE gbe_id = ngbe_id;
4810
   END;
4811
 
4812
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4813
   PROCEDURE update_gbe_machtype (ngbe_id IN NUMBER, sgbevalue IN VARCHAR2, sgbeclass IN NUMBER)
1373 dpurdie 4814
   IS
4815
   BEGIN
4816
      UPDATE gbe_machtype
4040 dpurdie 4817
         SET gbe_value = sgbevalue,
4818
             bm_id = sgbeclass
1373 dpurdie 4819
      WHERE gbe_id = ngbe_id;
4820
   END;
4821
 
4822
/*-------------------------------------------------------------------------------------------------------*/
4040 dpurdie 4823
PROCEDURE add_buildmachine (sbmvalue IN VARCHAR2)
4824
   IS
4825
      bm_id   NUMBER;
4826
   BEGIN
4827
      -- Get BM_ID
4828
      SELECT seq_bm_id.NEXTVAL
4829
      INTO bm_id
4830
      FROM DUAL;
4831
 
4832
      INSERT INTO build_machines
4833
                  (bm_id, bm_name)
4834
         VALUES (bm_id, sbmvalue );
4835
   END;
4836
 
4837
/*-------------------------------------------------------------------------------------------------------*/
4838
   PROCEDURE remove_buildmachine (nbm_id IN NUMBER)
4839
   IS
4840
   BEGIN
4841
      DELETE FROM build_machines
4842
            WHERE bm_id = nbm_id;
4843
   END;
4844
 
4845
/*-------------------------------------------------------------------------------------------------------*/
4846
   PROCEDURE update_buildmachine (nbm_id IN NUMBER, sbmvalue IN VARCHAR2) 
4847
   IS
4848
   BEGIN
4849
      UPDATE build_machines
4850
         SET bm_name = sbmvalue
4851
         WHERE bm_id = nbm_id;
4852
   END;
4853
 
4854
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 4855
  --This function is obsolete.  It was replaced by add_daemon_config. Done for DEVI-046806
4856
   PROCEDURE add_daemon (
4857
      sdaemonhostname   IN   VARCHAR2,
4858
      nrtagid           IN   NUMBER,
4859
      ngbeid            IN   NUMBER,
4860
      sgbebuildfilter   IN   VARCHAR2
4861
   )
4862
   IS
4863
      nrecordnumber   NUMBER;
4864
      nrconid         NUMBER;
4865
   BEGIN
4866
      -- Get RCON_ID
4867
      SELECT seq_rcon_id.NEXTVAL
4868
      INTO nrconid
4869
      FROM DUAL;
4870
 
4871
      SELECT COUNT (*)
4872
      INTO nrecordnumber
4873
      FROM release_config
4874
      WHERE rtag_id = nrtagid;
4875
 
4876
      IF nrecordnumber = 0
4877
      THEN
4878
         INSERT INTO release_config
4879
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
4880
                     gbe_id, gbe_buildfilter
4881
                     )
4882
            VALUES (nrconid, nrtagid, sdaemonhostname, 'M',
4883
                     ngbeid, sgbebuildfilter
4884
                     );
4885
      ELSE
4886
         INSERT INTO release_config
4887
                     (rcon_id, rtag_id, daemon_hostname, daemon_mode,
4888
                     gbe_id, gbe_buildfilter
4889
                     )
4890
            VALUES (nrconid, nrtagid, sdaemonhostname, 'S',
4891
                     ngbeid, sgbebuildfilter
4892
                     );
4893
      END IF;
4894
 
4895
      -- A newly configured daemon should initially be paused (DEVI-047277)
4896
      INSERT INTO run_level
4897
                  (rcon_id, pause)
4898
           VALUES (nrconid, 1);
4899
   END;
4900
 
4901
/*-------------------------------------------------------------------------------------------------------*/
4902
   PROCEDURE delete_daemon (srconidlist IN VARCHAR2)
4903
   IS
4904
   BEGIN
4905
      -- Entries in the daemon_action_log, run_level and abt_action_log tables must be deleted first.
4906
      DELETE FROM daemon_action_log
4907
            WHERE rcon_id IN (
4908
                     SELECT *
4909
                     FROM THE
4910
                              (SELECT CAST
4911
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4912
                                          )
4913
                                 FROM DUAL
4914
                              ));
4915
 
4916
      DELETE FROM run_level
4917
            WHERE rcon_id IN (
4918
                     SELECT *
4919
                     FROM THE
4920
                              (SELECT CAST
4921
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4922
                                          )
4923
                                 FROM DUAL
4924
                              ));
4925
 
4926
      DELETE FROM abt_action_log
4927
            WHERE rcon_id IN (
4928
                     SELECT *
4929
                     FROM THE
4930
                              (SELECT CAST
4931
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4932
                                          )
4933
                                 FROM DUAL
4934
                              ));
4935
 
4936
      -- Once entries in daemon_action_log, run_level and abt_action_log are removed, the daemon is deleted.
4937
      DELETE FROM release_config
4938
            WHERE rcon_id IN (
4939
                     SELECT *
4940
                     FROM THE
4941
                              (SELECT CAST
4942
                                          (in_list_number (srconidlist) AS relmgr_number_tab_t
4943
                                          )
4944
                                 FROM DUAL
4945
                              ));
4946
   END;
4947
 
4948
/*-------------------------------------------------------------------------------------------------------*/
4949
  --This function is obsolete.  It was replaced by update_daemon_config for DEVI-046806
4950
   PROCEDURE update_daemon (
4951
      sdaemonhostname   IN   VARCHAR2,
4952
      nrconid           IN   NUMBER,
4953
      ngbeid            IN   NUMBER,
4954
      sgbebuildfilter   IN   VARCHAR2
4955
   )
4956
   IS
4957
   BEGIN
4958
      UPDATE release_config
4959
         SET daemon_hostname = sdaemonhostname,
4960
            gbe_id = ngbeid,
4961
            gbe_buildfilter = sgbebuildfilter
4962
      WHERE rcon_id = nrconid;
4963
   END;
4964
 
4965
/*-------------------------------------------------------------------------------------------------------*/
4966
   PROCEDURE insert_schedule_info (
4967
      dschedulepause     IN   DATE,
4968
      dscheduleresume    IN   DATE,
4969
      crepeat            IN   VARCHAR2,
4970
      cindefinitepause   IN   VARCHAR2
4971
   )
4972
   IS
4973
      nscheduledid   NUMBER;
4974
   BEGIN
4975
      -- Get Next Available Scheduled Id
4976
      SELECT seq_scheduled_id.NEXTVAL
4977
      INTO nscheduledid
4978
      FROM DUAL;
4979
 
4980
      INSERT INTO run_level_schedule
4981
         VALUES (nscheduledid, dschedulepause, dscheduleresume, crepeat,
4982
                  cindefinitepause);
4983
   END;
4984
 
4985
/*-------------------------------------------------------------------------------------------------------*/
4986
   PROCEDURE delete_schedule (nscheduleid IN NUMBER)
4987
   IS
4988
   BEGIN
4989
      DELETE FROM run_level_schedule
4990
            WHERE scheduled_id = nscheduleid;
4991
   END;
4992
 
4993
/*-------------------------------------------------------------------------------------------------------*/
4994
   PROCEDURE set_infinite_pause
4995
   IS
4996
      nscheduledid   NUMBER;
4997
   BEGIN
4998
      -- Get Next Available Scheduled Id
4999
      SELECT seq_scheduled_id.NEXTVAL
5000
      INTO nscheduledid
5001
      FROM DUAL;
5002
 
5003
      INSERT INTO run_level_schedule
5004
         VALUES (nscheduledid, NULL, NULL, NULL, 'P');
5005
   END;
5006
 
5007
/*-------------------------------------------------------------------------------------------------------*/
5008
   PROCEDURE set_resume
5009
   IS
5010
   BEGIN
5011
      DELETE FROM run_level_schedule
5012
            WHERE indefinite_pause = 'P';
5013
   END;
5014
 
5015
/*-------------------------------------------------------------------------------------------------------*/
5016
   PROCEDURE delete_out_of_date_schedule
5017
   IS
5018
   BEGIN
5019
      DELETE FROM run_level_schedule
5020
            WHERE scheduled_resume < ora_sysdatetime AND repeat = 0;
5021
   END;
5022
 
5023
/*-------------------------------------------------------------------------------------------------------*/
5024
   PROCEDURE set_daemon_resume (nrconid IN NUMBER)
5025
   IS
5026
   BEGIN
5027
      UPDATE run_level
5028
         SET PAUSE = NULL
5029
      WHERE rcon_id = nrconid;
5030
   END;
5031
 
5032
/*-------------------------------------------------------------------------------------------------------*/
5033
   PROCEDURE set_daemon_pause (nrconid IN NUMBER)
5034
   IS
5035
   BEGIN
5036
      UPDATE run_level
5037
         SET PAUSE = 1
5038
      WHERE rcon_id = nrconid;
5039
   END;
5040
/*-------------------------------------------------------------------------------------------------------*/
5041
   PROCEDURE set_daemon_disable (nrconid NUMBER)
5042
   IS
5043
   BEGIN
5044
      UPDATE run_level
5045
         SET PAUSE = 2
5046
      WHERE rcon_id = nrconid;
5047
   END;
5048
 
5049
/*-------------------------------------------------------------------------------------------------------*/
5050
   PROCEDURE set_daemon_states (nrtagid NUMBER, nstate NUMBER)
5051
   IS
5052
   BEGIN
5053
     UPDATE run_level
5054
     SET pause = nstate
5055
     WHERE rcon_id IN
5056
     (SELECT rc.rcon_id FROM release_config rc WHERE rc.rtag_id = nrtagid);
5057
   END;
5058
 
5059
/*-------------------------------------------------------------------------------------------------------*/
5060
   -- inserts a new daemon instruction
5061
   -- This is for use by the Release Manager Website code.
5062
   --
5063
   PROCEDURE insert_daemon_inst
5064
   ( nOp_code IN NUMBER
5065
   , nRtag_id IN NUMBER
5066
   , nPv_id IN NUMBER
5067
   , nSchedDate IN DATE
5068
   , nRepeatSecs IN NUMBER
5069
   , nAddedDate IN DATE
5070
   , nUser_id IN NUMBER
5071
   ) IS
5072
      nInstId   NUMBER;
5073
   BEGIN
5074
      -- Get Next Available Scheduled Id
5075
      SELECT seq_daemon_instruction_id.NEXTVAL
5076
      INTO nInstId
5077
      FROM DUAL;
5078
 
5079
      INSERT INTO Daemon_Instructions
5080
         VALUES (nInstId, nOp_code, nRtag_id,
5081
                  nPv_id, nSchedDate, nRepeatSecs,
5082
                  nAddedDate, nUser_id, '0');
5083
   EXCEPTION
5084
      WHEN DUP_VAL_ON_INDEX
5085
      THEN
5086
         raise_application_error (-20000,
5087
                                 'Table already contains a record with the specified OPERATION, RELEASE, and PACKAGE VERSION'
5088
                                 );
5089
      WHEN OTHERS
5090
      THEN
5091
         raise;
5092
   END insert_daemon_inst;
5093
 
5094
/*-------------------------------------------------------------------------------------------------------*/
5095
   -- Deletes a daemon instruction matching the specified instruction ID
5096
   --
5097
   PROCEDURE del_daemon_inst
5098
   ( nInstId IN NUMBER
5099
   ) IS
5100
 
5101
   BEGIN
5102
      DELETE FROM Daemon_Instructions
5103
      WHERE DAEMON_INSTRUCTIONS_ID = nInstId;
5104
 
5105
   END del_daemon_inst;
5106
 
5107
/*-------------------------------------------------------------------------------------------------------*/
5108
   -- Deletes a daemon instruction matching the specified op-code, ratag, and pv_id
5109
   --
5110
   PROCEDURE del_daemon_inst_by_rtag_pvid(
5111
      nOp_code IN NUMBER,
5112
      nRtag_id IN NUMBER,
5113
      nPv_id IN NUMBER
5114
   ) IS
5115
   BEGIN
5116
      DELETE FROM Daemon_Instructions
5117
      WHERE OP_CODE = nOp_code
5118
      AND RTAG_ID = nRtag_id
5119
      AND PV_ID   = nPv_id;
5120
 
5121
   END del_daemon_inst_by_rtag_pvid;
5122
 
5123
/*-------------------------------------------------------------------------------------------------------*/
5124
   -- Updates a daemon instruction
5125
   -- This is for use by the Release Manager Website code.
5126
   --
5127
   PROCEDURE update_daemon_inst
5128
   ( nInstId IN NUMBER
5129
   , nOp_code IN NUMBER
5130
   , nRtag_id IN NUMBER
5131
   , nPv_id IN NUMBER
5132
   , nSchedDate IN DATE
5133
   , nRepeatSecs IN NUMBER
5134
   , nAddedDate IN DATE
5135
   , nUser_id IN NUMBER
5136
   ) IS
5137
      CURSOR daemon_inst_cur IS
5138
         SELECT *
5139
         FROM daemon_instructions di
5140
         WHERE di.DAEMON_INSTRUCTIONS_ID = nInstId;
5141
 
5142
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5143
 
5144
      exc_inst_removed EXCEPTION;
5145
   BEGIN
5146
      OPEN daemon_inst_cur;
5147
 
5148
      FETCH daemon_inst_cur
5149
      INTO daemon_inst_rec;
5150
 
5151
      IF daemon_inst_cur%FOUND THEN
5152
 
5153
         UPDATE Daemon_Instructions
5154
         SET op_code = nOp_code,
5155
            rtag_id = nRtag_id,
5156
            pv_id   = nPv_id,
5157
            scheduled_datetime = nSchedDate,
5158
            repeat_secs = nRepeatSecs,
5159
            added_datetime = nAddedDate,
5160
            user_id = nUser_id,
5161
            in_progress = '0'
5162
         WHERE daemon_instructions_id = nInstId;
5163
      ELSE
5164
         raise exc_inst_removed;
5165
      END IF;
5166
 
5167
      CLOSE daemon_inst_cur;
5168
   EXCEPTION
5169
      WHEN DUP_VAL_ON_INDEX
5170
      THEN
5171
         raise_application_error (-20000,
5172
                                 'Table already contains a record with the specified OPERATION, RELEASE, and PACKAGE VERSION'
5173
                                 );
5174
      WHEN exc_inst_removed
5175
      THEN
5176
         raise_application_error (-20000,
5177
                                 'Record was probably deleted by the Buildtool during your edit-form session. Please create a new Daemon Instruction.'
5178
                                 );
5179
      WHEN OTHERS
5180
      THEN
5181
         raise;
5182
   END update_daemon_inst;
5183
 
5184
/*-------------------------------------------------------------------------------------------------------*/
5185
   -- Returns a comma-separated list of operation codes found for a given rtag and pv_id combination
5186
   -- This is for use by the Release Manager Website code.
5187
   --
5188
   FUNCTION daemon_ops_for_rtag_pvid(
5189
      nRtag_id IN NUMBER,
5190
      nPv_id IN NUMBER
5191
   ) RETURN VARCHAR2
5192
   IS
5193
      CURSOR daemon_inst_cur IS
5194
         SELECT di.OP_CODE
5195
         FROM daemon_instructions di
5196
         WHERE di.RTAG_ID = nRtag_id
5197
            AND di.PV_ID = nPv_id;
5198
 
5199
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5200
 
5201
      sRetList VARCHAR2(4000) := '';
5202
 
5203
   BEGIN
5204
      OPEN daemon_inst_cur;
5205
 
5206
      FETCH daemon_inst_cur
5207
      INTO daemon_inst_rec;
5208
 
5209
      WHILE daemon_inst_cur%FOUND
5210
      LOOP
5211
         sRetList := sRetList || daemon_inst_rec.op_code || ',';
5212
 
5213
         FETCH daemon_inst_cur
5214
         INTO daemon_inst_rec;
5215
      END LOOP;
5216
 
5217
      CLOSE daemon_inst_cur;
5218
 
5219
      RETURN sRetList;
5220
   END daemon_ops_for_rtag_pvid;
5221
/*-------------------------------------------------------------------------------------------------------*/
5222
   -- Returns a comma-separated list of operation codes found for a given rtag
5223
   -- This is for use by the Release Manager Website code.
5224
   --
5225
   FUNCTION daemon_ops_for_rtag(
5226
      nRtag_id IN NUMBER
5227
   ) RETURN VARCHAR2
5228
   IS
5229
      CURSOR daemon_inst_cur IS
5230
         SELECT di.OP_CODE
5231
         FROM daemon_instructions di
5232
         WHERE di.RTAG_ID = nRtag_id;
5233
 
5234
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5235
 
5236
      sRetList VARCHAR2(4000) := '';
5237
 
5238
   BEGIN
5239
      OPEN daemon_inst_cur;
5240
 
5241
      FETCH daemon_inst_cur
5242
      INTO daemon_inst_rec;
5243
 
5244
      WHILE daemon_inst_cur%FOUND
5245
      LOOP
5246
         sRetList := sRetList || daemon_inst_rec.op_code || ',';
5247
 
5248
         FETCH daemon_inst_cur
5249
         INTO daemon_inst_rec;
5250
      END LOOP;
5251
 
5252
      CLOSE daemon_inst_cur;
5253
 
5254
      RETURN sRetList;
5255
   END daemon_ops_for_rtag;
5256
/*-------------------------------------------------------------------------------------------------------*/
5257
   -- Gets a record from the daemon instruction table that can be carried out now and returns the fields
5258
   -- in the record a daemon will need
5259
   -- The Buildtool should use this to find a job to do for a particular release. It should then call
5260
   -- mark_daemon_inst_in_progress(inst_id) before carrying out the work, and then call
5261
   -- mark_daemon_inst_completed(inst_id) to signal its completion.
5262
   -- Can be called repeatedly to get a full list of all instructions for a release, by passing back in
5263
   -- the instruction ID obtained from the previous call (the 1st call should use 0)
5264
   -- Can be called repeatedly to get a full list of all instructions of a specific op-code value for a release,
5265
   -- by passing back in an op-code value of 0 or higher (use -1 if no op-code filtering is needed)
5266
   -- Returns 1 if a record was found, else 0.
5267
   --
5268
   FUNCTION get_daemon_inst(
5269
      nRtag_id IN NUMBER,
5270
      nInst_id IN OUT NUMBER,
5271
      nOp_code IN OUT NUMBER,
5272
      nPv_id OUT NUMBER,
5273
      nUser_id OUT NUMBER,
5274
      nInProgress OUT NUMBER
5275
   ) RETURN NUMBER
5276
   IS
5277
      CURSOR daemon_inst_cur IS
5278
         SELECT di.daemon_instructions_id, di.op_code, di.pv_id ,di.user_id, di.in_progress
5279
           FROM daemon_instructions di
5280
          WHERE di.rtag_id = nRtag_id
5281
            AND di.daemon_instructions_id > nInst_id
5282
            AND di.scheduled_datetime <= ora_sysdatetime
5283
            AND ((nOp_code = -1) OR (nOp_code = di.op_code))
5284
            AND rownum <= 1
5285
       ORDER BY di.daemon_instructions_id;
5286
 
5287
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5288
   BEGIN
5289
      OPEN daemon_inst_cur;
5290
 
5291
      FETCH daemon_inst_cur
5292
      INTO daemon_inst_rec;
5293
 
5294
      -- If we found a record, return it.
5295
      IF daemon_inst_cur%FOUND THEN
5296
         nInst_id := daemon_inst_rec.daemon_instructions_id;
5297
         nOp_code := daemon_inst_rec.op_code;
5298
         nPv_id   := daemon_inst_rec.pv_id;
5299
         nUser_id := daemon_inst_rec.user_id;
5300
         IF daemon_inst_rec.in_progress = '1' THEN
5301
            nInProgress := 1;
5302
         ELSE
5303
            nInProgress := 0;
5304
         END IF;
5305
         CLOSE daemon_inst_cur;
5306
         RETURN 1;
5307
      END IF;
5308
 
5309
      CLOSE daemon_inst_cur;
5310
      RETURN 0;
5311
 
5312
   END get_daemon_inst;
5313
/*-------------------------------------------------------------------------------------------------------*/
5314
   -- Marks a daemon instruction as being processed by a daemon
5315
   -- The Buildtool should use this before it embarks on the work the instruction commands
5316
   --
5317
   PROCEDURE mark_daemon_inst_in_progress( nInstId IN NUMBER )
5318
   IS
5319
   BEGIN
5320
      UPDATE Daemon_Instructions
5321
      SET in_progress = '1'
5322
      WHERE daemon_instructions_id = nInstId;
5323
 
5324
   END mark_daemon_inst_in_progress;
5325
 
5326
/*-------------------------------------------------------------------------------------------------------*/
5327
   -- Once the Buildtool has finished carrying out the daemon instruction, it should call this stored
5328
   -- procedure in order to either delete the instruction or update it in the case where it is a repeating
5329
   -- instruction.
5330
   --
5331
   PROCEDURE mark_daemon_inst_completed( nInstId IN NUMBER )
5332
   IS
5333
      repSecs NUMBER;
5334
      schedDate  DATE;
5335
 
5336
      CURSOR daemon_inst_cur IS
5337
         SELECT di.REPEAT_SECS AS repSecs, di.SCHEDULED_DATETIME AS schedDate
5338
         FROM daemon_instructions di
5339
         WHERE di.daemon_instructions_id = nInstId;
5340
 
5341
      daemon_inst_rec   daemon_inst_cur%ROWTYPE;
5342
   BEGIN
5343
      OPEN daemon_inst_cur;
5344
 
5345
      FETCH daemon_inst_cur
5346
      INTO daemon_inst_rec;
5347
 
5348
      IF daemon_inst_cur%FOUND THEN
5349
 
5350
         -- if instruction repeats daily, add 1 day to the scheduled time and update the record
5351
         IF daemon_inst_rec.repSecs = 86400 THEN
5352
            UPDATE Daemon_Instructions
5353
               SET scheduled_datetime = daemon_inst_rec.schedDate + 1,
5354
                  in_progress = '0'
5355
            WHERE daemon_instructions_id = nInstId;
5356
         ELSE
5357
            -- Delete the daemon instruction, we are done with it
5358
            del_daemon_inst(nInstId);
5359
         END IF;
5360
      END IF;
5361
 
5362
      CLOSE daemon_inst_cur;
5363
 
5364
   EXCEPTION
5365
      WHEN OTHERS
5366
      THEN
5367
         raise;
5368
 
5369
   END mark_daemon_inst_completed;
5370
/*-------------------------------------------------------------------------------------------------------*/
5371
   -- This function deletes any old daemon instruction that appears stranded due to a problem that might
5372
   -- have occured during buildtool operation such as might occur if the buildtool or the machine it was
5373
   -- hosted on came down whilst it was processing a daemon instruction.
5374
   PROCEDURE cleanup_stranded_daemon_insts
5375
   IS
5376
   BEGIN
5377
      -- delete records at least two days old
5378
      DELETE FROM daemon_instructions di
5379
      WHERE  (di.scheduled_datetime + 5) <= ora_sysdatetime;
5380
 
5381
   END cleanup_stranded_daemon_insts;
5382
/*-------------------------------------------------------------------------------------------------------*/
5383
  --This function supersedes function, add_daemon. Done for DEVI-046806
5384
   PROCEDURE add_daemon_config (
5385
      nrtagid           IN   NUMBER,
5386
      nbmcon_id         IN   NUMBER,
5387
      sdaemon_mode      IN   VARCHAR2,
5388
      sgbebuildfilter   IN   VARCHAR2
5389
   )
5390
   IS
5391
      nrecordnumber   NUMBER;
5392
      nrconid         NUMBER;
5393
      sdaemonhostname VARCHAR2(50);
5394
      ngbeid         NUMBER;
5395
   BEGIN
5396
      -- Get RCON_ID
5397
      SELECT seq_rcon_id.NEXTVAL
5398
      INTO nrconid
5399
      FROM DUAL;
5400
 
5401
      SELECT COUNT (*)
5402
      INTO nrecordnumber
5403
      FROM release_config
5404
      WHERE rtag_id = nrtagid;
5405
 
5406
      SELECT machine_hostname,gbe_id INTO sdaemonhostname,ngbeid
5407
      FROM build_machine_config
5408
      WHERE bmcon_id = nbmcon_id;
5409
 
5410
      INSERT INTO release_config
5411
             (rcon_id, rtag_id, daemon_hostname, daemon_mode,
5412
                gbe_id, gbe_buildfilter)
5413
      VALUES (nrconid, nrtagid, sdaemonhostname, sdaemon_mode,
5414
                ngbeid, sgbebuildfilter);
5415
 
5416
      -- A newly configured daemon should initially be paused (DEVI-047277)
5417
      INSERT INTO run_level
5418
                  (rcon_id, pause)
5419
           VALUES (nrconid, 2);
5420
 
5421
   END;
5422
 
5423
/*-------------------------------------------------------------------------------------------------------*/
5424
  --This function supersedes function, update_daemon. Done for DEVI-046806
5425
   PROCEDURE update_daemon_config (
5426
      nrconid           IN   NUMBER,
5427
      nbmcon_id         IN   NUMBER,
5428
      sdaemon_mode      IN   VARCHAR2,
5429
      sgbebuildfilter   IN   VARCHAR2
5430
   )
5431
   IS
5432
      sdaemonhostname VARCHAR2(50);
5433
      ngbeid         NUMBER;
5434
   BEGIN
5435
 
5436
      SELECT machine_hostname,gbe_id INTO sdaemonhostname,ngbeid
5437
      FROM build_machine_config
5438
      WHERE bmcon_id = nbmcon_id;
5439
 
5440
      UPDATE release_config
5441
         SET daemon_hostname = sdaemonhostname,
5442
            gbe_id = ngbeid,
5443
            daemon_mode = sdaemon_mode,
5444
            gbe_buildfilter = sgbebuildfilter
5445
      WHERE rcon_id = nrconid;
5446
   END;
5447
 
5448
 
5449
/*-------------------------------------------------------------------------------------------------------*/
5450
   PROCEDURE add_build_machine (
5451
      sdisplay_name          IN   VARCHAR2,
5452
      smachine_hostname      IN   VARCHAR2,
5453
      ngbeid                 IN   NUMBER,
5454
      sdescription           IN   VARCHAR2
5455
   )
5456
   IS
5457
      nrecordnumber   NUMBER;
5458
      nbmcon_id       NUMBER;
5459
   BEGIN
5460
      -- Get BMCON_ID
5461
      SELECT seq_bmcon_id.NEXTVAL INTO nbmcon_id FROM DUAL;
5462
 
5463
      INSERT INTO build_machine_config(bmcon_id, display_name, machine_hostname,gbe_id,description)
5464
            VALUES (nbmcon_id,sdisplay_name,smachine_hostname,ngbeid,sdescription);
5465
 
5466
   EXCEPTION
5467
      WHEN DUP_VAL_ON_INDEX
5468
      THEN
5469
         raise_application_error (-20000,
5470
                                 'Cannot have duplicate machines.'
5471
                                 );
5472
 
5473
   END;
5474
 
5475
/*-------------------------------------------------------------------------------------------------------*/
5476
   PROCEDURE delete_build_machine (sbmcon_id_list IN VARCHAR2)
5477
   IS
5478
   BEGIN
5479
      DELETE FROM build_machine_config
5480
            WHERE bmcon_id IN (
5481
                     SELECT * FROM THE
5482
                              (SELECT CAST
5483
                                          (in_list_number (sbmcon_id_list) AS relmgr_number_tab_t
5484
                                          )
5485
                                 FROM DUAL
5486
                              ));
5487
   END;
5488
 
5489
 
5490
/*-------------------------------------------------------------------------------------------------------*/
5491
   PROCEDURE update_build_machine (
5492
      nbmcon_id              IN   NUMBER,
5493
      sdisplay_name          IN   VARCHAR2,
5494
      smachine_hostname      IN   VARCHAR2,
5495
      ngbeid                 IN   NUMBER,
5496
      sdescription           IN   VARCHAR2
5497
   )
5498
   IS
5499
   BEGIN
5500
      UPDATE build_machine_config
5501
         SET display_name = sdisplay_name,
5502
             machine_hostname = smachine_hostname,
5503
             gbe_id = ngbeid,
5504
             description = sdescription
5505
      WHERE bmcon_id = nbmcon_id;
5506
   EXCEPTION
5507
      WHEN DUP_VAL_ON_INDEX
5508
      THEN
5509
         raise_application_error (-20000,
5510
                                 'Cannot have duplicate machines.'
5511
                                 );
5512
   END;
5513
END pk_buildapi;
4040 dpurdie 5514
 
1374 dpurdie 5515
/
1373 dpurdie 5516
 
4040 dpurdie 5517
/
5518
--------------------------------------------------------
5519
--  DDL for Package Body PK_ENVIRONMENT
5520
--------------------------------------------------------
5521
 
1373 dpurdie 5522
  CREATE OR REPLACE PACKAGE BODY "PK_ENVIRONMENT" 
5523
IS
5524
 
5525
   /*-------------------------------------------------------------------------------------------------------*/
5526
   FUNCTION select_environment_area (cdlock IN package_versions.dlocked%TYPE)
5527
     RETURN NUMBER
5528
   IS
5529
   BEGIN
5530
      /*
5531
     || N - unlocked
5532
     || Y - release and locked
5533
     || P - penging approval
5534
     || A - approved package ready for auto-build
5535
     */
5536
     IF cdlock = 'N' OR cdlock = 'R'
5537
     THEN
5538
       -- WORK IN PROGRESS --
5539
       RETURN 0;
5540
     ELSIF cdlock = 'P' OR cdlock = 'A'
5541
     THEN
5542
       -- PENDING --
5543
       RETURN 1;
5544
     ELSIF cdlock = 'Y'
5545
     THEN
5546
       -- RELEASED --
5547
       RETURN 2;
5548
     ELSE
5549
       -- NOT FOUND --
5550
       raise_application_error
5551
                   (-20000,
5552
                      'Cannot decide where to place package. [cDlock='
5553
                    || cdlock
5554
                    || ']'
5555
                   );
5556
     END IF;
5557
   END;
5558
 
5559
/*-------------------------------------------------------------------------------------------------------*/
5560
   FUNCTION get_package_area (pvid IN NUMBER, rtagid IN NUMBER)
5561
     RETURN NUMBER
5562
   IS
5563
     envtab   NUMBER         := -1;
5564
 
5565
     CURSOR curarea
5566
     IS
5567
       SELECT 2 AS envtab
5568
         FROM release_content rc
5569
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
5570
       UNION
5571
       SELECT 0 AS envtab
5572
         FROM work_in_progress wip
5573
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
5574
       UNION
5575
       SELECT 1 AS envtab
5576
         FROM planned pl
5577
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
5578
 
5579
     recarea   curarea%ROWTYPE;
5580
   BEGIN
5581
     OPEN curarea;
5582
 
5583
     FETCH curarea
5584
      INTO recarea;
5585
 
5586
     IF curarea%FOUND
5587
     THEN
5588
       envtab := recarea.envtab;
5589
     END IF;
5590
 
5591
     CLOSE curarea;
5592
 
5593
     RETURN envtab;
5594
   END;
5595
 
5596
/*-------------------------------------------------------------------------------------------------------*/
5597
   FUNCTION get_view_location (pvid IN NUMBER, rtagid IN NUMBER)
5598
     RETURN NUMBER
5599
   IS
5600
     ispatch   package_versions.dlocked%TYPE;
5601
     viewid   NUMBER                    := -1;
5602
 
5603
     CURSOR curview
5604
     IS
5605
       SELECT rc.base_view_id AS view_id
5606
         FROM release_content rc
5607
        WHERE rc.rtag_id = rtagid AND rc.pv_id = pvid
5608
       UNION
5609
       SELECT wip.view_id AS view_id
5610
         FROM work_in_progress wip
5611
        WHERE wip.rtag_id = rtagid AND wip.pv_id = pvid
5612
       UNION
5613
       SELECT pl.view_id AS view_id
5614
         FROM planned pl
5615
        WHERE pl.rtag_id = rtagid AND pl.pv_id = pvid;
5616
 
5617
     recview   curview%ROWTYPE;
5618
   BEGIN
5619
     -- Get dlock state
5620
     SELECT pv.is_patch
5621
      INTO ispatch
5622
      FROM package_versions pv
5623
      WHERE pv.pv_id = pvid;
5624
 
5625
     -- Decide which view id should package go under.
5626
     IF (ispatch != 'Y') OR (ispatch IS NULL)
5627
     THEN
5628
       -- Get VIEW ID of Package
5629
       OPEN curview;
5630
 
5631
       FETCH curview
5632
        INTO recview;
5633
 
5634
       IF curview%FOUND
5635
       THEN
5636
         viewid := recview.view_id;
5637
       ELSE
5638
         raise_application_error
5639
            (-20000,
5640
               'Cannot find view_id to proceed. [PvId='
5641
            || pvid
5642
            || ']. The current version may not exist in the release anymore.'
5643
            );
5644
       END IF;
5645
 
5646
       CLOSE curview;
5647
     ELSE
5648
       -- Get VIEW ID of Patch (view id of parent package)
5649
       SELECT rc.base_view_id
5650
         INTO viewid
5651
         FROM release_content rc, package_patches ppv
5652
        WHERE rc.rtag_id = rtagid
5653
         AND rc.pv_id = ppv.pv_id
5654
         AND ppv.patch_id = pvid;
5655
     END IF;
5656
 
5657
     RETURN viewid;
5658
   END;
5659
 
5660
/*-------------------------------------------------------------------------------------------------------*/
5661
   PROCEDURE add_package (
5662
     pvid    IN   NUMBER,
5663
     viewid   IN   NUMBER,
5664
     rtagid   IN   NUMBER,
5665
     userid   IN   NUMBER
5666
   )
5667
   IS
5668
     dlocked   package_versions.dlocked%TYPE;
5669
     envtab   NUMBER;
5670
   BEGIN
5671
     IF can_edit_pkg_in_project (pvid, rtagid) = 1
5672
     THEN
5673
       -- Get dlock state
5674
       SELECT pv.dlocked
5675
         INTO dlocked
5676
         FROM package_versions pv
5677
        WHERE pv.pv_id = pvid;
5678
 
5679
       -- Get which area should go under
5680
       envtab := select_environment_area (dlocked);
5681
       -- Log
5682
       log_action (pvid, 'action', userid, 'Start of Package Add...');
5683
 
5684
       -- Remove Package
5685
       IF envtab = 0
5686
       THEN
5687
         -- WORK IN PROGRESS --
5688
         pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
5689
       ELSIF envtab = 1
5690
       THEN
5691
         -- PENDING --
5692
         pk_planned.add_package (pvid, viewid, rtagid, userid);
5693
       ELSIF envtab = 2
5694
       THEN
5695
         -- RELEASED --
5696
         -- NOTE: this package will be replaced with matching package
5697
         pk_release.add_package (pvid, viewid, rtagid, userid);
5698
         -- Now do post Release Actions
5699
         pk_release.run_post_actions (pvid, rtagid);
5700
       END IF;
5701
 
5702
       -- Log
5703
       log_action (pvid, 'action', userid, 'End of Package Add...');
5704
     END IF;
5705
   END;
5706
 
5707
/*-------------------------------------------------------------------------------------------------------*/
5708
   PROCEDURE add_package_bulk (
5709
     pvidlist   IN   VARCHAR2,
5710
     viewid    IN   NUMBER,
5711
     rtagid    IN   NUMBER,
5712
     userid    IN   NUMBER
5713
   )
5714
   IS
5715
     nidcollector   relmgr_number_tab_t         := relmgr_number_tab_t
5716
                                                        ();
5717
     dlocked      package_versions.dlocked%TYPE;
5718
     pvid         NUMBER;
5719
     envtab       NUMBER;
5720
   BEGIN
5721
     /*--------------- Business Rules Here -------------------*/
5722
     IF (pvidlist IS NULL)
5723
     THEN
5724
       raise_application_error (-20000,
5725
                          'Please select at least one package.'
5726
                         );
5727
     END IF;
5728
 
5729
/*-------------------------------------------------------*/
5730
     nidcollector := in_list_number (pvidlist);
5731
 
5732
     FOR i IN 1 .. nidcollector.COUNT
5733
     LOOP
5734
       pvid := nidcollector (i);
5735
       add_package (pvid, viewid, rtagid, userid);
5736
     END LOOP;
5737
   END;
5738
 
5739
/*-------------------------------------------------------------------------------------------------------*/
5740
   PROCEDURE replace_package (
5741
     newpvid  IN   NUMBER,
5742
     oldpvid  IN   NUMBER,
5743
     rtagid   IN   NUMBER,
5744
     userid   IN   NUMBER
5745
   )
5746
   IS
5747
     dlocked      package_versions.dlocked%TYPE;
5748
     viewid       NUMBER;
5749
     envtab       NUMBER;
5750
     ROWCOUNT     NUMBER;
5751
     creleasemode CHAR (1);
5752
     npkgid       NUMBER;
5753
   BEGIN
5754
     /*--------------- Business Rules Here -------------------*/
5755
     -- Check if oldPvId exists. It could have been removed
5756
     SELECT COUNT (pv.pv_id)
5757
       INTO ROWCOUNT
5758
       FROM package_versions pv
5759
      WHERE pv.pv_id = oldpvid;
5760
 
5761
/*-------------------------------------------------------*/
5762
 
5763
     /* This procedure is usually used by "History" option in Release Manager */
5764
 
5765
     -- Get dlock state
5766
     SELECT pv.dlocked
5767
       INTO dlocked
5768
       FROM package_versions pv
5769
      WHERE pv.pv_id = newpvid;
5770
 
5771
     -- Get VIEW_ID ---
5772
     IF ROWCOUNT = 1
5773
     THEN
5774
       viewid := get_view_location (oldpvid, rtagid);
5775
     ELSE
5776
       -- Set ViewID to default
5777
       viewid := 7;
5778
     END IF;
5779
 
5780
     -- Get which area should go under
5781
     envtab := select_environment_area (dlocked);
5782
     -- Log
5783
     log_action (oldpvid, 'action', userid, 'Start of Package Replace...');
5784
 
5785
     -- Replace package
5786
     IF envtab = 0
5787
     THEN
5788
       -- WORK IN PROGRESS --
5789
 
5790
       -- Delete old package
5791
       pk_work_in_progress.remove_package (oldpvid, rtagid, userid);
5792
 
5793
       -- Add new package
5794
       pk_work_in_progress.add_package (newpvid, viewid, rtagid, userid);
5795
     ELSIF envtab = 1
5796
     THEN
5797
       -- PENDING --
5798
 
5799
       -- Delete old package
5800
       pk_planned.remove_package (oldpvid, rtagid, userid);
5801
 
5802
       -- Add new package
5803
       pk_planned.add_package (newpvid, viewid, rtagid, userid);
5804
     ELSIF envtab = 2
5805
     THEN
5806
       -- RELEASED --
5807
 
5808
       -- Delete old package
5809
       pk_release.remove_package (oldpvid, rtagid, userid);
5810
       -- Add new package
5811
       pk_release.add_package (newpvid, viewid, rtagid, userid);
5812
 
5813
       -- update the pegging table
5814
       UPDATE PEGGED_VERSIONS SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
5815
 
5816
       -- update the advisory ripple table
5817
       UPDATE ADVISORY_RIPPLE SET pv_id = newpvid WHERE rtag_id = rtagid AND pv_id = oldpvid;
5818
 
5819
       -- Now do post Release Actions
5820
       pk_release.run_post_actions (newpvid, rtagid);
5821
     END IF;
5822
 
5823
     -- Log
5824
     log_action (oldpvid, 'action', userid, 'End of Package Replace...');
5825
   END;
5826
 
5827
/*-------------------------------------------------------------------------------------------------------*/
5828
   FUNCTION remove_package (
5829
     pvid        IN   NUMBER,
5830
     rtagid      IN   NUMBER,
5831
     userid      IN   NUMBER,
5832
     forceremove IN   CHAR
5833
   )
5834
     RETURN NUMBER
5835
   IS
5836
     envtab      NUMBER;
5837
     isused      BOOLEAN;
5838
     recordcount   NUMBER;
5839
   BEGIN
5840
/*--------------- Business Rules Here -------------------*/
5841
/*-------------------------------------------------------*/
5842
 
5843
     -- Find location of package
5844
     envtab := get_package_area (pvid, rtagid);
5845
 
5846
     -- Remove Package
5847
     IF envtab = 0
5848
     THEN
5849
       -- WORK IN PROGRESS --
5850
       -- Delete package
5851
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
5852
 
5853
       RETURN 0;
5854
     ELSIF envtab = 1
5855
     THEN
5856
       -- PENDING --
5857
       -- Delete package
5858
       pk_planned.remove_package (pvid, rtagid, userid);
5859
 
5860
       RETURN 0;
5861
     ELSIF envtab = 2
5862
     THEN
5863
       -- RELEASED --
5864
 
5865
       -- Check if is used by other packages
5866
       isused := TRUE;
5867
 
5868
       IF forceremove = 'N'
5869
       THEN
5870
         SELECT COUNT (pv.pv_id)
5871
           INTO recordcount
5872
           FROM (SELECT dpv.pkg_id, dpv.v_ext
5873
                 FROM release_content rc,
5874
                     package_dependencies dep,
5875
                     package_versions dpv
5876
                WHERE rc.rtag_id = rtagid
5877
                  AND rc.pv_id = dep.pv_id
5878
                  AND dep.dpv_id = dpv.pv_id) rdep,
5879
               package_versions pv
5880
          WHERE pv.pkg_id = rdep.pkg_id
5881
            AND NVL (pv.v_ext, '|LINK_A_NULL|') =
5882
                                  NVL (rdep.v_ext, '|LINK_A_NULL|')
5883
            AND pv.pv_id = pvid;
5884
 
5885
         IF recordcount > 0
5886
         THEN
5887
            RETURN 1;               -- Return 1 as package being used
5888
         ELSE
5889
            isused := FALSE;
5890
         END IF;
5891
       END IF;
5892
 
5893
       IF forceremove = 'Y' OR NOT isused
5894
       THEN
5895
         -- Delete old package
5896
         pk_release.remove_package (pvid, rtagid, userid);
5897
 
5898
         -- Delete old package's pegging info
5899
         DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = rtagid AND pegv.PV_ID = pvid;
5900
 
5901
         -- Delete old package's advisory ripple info
5902
         DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = rtagid AND avr.PV_ID = pvid;
5903
 
5904
         -- Now do post Release Actions
5905
         pk_release.run_post_actions (pvid, rtagid);
5906
         RETURN 0;
5907
       END IF;
5908
     END IF;
5909
   END;
5910
 
5911
/*-------------------------------------------------------------------------------------------------------*/
5912
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
5913
 
5914
   PROCEDURE get_environment_items (
5915
     viewtype         IN      NUMBER,
5916
     userid           IN      NUMBER,
5917
     rtagid           IN      NUMBER,
5918
     sviewidshowlist  IN      VARCHAR2,
5919
     ntruerecordcount OUT     NUMBER,
5920
     recordset        OUT     typecur
5921
   )
5922
   IS
5923
   BEGIN
5924
     -- Get true record count because views can give false count
5925
     SELECT COUNT (pl.pv_id)
5926
      INTO ntruerecordcount
5927
      FROM environment_view pl
5928
      WHERE pl.rtag_id = rtagid;
5929
 
5930
     IF viewtype = 1
5931
     THEN
5932
       /*--- GUEST VIEW ---*/
5933
       OPEN recordset FOR
5934
         SELECT   *
5935
            FROM (
5936
                 /* Base Views collapsed */
5937
                 SELECT DISTINCT vi.view_id, vi.view_name,
5938
                             TO_NUMBER (NULL) AS pkg_state,
5939
                             TO_NUMBER (NULL) AS deprecated_state,
5940
                             TO_NUMBER (NULL) AS pv_id,
5941
                             NULL AS pkg_name, NULL AS pkg_version,
5942
                             NULL AS dlocked, NULL AS pv_description,
5943
                             rel.operation
5944
                         FROM environment_view rel, views vi
5945
                        WHERE rel.view_id = vi.view_id
5946
                          AND rtag_id = rtagid
5947
                          AND rel.view_id NOT IN (
5948
                               SELECT *
5949
                                 FROM THE
5950
                                       (SELECT CAST
5951
                                               (in_list_number
5952
                                                  (sviewidshowlist
5953
                                                  ) AS relmgr_number_tab_t
5954
                                               )
5955
                                         FROM DUAL
5956
                                       ))
5957
                 UNION
5958
                 /* Base Views expanded */
5959
                 SELECT vi.view_id, vi.view_name,
5960
                      DECODE (rel.pkg_state,
5961
                            NULL, 0,
5962
                            rel.pkg_state
5963
                           ) AS pkg_state,
5964
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
5965
                      pv.pkg_version, pv.dlocked, pv.pv_description,
5966
                      rel.operation
5967
                  FROM environment_view rel,
5968
                      PACKAGES pkg,
5969
                      package_versions pv,
5970
                      views vi
5971
                  WHERE pv.pkg_id = pkg.pkg_id
5972
                   AND rel.pv_id = pv.pv_id
5973
                   AND rel.view_id = vi.view_id
5974
                   AND rel.view_id IN (
5975
                        SELECT *
5976
                          FROM THE
5977
                                (SELECT CAST
5978
                                        (in_list_number
5979
                                               (sviewidshowlist) AS relmgr_number_tab_t
5980
                                        )
5981
                                  FROM DUAL
5982
                                ))
5983
                   AND rtag_id = rtagid) ord
5984
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
5985
     ELSIF viewtype = 2
5986
     THEN
5987
       /*--- PERSONAL VIEW ---*/
5988
       OPEN recordset FOR
5989
         SELECT   *
5990
            FROM (
5991
                 /* Base Views collapsed */
5992
                 SELECT DISTINCT vi.view_id, vi.view_name,
5993
                             TO_NUMBER (NULL) AS pkg_state,
5994
                             TO_NUMBER (NULL) AS deprecated_state,
5995
                             TO_NUMBER (NULL) AS pv_id,
5996
                             NULL AS pkg_name, NULL AS pkg_version,
5997
                             NULL AS dlocked, NULL AS pv_description,
5998
                             rel.operation
5999
                         FROM environment_view rel,
6000
                             view_settings vs,
6001
                             views vi
6002
                        WHERE rel.view_id = vi.view_id
6003
                          AND vs.view_id = rel.view_id
6004
                          AND vs.user_id = userid
6005
                          AND rtag_id = rtagid
6006
                          AND rel.view_id NOT IN (
6007
                               SELECT *
6008
                                 FROM THE
6009
                                       (SELECT CAST
6010
                                               (in_list_number
6011
                                                  (sviewidshowlist
6012
                                                  ) AS relmgr_number_tab_t
6013
                                               )
6014
                                         FROM DUAL
6015
                                       ))
6016
                 UNION
6017
                 /* Base Views expanded */
6018
                 SELECT vi.view_id, vi.view_name,
6019
                      DECODE (rel.pkg_state,
6020
                            NULL, 0,
6021
                            rel.pkg_state
6022
                           ) AS pkg_state,
6023
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6024
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6025
                      rel.operation
6026
                  FROM environment_view rel,
6027
                      PACKAGES pkg,
6028
                      package_versions pv,
6029
                      views vi,
6030
                      view_settings vs
6031
                  WHERE pv.pkg_id = pkg.pkg_id
6032
                   AND rel.pv_id = pv.pv_id
6033
                   AND rel.view_id = vi.view_id
6034
                   AND vs.view_id = vi.view_id
6035
                   AND vs.user_id = userid
6036
                   AND rel.view_id IN (
6037
                        SELECT *
6038
                          FROM THE
6039
                                (SELECT CAST
6040
                                        (in_list_number
6041
                                               (sviewidshowlist) AS relmgr_number_tab_t
6042
                                        )
6043
                                  FROM DUAL
6044
                                ))
6045
                   AND rtag_id = rtagid
6046
                 UNION
6047
                 /* Private Views collapsed */
6048
                 SELECT vi.view_id, vi.view_name,
6049
                      TO_NUMBER (NULL) AS pkg_state,
6050
                      TO_NUMBER (NULL) AS deprecated_state,
6051
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6052
                      NULL AS pkg_version, NULL AS dlocked,
6053
                      NULL AS pv_description,
6054
                      rel.operation
6055
                  FROM view_settings vs,
6056
                      view_def vd,
6057
                      views vi,
6058
                      environment_view rel,
6059
                      package_versions pv
6060
                  WHERE vs.view_id = vi.view_id
6061
                   AND rel.pv_id = pv.pv_id
6062
                   AND vd.pkg_id = pv.pkg_id
6063
                   AND vd.view_id = vi.view_id
6064
                   AND vi.base_view = 'N'
6065
                   AND rel.rtag_id = rtagid
6066
                   AND vs.user_id = userid
6067
                   AND vi.view_id NOT IN (
6068
                        SELECT *
6069
                          FROM THE
6070
                                (SELECT CAST
6071
                                        (in_list_number
6072
                                               (sviewidshowlist) AS relmgr_number_tab_t
6073
                                        )
6074
                                  FROM DUAL
6075
                                ))
6076
                 UNION
6077
                 /* Private Views expanded */
6078
                 SELECT vi.view_id, vi.view_name,
6079
                      DECODE (rel.pkg_state,
6080
                            NULL, 0,
6081
                            rel.pkg_state
6082
                           ) AS pkg_state,
6083
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6084
                      pv.pkg_version, pv.dlocked, pv.pv_description,
6085
                      rel.operation
6086
                  FROM users usr,
6087
                      view_settings vs,
6088
                      view_def vd,
6089
                      views vi,
6090
                      environment_view rel,
6091
                      PACKAGES pkg,
6092
                      package_versions pv
6093
                  WHERE vs.user_id = usr.user_id
6094
                   AND vs.view_id = vi.view_id
6095
                   AND vd.view_id = vi.view_id
6096
                   AND pv.pkg_id = pkg.pkg_id
6097
                   AND rel.pv_id = pv.pv_id
6098
                   AND rel.rtag_id = rtagid
6099
                   AND vd.pkg_id = pkg.pkg_id
6100
                   AND vi.base_view = 'N'
6101
                   AND vi.view_id IN (
6102
                        SELECT *
6103
                          FROM THE
6104
                                (SELECT CAST
6105
                                        (in_list_number
6106
                                               (sviewidshowlist) AS relmgr_number_tab_t
6107
                                        )
6108
                                  FROM DUAL
6109
                                ))
6110
                   AND usr.user_id = userid) ord
6111
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6112
     END IF;
6113
   END;
6114
 
6115
/*-------------------------------------------------------------------------------------------------------*/
6116
   PROCEDURE get_released_items (
6117
     viewtype         IN      NUMBER,
6118
     userid           IN      NUMBER,
6119
     rtagid           IN      NUMBER,
6120
     sviewidshowlist  IN      VARCHAR2,
6121
     ntruerecordcount OUT     NUMBER,
6122
     recordset        OUT     typecur
6123
   )
6124
   IS
6125
   BEGIN
6126
     -- Get true record count because views can give false count
6127
     SELECT COUNT (rc.pv_id)
6128
      INTO ntruerecordcount
6129
      FROM release_content rc
6130
      WHERE rc.rtag_id = rtagid;
6131
 
6132
     IF viewtype = 1
6133
     THEN
6134
       /*--- GUEST VIEW ---*/
6135
       OPEN recordset FOR
6136
         SELECT   *
6137
            FROM (
6138
                 /* Base Views collapsed */
6139
                 SELECT DISTINCT vi.view_id, vi.view_name,
6140
                             TO_NUMBER (NULL) AS pkg_state,
6141
                             TO_NUMBER (NULL) AS deprecated_state,
6142
                             TO_NUMBER (NULL) AS pv_id,
6143
                             NULL AS pkg_name, NULL AS pkg_version,
6144
                             NULL AS dlocked, NULL AS pv_description
6145
                         FROM release_content rel, views vi
6146
                        WHERE rel.base_view_id = vi.view_id
6147
                          AND rtag_id = rtagid
6148
                          AND rel.base_view_id NOT IN (
6149
                               SELECT *
6150
                                 FROM THE
6151
                                       (SELECT CAST
6152
                                               (in_list_number
6153
                                                  (sviewidshowlist
6154
                                                  ) AS relmgr_number_tab_t
6155
                                               )
6156
                                         FROM DUAL
6157
                                       ))
6158
                 UNION
6159
                 /* Base Views expanded */
6160
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6161
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6162
                      pv.pkg_version, pv.dlocked, pv.pv_description
6163
                  FROM release_content rel,
6164
                      PACKAGES pkg,
6165
                      package_versions pv,
6166
                      views vi
6167
                  WHERE pv.pkg_id = pkg.pkg_id
6168
                   AND rel.pv_id = pv.pv_id
6169
                   AND rel.base_view_id = vi.view_id
6170
                   AND rel.base_view_id IN (
6171
                        SELECT *
6172
                          FROM THE
6173
                                (SELECT CAST
6174
                                        (in_list_number
6175
                                               (sviewidshowlist) AS relmgr_number_tab_t
6176
                                        )
6177
                                  FROM DUAL
6178
                                ))
6179
                   AND rtag_id = rtagid) ord
6180
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6181
     ELSIF viewtype = 2
6182
     THEN
6183
       /*--- PERSONAL VIEW ---*/
6184
       OPEN recordset FOR
6185
         SELECT   *
6186
            FROM (
6187
                 /* Base Views collapsed */
6188
                 SELECT DISTINCT vi.view_id, vi.view_name,
6189
                             TO_NUMBER (NULL) AS pkg_state,
6190
                             TO_NUMBER (NULL) AS deprecated_state,
6191
                             TO_NUMBER (NULL) AS pv_id,
6192
                             NULL AS pkg_name, NULL AS pkg_version,
6193
                             NULL AS dlocked, NULL AS pv_description
6194
                         FROM release_content rel,
6195
                             view_settings vs,
6196
                             views vi
6197
                        WHERE rel.base_view_id = vi.view_id
6198
                          AND vs.view_id = rel.base_view_id
6199
                          AND vs.user_id = userid
6200
                          AND rtag_id = rtagid
6201
                          AND rel.base_view_id NOT IN (
6202
                               SELECT *
6203
                                 FROM THE
6204
                                       (SELECT CAST
6205
                                               (in_list_number
6206
                                                  (sviewidshowlist
6207
                                                  ) AS relmgr_number_tab_t
6208
                                               )
6209
                                         FROM DUAL
6210
                                       ))
6211
                 UNION
6212
                 /* Base Views expanded */
6213
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6214
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6215
                      pv.pkg_version, pv.dlocked, pv.pv_description
6216
                  FROM release_content rel,
6217
                      PACKAGES pkg,
6218
                      package_versions pv,
6219
                      views vi,
6220
                      view_settings vs
6221
                  WHERE pv.pkg_id = pkg.pkg_id
6222
                   AND rel.pv_id = pv.pv_id
6223
                   AND rel.base_view_id = vi.view_id
6224
                   AND vs.view_id = vi.view_id
6225
                   AND vs.user_id = userid
6226
                   AND rel.base_view_id IN (
6227
                        SELECT *
6228
                          FROM THE
6229
                                (SELECT CAST
6230
                                        (in_list_number
6231
                                               (sviewidshowlist) AS relmgr_number_tab_t
6232
                                        )
6233
                                  FROM DUAL
6234
                                ))
6235
                   AND rtag_id = rtagid
6236
                 UNION
6237
                 /* Private Views collapsed */
6238
                 SELECT vi.view_id, vi.view_name,
6239
                      TO_NUMBER (NULL) AS pkg_state,
6240
                      TO_NUMBER (NULL) AS deprecated_state,
6241
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6242
                      NULL AS pkg_version, NULL AS dlocked,
6243
                      NULL AS pv_description
6244
                  FROM view_settings vs,
6245
                      view_def vd,
6246
                      views vi,
6247
                      release_content rel,
6248
                      package_versions pv
6249
                  WHERE vs.view_id = vi.view_id
6250
                   AND rel.pv_id = pv.pv_id
6251
                   AND vd.pkg_id = pv.pkg_id
6252
                   AND vd.view_id = vi.view_id
6253
                   AND vi.base_view = 'N'
6254
                   AND rel.rtag_id = rtagid
6255
                   AND vs.user_id = userid
6256
                   AND vi.view_id NOT IN (
6257
                        SELECT *
6258
                          FROM THE
6259
                                (SELECT CAST
6260
                                        (in_list_number
6261
                                               (sviewidshowlist) AS relmgr_number_tab_t
6262
                                        )
6263
                                  FROM DUAL
6264
                                ))
6265
                 UNION
6266
                 /* Private Views expanded */
6267
                 SELECT vi.view_id, vi.view_name, rel.pkg_state,
6268
                      rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6269
                      pv.pkg_version, pv.dlocked, pv.pv_description
6270
                  FROM users usr,
6271
                      view_settings vs,
6272
                      view_def vd,
6273
                      views vi,
6274
                      release_content rel,
6275
                      PACKAGES pkg,
6276
                      package_versions pv
6277
                  WHERE vs.user_id = usr.user_id
6278
                   AND vs.view_id = vi.view_id
6279
                   AND vd.view_id = vi.view_id
6280
                   AND pv.pkg_id = pkg.pkg_id
6281
                   AND rel.pv_id = pv.pv_id
6282
                   AND rel.rtag_id = rtagid
6283
                   AND vd.pkg_id = pkg.pkg_id
6284
                   AND vi.base_view = 'N'
6285
                   AND vi.view_id IN (
6286
                        SELECT *
6287
                          FROM THE
6288
                                (SELECT CAST
6289
                                        (in_list_number
6290
                                               (sviewidshowlist) AS relmgr_number_tab_t
6291
                                        )
6292
                                  FROM DUAL
6293
                                ))
6294
                   AND usr.user_id = userid) ord
6295
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6296
     END IF;
6297
   END;
6298
 
6299
/*-------------------------------------------------------------------------------------------------------*/
6300
   PROCEDURE get_work_in_progress_items (
6301
     viewtype         IN      NUMBER,
6302
     userid           IN      NUMBER,
6303
     rtagid           IN      NUMBER,
6304
     sviewidshowlist  IN      VARCHAR2,
6305
     ntruerecordcount OUT     NUMBER,
6306
     recordset        OUT     typecur
6307
   )
6308
   IS
6309
   BEGIN
6310
     -- Get true record count because views can give false count
6311
     SELECT COUNT (wip.pv_id)
6312
      INTO ntruerecordcount
6313
      FROM work_in_progress wip
6314
      WHERE wip.rtag_id = rtagid;
6315
 
6316
     IF viewtype = 1
6317
     THEN
6318
       /*--- GUEST VIEW ---*/
6319
       OPEN recordset FOR
6320
         SELECT   *
6321
            FROM (
6322
                 /* Base Views collapsed */
6323
                 SELECT DISTINCT vi.view_id, vi.view_name,
6324
                             TO_NUMBER (NULL) AS pkg_state,
6325
                             TO_NUMBER (NULL) AS deprecated_state,
6326
                             TO_NUMBER (NULL) AS pv_id,
6327
                             NULL AS pkg_name, NULL AS pkg_version,
6328
                             NULL AS dlocked, NULL AS pv_description
6329
                         FROM work_in_progress rel, views vi
6330
                        WHERE rel.view_id = vi.view_id
6331
                          AND rtag_id = rtagid
6332
                          AND rel.view_id NOT IN (
6333
                               SELECT *
6334
                                 FROM THE
6335
                                       (SELECT CAST
6336
                                               (in_list_number
6337
                                                  (sviewidshowlist
6338
                                                  ) AS relmgr_number_tab_t
6339
                                               )
6340
                                         FROM DUAL
6341
                                       ))
6342
                 UNION
6343
                 /* Base Views expanded */
6344
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6345
 
6346
                      --rel.pkg_state,
6347
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6348
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6349
                      pv.pv_description
6350
                  FROM work_in_progress rel,
6351
                      PACKAGES pkg,
6352
                      package_versions pv,
6353
                      views vi
6354
                  WHERE pv.pkg_id = pkg.pkg_id
6355
                   AND rel.pv_id = pv.pv_id
6356
                   AND rel.view_id = vi.view_id
6357
                   AND rel.view_id IN (
6358
                        SELECT *
6359
                          FROM THE
6360
                                (SELECT CAST
6361
                                        (in_list_number
6362
                                               (sviewidshowlist) AS relmgr_number_tab_t
6363
                                        )
6364
                                  FROM DUAL
6365
                                ))
6366
                   AND rtag_id = rtagid) ord
6367
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6368
     ELSIF viewtype = 2
6369
     THEN
6370
       /*--- PERSONAL VIEW ---*/
6371
       OPEN recordset FOR
6372
         SELECT   *
6373
            FROM (
6374
                 /* Base Views collapsed */
6375
                 SELECT DISTINCT vi.view_id, vi.view_name,
6376
                             TO_NUMBER (NULL) AS pkg_state,
6377
                             TO_NUMBER (NULL) AS deprecated_state,
6378
                             TO_NUMBER (NULL) AS pv_id,
6379
                             NULL AS pkg_name, NULL AS pkg_version,
6380
                             NULL AS dlocked, NULL AS pv_description
6381
                         FROM work_in_progress rel,
6382
                             view_settings vs,
6383
                             views vi
6384
                        WHERE rel.view_id = vi.view_id
6385
                          AND vs.view_id = rel.view_id
6386
                          AND vs.user_id = userid
6387
                          AND rtag_id = rtagid
6388
                          AND rel.view_id NOT IN (
6389
                               SELECT *
6390
                                 FROM THE
6391
                                       (SELECT CAST
6392
                                               (in_list_number
6393
                                                  (sviewidshowlist
6394
                                                  ) AS relmgr_number_tab_t
6395
                                               )
6396
                                         FROM DUAL
6397
                                       ))
6398
                 UNION
6399
                 /* Base Views expanded */
6400
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6401
 
6402
                      --rel.pkg_state,
6403
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6404
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6405
                      pv.pv_description
6406
                  FROM work_in_progress rel,
6407
                      PACKAGES pkg,
6408
                      package_versions pv,
6409
                      views vi,
6410
                      view_settings vs
6411
                  WHERE pv.pkg_id = pkg.pkg_id
6412
                   AND rel.pv_id = pv.pv_id
6413
                   AND rel.view_id = vi.view_id
6414
                   AND vs.view_id = vi.view_id
6415
                   AND vs.user_id = userid
6416
                   AND rel.view_id IN (
6417
                        SELECT *
6418
                          FROM THE
6419
                                (SELECT CAST
6420
                                        (in_list_number
6421
                                               (sviewidshowlist) AS relmgr_number_tab_t
6422
                                        )
6423
                                  FROM DUAL
6424
                                ))
6425
                   AND rtag_id = rtagid
6426
                 UNION
6427
                 /* Private Views collapsed */
6428
                 SELECT vi.view_id, vi.view_name,
6429
                      TO_NUMBER (NULL) AS pkg_state,
6430
                      TO_NUMBER (NULL) AS deprecated_state,
6431
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6432
                      NULL AS pkg_version, NULL AS dlocked,
6433
                      NULL AS pv_description
6434
                  FROM view_settings vs,
6435
                      view_def vd,
6436
                      views vi,
6437
                      work_in_progress rel,
6438
                      package_versions pv
6439
                  WHERE vs.view_id = vi.view_id
6440
                   AND rel.pv_id = pv.pv_id
6441
                   AND vd.pkg_id = pv.pkg_id
6442
                   AND vd.view_id = vi.view_id
6443
                   AND vi.base_view = 'N'
6444
                   AND rel.rtag_id = rtagid
6445
                   AND vs.user_id = userid
6446
                   AND vi.view_id NOT IN (
6447
                        SELECT *
6448
                          FROM THE
6449
                                (SELECT CAST
6450
                                        (in_list_number
6451
                                               (sviewidshowlist) AS relmgr_number_tab_t
6452
                                        )
6453
                                  FROM DUAL
6454
                                ))
6455
                 UNION
6456
                 /* Private Views expanded */
6457
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6458
 
6459
                      --rel.pkg_state,
6460
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6461
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6462
                      pv.pv_description
6463
                  FROM users usr,
6464
                      view_settings vs,
6465
                      view_def vd,
6466
                      views vi,
6467
                      work_in_progress rel,
6468
                      PACKAGES pkg,
6469
                      package_versions pv
6470
                  WHERE vs.user_id = usr.user_id
6471
                   AND vs.view_id = vi.view_id
6472
                   AND vd.view_id = vi.view_id
6473
                   AND pv.pkg_id = pkg.pkg_id
6474
                   AND rel.pv_id = pv.pv_id
6475
                   AND rel.rtag_id = rtagid
6476
                   AND vd.pkg_id = pkg.pkg_id
6477
                   AND vi.base_view = 'N'
6478
                   AND vi.view_id IN (
6479
                        SELECT *
6480
                          FROM THE
6481
                                (SELECT CAST
6482
                                        (in_list_number
6483
                                               (sviewidshowlist) AS relmgr_number_tab_t
6484
                                        )
6485
                                  FROM DUAL
6486
                                ))
6487
                   AND usr.user_id = userid) ord
6488
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6489
     END IF;
6490
   END;
6491
 
6492
/*-------------------------------------------------------------------------------------------------------*/
6493
   -- DEVI-45275 added the return of the new "operation" column in the recordset.
6494
 
6495
   PROCEDURE get_pending_items (
6496
     viewtype         IN      NUMBER,
6497
     userid           IN      NUMBER,
6498
     rtagid           IN      NUMBER,
6499
     sviewidshowlist  IN      VARCHAR2,
6500
     ntruerecordcount OUT     NUMBER,
6501
     recordset        OUT     typecur
6502
   )
6503
   IS
6504
   BEGIN
6505
     -- Get true record count because views can give false count
6506
     SELECT COUNT (pl.pv_id)
6507
      INTO ntruerecordcount
6508
      FROM planned pl
6509
      WHERE pl.rtag_id = rtagid;
6510
 
6511
     IF viewtype = 1
6512
     THEN
6513
       /*--- GUEST VIEW ---*/
6514
       OPEN recordset FOR
6515
         SELECT   *
6516
            FROM (
6517
                 /* Base Views collapsed */
6518
                 SELECT DISTINCT vi.view_id, vi.view_name,
6519
                             TO_NUMBER (NULL) AS pkg_state,
6520
                             TO_NUMBER (NULL) AS deprecated_state,
6521
                             TO_NUMBER (NULL) AS pv_id,
6522
                             NULL AS pkg_name, NULL AS pkg_version,
6523
                             NULL AS dlocked, NULL AS pv_description,
6524
                             rel.operation
6525
                         FROM planned rel, views vi
6526
                        WHERE rel.view_id = vi.view_id
6527
                          AND rtag_id = rtagid
6528
                          AND rel.view_id NOT IN (
6529
                               SELECT *
6530
                                 FROM THE
6531
                                       (SELECT CAST
6532
                                               (in_list_number
6533
                                                  (sviewidshowlist
6534
                                                  ) AS relmgr_number_tab_t
6535
                                               )
6536
                                         FROM DUAL
6537
                                       ))
6538
                 UNION
6539
                 /* Base Views expanded */
6540
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6541
 
6542
                      --rel.pkg_state,
6543
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6544
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6545
                      pv.pv_description,
6546
                      rel.operation
6547
                  FROM planned rel,
6548
                      PACKAGES pkg,
6549
                      package_versions pv,
6550
                      views vi
6551
                  WHERE pv.pkg_id = pkg.pkg_id
6552
                   AND rel.pv_id = pv.pv_id
6553
                   AND rel.view_id = vi.view_id
6554
                   AND rel.view_id IN (
6555
                        SELECT *
6556
                          FROM THE
6557
                                (SELECT CAST
6558
                                        (in_list_number
6559
                                               (sviewidshowlist) AS relmgr_number_tab_t
6560
                                        )
6561
                                  FROM DUAL
6562
                                ))
6563
                   AND rtag_id = rtagid) ord
6564
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6565
     ELSIF viewtype = 2
6566
     THEN
6567
       /*--- PERSONAL VIEW ---*/
6568
       OPEN recordset FOR
6569
         SELECT   *
6570
            FROM (
6571
                 /* Base Views collapsed */
6572
                 SELECT DISTINCT vi.view_id, vi.view_name,
6573
                             TO_NUMBER (NULL) AS pkg_state,
6574
                             TO_NUMBER (NULL) AS deprecated_state,
6575
                             TO_NUMBER (NULL) AS pv_id,
6576
                             NULL AS pkg_name, NULL AS pkg_version,
6577
                             NULL AS dlocked, NULL AS pv_description,
6578
                             rel.operation
6579
                         FROM planned rel, view_settings vs, views vi
6580
                        WHERE rel.view_id = vi.view_id
6581
                          AND vs.view_id = rel.view_id
6582
                          AND vs.user_id = userid
6583
                          AND rtag_id = rtagid
6584
                          AND rel.view_id NOT IN (
6585
                               SELECT *
6586
                                 FROM THE
6587
                                       (SELECT CAST
6588
                                               (in_list_number
6589
                                                  (sviewidshowlist
6590
                                                  ) AS relmgr_number_tab_t
6591
                                               )
6592
                                         FROM DUAL
6593
                                       ))
6594
                 UNION
6595
                 /* Base Views expanded */
6596
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6597
 
6598
                      --rel.pkg_state,
6599
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6600
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6601
                      pv.pv_description,
6602
                      rel.operation
6603
                  FROM planned rel,
6604
                      PACKAGES pkg,
6605
                      package_versions pv,
6606
                      views vi,
6607
                      view_settings vs
6608
                  WHERE pv.pkg_id = pkg.pkg_id
6609
                   AND rel.pv_id = pv.pv_id
6610
                   AND rel.view_id = vi.view_id
6611
                   AND vs.view_id = vi.view_id
6612
                   AND vs.user_id = userid
6613
                   AND rel.view_id IN (
6614
                        SELECT *
6615
                          FROM THE
6616
                                (SELECT CAST
6617
                                        (in_list_number
6618
                                               (sviewidshowlist) AS relmgr_number_tab_t
6619
                                        )
6620
                                  FROM DUAL
6621
                                ))
6622
                   AND rtag_id = rtagid
6623
                 UNION
6624
                 /* Private Views collapsed */
6625
                 SELECT vi.view_id, vi.view_name,
6626
                      TO_NUMBER (NULL) AS pkg_state,
6627
                      TO_NUMBER (NULL) AS deprecated_state,
6628
                      TO_NUMBER (NULL) AS pv_id, NULL AS pkg_name,
6629
                      NULL AS pkg_version, NULL AS dlocked,
6630
                      NULL AS pv_description,
6631
                      rel.operation
6632
                  FROM view_settings vs,
6633
                      view_def vd,
6634
                      views vi,
6635
                      planned rel,
6636
                      package_versions pv
6637
                  WHERE vs.view_id = vi.view_id
6638
                   AND rel.pv_id = pv.pv_id
6639
                   AND vd.pkg_id = pv.pkg_id
6640
                   AND vd.view_id = vi.view_id
6641
                   AND vi.base_view = 'N'
6642
                   AND rel.rtag_id = rtagid
6643
                   AND vs.user_id = userid
6644
                   AND vi.view_id NOT IN (
6645
                        SELECT *
6646
                          FROM THE
6647
                                (SELECT CAST
6648
                                        (in_list_number
6649
                                               (sviewidshowlist) AS relmgr_number_tab_t
6650
                                        )
6651
                                  FROM DUAL
6652
                                ))
6653
                 UNION
6654
                 /* Private Views expanded */
6655
                 SELECT vi.view_id, vi.view_name, 0 AS pkg_state,
6656
 
6657
                      --rel.pkg_state,
6658
                      TO_NUMBER (NULL) AS deprecated_state, pv.pv_id,
6659
                      pkg.pkg_name, pv.pkg_version, pv.dlocked,
6660
                      pv.pv_description,
6661
                      rel.operation
6662
                  FROM users usr,
6663
                      view_settings vs,
6664
                      view_def vd,
6665
                      views vi,
6666
                      planned rel,
6667
                      PACKAGES pkg,
6668
                      package_versions pv
6669
                  WHERE vs.user_id = usr.user_id
6670
                   AND vs.view_id = vi.view_id
6671
                   AND vd.view_id = vi.view_id
6672
                   AND pv.pkg_id = pkg.pkg_id
6673
                   AND rel.pv_id = pv.pv_id
6674
                   AND rel.rtag_id = rtagid
6675
                   AND vd.pkg_id = pkg.pkg_id
6676
                   AND vi.base_view = 'N'
6677
                   AND vi.view_id IN (
6678
                        SELECT *
6679
                          FROM THE
6680
                                (SELECT CAST
6681
                                        (in_list_number
6682
                                               (sviewidshowlist) AS relmgr_number_tab_t
6683
                                        )
6684
                                  FROM DUAL
6685
                                ))
6686
                   AND usr.user_id = userid) ord
6687
         ORDER BY UPPER (ord.view_name), UPPER (ord.pkg_name);
6688
     END IF;
6689
   END;
6690
 
6691
/*-------------------------------------------------------------------------------------------------------*/
6692
   PROCEDURE get_view_content (
6693
     rtagid     IN      NUMBER,
6694
     viewid     IN      NUMBER,
6695
     recordset OUT     typecur
6696
   )
6697
   IS
6698
     isbaseview   CHAR (1);
6699
   BEGIN
6700
     -- Check if the view is BASE VIEW
6701
     SELECT vi.base_view
6702
      INTO isbaseview
6703
      FROM views vi
6704
      WHERE vi.view_id = viewid;
6705
 
6706
     IF (isbaseview = 'Y')
6707
     THEN
6708
       -- Get Base view content
6709
       OPEN recordset FOR
6710
         SELECT   DECODE (rel.pkg_state,
6711
                      NULL, 0,
6712
                      rel.pkg_state
6713
                     ) AS pkg_state,
6714
                rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6715
                pv.pkg_version, pv.dlocked, pv.pv_description,
6716
                pv.build_type,
6717
                rel.operation
6718
            FROM environment_view rel, PACKAGES pkg, package_versions pv
6719
            WHERE pv.pkg_id = pkg.pkg_id
6720
             AND rel.pv_id = pv.pv_id
6721
             AND rel.view_id = viewid
6722
             AND rel.rtag_id = rtagid
6723
         ORDER BY UPPER (pkg.pkg_name);
6724
     ELSE
6725
       -- Get non base view content
6726
       OPEN recordset FOR
6727
         SELECT   DECODE (rel.pkg_state,
6728
                      NULL, 0,
6729
                      rel.pkg_state
6730
                     ) AS pkg_state,
6731
                rel.deprecated_state, pv.pv_id, pkg.pkg_name,
6732
                pv.pkg_version, pv.dlocked, pv.pv_description,
6733
                pv.build_type,
6734
                rel.operation
6735
            FROM environment_view rel,
6736
                PACKAGES pkg,
6737
                package_versions pv,
6738
                view_def vd
6739
            WHERE pv.pkg_id = pkg.pkg_id
6740
             AND rel.pv_id = pv.pv_id
6741
             AND rel.rtag_id = rtagid
6742
             AND vd.view_id = viewid
6743
             AND vd.pkg_id = pv.pkg_id
6744
         ORDER BY UPPER (pkg.pkg_name);
6745
     END IF;
6746
   END;
6747
 
6748
/*-------------------------------------------------------------------------------------------------------*/
6749
   FUNCTION get_package_view (pvid IN NUMBER, rtagid IN NUMBER)
6750
     RETURN NUMBER
6751
   IS
6752
     envtab           NUMBER;
6753
     returnvalue      NUMBER;
6754
     return_not_found NUMBER := -1;
6755
   BEGIN
6756
     envtab := get_package_area (pvid, rtagid);
6757
 
6758
     IF envtab = 0
6759
     THEN
6760
       -- WORK IN PROGRESS --
6761
       returnvalue := pk_work_in_progress.get_package_view (pvid, rtagid);
6762
     ELSIF envtab = 1
6763
     THEN
6764
       -- PENDING --
6765
       returnvalue := pk_planned.get_package_view (pvid, rtagid);
6766
     ELSIF envtab = 2
6767
     THEN
6768
       -- RELEASED --
6769
       returnvalue := pk_release.get_package_view (pvid, rtagid);
6770
     ELSE
6771
       -- This may be a Patch not located anywhere but unlocked
6772
       returnvalue := return_not_found;
6773
     END IF;
6774
 
6775
     RETURN returnvalue;
6776
   END;
6777
 
6778
/*-------------------------------------------------------------------------------------------------------*/
6779
   PROCEDURE make_release (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
6780
   IS
6781
     viewid        NUMBER;
6782
     envtab        NUMBER;
6783
     ispatch       CHAR (1) := NULL;
6784
     buildtype     CHAR (1) := NULL;
6785
   BEGIN
6786
     -- Check if package is patch
6787
     SELECT pv.is_patch, pv.build_type
6788
      INTO ispatch, buildtype
6789
      FROM package_versions pv
6790
      WHERE pv.pv_id = pvid;
6791
 
6792
     -- Get ViewId
6793
     viewid := get_package_view (pvid, rtagid);
6794
     -- Remove from current area
6795
     envtab := pk_environment.get_package_area (pvid, rtagid);
6796
 
6797
     -- Make sure that package was in work-in-progress or pending before makeing it release
6798
     -- Exclude patches, ripple builds
6799
     IF (envtab < 0)
6800
     THEN
6801
       -- Not found in work-in-progress or pending
6802
       IF (ispatch IS NULL) AND (buildtype = 'M')
6803
       THEN
6804
         raise_application_error (-20000,
6805
                            'This package cannot be released here.'
6806
                           );
6807
       END IF;
6808
     END IF;
6809
 
6810
     -- Log
6811
     log_action (pvid, 'action', userid, 'Start of Make Package Release...');
6812
 
6813
     IF envtab = 0
6814
     THEN
6815
       -- WORK IN PROGRESS --
6816
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
6817
     ELSIF envtab = 1
6818
     THEN
6819
       -- PENDING --
6820
       pk_planned.remove_package (pvid, rtagid, userid);
6821
     END IF;
6822
 
6823
     -- Change package state
6824
     pk_package.change_state (pvid, 'Y', userid);
6825
 
6826
     -- Make sure it is valid BASE VIEW
6827
     IF viewid < 1
6828
     THEN
6829
       viewid := 7;                     -- This is default base view
6830
     END IF;
6831
 
6832
     IF (ispatch IS NULL)
6833
     THEN
6834
       -- Add package to new area
6835
       pk_release.add_package (pvid, viewid, rtagid, userid);
6836
     END IF;
6837
 
6838
     -- Now do post Release Actions
6839
     pk_release.run_post_actions (pvid, rtagid);
6840
 
6841
     -- The release has changed and there may now be invalid rtag_id/pv_id combinations in
6842
     -- the DO_NOT_RIPPLE and ADVISORY_RIPPLE Tables so perform a clean-up operation upon them.
6843
     clean_do_not_ripple(rtagid);
6844
     clean_advisory_ripple(rtagid);
6845
 
6846
     -- Log
6847
     log_action (pvid, 'action', userid, 'End of Make Package Release...');
6848
   END;
6849
 
6850
/*-------------------------------------------------------------------------------------------------------*/
6851
   PROCEDURE auto_make_release (
6852
     pvid          IN   NUMBER,
6853
     rtagid        IN   NUMBER,
6854
     userid        IN   NUMBER,
6855
     vext          IN   package_versions.v_ext%TYPE,
6856
     ssv_ext       IN   package_versions.v_ext%TYPE,
6857
     clonefrompvid IN   NUMBER
6858
   )
6859
   IS
6860
     viewid        NUMBER;
6861
     envtab        NUMBER;
6862
     ispatch       CHAR (1) := NULL;
6863
     buildtype      CHAR (1) := NULL;
6864
   BEGIN
6865
     -- Check if package is patch
6866
     SELECT pv.is_patch, pv.build_type
6867
      INTO ispatch, buildtype
6868
      FROM package_versions pv
6869
      WHERE pv.pv_id = pvid;
6870
 
6871
     IF vext <> ssv_ext
6872
     THEN
6873
       -- Get ViewId
6874
       viewid := get_package_view (clonefrompvid, rtagid);
6875
       -- Remove from current area
6876
       envtab := pk_environment.get_package_area (clonefrompvid, rtagid);
6877
     ELSE
6878
       -- Get ViewId
6879
       viewid := get_package_view (pvid, rtagid);
6880
       -- Remove from current area
6881
       envtab := pk_environment.get_package_area (pvid, rtagid);
6882
     END IF;
6883
 
6884
     -- Make sure that package was in work-in-progress or pending before makeing it release
6885
     -- Exclude patches, ripple builds
6886
     IF (envtab < 0)
6887
     THEN
6888
       -- Not found in work-in-progress or pending
6889
       IF (ispatch IS NULL) AND (buildtype = 'M')
6890
       THEN
6891
         raise_application_error (-20000,
6892
                            'This package cannot be released here.'
6893
                           );
6894
       END IF;
6895
     END IF;
6896
 
6897
     -- Log
6898
     log_action (pvid, 'action', userid, 'Start of Make Package Release...');
6899
 
6900
     IF vext <> ssv_ext
6901
     THEN
6902
       IF envtab = 0
6903
       THEN
6904
         -- WORK IN PROGRESS --
6905
         pk_work_in_progress.remove_package (clonefrompvid, rtagid,
6906
                                    userid);
6907
       ELSIF envtab = 1
6908
       THEN
6909
         -- PENDING --
6910
         pk_planned.remove_package (clonefrompvid, rtagid, userid);
6911
       ELSIF envtab = 2
6912
       THEN
6913
         -- RELEASED --
6914
         pk_release.remove_package (clonefrompvid, rtagid, userid);
6915
       END IF;
6916
     ELSE
6917
       IF envtab = 0
6918
       THEN
6919
         -- WORK IN PROGRESS --
6920
         pk_work_in_progress.remove_package (pvid, rtagid, userid);
6921
       ELSIF envtab = 1
6922
       THEN
6923
         -- PENDING --
6924
         pk_planned.remove_package (pvid, rtagid, userid);
6925
       END IF;
6926
     END IF;
6927
 
6928
     -- Change package state
6929
     pk_package.change_state (pvid, 'Y', userid);
6930
 
6931
     -- Make sure it is valid BASE VIEW
6932
     IF viewid < 1
6933
     THEN
6934
       viewid := 7;                     -- This is default base view
6935
     END IF;
6936
 
6937
     IF (ispatch IS NULL)
6938
     THEN
6939
       -- Add package to new area
6940
       pk_release.add_package (pvid, viewid, rtagid, userid);
6941
     END IF;
6942
 
6943
     -- Now do post Release Actions
6944
     pk_release.run_post_actions (pvid, rtagid);
6945
     -- Now update the Dash_Board Table (DEPRECATED)
6946
     pk_rmapi.update_dash_board (rtagid);
6947
 
6948
     -- The release has changed and there may now be invalid rtag_id/pv_id combinations in
6949
     -- the DO_NOT_RIPPLE and ADVISORY_RIPPLE Tables so perform a clean-up operation upon them.
6950
     clean_do_not_ripple(rtagid);
6951
     clean_advisory_ripple(rtagid);
6952
 
6953
     -- Log
6954
     log_action (pvid, 'action', userid, 'End of Make Package Release...');
6955
   END;
6956
 
6957
/*-------------------------------------------------------------------------------------------------------*/
6958
   PROCEDURE make_unrelease (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
6959
   IS
6960
     viewid   NUMBER;
6961
     envtab   NUMBER;
6962
   BEGIN
6963
     -- Get ViewId
6964
     --ViewId := PK_RELEASE.GET_PACKAGE_VIEW ( PvId, RtagId );
6965
     viewid := get_package_view (pvid, rtagid);
6966
     -- Remove from current area
6967
     envtab := pk_environment.get_package_area (pvid, rtagid);
6968
     -- Log
6969
     log_action (pvid,
6970
              'action',
6971
              userid,
6972
              'Start of Make Package UnRelease...'
6973
             );
6974
 
6975
     IF envtab = 2
6976
     THEN
6977
       -- RELEASE AREA --
6978
       pk_release.remove_package (pvid, rtagid, userid);
6979
     ELSIF envtab = 1
6980
     THEN
6981
       -- PENDING --
6982
       pk_planned.remove_package (pvid, rtagid, userid);
6983
     END IF;
6984
 
6985
     -- Change package state
6986
     pk_package.change_state (pvid, 'N', userid);
6987
 
6988
     -- Make sure it is valid BASE VIEW
6989
     IF viewid < 1
6990
     THEN
6991
       viewid := 7;                     -- This is default base view
6992
     END IF;
6993
 
6994
     -- Add package to new area
6995
     pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
6996
     -- Now do post Release Actions
6997
     pk_release.run_post_actions (pvid, rtagid);
6998
     -- Log
6999
     log_action (pvid, 'action', userid, 'End of Make Package UnRelease...');
7000
   END;
7001
 
7002
/*-------------------------------------------------------------------------------------------------------*/
7003
   PROCEDURE make_pending (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7004
   IS
7005
     viewid     NUMBER;
7006
     ispatch    CHAR (1) := NULL;
7007
     buildtype  CHAR (1) := NULL;
7008
   BEGIN
7009
     -- Check if package is patch
7010
     SELECT pv.is_patch, pv.build_type
7011
      INTO ispatch, buildtype
7012
      FROM package_versions pv
7013
      WHERE pv.pv_id = pvid;
7014
 
7015
     -- Get ViewId
7016
     viewid := get_package_view (pvid, rtagid);
7017
     --ViewId := PK_WORK_IN_PROGRESS.GET_PACKAGE_VIEW ( PvId, RtagId );
7018
 
7019
     -- Log
7020
     log_action (pvid, 'action', userid, 'Start of Make Package Pending...');
7021
 
7022
     IF (ispatch IS NULL)
7023
     THEN
7024
       -- Remove from current area
7025
       pk_work_in_progress.remove_package (pvid, rtagid, userid);
7026
       -- Change package state
7027
       pk_package.change_state (pvid, 'P', userid);
7028
       -- Add package to new area
7029
       pk_planned.add_package (pvid, viewid, rtagid, userid);
7030
     END IF;
7031
 
7032
     -- Log
7033
     log_action (pvid, 'action', userid, 'End of Make Package Pending...');
7034
   END;
7035
 
7036
/*-------------------------------------------------------------------------------------------------------*/
7037
   PROCEDURE make_approved (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7038
   IS
7039
   BEGIN
7040
     -- Log
7041
     log_action (pvid,
7042
                 'action',
7043
                 userid,
7044
                 'Start of Package Pending Approval...'
7045
                 );
7046
     -- Change package state
7047
     pk_package.change_state (pvid, 'A', userid);
7048
     -- Log
7049
     log_action (pvid, 'action', userid,
7050
                 'End of Package Pending Approval...');
7051
   END;
7052
 
7053
/*-------------------------------------------------------------------------------------------------------*/
7054
   PROCEDURE make_reject (pvid IN NUMBER, rtagid IN NUMBER, userid IN NUMBER)
7055
   IS
7056
     viewid   NUMBER;
7057
     operation CHAR;
7058
   BEGIN
7059
     -- Get ViewId
7060
     viewid := get_package_view (pvid, rtagid);
7061
     -- ViewId := PK_PLANNED.GET_PACKAGE_VIEW ( PvId, RtagId );
7062
 
7063
     -- DEVI-45275
7064
     -- If the package version is an official version that is to be rejected from a merge operation
7065
     -- then find out in order to prevent it being added back to work-in-progress table . This will
7066
     -- be denoted by the operation field in the planned table being A or S
7067
     operation := ' ';
7068
     SELECT
7069
     (CASE WHEN pl.operation IS NOT NULL THEN pl.operation ELSE ' ' END) INTO operation
7070
     FROM planned pl
7071
     WHERE pl.PV_ID = pvid
7072
     AND pl.RTAG_ID = rtagid;
7073
 
7074
     -- Log
7075
     log_action (pvid, 'action', userid, 'Start of Reject Package...');
7076
     -- Remove from current area
7077
     pk_planned.remove_package (pvid, rtagid, userid);
7078
 
7079
     -- DEVI-45275 - Prevent merge candidate from being added back to work-in-progress table .
7080
     IF operation <> 'A' AND operation <> 'S'
7081
     THEN
7082
     -- Change package state
7083
     pk_package.change_state (pvid, 'R', userid);
7084
     -- Add package to new area
7085
     pk_work_in_progress.add_package (pvid, viewid, rtagid, userid);
7086
     ELSE
7087
      log_action (pvid, 'action', userid, 'Rejected Package Merge');
7088
     END IF;
7089
     -- Log
7090
     log_action (pvid, 'action', userid, 'End of Reject Package...');
7091
   END;
7092
 
7093
/*-------------------------------------------------------------------------------------------------------*/
7094
   PROCEDURE change_package_view (
7095
     pvid       IN   NUMBER,
7096
     rtagid     IN   NUMBER,
7097
     newviewid  IN   NUMBER
7098
   )
7099
   IS
7100
     envtab   NUMBER;
7101
   BEGIN
7102
     envtab := pk_environment.get_package_area (pvid, rtagid);
7103
 
7104
     IF envtab = 0
7105
     THEN
7106
       -- WORK IN PROGRESS --
7107
       pk_work_in_progress.change_package_view (pvid, rtagid, newviewid);
7108
     ELSIF envtab = 1
7109
     THEN
7110
       -- PENDING --
7111
       pk_planned.change_package_view (pvid, rtagid, newviewid);
7112
     ELSIF envtab = 2
7113
     THEN
7114
       -- RELEASED --
7115
       pk_release.change_package_view (pvid, rtagid, newviewid);
7116
     END IF;
7117
   END;
7118
 
7119
/*-------------------------------------------------------------------------------------------------------*/
7120
   PROCEDURE find_package (
7121
     skeyword     IN      VARCHAR2,
7122
     nrtagid      IN      NUMBER,
7123
     nsearcharea  IN      NUMBER,
7124
     recordset    OUT     typecur
7125
   )
7126
   IS
7127
   BEGIN
7128
     IF nsearcharea = 0
7129
     THEN
7130
       /* Search Work In Progress */
7131
       OPEN recordset FOR
7132
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7133
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7134
                pv.modified_stamp, usr.full_name, usr.user_email
7135
           FROM views vi,
7136
                work_in_progress rc,
7137
                PACKAGES pkg,
7138
                package_versions pv,
7139
                users usr
7140
          WHERE rc.view_id = vi.view_id
7141
            AND rc.pv_id = pv.pv_id
7142
            AND pkg.pkg_id = pv.pkg_id
7143
            AND pv.modifier_id = usr.user_id
7144
            AND rc.rtag_id = nrtagid
7145
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7146
       ORDER BY UPPER (pkg.pkg_name);
7147
     ELSIF nsearcharea = 1
7148
     THEN
7149
       /* Search Pending */
7150
       OPEN recordset FOR
7151
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7152
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7153
                pv.modified_stamp, usr.full_name, usr.user_email
7154
           FROM views vi,
7155
                planned rc,
7156
                PACKAGES pkg,
7157
                package_versions pv,
7158
                users usr
7159
          WHERE rc.view_id = vi.view_id
7160
            AND rc.pv_id = pv.pv_id
7161
            AND pkg.pkg_id = pv.pkg_id
7162
            AND pv.modifier_id = usr.user_id
7163
            AND rc.rtag_id = nrtagid
7164
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7165
       ORDER BY UPPER (pkg.pkg_name);
7166
     ELSIF nsearcharea = 2
7167
     THEN
7168
       /* Search Released */
7169
       OPEN recordset FOR
7170
         SELECT nsearcharea AS env_area, vi.view_name, pv.dlocked,
7171
                pkg.pkg_name, pv.pv_id, pv.pkg_version, pv.comments,
7172
                pv.modified_stamp, usr.full_name, usr.user_email
7173
           FROM views vi,
7174
                release_content rc,
7175
                PACKAGES pkg,
7176
                package_versions pv,
7177
                users usr
7178
          WHERE rc.base_view_id = vi.view_id
7179
            AND rc.pv_id = pv.pv_id
7180
            AND pkg.pkg_id = pv.pkg_id
7181
            AND pv.modifier_id = usr.user_id
7182
            AND rc.rtag_id = nrtagid
7183
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7184
         ORDER BY UPPER (pkg.pkg_name);
7185
     ELSIF nsearcharea = 3
7186
     THEN
7187
       /* Search ALL */
7188
       OPEN recordset FOR
7189
         SELECT rc.env_area, vi.view_name, pv.dlocked, pkg.pkg_name,
7190
                pv.pv_id, pv.pkg_version, pv.comments,
7191
                pv.modified_stamp, usr.full_name, usr.user_email
7192
           FROM views vi,
7193
                environment_view rc,
7194
                PACKAGES pkg,
7195
                package_versions pv,
7196
                users usr
7197
          WHERE rc.view_id = vi.view_id
7198
            AND rc.pv_id = pv.pv_id
7199
            AND pkg.pkg_id = pv.pkg_id
7200
            AND pv.modifier_id = usr.user_id
7201
            AND rc.rtag_id = nrtagid
7202
            AND UPPER (pkg.pkg_name) LIKE UPPER (skeyword)
7203
         ORDER BY UPPER (pkg.pkg_name);
7204
     END IF;
7205
   END;
7206
 
7207
/*-------------------------------------------------------------------------------------------------------*/
7208
   PROCEDURE find_file (
7209
     skeyword     IN      VARCHAR2,
7210
     nrtagid      IN      NUMBER,
7211
     nsearcharea  IN      NUMBER,
7212
     npagesize    IN      NUMBER,
7213
     recordset    OUT     typecur
7214
   )
7215
   IS
7216
   BEGIN
7217
     IF nsearcharea = 0
7218
     THEN
7219
       /* Search Work In Progress */
7220
       OPEN recordset FOR
7221
         SELECT   qry.*
7222
            FROM (
7223
                 /* File search on Packages */
7224
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7225
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7226
                   FROM work_in_progress rc,
7227
                        PACKAGES pkg,
7228
                        package_versions pv,
7229
                        release_components art
7230
                  WHERE rc.pv_id = art.pv_id
7231
                    AND pv.pkg_id = pkg.pkg_id
7232
                    AND rc.pv_id = pv.pv_id
7233
                    AND rc.rtag_id = nrtagid
7234
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7235
                 UNION ALL
7236
                 /* File search on Products */
7237
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7238
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7239
                   FROM work_in_progress rc,
7240
                        PACKAGES pkg,
7241
                        package_versions pv,
7242
                        product_components art
7243
                  WHERE rc.pv_id = art.pv_id
7244
                    AND pv.pkg_id = pkg.pkg_id
7245
                    AND rc.pv_id = pv.pv_id
7246
                    AND rc.rtag_id = nrtagid
7247
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7248
            WHERE ROWNUM <= npagesize
7249
         ORDER BY UPPER (qry.pkg_name);
7250
     ELSIF nsearcharea = 1
7251
     THEN
7252
       /* Search Pending */
7253
       OPEN recordset FOR
7254
         SELECT   qry.*
7255
            FROM (
7256
                 /* File search on Packages */
7257
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7258
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7259
                   FROM planned rc,
7260
                        PACKAGES pkg,
7261
                        package_versions pv,
7262
                        release_components art
7263
                  WHERE rc.pv_id = art.pv_id
7264
                    AND pv.pkg_id = pkg.pkg_id
7265
                    AND rc.pv_id = pv.pv_id
7266
                    AND rc.rtag_id = nrtagid
7267
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7268
                 UNION ALL
7269
                 /* File search on Products */
7270
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7271
                        pv.pv_id, pv.pkg_version, art.crc_cksum
7272
                   FROM planned rc,
7273
                        PACKAGES pkg,
7274
                        package_versions pv,
7275
                        product_components art
7276
                  WHERE rc.pv_id = art.pv_id
7277
                    AND pv.pkg_id = pkg.pkg_id
7278
                    AND rc.pv_id = pv.pv_id
7279
                    AND rc.rtag_id = nrtagid
7280
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7281
            WHERE ROWNUM <= npagesize
7282
         ORDER BY UPPER (qry.pkg_name);
7283
     ELSIF nsearcharea = 2
7284
     THEN
7285
       /* Search Released */
7286
       OPEN recordset FOR
7287
         SELECT   qry.*
7288
            FROM (
7289
                 /* File search on Packages */
7290
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7291
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7292
                        NULL AS patch_id
7293
                   FROM release_content rc,
7294
                        PACKAGES pkg,
7295
                        package_versions pv,
7296
                        release_components art
7297
                  WHERE rc.pv_id = art.pv_id
7298
                    AND pv.pkg_id = pkg.pkg_id
7299
                    AND rc.pv_id = pv.pv_id
7300
                    AND rc.rtag_id = nrtagid
7301
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7302
                 UNION ALL
7303
                 /* File search on Products */
7304
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7305
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7306
                        NULL AS patch_id
7307
                   FROM release_content rc,
7308
                        PACKAGES pkg,
7309
                        package_versions pv,
7310
                        product_components art
7311
                  WHERE rc.pv_id = art.pv_id
7312
                    AND pv.pkg_id = pkg.pkg_id
7313
                    AND rc.pv_id = pv.pv_id
7314
                    AND rc.rtag_id = nrtagid
7315
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7316
                 UNION ALL
7317
                 /* File search on Patches */
7318
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7319
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7320
                        DECODE (art.file_path,
7321
                                NULL, pp.patch_id,
7322
                                NULL
7323
                                ) AS patch_id
7324
                   FROM release_content rc,
7325
                        PACKAGES pkg,
7326
                        package_versions pv,
7327
                        release_components art,
7328
                        package_patches pp
7329
                  WHERE pv.pv_id = pp.pv_id
7330
                    AND pv.pkg_id = pkg.pkg_id
7331
                    AND rc.rtag_id = nrtagid
7332
                    AND art.pv_id = pp.patch_id
7333
                    AND rc.pv_id = pp.pv_id
7334
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7335
            WHERE ROWNUM <= npagesize
7336
         ORDER BY UPPER (qry.pkg_name);
7337
     ELSIF nsearcharea = 3
7338
     THEN
7339
       /* Search ALL */
7340
       OPEN recordset FOR
7341
         SELECT   qry.*
7342
            FROM (
7343
                 /* File search on Packages */
7344
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7345
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7346
                        NULL AS patch_id
7347
                   FROM environment_view rc,
7348
                        PACKAGES pkg,
7349
                        package_versions pv,
7350
                        release_components art
7351
                  WHERE rc.pv_id = art.pv_id
7352
                    AND pv.pkg_id = pkg.pkg_id
7353
                    AND rc.pv_id = pv.pv_id
7354
                    AND rc.rtag_id = nrtagid
7355
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7356
                 UNION ALL
7357
                 /* File search on Products */
7358
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7359
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7360
                        NULL AS patch_id
7361
                   FROM environment_view rc,
7362
                        PACKAGES pkg,
7363
                        package_versions pv,
7364
                        product_components art
7365
                  WHERE rc.pv_id = art.pv_id
7366
                    AND pv.pkg_id = pkg.pkg_id
7367
                    AND rc.pv_id = pv.pv_id
7368
                    AND rc.rtag_id = nrtagid
7369
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)
7370
                 UNION ALL
7371
                 /* File search on Patches */
7372
                 SELECT art.file_name, art.file_path, pkg.pkg_name,
7373
                        pv.pv_id, pv.pkg_version, art.crc_cksum,
7374
                        DECODE (art.file_path,
7375
                                NULL, pp.patch_id,
7376
                                NULL
7377
                               ) AS patch_id
7378
                   FROM release_content rc,
7379
                        PACKAGES pkg,
7380
                        package_versions pv,
7381
                        release_components art,
7382
                        package_patches pp
7383
                  WHERE pv.pv_id = pp.pv_id
7384
                    AND pv.pkg_id = pkg.pkg_id
7385
                    AND rc.rtag_id = nrtagid
7386
                    AND art.pv_id = pp.patch_id
7387
                    AND rc.pv_id = pp.pv_id
7388
                    AND UPPER (art.file_name) LIKE UPPER (skeyword)) qry
7389
            WHERE ROWNUM <= npagesize
7390
         ORDER BY UPPER (qry.pkg_name);
7391
     END IF;
7392
   END;
7393
 
7394
/*-------------------------------------------------------------------------------------------------------*/
7395
   PROCEDURE get_prodrelease_items (
7396
     rtagid           IN      NUMBER,
7397
     ntruerecordcount OUT     NUMBER,
7398
     recordset        OUT     typecur
7399
   )
7400
   IS
7401
   BEGIN
7402
     -- Get true record count n the number of integration products
7403
     SELECT COUNT (rc.pv_id)
7404
      INTO ntruerecordcount
7405
      FROM release_content rc
7406
      WHERE rc.rtag_id = rtagid;
7407
 
7408
     OPEN recordset FOR
7409
       SELECT vi.view_id, vi.view_name, rel.pkg_state,   --rel.pkg_state,
7410
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7411
              pv.pkg_version, pv.dlocked, pv.pv_description
7412
         FROM release_content rel,
7413
              PACKAGES pkg,
7414
              package_versions pv,
7415
              views vi
7416
        WHERE pv.pkg_id = pkg.pkg_id
7417
          AND rel.pv_id = pv.pv_id
7418
          AND rel.base_view_id = vi.view_id
7419
          AND pv.is_deployable = 'Y'
7420
          AND rtag_id = rtagid
7421
          AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
7422
                                 FROM deployment_manager.os_contents)
7423
          AND rel.product_state IS NULL
7424
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7425
   END;
7426
 
7427
/*-------------------------------------------------------------------------------------------------------*/
7428
   PROCEDURE get_integration_items (
7429
     rtagid           IN      NUMBER,
7430
     ntruerecordcount OUT     NUMBER,
7431
     recordset        OUT     typecur
7432
   )
7433
   IS
7434
   BEGIN
7435
     -- Get true record count n the number of integration products
7436
     SELECT COUNT (rc.pv_id)
7437
      INTO ntruerecordcount
7438
      FROM release_content rc
7439
      WHERE rc.rtag_id = rtagid AND rc.product_state = 1;
7440
 
7441
     OPEN recordset FOR
7442
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7443
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7444
              pv.pkg_version, pv.dlocked, pv.pv_description
7445
         FROM release_content rel,
7446
              PACKAGES pkg,
7447
              package_versions pv,
7448
              views vi
7449
        WHERE pv.pkg_id = pkg.pkg_id
7450
          AND rel.pv_id = pv.pv_id
7451
          AND rel.base_view_id = vi.view_id
7452
          AND pv.is_deployable = 'Y'
7453
          AND rtag_id = rtagid
7454
          AND rel.product_state IN (1, 5)
7455
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7456
   END;
7457
 
7458
/*-------------------------------------------------------------------------------------------------------*/
7459
   PROCEDURE get_test_items (
7460
     rtagid           IN      NUMBER,
7461
     ntruerecordcount OUT     NUMBER,
7462
     recordset        OUT     typecur
7463
   )
7464
   IS
7465
   BEGIN
7466
     -- Get true record count n the number of test products
7467
     SELECT COUNT (rc.pv_id)
7468
      INTO ntruerecordcount
7469
      FROM release_content rc
7470
      WHERE rc.rtag_id = rtagid AND rc.product_state = 2;
7471
 
7472
     OPEN recordset FOR
7473
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7474
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7475
              pv.pkg_version, pv.dlocked, pv.pv_description
7476
         FROM release_content rel,
7477
              PACKAGES pkg,
7478
              package_versions pv,
7479
              views vi
7480
        WHERE pv.pkg_id = pkg.pkg_id
7481
          AND rel.pv_id = pv.pv_id
7482
          AND rel.base_view_id = vi.view_id
7483
          AND pv.is_deployable = 'Y'
7484
          AND rtag_id = rtagid
7485
          AND rel.product_state = 2
7486
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7487
   END;
7488
 
7489
/*-------------------------------------------------------------------------------------------------------*/
7490
   PROCEDURE get_deploy_items (
7491
     rtagid           IN      NUMBER,
7492
     ntruerecordcount OUT     NUMBER,
7493
     recordset        OUT     typecur
7494
   )
7495
   IS
7496
   BEGIN
7497
     -- Get true record count n the number of deploy products
7498
     SELECT COUNT (rc.pv_id)
7499
      INTO ntruerecordcount
7500
      FROM release_content rc
7501
      WHERE rc.rtag_id = rtagid AND rc.product_state = 3;
7502
 
7503
     OPEN recordset FOR
7504
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7505
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7506
              pv.pkg_version, pv.dlocked, pv.pv_description
7507
         FROM release_content rel,
7508
              PACKAGES pkg,
7509
              package_versions pv,
7510
              views vi
7511
        WHERE pv.pkg_id = pkg.pkg_id
7512
          AND rel.pv_id = pv.pv_id
7513
          AND rel.base_view_id = vi.view_id
7514
          AND pv.is_deployable = 'Y'
7515
          AND rtag_id = rtagid
7516
          AND rel.product_state IN (3, 5)
7517
          AND pv.pv_id NOT IN (SELECT DISTINCT prod_id
7518
                                 FROM deployment_manager.os_contents)
7519
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7520
   END;
7521
 
7522
/*-------------------------------------------------------------------------------------------------------*/
7523
   PROCEDURE get_reject_items (
7524
     rtagid           IN      NUMBER,
7525
     ntruerecordcount OUT     NUMBER,
7526
     recordset        OUT     typecur
7527
   )
7528
   IS
7529
   BEGIN
7530
     -- Get true record count n the number of reject products
7531
     SELECT COUNT (rc.pv_id)
7532
       INTO ntruerecordcount
7533
       FROM release_content rc
7534
      WHERE rc.rtag_id = rtagid AND rc.product_state = 4;
7535
 
7536
     OPEN recordset FOR
7537
       SELECT vi.view_id, vi.view_name, rel.pkg_state,
7538
              rel.deprecated_state, pv.pv_id, pkg.pkg_name,
7539
              pv.pkg_version, pv.dlocked, pv.pv_description
7540
         FROM release_content rel,
7541
              PACKAGES pkg,
7542
              package_versions pv,
7543
              views vi
7544
        WHERE pv.pkg_id = pkg.pkg_id
7545
          AND rel.pv_id = pv.pv_id
7546
          AND rel.base_view_id = vi.view_id
7547
          AND pv.is_deployable = 'Y'
7548
          AND rtag_id = rtagid
7549
          AND rel.product_state = 4
7550
     ORDER BY UPPER (vi.view_name), UPPER (pkg.pkg_name);
7551
   END;
7552
/*-------------------------------------------------------------------------------------------------------*/
7553
   -- DEVI-45275 - this procedure performs the merge of an existing package version in the planned table
7554
   -- to the release_content table.
7555
 
7556
  PROCEDURE approve_merge (
7557
   PvId    IN NUMBER,
7558
   RtagId  IN NUMBER,
7559
   UserId  IN NUMBER
7560
  )
7561
  IS
7562
   viewid        NUMBER;
7563
   envtab        NUMBER;
7564
   oper         CHAR;
7565
  BEGIN
7566
      -- Get ViewId
7567
     viewid := get_package_view (pvid, rtagid);
7568
 
7569
     -- Get the view tab
7570
     envtab := pk_environment.get_package_area (pvid, rtagid);
7571
 
7572
     -- Make sure that package was in pending before merging it to released
7573
     IF (envtab <> 1)
7574
     THEN
7575
       -- Not found in pending
7576
       raise_application_error (-20000,
7577
                          'This package cannot be released here.'
7578
                         );
7579
     END IF;
7580
 
7581
     -- Log
7582
     log_action (pvid, 'action', userid, 'Start of Package Merge...');
7583
 
7584
     -- Get the planned operation type A=Add, S=Subtract
7585
     SELECT ev.operation INTO oper
7586
       FROM environment_view ev
7587
      WHERE ev.rtag_id = RtagId
7588
        AND ev.pv_id = PvId
7589
        AND (ev.operation = 'A' OR ev.operation = 'S');
7590
 
7591
     -- Remove from Pending
7592
     pk_planned.remove_package (PvId, RtagId, UserId);
7593
 
7594
     -- Either add to the release, or remove from the release as the operation commands
7595
     IF oper = 'A'
7596
     THEN
7597
       pk_release.add_package(PvId, viewId, RtagId, UserId);
7598
 
7599
     ELSIF oper = 'S'
7600
     THEN
7601
       pk_release.remove_package(PvId, RtagId, UserId);
7602
 
7603
       -- Delete old package's pegging info
7604
       DELETE FROM PEGGED_VERSIONS pegv WHERE pegv.RTAG_ID = RtagId AND pegv.PV_ID = PvId;
7605
 
7606
       -- Delete old package's advisory ripple info
7607
       DELETE FROM ADVISORY_RIPPLE avr WHERE avr.RTAG_ID = RtagId AND avr.PV_ID = PvId;
7608
     END IF;
7609
 
7610
     touch_release(RtagId);
7611
 
7612
     -- Log
7613
     log_action (pvid, 'action', userid, 'End of Package Merge...');
7614
  END;
7615
/*-------------------------------------------------------------------------------------------------------*/
7616
END pk_environment;
4040 dpurdie 7617
 
1374 dpurdie 7618
/
1373 dpurdie 7619
 
4040 dpurdie 7620
/
7621
--------------------------------------------------------
7622
--  DDL for Package Body PK_LICENCING
7623
--------------------------------------------------------
7624
 
3959 dpurdie 7625
  CREATE OR REPLACE PACKAGE BODY "PK_LICENCING" IS
1373 dpurdie 7626
 
7627
/*
7628
------------------------------
3959 dpurdie 7629
||  Last Modified:  G.Huddy
7630
||  Modified Date:  19/Aug/2008
1373 dpurdie 7631
||  Body Version:   1.0
7632
------------------------------
7633
*/
7634
 
3959 dpurdie 7635
   PROCEDURE ADD_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
7636
   BEGIN
7637
      IF IS_LICENCED(PvId, licenceId) = 0 THEN
7638
         -- Add entry to licencing table
7639
         INSERT INTO licencing (pv_id, licence)
7640
         VALUES (PvId, licenceId);
1373 dpurdie 7641
 
3959 dpurdie 7642
         -- log action
7643
         -- TODO
7644
      END IF;
1373 dpurdie 7645
 
3959 dpurdie 7646
   END;
1373 dpurdie 7647
 
7648
/*-------------------------------------------------------------------------------------------------------*/
7649
 
3959 dpurdie 7650
   PROCEDURE REMOVE_LICENCE ( PvId IN NUMBER, licenceId IN NUMBER, UserId IN NUMBER ) IS
7651
   BEGIN
7652
      IF NOT IS_LICENCED(PvId, licenceId) = 0 THEN
7653
         -- Delete entry from licencing table
7654
         DELETE FROM licencing
7655
         WHERE pv_id = PvId
7656
         AND licence = licenceId;
1373 dpurdie 7657
 
3959 dpurdie 7658
         -- log action
7659
         -- TODO
7660
      END IF;
7661
   END;
1373 dpurdie 7662
 
7663
/*-------------------------------------------------------------------------------------------------------*/
7664
 
3959 dpurdie 7665
   PROCEDURE CLONE_LICENCING( fromPvId IN NUMBER, toPvId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 7666
 
3959 dpurdie 7667
      CURSOR licencing_cur
7668
      IS
7669
         SELECT *
7670
         FROM licencing
7671
         WHERE pv_id = fromPvId;
1373 dpurdie 7672
 
3959 dpurdie 7673
      licencing_rec licencing_cur%ROWTYPE;
1373 dpurdie 7674
 
7675
   BEGIN
3959 dpurdie 7676
      -- For each licence association that the Last PV_ID had, create a similar
7677
      -- arrangement for the new PV_ID
7678
      -- NOTE that any additional licencing associations the new PV_ID has that the old one
7679
      -- does not have, are retained. The assumption is that the user has made those and so we do not
7680
      -- have any right to destroy them without asking them.
7681
      OPEN licencing_cur;
1373 dpurdie 7682
 
3959 dpurdie 7683
      FETCH licencing_cur
7684
      INTO licencing_rec;
1373 dpurdie 7685
 
3959 dpurdie 7686
      WHILE licencing_cur%FOUND
1373 dpurdie 7687
      LOOP
3959 dpurdie 7688
         ADD_LICENCE ( toPvId, licencing_rec.licence, UserId );
1373 dpurdie 7689
 
3959 dpurdie 7690
         FETCH licencing_cur
7691
         INTO licencing_rec;
1373 dpurdie 7692
      END LOOP;
7693
   END;
7694
 
7695
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 7696
 
7697
   FUNCTION IS_LICENCED( PvId IN NUMBER, licenceId IN NUMBER) RETURN NUMBER IS
7698
      found NUMBER;
1373 dpurdie 7699
   BEGIN
7700
 
3959 dpurdie 7701
      SELECT COUNT(*) INTO found
7702
      FROM licencing
7703
      WHERE pv_id = PvId
7704
      AND licence = LicenceId;
1373 dpurdie 7705
 
3959 dpurdie 7706
      RETURN found;
1373 dpurdie 7707
   END;
7708
 
7709
/*-------------------------------------------------------------------------------------------------------*/
7710
 
3959 dpurdie 7711
   PROCEDURE REMOVE_ALL_LICENCING( PvId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 7712
 
3959 dpurdie 7713
      CURSOR licencing_cur
7714
      IS
1373 dpurdie 7715
         SELECT *
3959 dpurdie 7716
         FROM licencing
7717
         WHERE pv_id = PvId;
1373 dpurdie 7718
 
3959 dpurdie 7719
      licencing_rec licencing_cur%ROWTYPE;
7720
   BEGIN
7721
      -- For each licence association that the PV_ID had, remove it
7722
      OPEN licencing_cur;
1373 dpurdie 7723
 
3959 dpurdie 7724
      FETCH licencing_cur
7725
      INTO licencing_rec;
1373 dpurdie 7726
 
3959 dpurdie 7727
      WHILE licencing_cur%FOUND
7728
      LOOP
7729
         REMOVE_LICENCE ( PvId, licencing_rec.licence, UserId );
1373 dpurdie 7730
 
3959 dpurdie 7731
         FETCH licencing_cur
7732
         INTO licencing_rec;
7733
      END LOOP;
1373 dpurdie 7734
   END;
7735
 
7736
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 7737
END PK_LICENCING;
4040 dpurdie 7738
 
1374 dpurdie 7739
/
1373 dpurdie 7740
 
4040 dpurdie 7741
/
7742
--------------------------------------------------------
7743
--  DDL for Package Body PK_PACKAGE
7744
--------------------------------------------------------
7745
 
3959 dpurdie 7746
  CREATE OR REPLACE PACKAGE BODY "PK_PACKAGE" 
1373 dpurdie 7747
IS
7748
   /*-------------------------------------------------------------------------------------------------------*/
7749
   PROCEDURE new_version (
7750
      nlastpvid                   IN       NUMBER,
7751
      snewpkgversion              IN       VARCHAR2 DEFAULT NULL,
7752
      cbuildtype                  IN       CHAR,
4211 dpurdie 7753
      cchangetype                 IN       CHAR,
1373 dpurdie 7754
      nsettopvid                  IN       NUMBER DEFAULT NULL,
7755
      nrtagid                     IN       NUMBER,
7756
      nuserid                     IN       NUMBER,
7757
      enumissues_state_imported   IN       NUMBER,
7758
      returnpvid                  OUT      NUMBER
7759
   )
7760
   IS
3959 dpurdie 7761
      origpkg_id                  package_versions.pkg_id%TYPE;
7762
      origdlocked                 package_versions.dlocked%TYPE;
7763
      ssv_mm                      package_versions.v_mm%TYPE;
7764
      ssv_nmm                     package_versions.v_nmm%TYPE;
7765
      ssv_ext                     package_versions.v_ext%TYPE;
7766
      spackageversion             VARCHAR2 (4000);
7767
      nissuestypes                NUMBER;
7768
      nviewid                     NUMBER;
7769
      reccount                    NUMBER;
7770
      isreleased                  package_versions.dlocked%TYPE := 'N';
7771
      slabel                      VARCHAR2 (4000)               := NULL;
4211 dpurdie 7772
      uchangetype                 CHAR := cchangetype;
1373 dpurdie 7773
 
7774
      CURSOR package_versions_cur
7775
      IS
7776
         SELECT pv.pv_id, pv.is_patch, pv.dlocked
7777
           FROM package_versions pv
7778
          WHERE pv.pkg_version = snewpkgversion
7779
            AND pv.pkg_id IN (SELECT DISTINCT origpv.pkg_id
7780
                                         FROM package_versions origpv
7781
                                        WHERE origpv.pv_id = nlastpvid);
7782
 
3959 dpurdie 7783
      package_versions_rec package_versions_cur%ROWTYPE;
1373 dpurdie 7784
 
7785
      CURSOR clone_package_versions_cur
7786
      IS
7787
         SELECT DISTINCT pkg_id, dlocked
7788
                    FROM package_versions
7789
                   WHERE pv_id = nlastpvid;
7790
 
3959 dpurdie 7791
      clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
1373 dpurdie 7792
   BEGIN
7793
      spackageversion := snewpkgversion;
7794
 
7795
      IF nsettopvid IS NULL
7796
      THEN
7797
         -- SetToPv_id is not supplied, hence proceed.
7798
 
7799
         /* ---------------------------------------------------- */
3959 dpurdie 7800
         /* Find id package_version exists                       */
7801
         /* ---------------------------------------------------- */
1373 dpurdie 7802
         OPEN package_versions_cur;
7803
 
7804
         FETCH package_versions_cur
7805
          INTO package_versions_rec;
7806
 
7807
         IF package_versions_cur%NOTFOUND
7808
         THEN
7809
            ---  Create brand new package ---
7810
            SELECT seq_pv_id.NEXTVAL
7811
              INTO returnpvid
7812
              FROM DUAL;
7813
 
7814
            -- Split Version to get extention + other
7815
            split_version (spackageversion, ssv_mm, ssv_nmm, ssv_ext);
7816
 
7817
            -- Get previous package to clone from
7818
            OPEN clone_package_versions_cur;
7819
 
7820
            FETCH clone_package_versions_cur
7821
             INTO clone_package_versions_rec;
7822
 
7823
            origpkg_id := clone_package_versions_rec.pkg_id;
7824
            origdlocked := clone_package_versions_rec.dlocked;
7825
 
7826
            CLOSE clone_package_versions_cur;
7827
 
7828
            -- Automated built config
4211 dpurdie 7829
            IF ( cbuildtype = 'M' ) THEN
7830
              uchangetype := 'F';
7831
            END IF;  
7832
 
7833
            -- Automated version numbering
7834
            -- Make sure that version is still unique
7835
            IF (uchangetype != 'F') THEN
7836
              spackageversion := '(' || returnpvid || ')' || ssv_ext;
1373 dpurdie 7837
            END IF;
4211 dpurdie 7838
 
1373 dpurdie 7839
 
7840
            -- Clone Package Version Details --
3959 dpurdie 7841
            INSERT INTO package_versions(pv_id, pkg_id, pkg_version, dlocked, created_stamp,
7842
                                         creator_id, modified_stamp, modifier_id, v_mm, v_nmm,
7843
                                         v_ext, src_path, pv_description, pv_overview,
7844
                                         last_pv_id, owner_id, is_deployable,
4211 dpurdie 7845
                                         is_build_env_required, build_type, change_type, 
7846
                                         bs_id, is_autobuildable, ripple_field)
3959 dpurdie 7847
                 SELECT returnpvid AS pv_id, origpkg_id AS pkg_id,
7848
                        spackageversion AS pkg_version, 'N' AS dlocked,
7849
                        ora_sysdate AS created_stamp, nuserid AS creator_id,
7850
                        ora_sysdatetime AS modified_stamp,
7851
                        nuserid AS modifier_id, ssv_mm AS v_mm,
7852
                        ssv_nmm AS v_nmm, ssv_ext AS v_ext, pv.src_path,
7853
                        pv.pv_description, pv.pv_overview,
7854
                        nlastpvid AS last_pv_id, pv.owner_id, pv.is_deployable,
4211 dpurdie 7855
                        pv.is_build_env_required, cbuildtype, uchangetype, 
7856
                        pv.bs_id, pv.is_autobuildable, pv.ripple_field
3959 dpurdie 7857
                   FROM package_versions pv
7858
                  WHERE pv.pv_id = nlastpvid;
1373 dpurdie 7859
 
7860
            -- Set Issues Type for cloning ---
7861
            IF origdlocked = 'Y'
7862
            THEN
7863
               nissuestypes := enumissues_state_imported;
7864
            ELSE
7865
               nissuestypes := NULL;
7866
            END IF;
7867
 
7868
            basic_clone (nlastpvid,
7869
                         returnpvid,
7870
                         nrtagid,
7871
                         nuserid,
7872
                         origpkg_id,
7873
                         nissuestypes
7874
                        );
4211 dpurdie 7875
 
7876
            -- Update Label for versioning purposes
7877
            slabel := get_automated_label (returnpvid);
7878
            UPDATE package_versions pv
7879
            SET pv.pkg_label = slabel
7880
            WHERE pv.pv_id = returnpvid;
7881
 
1373 dpurdie 7882
         ELSE
7883
            --- Package already exists, hence reuse ---
7884
            returnpvid := package_versions_rec.pv_id;
7885
            isreleased := package_versions_rec.dlocked;
7886
         END IF;
7887
 
7888
         CLOSE package_versions_cur;
7889
      ELSE
7890
         returnpvid := nsettopvid;
7891
      END IF;
7892
   END new_version;
7893
 
7894
/*-------------------------------------------------------------------------------------------------------*/
7895
   PROCEDURE change_state (
7896
      pvid       IN   NUMBER,
7897
      newstate   IN   package_versions.dlocked%TYPE,
7898
      userid     IN   NUMBER
7899
   )
7900
   IS
7901
   BEGIN
7902
      -- Set package in Released mode
7903
      UPDATE package_versions pv
7904
         SET pv.dlocked = newstate,
7905
             pv.modified_stamp = ora_sysdatetime,
7906
             pv.modifier_id = userid
7907
       WHERE pv.pv_id = pvid;
7908
 
7909
      -- Log action --
7910
      IF newstate = 'Y'
7911
      THEN
7912
         -- RELEASED --
7913
         log_action (pvid,
7914
                     'makeofficial',
7915
                     userid,
7916
                     'Package state change to: Released'
7917
                    );
7918
      ELSIF newstate = 'N'
7919
      THEN
7920
         -- UNLOCKED --
7921
         log_action (pvid,
7922
                     'makeunofficial',
7923
                     userid,
7924
                     'Package state change to: Ulocked'
7925
                    );
7926
      ELSIF newstate = 'P'
7927
      THEN
7928
         -- PENDING APPROVAL --
7929
         log_action (pvid,
7930
                     'add_to_planned',
7931
                     userid,
7932
                     'Package state change to: Pending Approval'
7933
                    );
7934
      ELSIF newstate = 'R'
7935
      THEN
7936
         -- REJECTED --
7937
         log_action (pvid,
7938
                     'reject_package',
7939
                     userid,
7940
                     'Package state change to: Rejected'
7941
                    );
7942
      ELSIF newstate = 'A'
7943
      THEN
7944
         -- APPROVED --
7945
         log_action (pvid,
7946
                     'approve_package',
7947
                     userid,
7948
                     'Package state change to: Approved'
7949
                    );
7950
      END IF;
7951
   END;
7952
 
7953
/*-------------------------------------------------------------------------------------------------------*/
7954
   PROCEDURE destroy_package (
7955
      pvid               IN       NUMBER,
7956
      overridewarnings   IN       CHAR DEFAULT 'N',
7957
      problemstring      OUT      VARCHAR2
7958
   )
7959
   IS
7960
      LOCKED     CHAR;
7961
      pkgid      NUMBER;
7962
      ROWCOUNT   NUMBER;
7963
   BEGIN
7964
      /*
7965
      || This will destroy all package details from database.
7966
      || It will only be used to remove unwanted work in progress packages,
7967
      || or mestaken versions
7968
      */
7969
 
7970
      /*--------------- Business Rules Here -------------------*/
7971
      problemstring := NULL;
7972
 
7973
      IF overridewarnings = 'N'
7974
      THEN
7975
         -- Package must not be official
7976
         SELECT pv.dlocked
7977
           INTO LOCKED
7978
           FROM package_versions pv
7979
          WHERE pv.pv_id = pvid;
7980
 
7981
         IF LOCKED = 'Y'
7982
         THEN
7983
            problemstring :=
7984
                  problemstring
7985
               || '- Package is locked and released.'
7986
               || UTL_TCP.crlf;
7987
         END IF;
7988
 
7989
         -- Cannot remove if used in BOMs
7990
         SELECT COUNT (osc.prod_id)
7991
           INTO ROWCOUNT
7992
           FROM deployment_manager.os_contents osc
7993
          WHERE osc.prod_id = pvid;
7994
 
7995
         IF ROWCOUNT > 0
7996
         THEN
7997
            problemstring :=
7998
                  problemstring
7999
               || '- Package is part of Bill-Of-Material (BOM) in Deployment Manager.'
8000
               || UTL_TCP.crlf;
8001
         END IF;
8002
 
8003
         -- Cannot remove if Referenced as build dependency
8004
         SELECT COUNT (dep.pv_id)
8005
           INTO ROWCOUNT
8006
           FROM package_dependencies dep
8007
          WHERE dep.dpv_id = pvid;
8008
 
8009
         IF ROWCOUNT > 0
8010
         THEN
8011
            problemstring :=
8012
                  problemstring
8013
               || '- Package is referenced by other package as build dependency.'
8014
               || UTL_TCP.crlf;
8015
         END IF;
8016
 
8017
         -- Cannot remove if Referenced as runtime dependency
8018
         SELECT COUNT (rd.pv_id)
8019
           INTO ROWCOUNT
8020
           FROM runtime_dependencies rd
8021
          WHERE rd.rtd_id = pvid;
8022
 
8023
         IF ROWCOUNT > 0
8024
         THEN
8025
            problemstring :=
8026
                  problemstring
8027
               || '- Package is referenced by other package as runtime dependency.'
8028
               || UTL_TCP.crlf;
8029
         END IF;
8030
 
8031
         -- Cannot remove if Referenced as patch
8032
         SELECT COUNT (pp.pv_id)
8033
           INTO ROWCOUNT
8034
           FROM package_patches pp
8035
          WHERE pp.patch_id = pvid;
8036
 
8037
         IF ROWCOUNT > 0
8038
         THEN
8039
            problemstring :=
8040
                  problemstring
8041
               || '- Package is used as patch by other package.'
8042
               || UTL_TCP.crlf;
8043
         END IF;
8044
      END IF;
8045
 
8046
/*-------------------------------------------------------*/
8047
      IF (problemstring IS NULL)
8048
      THEN
8049
         --- Remove From Work in Progress
8050
         DELETE FROM work_in_progress wip
8051
               WHERE wip.pv_id = pvid;
8052
 
8053
         --- Remove From Pending
8054
         DELETE FROM planned pl
8055
               WHERE pl.pv_id = pvid;
8056
 
8057
         --- Remove From Released area
8058
         DELETE FROM release_content rc
8059
               WHERE rc.pv_id = pvid;
8060
 
8061
         ---Remove From Package Processes
8062
         DELETE FROM package_processes pp
8063
               WHERE pp.pv_id = pvid;
8064
 
8065
         --- Remove Dependencies
8066
         DELETE FROM package_dependencies dep
8067
               WHERE dep.pv_id = pvid;
8068
 
8069
         DELETE FROM package_dependencies dep
8070
               WHERE dep.dpv_id = pvid;
8071
 
8072
         --- Remove Runtime dependencies
8073
         DELETE FROM runtime_dependencies rtd
8074
               WHERE rtd.pv_id = pvid;
8075
 
8076
         DELETE FROM runtime_dependencies rtd
8077
               WHERE rtd.rtd_id = pvid;
8078
 
8079
         --- Remove components
8080
         DELETE FROM product_components pc
8081
               WHERE pc.pv_id = pvid;
8082
 
8083
         DELETE FROM release_components rc
8084
               WHERE rc.pv_id = pvid;
8085
 
8086
         --- Remove From Notification History
8087
         DELETE FROM notification_history nh
8088
               WHERE nh.pv_id = pvid;
8089
 
8090
         --- Remove From Ignore Warnings
8091
         DELETE FROM ignore_warnings iw
8092
               WHERE iw.pv_id = pvid;
8093
 
8094
         --- Remove From Additional Notes
8095
         DELETE FROM additional_notes an
8096
               WHERE an.pv_id = pvid;
8097
 
8098
         --- Remove From CQ Issues
8099
         DELETE FROM cq_issues cq
8100
               WHERE cq.pv_id = pvid;
8101
 
8102
         --- Remove from Package Patches
8103
         DELETE FROM package_patches pp
8104
               WHERE pp.pv_id = pvid;
8105
 
8106
         DELETE FROM package_patches pp
8107
               WHERE pp.patch_id = pvid;
8108
 
8109
         --- Remove From Package Documents
8110
         DELETE FROM package_documents pd
8111
               WHERE pd.pv_id = pvid;
8112
 
8113
         --- Remove from Code Review
8114
         DELETE FROM code_reviews cr
8115
               WHERE cr.pv_id = pvid;
8116
 
3959 dpurdie 8117
         --- Remove from Code Review URL
8118
         DELETE FROM code_review_url cru
8119
               WHERE cru.pv_id = pvid;
8120
 
1373 dpurdie 8121
         --- Remove from Unit Tests
8122
         DELETE FROM unit_tests ut
8123
               WHERE ut.pv_id = pvid;
8124
 
8125
         --- Remove from Package BuildEnv
8126
         DELETE FROM package_build_env pbe
8127
               WHERE pbe.pv_id = pvid;
8128
 
3959 dpurdie 8129
         --- Remove from Package Build Info
8130
         DELETE FROM package_build_info pbi
8131
               WHERE pbi.pv_id = pvid;
8132
 
1373 dpurdie 8133
         --- Remove from Build Order
8134
         DELETE FROM build_order bo
8135
               WHERE bo.pv_id = pvid;
8136
 
3959 dpurdie 8137
         --- Remove from Licencing
8138
         PK_LICENCING.REMOVE_ALL_LICENCING( pvid, 0 );
8139
 
1373 dpurdie 8140
         --- Remove from Note Manager
8141
         DELETE FROM note_manager nm
8142
               WHERE nm.nid = pvid;
8143
 
8144
         --- Remove from Action log
8145
         DELETE FROM action_log al
8146
               WHERE al.pv_id = pvid;
3959 dpurdie 8147
 
8148
         --- Remove from Do Not Ripple
8149
         DELETE FROM DO_NOT_RIPPLE dnr
8150
               WHERE dnr.PV_ID = pvid;
8151
 
8152
         --- Remove from Advisory Ripple
8153
         DELETE FROM ADVISORY_RIPPLE ar
8154
               WHERE ar.PV_ID = pvid;
8155
 
8156
         --- Remove from Jira Issues
8157
         DELETE FROM JIRA_ISSUES jira
8158
               WHERE jira.PV_ID = pvid;
8159
 
8160
         --- Remove from Package Metrics
8161
         DELETE FROM package_metrics pm
8162
              WHERE pm.pv_id = pvid;
8163
 
8164
         -- Delete from Pegged Versions
8165
         DELETE FROM pegged_versions pegv
8166
              WHERE pegv.pv_id = pvid;
8167
 
1373 dpurdie 8168
         --- Finally Remove From Package Versions
8169
         --- Get Package name
8170
         SELECT pv.pkg_id
8171
           INTO pkgid
8172
           FROM package_versions pv
8173
          WHERE pv.pv_id = pvid;
8174
 
8175
         DELETE FROM package_versions pv
8176
               WHERE pv.pv_id = pvid;
8177
 
8178
         --- Remove package name if not used any more
8179
         SELECT COUNT (pv.pv_id)
8180
           INTO ROWCOUNT
8181
           FROM package_versions pv
8182
          WHERE pv.pkg_id = pkgid;
8183
 
8184
         IF ROWCOUNT < 1
8185
         THEN
8186
            DELETE FROM PACKAGES pkg
8187
                  WHERE pkg.pkg_id = pkgid;
8188
         END IF;
8189
      END IF;
8190
   END;
8191
 
8192
/*-------------------------------------------------------------------------------------------------------*/
8193
   PROCEDURE new_patch (
8194
      snewpatchversion   IN       package_versions.pkg_version%TYPE,
8195
      nparentpvid        IN       NUMBER,
8196
      spatchidlist       IN       VARCHAR2,
8197
      nuserid            IN       NUMBER,
8198
      returnpatchid      OUT      NUMBER
8199
   )
8200
   IS
8201
      patchpv_id           NUMBER;
8202
      parpkg_id            NUMBER;
8203
      lastinstallorder     NUMBER;
8204
      ispatchdlocked       package_versions.dlocked%TYPE;
8205
      ssv_mm               package_versions.v_mm%TYPE;
8206
      ssv_nmm              package_versions.v_nmm%TYPE;
8207
      ssv_ext              package_versions.v_ext%TYPE;
3959 dpurdie 8208
      opatchdepcollector   relmgr_number_tab_t  := relmgr_number_tab_t ();
1373 dpurdie 8209
 
8210
      CURSOR parent_cur
8211
      IS
8212
         SELECT pv.*, pkg.pkg_name
8213
           FROM package_versions pv, PACKAGES pkg
8214
          WHERE pv.pv_id = nparentpvid AND pv.pkg_id = pkg.pkg_id;
8215
 
3959 dpurdie 8216
      parent_rec parent_cur%ROWTYPE;
1373 dpurdie 8217
 
8218
      CURSOR patch_cur
8219
      IS
8220
         SELECT pv.*, pg.pkg_name
8221
           FROM package_versions pv, PACKAGES pg
8222
          WHERE pv.pkg_id = parpkg_id
8223
            AND pv.pkg_version = snewpatchversion
8224
            AND pv.pkg_id = pg.pkg_id;
8225
 
3959 dpurdie 8226
      patch_rec  patch_cur%ROWTYPE;
1373 dpurdie 8227
 
8228
      CURSOR releases_cur
8229
      IS
8230
         SELECT rc.pv_id
8231
           FROM release_content rc
8232
          WHERE rc.pv_id = patch_rec.pv_id;
8233
 
3959 dpurdie 8234
      releases_rec releases_cur%ROWTYPE;
1373 dpurdie 8235
   BEGIN
8236
      -- Get Last Install Order
8237
      SELECT COUNT (*)
8238
        INTO lastinstallorder
8239
        FROM package_patches pp
8240
       WHERE pp.pv_id = nparentpvid;
8241
 
8242
      -- Get parent details
8243
      OPEN parent_cur;
8244
 
8245
      FETCH parent_cur
8246
       INTO parent_rec;
8247
 
8248
      parpkg_id := parent_rec.pkg_id;
8249
 
8250
      -- Find if patch exists in database
8251
      OPEN patch_cur;
8252
 
8253
      FETCH patch_cur
8254
       INTO patch_rec;
8255
 
8256
      -- Parent must be official
8257
      IF parent_rec.dlocked = 'Y'
8258
      THEN
8259
         IF patch_cur%NOTFOUND
8260
         THEN
8261
            ispatchdlocked := 'N';
8262
 
8263
            -- Create new patch version --
8264
            SELECT seq_pv_id.NEXTVAL
8265
              INTO patchpv_id
8266
              FROM DUAL;
8267
 
8268
            split_version (snewpatchversion, ssv_mm, ssv_nmm, ssv_ext);
8269
 
8270
            INSERT INTO package_versions
8271
                        (pv_id, pkg_id, pkg_version,
8272
                         dlocked, created_stamp, creator_id,
8273
                         modified_stamp, modifier_id, v_mm, v_nmm, v_ext,
8274
                         src_path,
8275
                         pv_description,
8276
                         owner_id, is_patch, last_pv_id, build_type, is_build_env_required, bs_id,
3959 dpurdie 8277
                         is_autobuildable, ripple_field
1373 dpurdie 8278
                        )
8279
                 VALUES (patchpv_id, parpkg_id, snewpatchversion,
8280
                         ispatchdlocked, ora_sysdate, nuserid,
8281
                         ora_sysdatetime, nuserid, ssv_mm, ssv_nmm, ssv_ext,
8282
                         parent_rec.src_path,
8283
                            'This is a patch to '
8284
                         || parent_rec.pkg_name
8285
                         || ' '
8286
                         || parent_rec.pkg_version,
3959 dpurdie 8287
                         nuserid, 'Y', patchpv_id, 'M', 'N', 3, 'N', parent_rec.ripple_field
1373 dpurdie 8288
                        );
8289
 
8290
            INSERT INTO package_patches
8291
                        (pv_id, patch_id, install_order)
3959 dpurdie 8292
                (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
8293
                        lastinstallorder + 1 AS install_order
8294
                   FROM package_versions pv
8295
                  WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
1373 dpurdie 8296
 
8297
            /* LOG ACTION */
8298
            log_action (patchpv_id,
8299
                        'new_version',
8300
                        nuserid,
8301
                        'Patch version created: ' || snewpatchversion
8302
                       );
8303
            log_action (nparentpvid,
8304
                        'patch_add',
8305
                        nuserid,
8306
                        'New patch created and attached: ' || snewpatchversion
8307
                       );
8308
         ELSE
8309
            patchpv_id := patch_rec.pv_id;
8310
            ispatchdlocked := patch_rec.dlocked;
8311
 
8312
            -- Find if pv_id exists in release content (i.e. it cannot be a patch)
8313
            OPEN releases_cur;
8314
 
8315
            FETCH releases_cur
8316
             INTO releases_rec;
8317
 
8318
            IF releases_cur%NOTFOUND
8319
            THEN
8320
               -- This pv_id is trully a patch, hence add Y to column IS_PATCH
8321
               UPDATE package_versions
8322
                  SET is_patch = 'Y'
8323
                WHERE pv_id = patchpv_id;
8324
 
8325
               INSERT INTO package_patches
8326
                           (pv_id, patch_id, install_order)
3959 dpurdie 8327
                   (SELECT nparentpvid AS pv_id, pv.pv_id AS patch_id,
8328
                           lastinstallorder + 1 AS install_order
8329
                      FROM package_versions pv
8330
                     WHERE pv.pv_id = patchpv_id AND pv.is_patch = 'Y');
1373 dpurdie 8331
            END IF;
8332
 
8333
            CLOSE releases_cur;
8334
 
8335
            /* LOG ACTION */
8336
            log_action (nparentpvid,
8337
                        'patch_add',
8338
                        nuserid,
8339
                           'Patch version was found and attached: '
8340
                        || snewpatchversion
8341
                       );
8342
         END IF;
8343
      END IF;
8344
 
8345
      /* Create Patch Dependencies */
8346
      opatchdepcollector := in_list_number (spatchidlist);
8347
 
8348
      -- Make sure patch is unofficial before altering its dependencies
8349
      IF (opatchdepcollector.COUNT > 0) AND (ispatchdlocked = 'N')
8350
      THEN
8351
         -- Delete Existing Dependencies
8352
         DELETE FROM package_dependencies dep
8353
               WHERE dep.pv_id = patchpv_id;
8354
 
8355
         -- Insert new dependencies
8356
         INSERT INTO package_dependencies
8357
                     (pv_id, dpv_id, pkg_id, dpkg_id, build_type)
3959 dpurdie 8358
              SELECT patchpv_id AS pv_id, pv.pv_id AS dpv_id,
8359
                     parpkg_id AS pkg_id, pv.pkg_id AS dpkg_id,
8360
                     'L' AS build_type
8361
                FROM package_versions pv
8362
               WHERE pv.pv_id IN (
1373 dpurdie 8363
                      SELECT *
8364
                        FROM TABLE
8365
                                (CAST
8366
                                    (opatchdepcollector AS relmgr_number_tab_t)
8367
                                ));
8368
      END IF;
8369
 
8370
      -- Return patch_id
8371
      returnpatchid := patchpv_id;
8372
 
8373
      CLOSE parent_cur;
8374
 
8375
      CLOSE patch_cur;
8376
   EXCEPTION
8377
      WHEN DUP_VAL_ON_INDEX
8378
      THEN
8379
         raise_application_error (-20000,
8380
                                     'Patch version '
8381
                                  || snewpatchversion
8382
                                  || ' already exist.'
8383
                                 );
8384
   END;
8385
 
8386
/*-------------------------------------------------------------------------------------------------------*/
8387
   PROCEDURE obsolete_patch (
8388
      patchid            IN   NUMBER,
8389
      isobsolete         IN   CHAR,
8390
      obsoletecomments   IN   VARCHAR2,
8391
      userid             IN   NUMBER
8392
   )
8393
   IS
8394
   BEGIN
8395
      -- Update patch
8396
      UPDATE package_versions pv
8397
         SET pv.is_obsolete = isobsolete,
8398
             pv.obsolete_comments = obsoletecomments
8399
       WHERE pv.pv_id = patchid;
8400
 
8401
      /*
8402
      -- Update patch children
8403
      UPDATE PACKAGE_VERSIONS pv SET
8404
      pv.IS_OBSOLETE = IsObsolete,
8405
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8406
      WHERE pv.PV_ID IN (
8407
                     SELECT DISTINCT dep.DPV_ID
8408
                       FROM PACKAGE_DEPENDENCIES dep
8409
                      WHERE dep.PV_ID = PatchId
8410
                     );
8411
 
8412
 
8413
      -- Update patch parent
8414
      UPDATE PACKAGE_VERSIONS pv SET
8415
      pv.IS_OBSOLETE = IsObsolete,
8416
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8417
      WHERE pv.PV_ID IN (
8418
                     SELECT DISTINCT dep.PV_ID
8419
                       FROM PACKAGE_DEPENDENCIES dep
8420
                      WHERE dep.DPV_ID = PatchId
8421
                     );
8422
 
3959 dpurdie 8423
      */
1373 dpurdie 8424
 
8425
      /* LOG ACTION */
8426
      IF isobsolete IS NOT NULL
8427
      THEN
8428
         log_action (patchid,
8429
                     'patch_obsolete',
8430
                     userid,
8431
                     'Obsolete patch. ' || obsoletecomments
8432
                    );
8433
      ELSE
8434
         log_action (patchid,
8435
                     'patch_obsolete',
8436
                     userid,
8437
                     'Undo patch obsolete.'
8438
                    );
8439
      END IF;
8440
   END;
8441
 
8442
/*-------------------------------------------------------------------------------------------------------*/
8443
   PROCEDURE obsolete_patches (
8444
      spatchidlist       IN   VARCHAR2,
8445
      isobsolete         IN   CHAR,
8446
      obsoletecomments   IN   VARCHAR2,
8447
      userid             IN   NUMBER
8448
   )
8449
   IS
8450
   BEGIN
8451
      /*--------------- Business Rules Here -------------------*/
8452
      IF spatchidlist IS NULL
8453
      THEN
8454
         raise_application_error (-20000,
8455
                                  'Please select one or more Patches.'
8456
                                 );
8457
      END IF;
8458
 
8459
/*-------------------------------------------------------*/
8460
 
8461
      -- Update patch
8462
      UPDATE package_versions pv
8463
         SET pv.is_obsolete = isobsolete,
8464
             pv.obsolete_comments = obsoletecomments
8465
       WHERE pv.pv_id IN (
8466
                SELECT *
8467
                  FROM THE
8468
                          (SELECT CAST
8469
                                     (in_list_number (spatchidlist) AS relmgr_number_tab_t
8470
                                     )
8471
                             FROM DUAL
8472
                          ));
3959 dpurdie 8473
      /*
8474
      -- Update patch children
8475
      UPDATE PACKAGE_VERSIONS pv SET
8476
      pv.IS_OBSOLETE = IsObsolete,
8477
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8478
      WHERE pv.PV_ID IN (
8479
                     SELECT DISTINCT dep.DPV_ID
8480
                       FROM PACKAGE_DEPENDENCIES dep
8481
                      WHERE dep.PV_ID = PatchId
8482
                     );
1373 dpurdie 8483
 
8484
 
3959 dpurdie 8485
      -- Update patch parent
8486
      UPDATE PACKAGE_VERSIONS pv SET
8487
      pv.IS_OBSOLETE = IsObsolete,
8488
      pv.OBSOLETE_COMMENTS = ObsoleteComments
8489
      WHERE pv.PV_ID IN (
8490
                     SELECT DISTINCT dep.PV_ID
8491
                       FROM PACKAGE_DEPENDENCIES dep
8492
                      WHERE dep.DPV_ID = PatchId
8493
                     );
1373 dpurdie 8494
 
8495
      */
8496
 
3959 dpurdie 8497
      /* LOG ACTION
8498
      IF IsObsolete IS NOT NULL THEN
1373 dpurdie 8499
         Log_Action ( PatchId, 'patch_obsolete', UserId,
3959 dpurdie 8500
                     'Obsolete patch. '|| ObsoleteComments );
8501
      ELSE
8502
         Log_Action ( PatchId, 'patch_obsolete', UserId,
8503
                     'Undo patch obsolete.' );
8504
      END IF;  */
1373 dpurdie 8505
   END;
8506
 
8507
/*-------------------------------------------------------------------------------------------------------*/
8508
   PROCEDURE add_process (
8509
      nprocid         IN   processes.proc_id%TYPE,
8510
      shealthtag      IN   processes.proc_name%TYPE,
8511
      sprocdesc       IN   processes.proc_description%TYPE,
8512
      scmdinterface   IN   processes.run_as%TYPE,
8513
      spkgowner       IN   processes.pkg_owner%TYPE,
8514
      sisinterface    IN   processes.is_interface%TYPE,
8515
      npvid           IN   package_processes.pv_id%TYPE,
8516
      nuserid         IN   NUMBER
8517
   )
8518
   IS
8519
      pkgname   VARCHAR2 (100);
3959 dpurdie 8520
 
1373 dpurdie 8521
   BEGIN
8522
      INSERT INTO processes
8523
                  (proc_id, proc_name, proc_description, run_as, pkg_owner,
8524
                   is_interface
8525
                  )
8526
           VALUES (nprocid, shealthtag, sprocdesc, scmdinterface, spkgowner,
8527
                   sisinterface
8528
                  );
8529
 
8530
      pk_package.add_package_process (nprocid, npvid, nuserid);
8531
   END;
8532
 
8533
/*-------------------------------------------------------------------------------------------------------*/
8534
   PROCEDURE add_package_process (
8535
      nprocidlist   IN   VARCHAR2,
8536
      npvid         IN   package_processes.pv_id%TYPE,
8537
      nuserid       IN   NUMBER
8538
   )
8539
   IS
8540
      processname   VARCHAR2 (4000);
8541
 
8542
      CURSOR proc_cur
8543
      IS
8544
         SELECT prc.proc_id
8545
           FROM processes prc
8546
          WHERE prc.proc_id IN (
8547
                   SELECT *
8548
                     FROM THE
8549
                             (SELECT CAST
8550
                                        (in_list_number (nprocidlist) AS relmgr_number_tab_t
8551
                                        )
8552
                                FROM DUAL
8553
                             ));
8554
 
3959 dpurdie 8555
      proc_rec  proc_cur%ROWTYPE;
1373 dpurdie 8556
   BEGIN
8557
      OPEN proc_cur;
8558
 
8559
      FETCH proc_cur
8560
       INTO proc_rec;
8561
 
8562
      WHILE proc_cur%FOUND
8563
      LOOP
3959 dpurdie 8564
         INSERT INTO package_processes (proc_id, pv_id)
8565
              VALUES (proc_rec.proc_id, npvid);
1373 dpurdie 8566
 
8567
         SELECT prc.proc_name
8568
           INTO processname
8569
           FROM processes prc
8570
          WHERE prc.proc_id = proc_rec.proc_id;
8571
 
8572
         -- Log Action --
8573
         log_action (npvid,
8574
                     'process_add',
8575
                     nuserid,
8576
                     'Added process with health tag ' || processname
8577
                    );
8578
 
8579
         FETCH proc_cur
8580
          INTO proc_rec;
8581
      END LOOP;
3959 dpurdie 8582
 
8583
      CLOSE proc_cur;
1373 dpurdie 8584
   END;
8585
 
8586
/*-------------------------------------------------------------------------------------------------------*/
8587
   PROCEDURE remove_process (
8588
      nprocid   IN   package_processes.proc_id%TYPE,
8589
      npvid     IN   package_processes.pv_id%TYPE,
8590
      nuserid   IN   NUMBER
8591
   )
8592
   IS
8593
      processname   VARCHAR2 (4000);
8594
   BEGIN
8595
      SELECT prc.proc_name
8596
        INTO processname
8597
        FROM processes prc
8598
       WHERE prc.proc_id = nprocid;
8599
 
8600
      DELETE FROM package_processes
8601
            WHERE proc_id = nprocid AND pv_id = npvid;
8602
 
8603
      -- Log Action --
8604
      log_action (npvid,
8605
                  'process_remove',
8606
                  nuserid,
8607
                  'Removed process with health tag ' || processname
8608
                 );
8609
   END;
8610
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8611
   /*
8612
   ** Author: Rupesh Solanki
8613
   ** Purpose: To move package versions from one release to another
8614
   ** Release: 4th September 2006
8615
   */
8616
   PROCEDURE move_package (
8617
      npvid        IN package_versions.pv_id%TYPE,
8618
      nrtagid      IN release_tags.rtag_id%TYPE,
8619
      nnewrtagid   IN release_tags.rtag_id%TYPE,
8620
      nuserid      IN NUMBER
8621
   )
8622
   IS
1373 dpurdie 8623
 
3959 dpurdie 8624
      oldrtag_name VARCHAR2(4000);newrtag_name VARCHAR2(4000);
8625
 
8626
   BEGIN
8627
      SELECT rtag_name into oldrtag_name
8628
      FROM RELEASE_TAGS
8629
      WHERE rtag_id = nrtagid;
8630
 
8631
      SELECT rtag_name into newrtag_name
8632
      FROM RELEASE_TAGS
8633
      WHERE rtag_id = nnewrtagid;
8634
 
8635
      /* Table Work In Progress*/
8636
      UPDATE WORK_IN_PROGRESS
8637
      SET RTAG_ID = nnewrtagid
8638
      WHERE RTAG_ID = nrtagid
8639
      AND PV_ID = npvid;
8640
 
8641
      /* Table PLANNED*/
8642
      UPDATE PLANNED
8643
      SET RTAG_ID = nnewrtagid
8644
      WHERE RTAG_ID = nrtagid
8645
      AND PV_ID = npvid;
8646
 
8647
      /* Table PEGGED_VERSIONS */
8648
      DELETE FROM PEGGED_VERSIONS pegv
8649
      WHERE pegv.RTAG_ID = nrtagid
8650
      AND pegv.PV_ID = npvid;
8651
 
8652
      /* Table ADVISORY_RIPPLE*/
8653
      DELETE FROM ADVISORY_RIPPLE
8654
      WHERE RTAG_ID = nrtagid
8655
      AND PV_ID = npvid;
8656
 
8657
 
1373 dpurdie 8658
      -- Log Action --
8659
      log_action (npvid,
8660
                  'move_package_version',
8661
                  nuserid,
8662
                  'Moved package version from ' || oldrtag_name || ' to ' || newrtag_name
3959 dpurdie 8663
                 );
8664
   END;
8665
 
1373 dpurdie 8666
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8667
   /*
8668
   ** Author: Rupesh Solanki
8669
   ** Purpose: To modify the product state from integration to test to deployment
8670
   ** Release: 25th January 2006
8671
   */
8672
   PROCEDURE modify_product_state (
8673
      npvid    IN package_versions.pv_id%TYPE,
8674
      nrtagid  IN release_tags.rtag_id%TYPE,
8675
      nstateid IN product_states.state_id%TYPE,
8676
      nuserid  IN NUMBER
1373 dpurdie 8677
   ) IS
3959 dpurdie 8678
 
8679
      sStateName VARCHAR2(4000);
8680
      sRtagName VARCHAR2(4000);
8681
 
8682
   BEGIN
8683
 
8684
      UPDATE RELEASE_CONTENT
8685
      SET PRODUCT_STATE = nstateid
8686
      WHERE PV_ID = npvid
8687
      AND RTAG_ID = nrtagid;
8688
 
8689
 
8690
      SELECT STATE INTO sStateName
8691
      FROM PRODUCT_STATES
8692
      WHERE STATE_ID = nstateid;
8693
 
8694
      SELECT RTAG_NAME into sRtagName
8695
      FROM RELEASE_TAGS
8696
      WHERE RTAG_ID = nrtagid;
8697
 
8698
 
8699
      -- Log Action --
8700
      log_action (npvid,
8701
                  'modify_product_state',
8702
                     nuserid,
8703
                     sStateName || ' in '|| sRtagName
8704
                  );
8705
   END;
8706
/*-------------------------------------------------------------------------------------------------------*/
8707
   /*
8708
   ** Author: Jeremy Tweddle
8709
   ** Date: 24/Aug/2007
8710
   */
8711
   PROCEDURE add_code_review_url (
8712
      npvid           IN    NUMBER,
8713
      nprojid         IN    NUMBER,
8714
      surl            IN    VARCHAR2,
8715
      sreason         IN    VARCHAR2,
8716
      ddateofreview   IN    DATE
8717
   ) IS
8718
 
8719
      ncrid NUMBER;
8720
 
8721
   BEGIN
8722
 
8723
      SELECT seq_cr_id.NEXTVAL INTO ncrid FROM DUAL;
8724
 
8725
      INSERT INTO code_review_url ( cr_id, pv_id, proj_id, url, reason, date_of_review,
8726
                                    last_modified )
8727
      VALUES ( ncrid, npvid, nprojid, surl, sreason, ddateofreview, ora_sysdate );
8728
 
8729
   END;
8730
/*-------------------------------------------------------------------------------------------------------*/
8731
   /*
8732
   ** Author: Jeremy Tweddle
8733
   ** Date: 22/Aug/2007
8734
   */
8735
   PROCEDURE update_code_review_url (
8736
      ncrid           IN    NUMBER,
8737
      nprojid         IN    NUMBER,
8738
      surl            IN    VARCHAR2,
8739
      sreason         IN    VARCHAR2
8740
   ) IS
8741
 
8742
   BEGIN
8743
 
8744
      UPDATE code_review_url
8745
      SET url = surl,
8746
          proj_id = nprojid,
8747
          reason = sreason,
8748
          last_modified = ora_sysdate
8749
      WHERE cr_id = ncrid;
8750
 
8751
   END;
8752
/*-------------------------------------------------------------------------------------------------------*/
8753
   /*
8754
   ** Author: Jeremy Tweddle
8755
   ** Date: 22/Aug/2007
8756
   */
8757
   PROCEDURE remove_code_review_url (
8758
      ncrid  IN    NUMBER
8759
   ) IS
8760
 
8761
   BEGIN
8762
      DELETE FROM code_review_url
8763
      WHERE cr_id = ncrid;
8764
   END;
8765
/*-------------------------------------------------------------------------------------------------------*/
8766
END pk_package;
4040 dpurdie 8767
 
1374 dpurdie 8768
/
1373 dpurdie 8769
 
4040 dpurdie 8770
/
8771
--------------------------------------------------------
8772
--  DDL for Package Body PK_PLANNED
8773
--------------------------------------------------------
8774
 
3959 dpurdie 8775
  CREATE OR REPLACE PACKAGE BODY "PK_PLANNED" IS
8776
 
1373 dpurdie 8777
/*
8778
------------------------------
3959 dpurdie 8779
||  Last Modified:  G.Huddy
8780
||  Modified Date:  05/Aug/2008
8781
||  Body Version:   1.2
1373 dpurdie 8782
------------------------------
8783
*/
8784
 
8785
 
8786
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8787
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 8788
 
3959 dpurdie 8789
    oldPvId NUMBER;
8790
    ReleaseLocation VARCHAR2(4000);
8791
    IsPatch CHAR(1) := NULL;
8792
    sLocation VARCHAR2(4000) := NULL;
8793
    nRtagIdLocation NUMBER;
1373 dpurdie 8794
 
8795
 
8796
 
3959 dpurdie 8797
BEGIN
8798
    /*--------------- Business Rules Here -------------------*/
8799
    /*-------------------------------------------------------*/
1373 dpurdie 8800
 
3959 dpurdie 8801
    BEGIN
8802
        -- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
8803
        SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME, rt.RTAG_ID  INTO sLocation, nRtagIdLocation
8804
          FROM PLANNED pl,
8805
               RELEASE_TAGS rt,
8806
               PROJECTS proj
8807
         WHERE pl.PV_ID = newPvId
8808
           AND pl.RTAG_ID = rt.RTAG_ID
8809
           AND rt.OFFICIAL != 'Y'
8810
           AND rt.PROJ_ID = proj.PROJ_ID;
1373 dpurdie 8811
 
3959 dpurdie 8812
        EXCEPTION
8813
            WHEN NO_DATA_FOUND THEN
8814
                sLocation := NULL;
8815
    END;
1373 dpurdie 8816
 
3959 dpurdie 8817
 
8818
 
8819
    IF (sLocation IS NULL) OR (nRtagIdLocation = RtagId) THEN
8820
 
8821
        -- Add to "Pending" area
8822
        INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
8823
        VALUES( RtagId, newPvId, ViewId, 'R' );
8824
 
8825
 
8826
        /* LOG ACTION */
8827
        SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
8828
          FROM PROJECTS proj,
8829
               RELEASE_TAGS rt
8830
         WHERE rt.PROJ_ID = proj.PROJ_ID
8831
           AND rt.RTAG_ID = RtagId;
8832
 
8833
        Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
8834
 
8835
    ELSE
8836
 
8837
        RAISE_APPLICATION_ERROR (-20000, 'This version is already in Pending Area at '|| sLocation ||'.' );
8838
 
8839
    END IF;
8840
 
8841
END;
1373 dpurdie 8842
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8843
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 8844
 
3959 dpurdie 8845
    ReleaseLocation VARCHAR2(4000);
1373 dpurdie 8846
 
3959 dpurdie 8847
BEGIN
1373 dpurdie 8848
 
3959 dpurdie 8849
    /*--------------- Business Rules Here -------------------*/
8850
    /*-------------------------------------------------------*/
1373 dpurdie 8851
 
8852
 
3959 dpurdie 8853
    -- Get release location for logging pusposes
8854
    SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
8855
      FROM PROJECTS proj,
8856
           RELEASE_TAGS rt
8857
     WHERE rt.PROJ_ID = proj.PROJ_ID
8858
       AND rt.RTAG_ID = RtagId;
1373 dpurdie 8859
 
8860
 
3959 dpurdie 8861
    -- Delete from Work In Progress
8862
    DELETE
8863
      FROM PLANNED pl
8864
     WHERE pl.RTAG_ID = RtagId
8865
       AND pl.PV_ID = PvId;
1373 dpurdie 8866
 
3959 dpurdie 8867
    Log_Action ( PvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
8868
 
8869
 
8870
 
8871
 
8872
END;
1373 dpurdie 8873
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 8874
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
1373 dpurdie 8875
 
3959 dpurdie 8876
    ReturnValue NUMBER;
1373 dpurdie 8877
 
3959 dpurdie 8878
BEGIN
8879
    SELECT pl.VIEW_ID INTO ReturnValue
8880
      FROM PLANNED pl
8881
     WHERE pl.RTAG_ID = RtagId
8882
       AND pl.PV_ID = PvId;
8883
 
8884
    RETURN ReturnValue;
8885
END;
8886
/*-------------------------------------------------------------------------------------------------------*/
8887
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
8888
 
8889
    IsBaseView CHAR(1);
8890
 
8891
BEGIN
8892
 
8893
    -- Check if the view is BASE VIEW
8894
    SELECT vi.BASE_VIEW INTO IsBaseView
8895
      FROM VIEWS vi
8896
     WHERE vi.VIEW_ID = ViewId;
8897
 
8898
 
8899
    IF (IsBaseView = 'Y') THEN
8900
        -- Get Base view content
8901
        OPEN RecordSet FOR
8902
        SELECT 0 AS PKG_STATE,
8903
               NULL AS DEPRECATED_STATE,
8904
               pv.pv_id,
8905
               pkg.pkg_name,
8906
               pv.pkg_version,
8907
               pv.dlocked,
8908
               pv.pv_description,
8909
               pv.BUILD_TYPE,
8910
               rel.operation
8911
          FROM PLANNED rel,
8912
               packages pkg,
8913
               package_versions pv
8914
         WHERE pv.pkg_id = pkg.pkg_id
8915
           AND rel.pv_id = pv.pv_id
8916
           AND rel.VIEW_ID = ViewId
8917
           AND rel.RTAG_ID = RtagId
8918
         ORDER BY UPPER(pkg.PKG_NAME);
8919
 
8920
    ELSE
8921
 
8922
        -- Get non base view content
8923
        OPEN RecordSet FOR
8924
        SELECT 0 AS PKG_STATE,
8925
               NULL AS DEPRECATED_STATE,
8926
               pv.pv_id,
8927
               pkg.pkg_name,
8928
               pv.pkg_version,
8929
               pv.dlocked,
8930
               pv.pv_description,
8931
               pv.BUILD_TYPE,
8932
               rel.operation
8933
          FROM PLANNED rel,
8934
               packages pkg,
8935
               package_versions pv,
8936
               VIEW_DEF vd
8937
         WHERE pv.pkg_id = pkg.pkg_id
8938
           AND rel.pv_id = pv.pv_id
8939
           AND rel.RTAG_ID = RtagId
8940
           AND vd.VIEW_ID = ViewId
8941
           AND vd.PKG_ID = pv.PKG_ID
8942
         ORDER BY UPPER(pkg.PKG_NAME);
8943
 
8944
    END IF;
8945
 
8946
 
8947
END;
8948
/*-------------------------------------------------------------------------------------------------------*/
8949
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
8950
 
8951
BEGIN
8952
 
8953
    UPDATE PLANNED pl SET
8954
    pl.VIEW_ID = NewViewId
8955
    WHERE pl.PV_ID = PvId
8956
      AND pl.RTAG_ID = RtagId;
8957
 
8958
END;
8959
/*-------------------------------------------------------------------------------------------------------*/
8960
-- DEVI-45275 This new function supports the ability to insert into the planned table, and existing
8961
-- version of a package as part of a release-to-release merge operation carried out within release manager.
8962
-- DEVI-49594 This function has subsequently been changed to allow a merge operation to cancel its
8963
-- opposite operation, if the opposite already exists in the planned table. This supports user activity
8964
-- via the Release Manager merge manager display
8965
 
8966
PROCEDURE MERGE_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER, mergeOperation IN CHAR ) IS
8967
 
8968
    ReleaseLocation VARCHAR2(4000);
8969
 
8970
        entryExists NUMBER;
8971
        existingOperation CHAR;
8972
BEGIN
8973
    /*--------------- Business Rules Here -------------------*/
8974
    /*-------------------------------------------------------*/
8975
 
8976
      -- Determine if the specified PV_ID already exists in the planned table....
8977
      SELECT COUNT (pl.pv_id) INTO entryExists
8978
      FROM PLANNED pl
8979
      WHERE pl.pv_id = newPvId
8980
      AND pl.rtag_id = RtagId
8981
      AND pl.view_id = ViewId;
8982
 
8983
      -- If the specified PV_ID already exists in the planned table....
8984
      IF entryExists = 1 THEN
8985
 
8986
         -- Get the operation for the existing entry
8987
         SELECT pl.operation INTO existingOperation
8988
         FROM PLANNED pl
8989
         WHERE pl.pv_id = newPvId
8990
         AND pl.rtag_id = RtagId
8991
         AND pl.view_id = ViewId;
8992
 
8993
         -- Is the specified merge operation the opposite of the existing entry?
8994
         -- If it is not, then there is nothing to do, otherwise...
8995
         -- NOTE: A = Add, S = Subtract
8996
         IF (mergeOperation = 'S' AND existingOperation = 'A')
8997
            OR (mergeOperation = 'A' AND existingOperation = 'S') THEN
8998
 
8999
           -- It is the opposite, so effectively it cancels the existing entry
9000
           -- Remove the entry from the planned table
9001
           DELETE
9002
            FROM PLANNED pl
9003
           WHERE pl.pv_id = newPvId
9004
             AND pl.rtag_id = RtagId
9005
             AND pl.view_id = ViewId;
9006
 
9007
           -- Log action
9008
           SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9009
             FROM PROJECTS proj,
9010
                  RELEASE_TAGS rt
9011
            WHERE rt.PROJ_ID = proj.PROJ_ID
9012
              AND rt.RTAG_ID = RtagId;
9013
 
9014
           Log_Action ( newPvId, 'deleted_from_pending', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 9015
         END IF;
3959 dpurdie 9016
      ELSE
9017
         -- Add to Planned tabled
9018
         INSERT INTO PLANNED ( RTAG_ID, PV_ID, VIEW_ID, OPERATION )
9019
         VALUES( RtagId, newPvId, ViewId, mergeOperation );
1373 dpurdie 9020
 
3959 dpurdie 9021
         -- Log Action
9022
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9023
          FROM PROJECTS proj,
9024
               RELEASE_TAGS rt
9025
         WHERE rt.PROJ_ID = proj.PROJ_ID
9026
         AND   rt.RTAG_ID = RtagId;
9027
 
9028
         Log_Action ( newPvId, 'add_to_planned', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 9029
      END IF;
9030
 
3959 dpurdie 9031
END;
1373 dpurdie 9032
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9033
END PK_PLANNED;
4040 dpurdie 9034
 
3959 dpurdie 9035
/
1373 dpurdie 9036
 
4040 dpurdie 9037
/
9038
--------------------------------------------------------
9039
--  DDL for Package Body PK_PROJECT
9040
--------------------------------------------------------
9041
 
3959 dpurdie 9042
  CREATE OR REPLACE PACKAGE BODY "PK_PROJECT" IS
1373 dpurdie 9043
 
3959 dpurdie 9044
    /*------------------------------------------------------------------------*/
9045
    PROCEDURE update_base_url (
9046
    nprojid   IN  projects.proj_id%TYPE,
9047
    sbaseurl  IN  VARCHAR2
9048
    ) IS
9049
    BEGIN
1373 dpurdie 9050
 
3959 dpurdie 9051
    UPDATE projects
9052
    SET base_url = sbaseurl
9053
    WHERE proj_id = nprojid;
9054
 
9055
    END update_base_url;
9056
 
9057
/*------------------------------------------------------------------------*/
9058
    PROCEDURE update_project_config (
9059
    nprojid   IN  projects.proj_id%TYPE,
9060
    sbaseurl  IN  VARCHAR2,
9061
    sjirakey  IN  VARCHAR2
9062
    ) IS
9063
    BEGIN
9064
 
9065
    UPDATE projects
9066
    SET base_url = sbaseurl,
9067
        jira_key = sjirakey
9068
    WHERE proj_id = nprojid;
9069
 
9070
    END update_project_config;
9071
    /*------------------------------------------------------------------------*/
9072
 
9073
    END pk_project;
4040 dpurdie 9074
 
3959 dpurdie 9075
/
9076
 
4040 dpurdie 9077
/
9078
--------------------------------------------------------
9079
--  DDL for Package Body PK_RELEASE
9080
--------------------------------------------------------
9081
 
3959 dpurdie 9082
  CREATE OR REPLACE PACKAGE BODY "PK_RELEASE" IS
9083
 
1373 dpurdie 9084
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9085
PROCEDURE New_Release ( sReleaseName IN VARCHAR2, sReleaseComments IN VARCHAR2, nProjId IN NUMBER, nSourceRtagId IN NUMBER, sIsBranched IN CHAR, nUserId IN NUMBER ) IS
1373 dpurdie 9086
 
3959 dpurdie 9087
RtagId NUMBER;
9088
ParentRtagId NUMBER;
9089
RecCount NUMBER := 0;
9090
VtreeId NUMBER;
1373 dpurdie 9091
 
3959 dpurdie 9092
BEGIN
9093
   /*--------------- Business Rules Here -------------------*/
9094
   -- Check for missing parameters
9095
   IF (sReleaseName IS NULL) OR (nUserId IS NULL)
9096
   THEN
9097
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId );
1373 dpurdie 9098
 
3959 dpurdie 9099
   END IF;
1373 dpurdie 9100
 
3959 dpurdie 9101
 
9102
   -- Check for duplicate Release Names
9103
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9104
     FROM RELEASE_TAGS rt
9105
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9106
      AND rt.PROJ_ID = nProjId;
9107
 
9108
   IF (RecCount > 0) THEN
9109
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
9110
   END IF;
9111
   /*-------------------------------------------------------*/
9112
 
9113
 
9114
   -- Get rtag_id
9115
   SELECT SEQ_RTAG_ID.NEXTVAL INTO RtagId FROM DUAL;
9116
 
9117
   SELECT SEQ_VTREE_ID.NEXTVAL INTO VtreeId FROM DUAL;
9118
 
9119
 
9120
 
9121
   -- Get Parent RtagId
9122
   ParentRtagId := GET_PARENT_RTAG ( RtagId, nSourceRtagId, sIsBranched );
9123
 
9124
   -- If the parent RTAG is NOT in this project then we cannot use it.
9125
   -- We must re-assign the parent to be the new release's RTAG_ID instead
9126
   -- else it will not show up in the projects release tree (DEVI-55480)
9127
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9128
     FROM RELEASE_TAGS rt
9129
    WHERE rt.RTAG_ID = ParentRtagId
9130
      AND rt.PROJ_ID = nProjId;
9131
 
9132
   IF (RecCount = 0) THEN
9133
     ParentRtagId := RtagId;
9134
   END IF;
9135
 
9136
   -- Create new release
9137
   INSERT INTO RELEASE_TAGS ( RTAG_ID, RTAG_NAME, DESCRIPTION, CREATED_STAMP, CREATOR_ID,
9138
                        OFFICIAL, REBUILD_ENV, REBUILD_STAMP,
9139
                        PARENT_RTAG_ID, PROJ_ID, VTREE_ID )
9140
   VALUES ( RtagId,
9141
          sReleaseName,
9142
          sReleaseComments,
9143
          ORA_SYSDATE,
9144
          nUserId,
9145
          'N',
9146
          'N',
9147
          0,
9148
          ParentRtagId,
9149
          nProjId,
9150
          VtreeId );
9151
 
9152
   -- If a source release is provided, clone its config spec branch information into the new release (DEVI-56650)
9153
   IF (NOT nSourceRtagId IS NULL)
9154
   THEN
9155
      UPDATE RELEASE_TAGS rtd
9156
      SET rtd.config_spec_branch = (SELECT rts.CONFIG_SPEC_BRANCH FROM RELEASE_TAGS rts WHERE rts.RTAG_ID = nSourceRtagId)
9157
      WHERE rtd.RTAG_ID = RtagId;
9158
   END IF;
9159
 
9160
   -- Update display Order
9161
   UPDATE_DISPLAY_ORDER ( nProjId );
9162
 
9163
   /* Log Project Action */
9164
   Log_Project_Action ( nProjId, 'new_release', nUserId, sReleaseName, RtagId );
9165
 
9166
 
9167
   -- Import Release Contents
9168
   IF (NOT nSourceRtagId IS NULL) THEN
9169
      Import_Release_Contents ( nSourceRtagId, RtagId, nUserId );
9170
   END IF;
9171
 
9172
END;
9173
/*-------------------------------------------------------------------------------------------------------*/
9174
PROCEDURE UPDATE_DISPLAY_ORDER ( nProjId IN NUMBER ) IS
9175
 
9176
 
9177
BEGIN
9178
 
9179
 
9180
   /*--------------- Business Rules Here -------------------*/
9181
   /*-------------------------------------------------------*/
9182
 
9183
   UPDATE RELEASE_TAGS urt SET
9184
   urt.DISPLAY_ORDER = (
9185
                  SELECT qry.REC_NUM
9186
                    FROM (
9187
                        SELECT rel.*, ROWNUM AS REC_NUM
9188
                          FROM (
9189
 
9190
                                SELECT rt.RTAG_ID,
9191
                                    rt.DISPLAY_ORDER,
9192
                                     DECODE( rt.PARENT_RTAG_ID,
9193
                                             rt.RTAG_ID, 0, rt.PARENT_RTAG_ID ) AS PARENT_RTAG_ID
9194
                                FROM RELEASE_TAGS rt
9195
                               WHERE rt.PROJ_ID = nProjId
9196
 
9197
                                ) rel
9198
                        START WITH rel.PARENT_RTAG_ID = 0
9199
                        CONNECT BY PRIOR rel.RTAG_ID = rel.PARENT_RTAG_ID
9200
                        ORDER SIBLINGS BY rel.DISPLAY_ORDER
9201
                        ) qry
9202
                     WHERE qry.RTAG_ID = urt.RTAG_ID
9203
                  )
9204
   WHERE urt.PROJ_ID = nProjId;
9205
 
9206
END;
9207
/*-------------------------------------------------------------------------------------------------------*/
9208
PROCEDURE MOVE_RELEASE ( sRtagIdList IN VARCHAR2, nProjId IN NUMBER, nUserId IN NUMBER  ) IS
9209
 
9210
   nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
9211
   SeqNum NUMBER;
9212
 
9213
BEGIN
9214
 
9215
 
9216
   /*--------------- Business Rules Here -------------------*/
9217
   /*-------------------------------------------------------*/
9218
 
9219
   nIdCollector := IN_LIST_NUMBER ( sRtagIdList );
9220
 
9221
   -- Set start sequence number
9222
   SeqNum := 1;
9223
 
9224
   FOR i IN 1..nIdCollector.COUNT
9225
   LOOP
9226
 
9227
      -- Update new display order
9228
      UPDATE RELEASE_TAGS rt SET
9229
         rt.DISPLAY_ORDER = SeqNum
9230
       WHERE rt.PROJ_ID = nProjId
9231
         AND rt.RTAG_ID = nIdCollector(i);
9232
 
9233
      SeqNum := SeqNum + 1;
9234
 
9235
   END LOOP;
9236
 
9237
END;
9238
/*-------------------------------------------------------------------------------------------------------*/
9239
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
9240
 
9241
RecCount NUMBER := 0;
9242
ProjId NUMBER;
9243
 
9244
BEGIN
9245
 
9246
 
9247
   /*--------------- Business Rules Here -------------------*/
9248
   -- Check for missing parameters
9249
   IF (sReleaseName IS NULL) OR (nUserId IS NULL) OR (nRtagId IS NULL)
9250
   THEN
9251
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! sReleaseName= '|| sReleaseName ||', nUserId='|| nUserId ||', nRtagId='|| nRtagId);
9252
 
9253
   END IF;
9254
 
9255
 
9256
   -- Check for duplicate Release Names
9257
   SELECT rt.PROJ_ID INTO ProjId
9258
     FROM RELEASE_TAGS rt
9259
    WHERE rt.RTAG_ID = nRtagId;
9260
 
9261
   SELECT COUNT(rt.RTAG_ID) INTO RecCount
9262
     FROM RELEASE_TAGS rt
9263
    WHERE UPPER( rt.RTAG_NAME ) = UPPER( sReleaseName )
9264
      AND rt.RTAG_ID != nRtagId
9265
      AND rt.PROJ_ID = ProjId;
9266
 
9267
 
9268
   IF (RecCount > 0) THEN
9269
      RAISE_APPLICATION_ERROR (-20000, 'Release Name '|| sReleaseName ||' is Already Used in this Project.');
9270
   END IF;
9271
   /*-------------------------------------------------------*/
9272
 
9273
 
9274
 
9275
   -- Update release details
9276
   UPDATE RELEASE_TAGS rt SET
9277
   rt.RTAG_NAME = sReleaseName,
9278
   rt.DESCRIPTION = sReleaseComments,
9279
   rt.PARENT_RTAG_ID = nParentRtagId,
9280
   rt.ASSOC_MASS_REF = nMASSRtagId,
9281
   rt.CONFIG_SPEC_BRANCH = nConfigSpecBranch,
9282
   rt.OWNER_EMAIL = sOwnerEmail,
9283
   rt.PRODUCT_STATE_USED = cState
9284
   WHERE rt.RTAG_ID = nRtagId;
9285
 
9286
   -- Update display Order
9287
   UPDATE_DISPLAY_ORDER ( ProjId );
9288
 
9289
   /* Log Project Action */
9290
   Log_Project_Action ( ProjId, 'update_release', nUserId, 'Release Name: <br>Release Comments:', nRtagId );
9291
 
9292
 
9293
 
9294
 
9295
END;
9296
/*-------------------------------------------------------------------------------------------------------*/
9297
PROCEDURE Destroy_Release ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
9298
 
9299
   RecCount NUMBER := 0;
9300
   sReleaseId VARCHAR2(4000);
9301
   ProjId NUMBER;
9302
 
9303
BEGIN
9304
   /*--------------- Business Rules Here -------------------*/
9305
   IF (nRtagId IS NULL)
9306
   THEN
9307
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9308
   END IF;
9309
 
9310
 
9311
 
9312
   -- Check for any kids
9313
   SELECT COUNT( rt.RTAG_ID ) INTO RecCount
9314
     FROM RELEASE_TAGS rt
9315
    WHERE rt.PARENT_RTAG_ID = nRtagId
9316
      AND rt.RTAG_ID != rt.PARENT_RTAG_ID;
9317
 
9318
   IF (RecCount > 0) THEN
9319
      RAISE_APPLICATION_ERROR (-20000, 'Cannot destroy this release. You need to destroy its children releases first.'  );
9320
   END IF;
9321
   /*-------------------------------------------------------*/
9322
 
9323
   -- Clear the release contents
9324
   Clean_Release_Contents ( nRtagId, nUserId );
9325
 
9326
   /* Log Project Action */
9327
   SELECT rt.PROJ_ID, rt.RTAG_NAME ||'['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']' INTO ProjId, sReleaseId
9328
     FROM RELEASE_TAGS rt
9329
    WHERE rt.RTAG_ID = nRtagId;
9330
 
9331
   Log_Project_Action ( ProjId, 'destroy_release', nUserId, sReleaseId, nRtagId );
9332
 
9333
 
9334
   -- Remove Release
9335
   DELETE
9336
     FROM RELEASE_TAGS rt
9337
    WHERE rt.RTAG_ID = nRtagId;
9338
 
9339
 
9340
 
9341
END;
9342
/*-------------------------------------------------------------------------------------------------------*/
9343
PROCEDURE Import_Release_Contents ( nSourceRtagId IN NUMBER, nTargetRtagId IN NUMBER, nUserId IN NUMBER  ) IS
9344
 
9345
   sSourceLocation VARCHAR2(4000);
9346
   sTargetLocation VARCHAR2(4000);
9347
   ProjId NUMBER;
9348
   cReleaseMode CHAR(1);
9349
   RconId NUMBER;
9350
 
9351
   -- this cursor gets the source release daemon configurations, ensuring that the
9352
   -- first record will be the master daemon, and subsequent records will be the slaves.
9353
   CURSOR curSrcReleaseConfigs IS
9354
    SELECT daemon_hostname, gbe_id, gbe_buildfilter
9355
     FROM RELEASE_CONFIG rc
9356
    WHERE rc.RTAG_ID = nSourceRtagId
9357
    ORDER BY rc.daemon_mode;
9358
    recSrcReleaseConfigs curSrcReleaseConfigs%ROWTYPE;
9359
 
9360
    -- this cursor looks for target release daemons
9361
   CURSOR curTgtReleaseConfigs IS
9362
    SELECT rcon_id
9363
     FROM RELEASE_CONFIG rc
9364
    WHERE rc.RTAG_ID = nTargetRtagId;
9365
    recTgtReleaseConfigs curTgtReleaseConfigs%ROWTYPE;
9366
 
9367
    -- this cursor looks for target release daemon run level entries
9368
   CURSOR curTgtReleaseConfigRunLevel IS
9369
    SELECT current_run_level
9370
     FROM RUN_LEVEL rl
9371
    WHERE rl.RCON_ID = recTgtReleaseConfigs.rcon_id;
9372
    recTgtReleaseConfigRunLevel curTgtReleaseConfigRunLevel%ROWTYPE;
9373
 
9374
BEGIN
9375
   /*--------------- Business Rules Here -------------------*/
9376
   IF (nSourceRtagId IS NULL) OR (nTargetRtagId IS NULL)
9377
   THEN
9378
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nSourceRtagId= '|| nSourceRtagId ||', nTargetRtagId='|| nTargetRtagId );
9379
   END IF;
9380
 
9381
   IF (nSourceRtagId = nTargetRtagId) THEN
9382
      RAISE_APPLICATION_ERROR (-20000, 'Cannot import release contents from same release.' );
9383
   END IF;
9384
 
9385
 
9386
   -- Check if Target release is in OPEN mode
9387
   SELECT rt.OFFICIAL  INTO  cReleaseMode
9388
     FROM RELEASE_TAGS rt
9389
    WHERE rt.RTAG_ID = nTargetRtagId;
9390
 
9391
   IF (cReleaseMode != 'N') THEN
9392
      RAISE_APPLICATION_ERROR (-20000, 'Release must be in OPEN mode to import the contents.' );
9393
   END IF;
9394
 
9395
   -- check that the target release's daemons are all paused before we allow an import operation
9396
   OPEN curTgtReleaseConfigs;
9397
   FETCH curtgtReleaseConfigs INTO recTgtReleaseConfigs;
9398
 
9399
   WHILE curTgtReleaseConfigs%FOUND
9400
   LOOP
9401
      OPEN curTgtReleaseConfigRunLevel;
9402
      FETCH curTgtReleaseConfigRunLevel INTO recTgtReleaseConfigRunLevel;
9403
      IF curTgtReleaseConfigRunLevel%FOUND THEN
9404
         IF (recTgtReleaseConfigRunLevel.current_run_level IS NULL) OR
9405
            (recTgtReleaseConfigRunLevel.current_run_level <> 2) THEN
9406
            RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
9407
         END IF;
1373 dpurdie 9408
      ELSE
3959 dpurdie 9409
         -- we don't know what the daemon run level is so err on the side of caution
9410
         RAISE_APPLICATION_ERROR (-20000, 'Destination release daemon run levels must be paused before operation can proceed.' );
1373 dpurdie 9411
      END IF;
3959 dpurdie 9412
      CLOSE curTgtReleaseConfigRunLevel;
1373 dpurdie 9413
 
3959 dpurdie 9414
      FETCH curTgtReleaseConfigs INTO recTgtReleaseConfigs;
9415
   END LOOP;
1373 dpurdie 9416
 
3959 dpurdie 9417
   CLOSE curTgtReleaseConfigs;
1373 dpurdie 9418
 
9419
 
3959 dpurdie 9420
   /*-------------------------------------------------------*/
1373 dpurdie 9421
 
3959 dpurdie 9422
   -- Clean target contents
9423
   Clean_Release_Contents ( nTargetRtagId, nUserId );
1373 dpurdie 9424
 
9425
 
3959 dpurdie 9426
   -- Import Released Area Contents
9427
   INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE, PKG_ID, DEPRECATED_STATE )
9428
   SELECT nTargetRtagId AS RTAG_ID,
9429
         rc.PV_ID,
9430
         rc.BASE_VIEW_ID,
9431
         rc.INSERT_STAMP,
9432
         rc.INSERTOR_ID,
9433
         rc.PKG_STATE,
9434
         rc.PKG_ID,
9435
         rc.DEPRECATED_STATE
9436
     FROM RELEASE_CONTENT rc
9437
    WHERE rc.RTAG_ID = nSourceRtagId;
9438
 
9439
 
9440
   -- Import any Pegged Version settings from the source release
9441
   INSERT INTO PEGGED_VERSIONS ( RTAG_ID, PV_ID )
9442
   SELECT nTargetRtagId AS RTAG_ID,
9443
          pegv.PV_ID
9444
     FROM PEGGED_VERSIONS pegv
9445
    WHERE pegv.RTAG_ID = nSourceRtagId;
9446
 
9447
   -- Import any Advisory Ripple settings from the source release
9448
   INSERT INTO ADVISORY_RIPPLE ( RTAG_ID, PV_ID )
9449
   SELECT nTargetRtagId AS RTAG_ID,
9450
          avr.PV_ID
9451
     FROM ADVISORY_RIPPLE avr
9452
    WHERE avr.RTAG_ID = nSourceRtagId;
9453
 
9454
 
9455
   --Import Release Configuration Information
9456
   OPEN curSrcReleaseConfigs;
9457
   FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
9458
 
9459
   WHILE curSrcReleaseConfigs%FOUND
9460
   LOOP
9461
      -- add a daemon to the target release
9462
      PK_BUILDAPI.add_daemon( recSrcReleaseConfigs.daemon_hostname, nTargetRtagId, recSrcReleaseConfigs.gbe_id, recSrcReleaseConfigs.gbe_buildfilter );
9463
 
9464
      FETCH curSrcReleaseConfigs INTO recSrcReleaseConfigs;
9465
   END LOOP;
9466
 
9467
   CLOSE curSrcReleaseConfigs;
9468
 
9469
 
9470
 
9471
   -- Import Ignore Warning states
9472
   INSERT INTO IGNORE_WARNINGS ( RTAG_ID, PV_ID, DPV_ID )
9473
   SELECT nTargetRtagId AS RTAG_ID,
9474
          igw.PV_ID,
9475
          igw.DPV_ID
9476
     FROM IGNORE_WARNINGS igw
9477
    WHERE igw.rtag_id = nSourceRtagId;
9478
 
9479
 
9480
   /* Log Project Action */
9481
   -- Get Source Location
9482
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sSourceLocation
9483
     FROM RELEASE_TAGS rt,
9484
           PROJECTS pr
9485
    WHERE rt.PROJ_ID = pr.PROJ_ID
9486
      AND rt.RTAG_ID = nSourceRtagId;
9487
 
9488
   -- Get Target Location
9489
   SELECT pr.PROJ_NAME ||' > '|| rt.RTAG_NAME ||' ['|| rt.RTAG_VERSION ||'.'|| rt.RTAG_LIFE_CYCLE ||']'  INTO sTargetLocation
9490
     FROM RELEASE_TAGS rt,
9491
           PROJECTS pr
9492
    WHERE rt.PROJ_ID = pr.PROJ_ID
9493
      AND rt.RTAG_ID = nTargetRtagId;
9494
 
9495
   -- Get project id
9496
   SELECT rt.PROJ_ID  INTO  ProjId
9497
     FROM RELEASE_TAGS rt
9498
    WHERE rt.RTAG_ID = nTargetRtagId;
9499
 
9500
   Log_Project_Action ( ProjId, 'import_release_contents', nUserId, 'SOURCE: '|| sSourceLocation ||'   TARGET: '|| sTargetLocation, nTargetRtagId );
9501
END;
9502
 
9503
 
9504
 
1373 dpurdie 9505
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9506
PROCEDURE Clean_Release_Contents ( nRtagId IN NUMBER, nUserId IN NUMBER ) IS
1373 dpurdie 9507
 
3959 dpurdie 9508
   RecCount NUMBER;
9509
        rconIdList VARCHAR2(4000);
1373 dpurdie 9510
 
3959 dpurdie 9511
BEGIN
9512
   /*--------------- Business Rules Here -------------------*/
9513
   IF (nRtagId IS NULL)
9514
   THEN
9515
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId  );
9516
   END IF;
1373 dpurdie 9517
 
9518
 
3959 dpurdie 9519
   -- Check if other release references this release
9520
   SELECT COUNT( rl.RTAG_ID ) INTO RecCount
9521
     FROM RELEASE_LINKS rl
9522
    WHERE rl.REF_RTAG_ID = nRtagId;
1373 dpurdie 9523
 
3959 dpurdie 9524
   IF (RecCount > 0) THEN
9525
      RAISE_APPLICATION_ERROR (-20000, 'This release is referenced by other release and cannot be destroyed.'  );
9526
   END IF;
9527
   /*-------------------------------------------------------*/
1373 dpurdie 9528
 
3959 dpurdie 9529
   -- Delete Release links
9530
   DELETE
9531
     FROM RELEASE_LINKS rl
9532
    WHERE rl.RTAG_ID = nRtagId;
9533
 
9534
   -- Delete ignore warning
9535
   DELETE
9536
     FROM IGNORE_WARNINGS iw
9537
    WHERE iw.RTAG_ID = nRtagId;
9538
 
9539
 
9540
   -- Delete Build Order cached calculations
9541
   DELETE
9542
     FROM BUILD_ORDER bo
9543
    WHERE bo.RTAG_ID = nRtagId;
9544
 
9545
 
9546
   -- Delete Notification History
9547
   DELETE
9548
     FROM NOTIFICATION_HISTORY nh
9549
    WHERE nh.RTAG_ID = nRtagId;
9550
 
9551
 
9552
   -- Delete Released Area Contents
9553
   DELETE
9554
     FROM RELEASE_CONTENT rc
9555
    WHERE rc.RTAG_ID = nRtagId;
9556
 
9557
 
9558
   -- Delete Work In Progress Area Contents
9559
   DELETE
9560
     FROM WORK_IN_PROGRESS wip
9561
    WHERE wip.RTAG_ID = nRtagId;
9562
 
9563
 
9564
   -- Delete Pending Area Contents
9565
   DELETE
9566
     FROM PLANNED pl
9567
    WHERE pl.RTAG_ID = nRtagId;
9568
 
9569
   -- Delete Deprecated Packages
9570
   DELETE
9571
     FROM DEPRECATED_PACKAGES dp
9572
    WHERE dp.RTAG_ID = nRtagId;
9573
 
9574
   -- Delete Project Action Log
9575
   DELETE
9576
     FROM PROJECT_ACTION_LOG pal
9577
    WHERE pal.RTAG_ID = nRtagId;
9578
 
9579
   -- Delete Do Not Ripple Contents
9580
   DELETE
9581
     FROM DO_NOT_RIPPLE dnr
9582
    WHERE dnr.RTAG_ID = nRtagId;
9583
 
9584
   -- Delete Dash Board Contents
9585
   DELETE
9586
     FROM DASH_BOARD db
9587
    WHERE db.RTAG_ID = nRtagId;
9588
 
9589
   -- Delete Advisory Ripple Contents
9590
   DELETE
9591
     FROM ADVISORY_RIPPLE adr
9592
    WHERE adr.RTAG_ID = nRtagId;
9593
 
9594
   -- Delete Archive Action Log
9595
   DELETE
9596
     FROM ARCHIVE_ACTION_LOG aal
9597
    WHERE aal.RTAG_ID = nRtagId;
9598
 
9599
   -- Delete Daemons For This Release
9600
   FOR rcon IN (SELECT rc.RCON_ID FROM RELEASE_CONFIG rc WHERE rc.RTAG_ID = nRtagId )
9601
   LOOP
9602
      rconIdList := rconIdList || rcon.RCON_ID || ',';
9603
   END LOOP;
9604
 
9605
   pk_buildapi.DELETE_DAEMON(rconIdList);
9606
 
9607
   -- Delete Release Metrics Contents
9608
   DELETE
9609
     FROM RELEASE_METRICS rm
9610
    WHERE rm.RTAG_ID = nRtagId;
9611
 
9612
   -- Delete Release Configuration Contents
9613
   DELETE
9614
     FROM RELEASE_CONFIG rc
9615
    WHERE rc.RTAG_ID = nRtagId;
9616
 
9617
   -- Delete Pegged Version Contents
9618
   DELETE
9619
     FROM PEGGED_VERSIONS pegv
9620
    WHERE pegv.RTAG_ID = nRtagId;
9621
 
9622
END;
9623
/*-------------------------------------------------------------------------------------------------------*/
9624
FUNCTION GET_PARENT_RTAG ( nRtagId IN NUMBER, nSourceRtagId IN NUMBER, cIsBranch IN CHAR )  RETURN NUMBER IS
9625
 
9626
   nSourceParentRtagId NUMBER;
9627
 
9628
BEGIN
9629
   /*--------------- Business Rules Here -------------------*/
9630
   IF (nRtagId IS NULL) OR (cIsBranch IS NULL)
9631
   THEN
9632
      RAISE_APPLICATION_ERROR (-20000, 'Missing some parameters! nRtagId= '|| nRtagId ||', cIsBranch= '|| cIsBranch );
9633
   END IF;
9634
   /*-------------------------------------------------------*/
9635
 
9636
 
9637
   IF ( nSourceRtagId IS NULL ) THEN
9638
      -- Create new on main branch
9639
      RETURN nRtagId;
9640
 
9641
   ELSE
9642
      -- Create from source rtag_id
9643
 
9644
      -- Find parent of Source RtagId
9645
      SELECT rt.PARENT_RTAG_ID INTO nSourceParentRtagId
9646
        FROM RELEASE_TAGS rt
9647
       WHERE rt.RTAG_ID = nSourceRtagId;
9648
 
9649
      IF (UPPER(cIsBranch) = 'Y') THEN
9650
         RETURN nSourceRtagId;
9651
      ELSE
9652
         IF (nSourceRtagId = nSourceParentRtagId) THEN
9653
            RETURN nRtagId;
9654
         ELSE
9655
            RETURN nSourceParentRtagId;
1373 dpurdie 9656
         END IF;
9657
      END IF;
9658
 
3959 dpurdie 9659
 
9660
   END IF;
9661
 
9662
 
9663
END;
1373 dpurdie 9664
/*-------------------------------------------------------------------------------------------------------*/
9665
 
3959 dpurdie 9666
-- PROCEDURE Get_Next_Version ( nSourceRtagId IN NUMBER,
9667
--                       sNextVersion OUT VARCHAR2,
9668
--                       nNextLifeCycle OUT NUMBER,
9669
--                       nParentRtagId OUT NUMBER,
9670
--                       nProjId IN NUMBER ) IS
9671
--
9672
-- SourceBranchCount NUMBER;
9673
-- ProjRootVersion VARCHAR2(4000);
9674
-- LastLifeCycle NUMBER;
9675
-- ROOT_VERSION_NOT_FOUND NUMBER := -1;
9676
-- SET_PARENT_AS_YOURSELF NUMBER := -1;
9677
--
9678
-- SourceProjId NUMBER;
9679
-- SourceVersion RELEASE_TAGS.RTAG_VERSION%TYPE;
9680
-- SourceLifeCycle RELEASE_TAGS.RTAG_LIFE_CYCLE%TYPE;
9681
--
9682
-- BEGIN
9683
--    /*--------------- Business Rules Here -------------------*/
9684
--    /*-------------------------------------------------------*/
9685
--
9686
--
9687
--    BEGIN
9688
--       -- Get Project root version
9689
--       SELECT rt.RTAG_VERSION INTO ProjRootVersion
9690
--         FROM RELEASE_TAGS rt
9691
--        WHERE rt.PROJ_ID = nProjId
9692
--          AND rt.RTAG_ID = rt.PARENT_RTAG_ID;
9693
--
9694
--       EXCEPTION
9695
--       WHEN NO_DATA_FOUND THEN
9696
--       ProjRootVersion := ROOT_VERSION_NOT_FOUND;
9697
--    END;
9698
--
9699
--
9700
--
9701
--
9702
--    BEGIN
9703
--       -- Get info for source rtagid
9704
--       SELECT rt.PROJ_ID, rt.RTAG_VERSION, rt.RTAG_LIFE_CYCLE  INTO  SourceProjId, SourceVersion, SourceLifeCycle
9705
--         FROM RELEASE_TAGS rt
9706
--        WHERE rt.RTAG_ID = nSourceRtagId;
9707
--
9708
--       EXCEPTION
9709
--       WHEN NO_DATA_FOUND THEN
9710
--       SourceProjId := NULL;
9711
--       SourceVersion := NULL;
9712
--       SourceLifeCycle := NULL;
9713
--    END;
9714
--
9715
--
9716
--    IF (nSourceRtagId IS NULL)  OR  ( SourceProjId != nProjId ) THEN
9717
--
9718
--       /* Blank Release Required  OR  Release imported from other project */
9719
--
9720
--       IF (ProjRootVersion = ROOT_VERSION_NOT_FOUND) THEN
9721
--          /* No Releases found in the project, hence calculate next version available.  */
9722
--
9723
--          -- Set parent rtag
9724
--          nParentRtagId := SET_PARENT_AS_YOURSELF;
9725
--
9726
--
9727
--          BEGIN
9728
--             -- Get Next Available Global Root Version
9729
--             SELECT MAX( TO_NUMBER( rt.RTAG_VERSION ) )  INTO  ProjRootVersion
9730
--               FROM RELEASE_TAGS rt
9731
--              WHERE rt.RTAG_ID = rt.PARENT_RTAG_ID;
9732
--
9733
--             -- Set Next Rtag Version
9734
--             sNextVersion := CAST( ProjRootVersion + 1 AS VARCHAR2 );
9735
--
9736
--             -- Restart Lifecycle
9737
--             nNextLifeCycle := 0;
9738
--
9739
--
9740
--             EXCEPTION
9741
--             WHEN NO_DATA_FOUND THEN
9742
--             -- Release Manager has no releases, hence start from 1
9743
--             sNextVersion := '1';
9744
--             nNextLifeCycle := 0;
9745
--
9746
--          END;
9747
--
9748
--
9749
--
9750
--       ELSE
9751
--          /* Releases found in this project. */
9752
--
9753
--          SELECT qry.RTAG_ID, qry.RTAG_LIFE_CYCLE  INTO nParentRtagId, LastLifeCycle
9754
--            FROM (
9755
--                SELECT rt.RTAG_ID, rt.RTAG_LIFE_CYCLE
9756
--                  FROM RELEASE_TAGS rt
9757
--                 WHERE rt.PROJ_ID = nProjId
9758
--                   AND rt.RTAG_VERSION = ProjRootVersion
9759
--                 ORDER BY rt.RTAG_LIFE_CYCLE DESC
9760
--                  ) qry
9761
--           WHERE ROWNUM = 1;
9762
--
9763
--
9764
--          -- Set same Rtag Version
9765
--          sNextVersion := ProjRootVersion;
9766
--
9767
--          -- Increase Lifecycle
9768
--          nNextLifeCycle := LastLifeCycle + 1;
9769
--
9770
--       END IF;
9771
--
9772
--
9773
--
9774
--    ELSE
9775
--       /* Create Release From other release within this project */
9776
--
9777
--       -- Set parent id
9778
--       nParentRtagId := nSourceRtagId;
9779
--
9780
--
9781
--       -- Get number of source branches
9782
--       SELECT COUNT(rt.RTAG_ID) INTO SourceBranchCount
9783
--         FROM RELEASE_TAGS rt
9784
--        WHERE rt.PROJ_ID = nProjId
9785
--          AND rt.PARENT_RTAG_ID = nSourceRtagId;
9786
--
9787
--
9788
--       IF SourceBranchCount = 0 THEN
9789
--          /* Release is Head (i.e. Tip on its branch ) */
9790
--
9791
--          -- Set Next Rtag Version
9792
--          sNextVersion := SourceVersion;
9793
--
9794
--          -- Increase Lifecycle
9795
--          nNextLifeCycle := SourceLifeCycle + 1;
9796
--
9797
--
9798
--       ELSIF SourceBranchCount = 1 THEN
9799
--          /* Release IS NOT Head, but can be branched */
9800
--
9801
--          -- Set Next Rtag Version
9802
--          sNextVersion := SourceVersion ||'.'|| SourceLifeCycle;
9803
--
9804
--          -- Reset Lifecycle to 1
9805
--          nNextLifeCycle := 1;
9806
--
9807
--
9808
--       ELSE
9809
--          -- Limit of two branches is reached
9810
--          RAISE_APPLICATION_ERROR (-20000, 'This release is already branched and cannot be branched again. ');
9811
--
9812
--       END IF;
9813
--
9814
--
9815
--
9816
--
9817
--
9818
--
9819
--    END IF;
9820
--
9821
--
9822
-- END;
9823
 
9824
/*-------------------------------------------------------------------------------------------------------*/
9825
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
9826
 
9827
   IsBaseView CHAR(1);
9828
 
9829
BEGIN
9830
 
9831
   -- Check if the view is BASE VIEW
9832
   SELECT vi.BASE_VIEW INTO IsBaseView
9833
     FROM VIEWS vi
9834
    WHERE vi.VIEW_ID = ViewId;
9835
 
9836
   IF (IsBaseView = 'Y') THEN
9837
      -- Get Base view content
9838
      OPEN RecordSet FOR
9839
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
9840
            rel.deprecated_state,
9841
            pv.pv_id,
9842
            pkg.pkg_name,
9843
            pv.pkg_version,
9844
            pv.dlocked,
9845
            pv.pv_description,
9846
            pv.BUILD_TYPE
9847
        FROM release_content rel,
9848
             packages pkg,
9849
             package_versions pv
9850
       WHERE pv.pkg_id = pkg.pkg_id
9851
         AND rel.pv_id = pv.pv_id
9852
         AND rel.BASE_VIEW_ID = ViewId
9853
         AND rel.RTAG_ID = RtagId
9854
       ORDER BY UPPER(pkg.PKG_NAME);
9855
 
9856
   ELSE
9857
 
9858
       -- Get non base view content
9859
      OPEN RecordSet FOR
9860
      SELECT DECODE ( rel.pkg_state, NULL, 0, rel.pkg_state ) AS PKG_STATE,
9861
            rel.deprecated_state,
9862
            pv.pv_id,
9863
            pkg.pkg_name,
9864
            pv.pkg_version,
9865
            pv.dlocked,
9866
            pv.pv_description,
9867
            pv.BUILD_TYPE
9868
        FROM release_content rel,
9869
             packages pkg,
9870
             package_versions pv,
9871
            VIEW_DEF vd
9872
       WHERE pv.pkg_id = pkg.pkg_id
9873
         AND rel.pv_id = pv.pv_id
9874
         AND vd.VIEW_ID = ViewId
9875
         AND vd.PKG_ID = pv.PKG_ID
9876
         AND rel.RTAG_ID = RtagId
9877
       ORDER BY UPPER(pkg.PKG_NAME);
9878
 
9879
   END IF;
9880
 
9881
 
9882
 
9883
 
9884
END;
9885
/*-------------------------------------------------------------------------------------------------------*/
9886
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
9887
 
9888
   ReleaseLocation VARCHAR2(4000);
9889
   sPkgVersion VARCHAR2(4000);
9890
   nPkgId NUMBER;
9891
   sVExt VARCHAR2(4000);
9892
   IsPatch PACKAGE_VERSIONS.IS_PATCH%TYPE := 'N';
9893
 
9894
   -- Find package for replacement
9895
   CURSOR curReplacePkg IS
9896
    SELECT pv.PV_ID
9897
     FROM RELEASE_CONTENT rc,
9898
           PACKAGE_VERSIONS pv
9899
    WHERE rc.PV_ID = pv.PV_ID
9900
      AND rc.RTAG_ID = RtagId
9901
      AND pv.PKG_ID = nPkgId
9902
      AND NVL( pv.V_EXT, 'LINK_A_NULL' ) = NVL( sVExt, 'LINK_A_NULL' );
9903
    recReplacePkg curReplacePkg%ROWTYPE;
9904
 
9905
BEGIN
9906
 
9907
   -- Get is_patch, pkg_id and v_ext
9908
   SELECT pv.IS_PATCH, pv.PKG_ID, pv.V_EXT INTO IsPatch, nPkgId, sVExt
9909
     FROM PACKAGE_VERSIONS pv
9910
    WHERE pv.PV_ID = newPvId;
9911
 
9912
 
9913
   -- Never put patch in relesed area
9914
   IF (IsPatch != 'Y') OR (IsPatch IS NULL) THEN
9915
 
9916
      -- Try to get a package to be replaced with this new one.
9917
      -- Use unique constraint of PKG_ID and V_EXT
9918
      OPEN curReplacePkg;
9919
       FETCH curReplacePkg INTO recReplacePkg;
9920
 
9921
       IF curReplacePkg%FOUND THEN
9922
         -- Replace package
9923
         REPLACE_PACKAGE ( newPvId, recReplacePkg.PV_ID, RtagId, UserId );
9924
 
9925
      ELSE
9926
         -- Add new package
9927
         INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
9928
         VALUES( RtagId, newPvId, ViewId, Ora_Sysdate, UserId, 0);
9929
 
9930
 
9931
          /* LOG ACTION */
9932
         SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9933
           FROM PROJECTS proj,
9934
                 RELEASE_TAGS rt
9935
          WHERE rt.PROJ_ID = proj.PROJ_ID
9936
            AND rt.RTAG_ID = RtagId;
9937
 
9938
         SELECT pv.PKG_VERSION INTO sPkgVersion
9939
           FROM PACKAGE_VERSIONS pv
9940
          WHERE pv.PV_ID = newPvId;
9941
 
9942
         Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
9943
 
9944
 
1373 dpurdie 9945
      END IF;
9946
 
3959 dpurdie 9947
      CLOSE curReplacePkg;
9948
 
9949
   END IF;
9950
 
9951
END;
1373 dpurdie 9952
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 9953
PROCEDURE REPLACE_PACKAGE ( newPvId IN NUMBER, oldPvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 9954
 
3959 dpurdie 9955
   ReleaseLocation VARCHAR2(4000);
9956
   sPkgVersion VARCHAR2(4000);
9957
 
9958
BEGIN
9959
 
9960
   -- Replace Package
9961
    UPDATE RELEASE_CONTENT
9962
       SET pv_id = newPvId,
9963
           insert_stamp = Ora_Sysdate,
9964
           insertor_id = UserId,
9965
         product_state = NULL
9966
     WHERE rtag_id = RtagId
9967
       AND pv_id = oldPvId;
9968
 
9969
   -- update the pegging table
9970
   UPDATE PEGGED_VERSIONS
9971
      SET pv_id = newPvId
9972
     WHERE rtag_id = RtagId
9973
       AND pv_id = oldPvId;
9974
 
9975
   -- update the advisory_ripple table
9976
   UPDATE ADVISORY_RIPPLE
9977
      SET pv_id = newPvId
9978
     WHERE rtag_id = RtagId
9979
       AND pv_id = oldPvId;
9980
 
9981
    /* LOG ACTION */
9982
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
9983
     FROM PROJECTS proj,
9984
           RELEASE_TAGS rt
9985
    WHERE rt.PROJ_ID = proj.PROJ_ID
9986
      AND rt.RTAG_ID = RtagId;
9987
 
9988
   SELECT pv.PKG_VERSION INTO sPkgVersion
9989
     FROM PACKAGE_VERSIONS pv
9990
    WHERE pv.PV_ID = newPvId;
9991
 
9992
   Log_Action ( oldPvId, 'replaced_with', UserId, 'Replacing with: '|| sPkgVersion ||' at '|| ReleaseLocation );
9993
   Log_Action ( newPvId, 'add', UserId, 'Location: '|| ReleaseLocation );
9994
 
9995
END;
9996
/*-------------------------------------------------------------------------------------------------------*/
9997
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
9998
   ReleaseLocation VARCHAR2(4000);
9999
 
10000
BEGIN
10001
 
10002
 
10003
   -- Delete old package
10004
   DELETE
10005
     FROM RELEASE_CONTENT rc
10006
    WHERE rc.PV_ID = PvId
10007
      AND rc.RTAG_ID = RtagId;
10008
 
10009
 
10010
   /* LOG ACTION */
10011
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10012
     FROM PROJECTS proj,
10013
          RELEASE_TAGS rt
10014
    WHERE rt.PROJ_ID = proj.PROJ_ID
10015
      AND rt.RTAG_ID = RtagId;
10016
 
10017
   Log_Action ( PvId, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
10018
 
10019
 
10020
END;
10021
/*-------------------------------------------------------------------------------------------------------*/
10022
PROCEDURE REMOVE_MATCHING_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
10023
   ReleaseLocation VARCHAR2(4000);
10024
 
10025
   CURSOR curMatchingPackage IS
10026
    SELECT mpv.PV_ID
10027
     FROM RELEASE_CONTENT rc,
10028
           PACKAGE_VERSIONS mpv,
10029
         PACKAGE_VERSIONS pv
10030
    WHERE rc.PV_ID = mpv.PV_ID
10031
      AND rc.RTAG_ID = RtagId
10032
      AND pv.PV_ID = PvId
10033
      AND pv.PKG_ID = mpv.PKG_ID
10034
      AND NVL( pv.V_EXT, '|LINK_A_NULL|' ) = NVL( mpv.V_EXT, '|LINK_A_NULL|' );
10035
    recMatchingPackage curMatchingPackage%ROWTYPE;
10036
 
10037
BEGIN
10038
 
10039
   OPEN curMatchingPackage;
10040
    FETCH curMatchingPackage INTO recMatchingPackage;
10041
 
10042
    IF curMatchingPackage%FOUND THEN
10043
      -- Delete old package
10044
      DELETE
10045
        FROM RELEASE_CONTENT rc
10046
       WHERE rc.PV_ID = recMatchingPackage.PV_ID
10047
         AND rc.RTAG_ID = RtagId;
10048
 
10049
 
10050
      /* LOG ACTION */
10051
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
10052
        FROM PROJECTS proj,
10053
              RELEASE_TAGS rt
10054
       WHERE rt.PROJ_ID = proj.PROJ_ID
10055
         AND rt.RTAG_ID = RtagId;
10056
 
10057
      Log_Action ( recMatchingPackage.PV_ID, 'delete_from_released', UserId, 'Location: '|| ReleaseLocation );
10058
 
10059
   END IF;
10060
 
10061
 
10062
   CLOSE curMatchingPackage;
10063
 
10064
 
10065
 
10066
 
10067
END;
10068
/*-------------------------------------------------------------------------------------------------------*/
10069
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
10070
 
10071
   ReturnValue NUMBER;
10072
 
10073
BEGIN
10074
   SELECT rc.BASE_VIEW_ID INTO ReturnValue
10075
     FROM RELEASE_CONTENT rc
10076
    WHERE rc.RTAG_ID = RtagId
10077
      AND rc.PV_ID = PvId;
10078
 
10079
   RETURN ReturnValue;
10080
END;
10081
/*-------------------------------------------------------------------------------------------------------*/
10082
PROCEDURE RUN_POST_ACTIONS ( PvId IN NUMBER, RtagId IN NUMBER ) IS
10083
 
10084
BEGIN
10085
   -- Reset Ignore warnings up-the-tree
10086
   RESET_IGNORE_WARNINGS ( TO_CHAR(PvId), RtagId );
10087
 
10088
   -- Refresh Package states
10089
   TOUCH_RELEASE ( RtagId );
10090
 
10091
END;
10092
/*-------------------------------------------------------------------------------------------------------*/
10093
PROCEDURE RUN_POST_ACTIONS_BULK ( PvId IN NUMBER ) IS
10094
   CURSOR curReleases IS
10095
    SELECT rc.RTAG_ID
10096
     FROM RELEASE_CONTENT rc
10097
    WHERE rc.PV_ID = PvId;
10098
    recReleases curReleases%ROWTYPE;
10099
 
10100
BEGIN
10101
 
10102
   OPEN curReleases;
10103
    FETCH curReleases INTO recReleases;
10104
 
10105
   WHILE curReleases%FOUND
10106
   LOOP
10107
 
10108
      RUN_POST_ACTIONS ( PvId, recReleases.RTAG_ID );
10109
 
10110
      FETCH curReleases INTO recReleases;
10111
   END LOOP;
10112
 
10113
   CLOSE curReleases;
10114
 
10115
END;
10116
/*-------------------------------------------------------------------------------------------------------*/
10117
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
10118
 
10119
BEGIN
10120
 
10121
   UPDATE RELEASE_CONTENT rc SET
10122
   rc.BASE_VIEW_ID = NewViewId
10123
   WHERE rc.PV_ID = PvId
10124
     AND rc.RTAG_ID = RtagId;
10125
 
10126
END;
10127
/*-------------------------------------------------------------------------------------------------------*/
10128
PROCEDURE ADD_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER, ProblemString OUT VARCHAR2 ) IS
10129
 
10130
   RowCount NUMBER;
10131
 
10132
 
10133
   CURSOR curPackageClash IS
10134
   SELECT pkg.PKG_NAME,
10135
         er.*
10136
     FROM (
10137
 
10138
           /* Get existing referenced packages */
10139
         SELECT pv.PKG_ID,
10140
                pv.V_EXT
10141
           FROM RELEASE_LINKS rl,
10142
                 RELEASE_CONTENT rc,
10143
                 PACKAGE_VERSIONS pv
10144
          WHERE rl.RTAG_ID = nRtagId
10145
            AND rl.REF_RTAG_ID = rc.RTAG_ID
10146
            AND rc.PV_ID = pv.PV_ID
10147
 
10148
            ) er,
10149
         (
10150
 
10151
         /* Get current reference packages */
10152
         SELECT pv.PKG_ID,
10153
                pv.V_EXT
10154
           FROM RELEASE_CONTENT rc,
10155
                 PACKAGE_VERSIONS pv
10156
          WHERE rc.RTAG_ID = nRefRtagId
10157
            AND rc.PV_ID = pv.PV_ID
10158
 
10159
         ) cr,
10160
         PACKAGES PKG
10161
    WHERE er.PKG_ID = cr.PKG_ID
10162
      AND NVL(er.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10163
      AND er.PKG_ID = pkg.PKG_ID;
10164
 
10165
   recPackageClash curPackageClash%ROWTYPE;
10166
 
10167
BEGIN
10168
   /*--------------- Business Rules Here -------------------*/
10169
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
10170
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
10171
   END IF;
10172
 
10173
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
10174
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
10175
   END IF;
10176
   /*-------------------------------------------------------*/
10177
   ProblemString := NULL;
10178
 
10179
 
10180
   -- Check if release already has references
10181
   SELECT COUNT(rl.RTAG_ID)  INTO  RowCount
10182
     FROM RELEASE_LINKS rl
10183
    WHERE rl.RTAG_ID = nRtagId;
10184
 
10185
 
10186
   IF RowCount > 0 THEN
10187
      -- Found existing references
10188
 
10189
      -- Make sure there is no package clashes
10190
      OPEN curPackageClash;
10191
       FETCH curPackageClash INTO recPackageClash;
10192
 
10193
      IF curPackageClash%FOUND THEN
10194
 
10195
         ProblemString := ProblemString ||'Following is partial list of package already referenced from other release:'|| UTL_TCP.CRLF;
10196
 
10197
         WHILE curPackageClash%FOUND
10198
         LOOP
10199
            EXIT WHEN LENGTH( ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF ) > 200;   -- Do not allow variable overflow
10200
 
10201
            ProblemString := ProblemString || '- '|| recPackageClash.PKG_NAME ||' '|| recPackageClash.V_EXT  || UTL_TCP.CRLF;
10202
 
10203
            FETCH curPackageClash INTO recPackageClash;
10204
         END LOOP;
10205
 
1373 dpurdie 10206
      END IF;
10207
 
3959 dpurdie 10208
      CLOSE curPackageClash;
10209
 
10210
 
10211
   ELSE
10212
      -- No references found, hence reference a release
10213
 
10214
 
10215
      -- Remove exising package from this release to be referenced
10216
      REMOVE_RELEASE_REFERENCE ( nRtagId, nRefRtagId);
10217
 
10218
 
10219
      -- Add new linked packages to release
10220
      INSERT INTO RELEASE_CONTENT rc (RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
10221
      SELECT nRtagId,
10222
            rc.PV_ID,
10223
            rc.BASE_VIEW_ID,
10224
            rc.INSERT_STAMP,
10225
            rc.INSERTOR_ID,
10226
            rc.PKG_STATE
10227
        FROM RELEASE_CONTENT rc
10228
       WHERE rc.RTAG_ID = nRefRtagId;
10229
 
10230
 
10231
 
10232
      -- Copy ignore warnings for referenced packages
10233
      INSERT INTO IGNORE_WARNINGS iw (RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE)
10234
      SELECT nRtagId,
10235
            iw.PV_ID,
10236
            iw.DPV_ID,
10237
            iw.IS_PATCH_IGNORE
10238
        FROM IGNORE_WARNINGS iw,
10239
              RELEASE_CONTENT rc
10240
       WHERE iw.RTAG_ID = rc.RTAG_ID
10241
         AND iw.PV_ID = rc.PV_ID
10242
         AND rc.RTAG_ID = nRefRtagId;
10243
 
10244
 
10245
 
10246
      -- Reference release
10247
      INSERT INTO RELEASE_LINKS (RTAG_ID, REF_RTAG_ID)
10248
      VALUES ( nRtagId, nRefRtagId );
10249
 
10250
 
10251
      -- Refresh Package states
10252
      TOUCH_RELEASE ( nRtagId );
10253
 
10254
   END IF;
10255
 
10256
 
10257
END;
1373 dpurdie 10258
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10259
PROCEDURE REMOVE_RELEASE_REFERENCE ( nRtagId IN NUMBER, nRefRtagId IN NUMBER ) IS
1373 dpurdie 10260
 
3959 dpurdie 10261
 
10262
BEGIN
10263
   /*--------------- Business Rules Here -------------------*/
10264
   IF (nRtagId = 0) OR ( nRtagId IS NULL ) THEN
10265
      RAISE_APPLICATION_ERROR (-20000, 'nRtagId is not supplied. [nRtagId='|| nRtagId ||']' );
10266
   END IF;
10267
 
10268
   IF (nRefRtagId = 0) OR ( nRefRtagId IS NULL ) THEN
10269
      RAISE_APPLICATION_ERROR (-20000, 'nRefRtagId is not supplied. [nRefRtagId='|| nRefRtagId ||']' );
10270
   END IF;
10271
 
10272
   /*-------------------------------------------------------*/
10273
 
10274
 
10275
   -- Remove ignore warnings for those packages who use referenced packages
10276
   DELETE FROM IGNORE_WARNINGS iw
10277
    WHERE iw.RTAG_ID = nRtagId
10278
      AND iw.DPV_ID IN (
10279
                        SELECT dep.DPV_ID
10280
                       FROM (
10281
 
10282
                           /* Get referenced packages */
10283
                           SELECT pv.PKG_ID,
10284
                                  pv.V_EXT
10285
                             FROM RELEASE_CONTENT rc,
10286
                                   PACKAGE_VERSIONS pv
10287
                            WHERE rc.RTAG_ID = nRefRtagId
10288
                              AND rc.PV_ID = pv.PV_ID
10289
 
10290
                           ) cr,
10291
                           (
10292
 
10293
                           /* Get all dependencies for current release */
10294
                           SELECT DISTINCT
10295
                                 pv.PKG_ID,
10296
                                 pv.V_EXT,
10297
                                 dep.DPV_ID
10298
                             FROM RELEASE_CONTENT rc,
10299
                                 PACKAGE_DEPENDENCIES dep,
10300
                                 PACKAGE_VERSIONS pv
10301
                            WHERE rc.RTAG_ID = nRtagId
10302
                              AND rc.PV_ID = dep.PV_ID
10303
                              AND dep.PV_ID = pv.PV_ID
10304
 
10305
                           ) dep
10306
                      WHERE dep.PKG_ID = cr.PKG_ID
10307
                        AND NVL(dep.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10308
                     );
10309
 
10310
 
10311
 
10312
 
10313
   -- Remove ignore warnings for those package which are going to be replaced with the reference
10314
   DELETE FROM IGNORE_WARNINGS iw
10315
    WHERE iw.RTAG_ID = nRtagId
10316
      AND iw.PV_ID IN (
10317
                  SELECT pv.PV_ID
10318
                    FROM (
10319
 
10320
                        /* Get referenced packages */
10321
                        SELECT pv.PKG_ID,
10322
                               pv.V_EXT
10323
                          FROM RELEASE_CONTENT rc,
10324
                                PACKAGE_VERSIONS pv
10325
                         WHERE rc.RTAG_ID = nRefRtagId
10326
                           AND rc.PV_ID = pv.PV_ID
10327
 
10328
                        ) cr,
10329
                        RELEASE_CONTENT rc,
10330
                        PACKAGE_VERSIONS pv
10331
                   WHERE pv.PKG_ID = cr.PKG_ID
10332
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10333
                     AND rc.RTAG_ID = nRtagId
10334
                     AND rc.PV_ID = pv.PV_ID
10335
                  );
10336
 
10337
 
10338
 
10339
 
10340
 
10341
   -- Remove matching packages from release
10342
   DELETE FROM RELEASE_CONTENT rc
10343
    WHERE rc.RTAG_ID = nRtagId
10344
      AND rc.PV_ID IN (
10345
                  SELECT pv.PV_ID
10346
                    FROM (
10347
 
10348
                        /* Get referenced packages */
10349
                        SELECT pv.PKG_ID,
10350
                               pv.V_EXT
10351
                          FROM RELEASE_CONTENT rc,
10352
                                PACKAGE_VERSIONS pv
10353
                         WHERE rc.RTAG_ID = nRefRtagId
10354
                           AND rc.PV_ID = pv.PV_ID
10355
 
10356
                        ) cr,
10357
                        RELEASE_CONTENT rc,
10358
                        PACKAGE_VERSIONS pv
10359
                   WHERE pv.PKG_ID = cr.PKG_ID
10360
                     AND NVL(pv.V_EXT, '|LINK_A_NULL|') = NVL(cr.V_EXT, '|LINK_A_NULL|')
10361
                     AND rc.RTAG_ID = nRtagId
10362
                     AND rc.PV_ID = pv.PV_ID
10363
                  );
10364
 
10365
 
10366
 
10367
 
10368
 
10369
   -- Remove Reference release
10370
   DELETE
10371
     FROM RELEASE_LINKS rl
10372
    WHERE rl.RTAG_ID = nRtagId
10373
      AND rl.REF_RTAG_ID = nRefRtagId;
10374
 
10375
 
10376
   -- Refresh Package states
10377
   TOUCH_RELEASE ( nRtagId );
10378
 
10379
 
10380
END;
10381
/*-------------------------------------------------------------------------------------------------------*/
10382
PROCEDURE CAN_USER_WRITE_TO_RELEASE ( RtagId IN NUMBER, PvId IN NUMBER, Permission IN CHAR ) IS
10383
 
10384
   cReleaseMode CHAR(1);
10385
   cPvMode CHAR(1);
10386
 
10387
BEGIN
10388
 
10389
   -- Get Release Mode
10390
   SELECT rt.OFFICIAL INTO cReleaseMode
10391
     FROM RELEASE_TAGS rt
10392
    WHERE rt.RTAG_ID = RtagId;
10393
 
10394
 
10395
   -- Get Package Mode
10396
   SELECT pv.DLOCKED INTO cPvMode
10397
     FROM PACKAGE_VERSIONS pv
10398
    WHERE pv.PV_ID = PvId;
10399
 
10400
   -- Only check if package is locked
10401
   IF (cPvMode = 'Y') THEN
10402
 
10403
      IF (cReleaseMode != 'N') AND (Permission != 'Y')
1373 dpurdie 10404
      THEN
3959 dpurdie 10405
         RAISE_APPLICATION_ERROR (-20000, 'Cannot add package to this release. Release needs to be in Open Mode.' );
10406
 
1373 dpurdie 10407
      END IF;
10408
 
3959 dpurdie 10409
   END IF;
10410
 
10411
 
10412
END;
10413
 
1373 dpurdie 10414
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10415
END PK_RELEASE;
4040 dpurdie 10416
 
3959 dpurdie 10417
/
10418
 
4040 dpurdie 10419
/
10420
--------------------------------------------------------
10421
--  DDL for Package Body PK_RMAPI
10422
--------------------------------------------------------
10423
 
3959 dpurdie 10424
  CREATE OR REPLACE PACKAGE BODY "PK_RMAPI" 
10425
IS
10426
 
10427
   /*-------------------------------------------------------------------------------------------------------*/
10428
   FUNCTION package_dependencies (pkgname VARCHAR2, pkgversion VARCHAR2)
10429
      RETURN typecur
1373 dpurdie 10430
   IS
3959 dpurdie 10431
      npvid     NUMBER  := 0;
10432
      RECORDS   typecur;
1373 dpurdie 10433
   BEGIN
3959 dpurdie 10434
      BEGIN
10435
         -- Get PV_ID --
10436
         SELECT pv.pv_id
10437
           INTO npvid
10438
           FROM PACKAGES pkg, package_versions pv
10439
          WHERE pv.pkg_id = pkg.pkg_id
10440
            AND pkg.pkg_name = pkgname
10441
            AND pv.pkg_version = pkgversion;
10442
      EXCEPTION
10443
         WHEN NO_DATA_FOUND
10444
         THEN
10445
            raise_application_error (-20000, 'Package Not Found!');
10446
            --WHEN OTHERS THEN
10447
                  -- Consider logging the error and then re-raise
10448
            RAISE;
10449
      END;
1373 dpurdie 10450
 
3959 dpurdie 10451
      -- Finally get package dependencies --
10452
      OPEN RECORDS FOR
10453
         SELECT dpv.pv_id, dpkg.pkg_name, dpv.pkg_version
10454
           FROM package_dependencies dep, PACKAGES dpkg, package_versions dpv
10455
          WHERE dep.pv_id = npvid
10456
            AND dpv.pkg_id = dpkg.pkg_id
10457
            AND dpv.pv_id = dep.dpv_id;
10458
 
10459
      RETURN RECORDS;
1373 dpurdie 10460
   END;
10461
 
10462
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10463
   FUNCTION wip_iteration_package (
10464
      projname        VARCHAR2,
10465
      iterationname   VARCHAR2,
10466
      pkgname         VARCHAR2
1373 dpurdie 10467
   )
3959 dpurdie 10468
      RETURN typecur
1373 dpurdie 10469
   IS
3959 dpurdie 10470
      nrtagid   NUMBER  := 0;
10471
      RECORDS   typecur;
1373 dpurdie 10472
   BEGIN
3959 dpurdie 10473
      BEGIN
10474
         -- Get latest rtag_id --
10475
         SELECT rt.rtag_id
10476
           INTO nrtagid
10477
           FROM projects proj, release_tags rt
10478
          WHERE rt.proj_id = proj.proj_id
10479
            AND UPPER (proj.proj_name) = UPPER (projname)
10480
            AND UPPER (rt.rtag_name) = UPPER (iterationname);
1373 dpurdie 10481
 
3959 dpurdie 10482
         IF (nrtagid IS NULL)
10483
         THEN
10484
            raise_application_error (-20000,
10485
                                     'Work In Progress is Not Found!');
10486
         END IF;
10487
      EXCEPTION
10488
         WHEN NO_DATA_FOUND
10489
         THEN
10490
            raise_application_error (-20000,
10491
                                     'Work In Progress is Not Found!');
10492
            RAISE;
10493
      END;
10494
 
10495
      -- Finally get package dependencies --
10496
      OPEN RECORDS FOR
10497
         SELECT pv.pkg_version, pv.dlocked AS is_official, pv.pkg_label,
10498
                pv.src_path
10499
           FROM PACKAGES pkg, package_versions pv, work_in_progress wip
10500
          WHERE pv.pkg_id = pkg.pkg_id
10501
            AND wip.pv_id = pv.pv_id
10502
            AND wip.rtag_id = nrtagid
10503
            AND pkg.pkg_name = pkgname;
10504
 
10505
      RETURN RECORDS;
1373 dpurdie 10506
   END;
10507
 
10508
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10509
   FUNCTION auto_make_vcsrelease (
10510
      rtagid                   IN   NUMBER,
10511
      pkgname                  IN   VARCHAR2,
10512
      vext                     IN   VARCHAR2,
10513
      newpkgversion            IN   VARCHAR2,
10514
      vcstag                   IN   VARCHAR2,
10515
      dependenciesimportlist   IN   VARCHAR2,
10516
      isrippled                IN   NUMBER,
10517
      username                 IN   VARCHAR2
10518
   )
1373 dpurdie 10519
      RETURN NUMBER
10520
   IS
3959 dpurdie 10521
      pkgid                           NUMBER;
10522
      pvid                            NUMBER                        := 0;
10523
      userid                          NUMBER;
10524
      dlocked                         VARCHAR2 (20)                 := NULL;
10525
      clonefrompvid                   NUMBER;
10526
      ssv_mm                          package_versions.v_mm%TYPE;
10527
      ssv_nmm                         package_versions.v_nmm%TYPE;
10528
      ssv_ext                         package_versions.v_ext%TYPE;
10529
      return_package_not_found        NUMBER                        := -1;
10530
      return_package_already_exists   NUMBER                        := -2;
10531
      return_not_approved             NUMBER                        := -3;
10532
      return_migrated_pkg             NUMBER                        := -4;
1373 dpurdie 10533
 
10534
 
3959 dpurdie 10535
      x_vcstypeid                     NUMBER;
10536
      x_tag                           VARCHAR2(32);
10537
      x_label                         VARCHAR2(60);
10538
      x_srcpath                       VARCHAR2(2000);
10539
      p_srcpath                       VARCHAR2(2000);
1373 dpurdie 10540
 
3959 dpurdie 10541
      -- Regular expression constituents
10542
      Token         VARCHAR2(16) := '([^:]+)';  -- a token is anything except a ':' character
10543
      Seperator     VARCHAR2(4)  := '::';       -- tokens will be seperated by '::'
10544
      BOL           VARCHAR2(4)  := '^';
10545
      Anything      VARCHAR2(4)  := '.*';
10546
      ReplaceToken1 VARCHAR2(4)  := '\1';
10547
      ReplaceToken2 VARCHAR2(4)  := '\2';
10548
      ReplaceToken3 VARCHAR2(4)  := '\3';
10549
      iprev_modifier_id               NUMBER;
10550
 
1373 dpurdie 10551
   BEGIN
3959 dpurdie 10552
      /*--------------- Business Rules Here -------------------*/
10553
      IF (rtagid IS NULL)
10554
      THEN
10555
         raise_application_error (-20000, 'RtagId must be supplied.');
10556
      END IF;
1373 dpurdie 10557
 
3959 dpurdie 10558
      IF (pkgname IS NULL)
10559
      THEN
10560
         raise_application_error (-20000, 'PkgName must be supplied.');
10561
      END IF;
1373 dpurdie 10562
 
3959 dpurdie 10563
      IF (newpkgversion IS NULL)
1373 dpurdie 10564
      THEN
3959 dpurdie 10565
         raise_application_error (-20000, 'PkgVersion must be supplied.');
1373 dpurdie 10566
      END IF;
10567
 
3959 dpurdie 10568
      IF (vcstag IS NULL)
1373 dpurdie 10569
      THEN
3959 dpurdie 10570
         raise_application_error (-20000, 'PkgVcsTag must be supplied.');
1373 dpurdie 10571
      END IF;
10572
 
3959 dpurdie 10573
      IF (isrippled IS NULL) OR (isrippled < 0) OR (isrippled > 1)
1373 dpurdie 10574
      THEN
3959 dpurdie 10575
         raise_application_error
10576
            (-20000,
10577
             'IsRippled must be set to 1 (Is rippled build) or 0 (Is planned build).'
10578
            );
1373 dpurdie 10579
      END IF;
10580
 
3959 dpurdie 10581
      IF (username IS NULL)
1373 dpurdie 10582
      THEN
3959 dpurdie 10583
         raise_application_error (-20000, 'UserName must be supplied.');
1373 dpurdie 10584
      END IF;
10585
 
3959 dpurdie 10586
      -- Parse the PkgVcsTag
10587
      -- Sets up
10588
      --   x_tag, x_label, x_srcpath
1373 dpurdie 10589
 
3959 dpurdie 10590
       BEGIN
10591
          -- Extract the first token - this will be the short tag name for the VCS (eg. 'CC', 'SVN', etc)
10592
          x_tag := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Anything, ReplaceToken1);
1373 dpurdie 10593
 
3959 dpurdie 10594
          -- Decode the short tag
10595
          CASE x_tag
10596
             WHEN 'CC' THEN
10597
                -- extract the 2nd and 3rd tokens, those being the source path and label respectively
10598
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10599
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
1373 dpurdie 10600
 
3959 dpurdie 10601
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
10602
                -- check for that error as well as the obvious zero-length string conditions.
10603
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
10604
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
10605
                END IF;
10606
 
10607
                IF isSVNbyName(pkgname) > 0 THEN
10608
                    -- Don't allow migrated packages to be released from a CC label
10609
                    return return_migrated_pkg;
10610
                END IF;
1373 dpurdie 10611
 
10612
 
3959 dpurdie 10613
             WHEN 'SVN' THEN
10614
                -- extract the 2nd token, that being the subversion tag
10615
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10616
                x_label   := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Token, ReplaceToken3);
1373 dpurdie 10617
 
3959 dpurdie 10618
                -- NOTE: if reg-expr parsing/replacement fails, the x_... variable may receive the entire input string (vcstag), so
10619
                -- check for that error as well as the obvious zero-length string conditions.
10620
                IF LENGTH(x_srcpath) = 0 OR LENGTH(x_label) = 0 OR x_srcpath = vcstag OR x_label = vcstag THEN
10621
                   raise_application_error (-20000, 'VCS Tag contains insufficient or malformed data!');
10622
                END IF;
10623
 
10624
             WHEN 'UC' THEN
10625
                -- nothing to extract, just assign defaults
10626
                x_srcpath := REGEXP_REPLACE(vcstag, BOL || Token || Seperator || Token || Seperator || Anything, ReplaceToken2);
10627
                x_label   := 'N/A';
10628
             ELSE
10629
                raise_application_error (-20000, 'Unrecognised VCS Tag!');
10630
          END CASE;
10631
       END;
10632
 
10633
      -- Get the VCS_TYPE_ID for the version control system.
10634
      BEGIN
10635
         SELECT vt.vcs_type_id
10636
         INTO x_vcstypeid
10637
         FROM VCS_TYPE vt
10638
         WHERE vt.tag = x_tag;
10639
         EXCEPTION
10640
            WHEN NO_DATA_FOUND THEN
10641
               raise_application_error (-20000, 'Database is missing a version control system tag (' || x_tag || ')!' );
10642
      END;
10643
 
10644
 
10645
      -- Get user_id
10646
      BEGIN
10647
         SELECT usr.user_id
10648
           INTO userid
10649
           FROM users usr
10650
          WHERE UPPER (usr.user_name) = UPPER (username)
10651
            AND usr.is_disabled IS NULL;
10652
      EXCEPTION
10653
         WHEN NO_DATA_FOUND
1373 dpurdie 10654
         THEN
10655
            raise_application_error (-20000,
3959 dpurdie 10656
                                        'UserName '
10657
                                     || username
10658
                                     || ' is not valid or disabled.'
1373 dpurdie 10659
                                    );
3959 dpurdie 10660
      END;
1373 dpurdie 10661
 
3959 dpurdie 10662
/*-------------------------------------------------------*/
1373 dpurdie 10663
 
3959 dpurdie 10664
      -- Create package if necessary
10665
      IF isrippled = 1
1373 dpurdie 10666
      THEN
3959 dpurdie 10667
         /* Ripple Build */
10668
         BEGIN
10669
            -- Make sure that package does not exist
10670
            SELECT pv.pv_id
10671
              INTO pvid
10672
              FROM package_versions pv, PACKAGES pkg
10673
             WHERE pv.pkg_id = pkg.pkg_id
10674
               AND pkg.pkg_name = pkgname
10675
               AND pv.pkg_version = newpkgversion;
10676
         EXCEPTION
10677
            WHEN NO_DATA_FOUND
10678
            THEN
10679
               pvid := 0;
10680
         END;
10681
 
10682
         IF (pvid = 0)
1373 dpurdie 10683
         THEN
3959 dpurdie 10684
            -- Split current version in parts
10685
            split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
10686
 
10687
            BEGIN
10688
               -- Find package to be replaced with the ripple package
10689
               IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
10690
               THEN
10691
                  SELECT pv.pv_id, pv.src_path
10692
                    INTO clonefrompvid, p_srcpath
10693
                    FROM PACKAGES pkg, package_versions pv,
10694
                         release_content rc
10695
                   WHERE rc.pv_id = pv.pv_id
10696
                     AND pv.pkg_id = pkg.pkg_id
10697
                     AND rc.rtag_id = rtagid
10698
                     AND pkg.pkg_name = pkgname
10699
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|');
10700
               ELSE
10701
                  SELECT pv.pv_id, pv.src_path
10702
                    INTO clonefrompvid, p_srcpath
10703
                    FROM PACKAGES pkg, package_versions pv,
10704
                         release_content rc
10705
                   WHERE rc.pv_id = pv.pv_id
10706
                     AND pv.pkg_id = pkg.pkg_id
10707
                     AND rc.rtag_id = rtagid
10708
                     AND pkg.pkg_name = pkgname
10709
                     AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
10710
               END IF;
10711
            EXCEPTION
10712
               WHEN NO_DATA_FOUND
10713
               THEN
10714
                  raise_application_error
10715
                                        (-20000,
10716
                                            'Cannot get CloneFromPvId. VExt='
10717
                                         || vext
10718
                                         || ', RtagId='
10719
                                         || rtagid
10720
                                         || ', PkgName='
10721
                                         || pkgname
10722
                                         || ', SSV_EXT='
10723
                                         || ssv_ext
10724
                                        );
10725
            END;
10726
 
10727
            IF NVL (vext, '|LINK_A_NULL|') = NVL (ssv_ext, '|LINK_A_NULL|')
10728
            THEN
10729
               -- Create package
10730
               seed_package_names_versions (pkgname,
10731
                                            newpkgversion,
10732
                                            userid,
10733
                                            pvid,
10734
                                            clonefrompvid
10735
                                           );
10736
            ELSE
10737
               -- Create package
10738
               seed_package_names_versions2 (pkgname,
10739
                                             newpkgversion,
10740
                                             userid,
10741
                                             pvid,
10742
                                             clonefrompvid
10743
                                            );
10744
            END IF;
10745
 
10746
            -- Update Package reason for release
10747
            UPDATE package_versions pv
10748
               SET pv.comments = 'Rippled Build.',
10749
                   pv.build_type = 'Y'
10750
             WHERE pv.pv_id = pvid;
10751
         ELSE
10752
            -- Package already exists, it was built previously, and has just been re-built again probably due to the
10753
            -- fact that the archive was cleaned of the original build artifacts at some point, and those artifacts
10754
            -- are now needed once more. As such, we need to ensure that a new release note generation occurs so
10755
            -- reset the package_versions[pvid].release_notes_info field to enable that to happen.
10756
            UPDATE package_versions pv
10757
               SET pv.release_notes_info = null,
10758
                   pv.modified_stamp = ora_sysdatetime
10759
             WHERE pv.pv_id = pvid;
10760
 
10761
            --DEVI-066151
10762
            log_action (pvid, 'package_rebuilt', userid, 'Package Re-built...');
10763
 
10764
            RETURN return_package_already_exists;
1373 dpurdie 10765
         END IF;
10766
      ELSE
3959 dpurdie 10767
         /* Auto build from Pending area */
10768
 
10769
         -- Find package in pending area
10770
         BEGIN
10771
            SELECT pv.pv_id, pv.dlocked, pv.src_path
10772
              INTO pvid, dlocked, p_srcpath
10773
              FROM planned pl, package_versions pv, PACKAGES pkg
10774
             WHERE pl.pv_id = pv.pv_id
10775
               AND pv.pkg_id = pkg.pkg_id
10776
               AND pl.rtag_id = rtagid
10777
               AND pkg.pkg_name = pkgname
10778
               AND pv.dlocked = 'A'
10779
               AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|')
10780
               AND rownum = 1
10781
             ORDER BY pv.modified_stamp;
10782
         EXCEPTION
10783
            WHEN NO_DATA_FOUND
10784
            THEN
10785
               pvid := 0;
10786
         END;
10787
 
10788
         IF (pvid = 0)
1373 dpurdie 10789
         THEN
3959 dpurdie 10790
            -- Package does not exist in pending area, hence report it
10791
            RETURN return_package_not_found;
10792
         ELSIF (dlocked != 'A')
1373 dpurdie 10793
         THEN
3959 dpurdie 10794
            -- Package is not approved for autobuild
10795
            RETURN return_not_approved;
1373 dpurdie 10796
         END IF;
10797
 
10798
      END IF;
10799
 
3959 dpurdie 10800
      -- Ensure Source Path does not change
10801
      -- Do not expect the SVN development branch to change
10802
      -- From the previous package
10803
      IF ( x_tag = 'SVN' AND p_srcpath != x_srcpath )
1373 dpurdie 10804
      THEN
3959 dpurdie 10805
        raise_application_error (-20000, 'Source Path does not match (' || p_srcpath || ','|| x_srcpath || ')' );
1373 dpurdie 10806
      END IF;
10807
 
3959 dpurdie 10808
      BEGIN
10809
         -- Import Dependencies
10810
         import_dependencies (pvid, dependenciesimportlist, userid);
10811
      END;
1373 dpurdie 10812
 
10813
 
3959 dpurdie 10814
      BEGIN
10815
         -- Split current version in parts
10816
         split_version (newpkgversion, ssv_mm, ssv_nmm, ssv_ext);
1373 dpurdie 10817
 
3959 dpurdie 10818
         -- Update Package Details
10819
         UPDATE package_versions pv
10820
            SET pv.pkg_version = newpkgversion,
10821
                pv.v_ext = ssv_ext,
10822
                pv.v_mm = ssv_mm,
10823
                pv.v_nmm = ssv_nmm,
10824
                pv.src_path = x_srcpath,
10825
                pv.pkg_label = x_label,
10826
                pv.vcs_type_id = x_vcstypeid
10827
          WHERE pv.pv_id = pvid;
10828
      EXCEPTION
10829
         WHEN DUP_VAL_ON_INDEX
10830
         THEN
10831
            -- Package already exists, hence cannot be used for ripple build
10832
            RETURN return_package_already_exists;
10833
      END;
10834
 
10835
      -- Update the is_autobuildable
10836
      UPDATE package_versions
10837
         SET is_autobuildable = 'Y'
10838
       WHERE pv_id = pvid;
10839
 
10840
      -- DEVI-063601
10841
      -- For planned builds the modifier_id shouldn't be set to buildadm.
10842
      -- To ensure this the modifier_id is obtained so it can be restored after
10843
      -- the function pk_environment.auto_make_release is called.
10844
      -- This function calls, change_state, which sets the modifier_id to the
10845
      -- specified userid, which for auto builds is buildadm.
10846
      SELECT pv.modifier_id INTO iprev_modifier_id
10847
      FROM package_versions pv WHERE pv.pv_id = pvid;
10848
 
10849
      -- Now release package
10850
      pk_environment.auto_make_release (pvid,
10851
                                        rtagid,
10852
                                        userid,
10853
                                        vext,
10854
                                        ssv_ext,
10855
                                        clonefrompvid
10856
                                       );
10857
 
10858
      -- DEVI-063601
10859
      -- if it is a planned build then restore the modifier_id to the previous modifier
10860
      UPDATE package_versions pv SET pv.modifier_id = iprev_modifier_id
10861
      WHERE pv.pv_id = pvid;
10862
 
10863
      --Now clean the PLANNED_VERSIONS table
10864
      SELECT pkg_id
10865
        INTO pkgid
10866
        FROM PACKAGES
10867
       WHERE pkg_name = pkgname;
10868
 
10869
      DELETE FROM planned_versions
10870
            WHERE pkg_id = pkgid AND pkg_version = newpkgversion;
10871
 
10872
      RETURN pvid;
1373 dpurdie 10873
   END;
10874
 
10875
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 10876
   PROCEDURE import_dependencies (
10877
      pvid                     IN   NUMBER,
10878
      dependenciesimportlist   IN   VARCHAR2,
10879
      userid                   IN   NUMBER
10880
   )
1373 dpurdie 10881
   IS
3959 dpurdie 10882
/*
10883
|| DependenciesImportList Format:
10884
|| "pkgA","1.0.0";"pkgB","2.0.0";
10885
||  OR 'pkgA','1.0.0';'pkgB','2.0.0';
10886
*/
10887
      TYPE tdictionary IS TABLE OF VARCHAR2 (4000)
10888
         INDEX BY VARCHAR2 (4000);
10889
 
10890
      seperator         VARCHAR2 (2)           := '||';
10891
      pkgname           VARCHAR2 (4000);
10892
      pkgversion        VARCHAR2 (4000);
10893
      buildtype         VARCHAR2 (50);
10894
      pkgid             NUMBER;
10895
      vext              VARCHAR2 (4000);
10896
      dpvid             NUMBER;
10897
      slist             VARCHAR2 (4000);
10898
      cbuildtypes       tdictionary;
10899
      dependencyrow     NUMBER;
10900
      sdependency       VARCHAR2 (4000);
10901
      first_pos         VARCHAR2 (4000);
10902
      second_pos        VARCHAR2 (4000);
10903
      third_pos         VARCHAR2 (4000);
10904
      forth_pos         VARCHAR2 (4000);
10905
      citemcollection   relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
10906
 
10907
      CURSOR curbuildtype
10908
      IS
10909
         SELECT dpv.pkg_id || seperator || dpv.v_ext AS pkgid_ext,
10910
                dep.build_type
10911
           FROM package_dependencies dep, package_versions dpv
10912
          WHERE dep.pv_id = pvid AND dep.dpv_id = dpv.pv_id;
10913
 
10914
      recbuildtype      curbuildtype%ROWTYPE;
1373 dpurdie 10915
   BEGIN
3959 dpurdie 10916
      slist := dependenciesimportlist;
1373 dpurdie 10917
 
3959 dpurdie 10918
      -- Preformat String
10919
      IF NOT slist IS NULL
1373 dpurdie 10920
      THEN
3959 dpurdie 10921
         slist := REPLACE (slist, ' ');                      -- Remove spaces
10922
         slist := REPLACE (slist, UTL_TCP.crlf);
10923
         -- Remove new line and carriage-return characters
10924
         slist := REPLACE (slist, '''', '"');             -- Replace ' with "
1373 dpurdie 10925
      END IF;
10926
 
3959 dpurdie 10927
      -- Get Current Dependencies
10928
      OPEN curbuildtype;
1373 dpurdie 10929
 
3959 dpurdie 10930
      FETCH curbuildtype
10931
       INTO recbuildtype;
1373 dpurdie 10932
 
3959 dpurdie 10933
      WHILE curbuildtype%FOUND
10934
      LOOP
10935
         cbuildtypes (recbuildtype.pkgid_ext) := recbuildtype.build_type;
1373 dpurdie 10936
 
3959 dpurdie 10937
         FETCH curbuildtype
10938
          INTO recbuildtype;
10939
      END LOOP;
1373 dpurdie 10940
 
3959 dpurdie 10941
      CLOSE curbuildtype;
1373 dpurdie 10942
 
3959 dpurdie 10943
      -- Separate dependencies with ; separator
10944
      citemcollection := in_list_varchar2 (slist, ';');
1373 dpurdie 10945
 
3959 dpurdie 10946
      BEGIN
10947
         -- Remove old dependencies
10948
         DELETE FROM package_dependencies dep
10949
               WHERE dep.pv_id = pvid;
1373 dpurdie 10950
 
3959 dpurdie 10951
         -- Loop through dependencies
10952
         FOR dependencyrow IN 1 .. citemcollection.COUNT
10953
         LOOP
10954
            -- Extract pkg_name and pkg_version
10955
            sdependency := citemcollection (dependencyrow);
10956
            first_pos := INSTR (sdependency, '"', 1, 1);
10957
            second_pos := INSTR (sdependency, '"', 1, 2);
10958
            third_pos := INSTR (sdependency, '"', 1, 3);
10959
            forth_pos := INSTR (sdependency, '"', 1, 4);
10960
            pkgname :=
10961
               SUBSTR (sdependency,
10962
                       (first_pos + 1),
10963
                       (second_pos - first_pos - 1)
10964
                      );
10965
            pkgversion :=
10966
               SUBSTR (sdependency,
10967
                       (third_pos + 1),
10968
                       (forth_pos - third_pos - 1)
10969
                      );
10970
 
10971
            -- Dependency must exits to be linked against
10972
            BEGIN
10973
               SELECT pv.pv_id, pv.pkg_id, pv.v_ext
10974
                 INTO dpvid, pkgid, vext
10975
                 FROM package_versions pv, PACKAGES pkg
10976
                WHERE pv.pkg_id = pkg.pkg_id
10977
                  AND pkg.pkg_name = pkgname
10978
                  AND pv.pkg_version = pkgversion;
10979
            EXCEPTION
10980
               WHEN NO_DATA_FOUND
10981
               THEN
10982
                  raise_application_error
10983
                                  (-20000,
10984
                                      'Dependency ['
10985
                                   || pkgname
10986
                                   || ' '
10987
                                   || pkgversion
10988
                                   || '] does not exist yet and cannot be used!'
10989
                                  );
10990
            END;
10991
 
10992
            -- Get Build Type (i.e. BuildPackageArchive or LinkPackageArchive)
10993
            BEGIN
10994
               buildtype := cbuildtypes (pkgid || seperator || vext);
10995
 
10996
               IF buildtype IS NULL
10997
               THEN
10998
                  -- Set build type to LinkPackageArchive by default
10999
                  buildtype := 'L';
11000
               END IF;
11001
            EXCEPTION
11002
               WHEN NO_DATA_FOUND
11003
               THEN
11004
                  buildtype := 'L';
11005
            END;
11006
 
11007
            -- Insert Dependencies
11008
            update_package_dependency (pvid,
11009
                                       pkgname,
11010
                                       pkgversion,
11011
                                       buildtype,
11012
                                       userid,
11013
 
11014
                                      );
11015
         END LOOP;
11016
      END;
1373 dpurdie 11017
   END;
11018
 
11019
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11020
   FUNCTION return_last_package_version (pkgname IN VARCHAR2, rtagid IN NUMBER)
11021
      RETURN VARCHAR2
1373 dpurdie 11022
   IS
3959 dpurdie 11023
      pkgversion   VARCHAR2 (4000);
1373 dpurdie 11024
   BEGIN
3959 dpurdie 11025
      BEGIN
11026
         SELECT pv.pkg_version
11027
           INTO pkgversion
11028
           FROM PACKAGES pkg, release_content rc, package_versions pv
11029
          WHERE pv.pv_id = rc.pv_id
11030
            AND pkg.pkg_id = pv.pkg_id
11031
            AND pkg.pkg_name = pkgname
11032
            AND rc.rtag_id = rtagid;
11033
 
11034
         RETURN pkgversion;
11035
      END;
1373 dpurdie 11036
   END;
11037
 
11038
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11039
   FUNCTION return_wip (pkgname IN VARCHAR2, rtagid IN NUMBER)
11040
      RETURN VARCHAR2
1373 dpurdie 11041
   IS
3959 dpurdie 11042
      pkgversion   VARCHAR2 (4000);
1373 dpurdie 11043
   BEGIN
3959 dpurdie 11044
      BEGIN
11045
         SELECT pv.pkg_version
11046
           INTO pkgversion
11047
           FROM PACKAGES pkg, work_in_progress wip, package_versions pv
11048
          WHERE pv.pv_id = wip.pv_id
11049
            AND pkg.pkg_id = pv.pkg_id
11050
            AND pkg.pkg_name = pkgname
11051
            AND wip.rtag_id = rtagid;
1373 dpurdie 11052
 
3959 dpurdie 11053
         IF pkgversion IS NULL
11054
         THEN
11055
            SELECT pv.pkg_version
11056
              INTO pkgversion
11057
              FROM PACKAGES pkg, planned pl, package_versions pv
11058
             WHERE pv.pv_id = pl.pv_id
11059
               AND pkg.pkg_id = pv.pkg_id
11060
               AND pkg.pkg_name = pkgname
11061
               AND pl.rtag_id = rtagid;
11062
         END IF;
11063
 
11064
         RETURN pkgversion;
11065
      END;
1373 dpurdie 11066
   END;
11067
 
11068
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11069
   PROCEDURE update_dash_board (rtagid IN NUMBER)
1373 dpurdie 11070
   IS
3959 dpurdie 11071
      projid       NUMBER;
11072
      projiddb     NUMBER;
11073
      total        NUMBER;
11074
      auto_total   NUMBER;
11075
      rtagiddb     NUMBER;
1373 dpurdie 11076
   BEGIN
3959 dpurdie 11077
      SELECT COUNT (*)
11078
        INTO total
11079
        FROM release_content rc, package_versions pv
11080
       WHERE pv.pv_id = rc.pv_id AND rc.rtag_id = rtagid;
1373 dpurdie 11081
 
3959 dpurdie 11082
      SELECT COUNT (*)
11083
        INTO auto_total
11084
        FROM release_content rc, package_versions pv
11085
       WHERE pv.pv_id = rc.pv_id
11086
         AND pv.is_autobuildable = 'Y'
11087
         AND rc.rtag_id = rtagid;
11088
 
11089
      BEGIN
11090
         SELECT rtag_id
11091
           INTO rtagiddb
11092
           FROM dash_board
11093
          WHERE rtag_id = rtagid;
11094
 
11095
         SELECT proj_id
11096
           INTO projiddb
11097
           FROM dash_board
11098
          WHERE rtag_id = rtagid;
11099
      EXCEPTION
11100
         WHEN NO_DATA_FOUND
11101
         THEN
11102
            rtagiddb := '';
11103
      END;
11104
 
11105
      IF rtagiddb IS NULL
1373 dpurdie 11106
      THEN
3959 dpurdie 11107
         SELECT proj_id
11108
           INTO projid
11109
           FROM release_tags
11110
          WHERE rtag_id = rtagid;
11111
 
11112
         INSERT INTO dash_board
11113
                     (proj_id, rtag_id, last_build_time, automated_packages,
11114
                      total_packages
11115
                     )
11116
              VALUES (projid, rtagid, ora_sysdatetime, auto_total,
11117
                      total
11118
                     );
11119
      ELSE
11120
         UPDATE dash_board
11121
            SET last_build_time = ora_sysdatetime,
11122
                automated_packages = auto_total,
11123
                total_packages = total
11124
          WHERE proj_id = projiddb AND rtag_id = rtagiddb;
1373 dpurdie 11125
      END IF;
11126
   END;
11127
 
11128
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11129
   FUNCTION exclude_from_build (
11130
      pvid          IN   NUMBER,
11131
      spkgversion   IN   VARCHAR2,
11132
      rtagid        IN   NUMBER,
11133
      username      IN   VARCHAR2
1373 dpurdie 11134
   )
3959 dpurdie 11135
      RETURN NUMBER
1373 dpurdie 11136
   IS
3959 dpurdie 11137
      userid              NUMBER;
11138
      outerrcode          NUMBER;
11139
      pkgid               NUMBER;
11140
 
11141
      CURSOR dnr_duplicate_cur
11142
      IS
11143
         SELECT *
11144
           FROM do_not_ripple
11145
          WHERE pv_id = pvid AND rtag_id = rtagid;
11146
 
11147
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1373 dpurdie 11148
   BEGIN
3959 dpurdie 11149
      outerrcode := -1;       -- Set default return error code to ERROR state
11150
 
11151
      /*--------------- Business Rules Here -------------------*/
11152
      IF (rtagid IS NULL)
1373 dpurdie 11153
      THEN
3959 dpurdie 11154
         RETURN outerrcode;
11155
--         raise_application_error (-20000, 'RtagId must be supplied.');
11156
      END IF;
11157
 
11158
      IF (pvid IS NULL)
1373 dpurdie 11159
      THEN
3959 dpurdie 11160
         RETURN outerrcode;
11161
--         raise_application_error (-20000, 'PvId must be supplied.');
11162
      END IF;
11163
 
11164
      IF (username IS NULL)
1373 dpurdie 11165
      THEN
3959 dpurdie 11166
         RETURN outerrcode;
11167
--         raise_application_error (-20000, 'UserName must be supplied.');
11168
      END IF;
11169
 
11170
      -- Get user_id
11171
      BEGIN
11172
         SELECT usr.user_id
11173
           INTO userid
11174
           FROM users usr
11175
          WHERE UPPER (usr.user_name) = UPPER (username)
11176
            AND usr.is_disabled IS NULL;
11177
      EXCEPTION
11178
         WHEN NO_DATA_FOUND
11179
         THEN
11180
            RETURN outerrcode;
11181
--            raise_application_error (-20000,
11182
--                                        'UserName '
11183
--                                     || username
11184
--                                     || ' is not valid or disabled.'
11185
--                                    );
11186
      END;
11187
 
11188
      OPEN dnr_duplicate_cur;
11189
 
11190
      FETCH dnr_duplicate_cur
11191
       INTO dnr_duplicate_rec;
11192
 
11193
      IF dnr_duplicate_cur%FOUND
1373 dpurdie 11194
      THEN
3959 dpurdie 11195
         outerrcode := 0;
1373 dpurdie 11196
      END IF;
3959 dpurdie 11197
 
11198
      IF dnr_duplicate_cur%NOTFOUND
11199
      THEN
11200
         /* No duplicate recordset */
11201
         unripple_package (pvid, rtagid, userid);
11202
         outerrcode := 0;                            -- Set return to SUCCESS
11203
      END IF;
11204
 
11205
      CLOSE dnr_duplicate_cur;
11206
 
11207
      SELECT pkg_id
11208
        INTO pkgid
11209
        FROM package_versions
11210
       WHERE pv_id = pvid;
11211
 
11212
      DELETE FROM planned_versions
11213
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
11214
 
11215
      RETURN outerrcode;
1373 dpurdie 11216
   END;
11217
 
11218
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11219
   FUNCTION exclude_indirect_from_build (
11220
      pvid          IN   NUMBER,
11221
      spkgversion   IN   VARCHAR2,
11222
      rtagid        IN   NUMBER,
11223
      username      IN   VARCHAR2,
11224
      rootpvid      IN   NUMBER,
11225
      rootcause     IN   VARCHAR2,
11226
      rootfile      IN   VARCHAR2
1373 dpurdie 11227
   )
3959 dpurdie 11228
      RETURN NUMBER
1373 dpurdie 11229
   IS
3959 dpurdie 11230
      userid              NUMBER;
11231
      outerrcode          NUMBER;
11232
      pkgid               NUMBER;
11233
 
11234
      CURSOR dnr_duplicate_cur
11235
      IS
11236
         SELECT *
11237
           FROM do_not_ripple
11238
          WHERE pv_id = pvid AND rtag_id = rtagid;
11239
 
11240
      dnr_duplicate_rec   dnr_duplicate_cur%ROWTYPE;
1373 dpurdie 11241
   BEGIN
3959 dpurdie 11242
      outerrcode := -1;       -- Set default return error code to ERROR state
11243
 
11244
      /*--------------- Business Rules Here -------------------*/
11245
      IF (rtagid IS NULL)
1373 dpurdie 11246
      THEN
3959 dpurdie 11247
         RETURN outerrcode;
11248
--         raise_application_error (-20000, 'RtagId must be supplied.');
11249
      END IF;
11250
 
11251
      IF (pvid IS NULL)
1373 dpurdie 11252
      THEN
3959 dpurdie 11253
         RETURN outerrcode;
11254
--         raise_application_error (-20000, 'PvId must be supplied.');
11255
      END IF;
11256
 
11257
      IF (username IS NULL)
1373 dpurdie 11258
      THEN
3959 dpurdie 11259
         RETURN outerrcode;
11260
--         raise_application_error (-20000, 'UserName must be supplied.');
1373 dpurdie 11261
      END IF;
3959 dpurdie 11262
 
11263
      -- Get user_id
11264
      BEGIN
11265
         SELECT usr.user_id
11266
           INTO userid
11267
           FROM users usr
11268
          WHERE UPPER (usr.user_name) = UPPER (username)
11269
            AND usr.is_disabled IS NULL;
11270
      EXCEPTION
11271
         WHEN NO_DATA_FOUND
11272
         THEN
11273
            RETURN outerrcode;
11274
--            raise_application_error (-20000,
11275
--                                        'UserName '
11276
--                                     || username
11277
--                                     || ' is not valid or disabled.'
11278
--                                    );
11279
      END;
11280
 
11281
     /* No duplicate recordset */
11282
     unripple_package_indirect (pvid, rtagid, userid, rootpvid, rootcause, rootfile);
11283
     outerrcode := 0;                            -- Set return to SUCCESS
11284
 
11285
      SELECT pkg_id
11286
        INTO pkgid
11287
        FROM package_versions
11288
       WHERE pv_id = pvid;
11289
 
11290
      DELETE FROM planned_versions
11291
            WHERE pkg_id = pkgid AND pkg_version = spkgversion;
11292
 
11293
      RETURN outerrcode;
1373 dpurdie 11294
   END;
11295
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11296
   PROCEDURE insert_abt_actionlog (rconid IN NUMBER, action IN VARCHAR2)
1373 dpurdie 11297
   IS
11298
   BEGIN
3959 dpurdie 11299
      INSERT INTO abt_action_log
11300
                  (rcon_id, action_datetime, action
11301
                  )
11302
           VALUES (rconid, ora_sysdatetime, action
11303
                  );
1373 dpurdie 11304
   END;
11305
 
11306
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11307
   FUNCTION insert_package_metrics (
11308
      rtagid                   IN   NUMBER,
11309
      pkgname                  IN   VARCHAR2,
11310
      vext                     IN   VARCHAR2,
11311
      metricstring             IN   VARCHAR2
1373 dpurdie 11312
   )
3959 dpurdie 11313
      RETURN NUMBER
1373 dpurdie 11314
   IS
3959 dpurdie 11315
      citemcollection          relmgr_varchar2_tab_t  := relmgr_varchar2_tab_t ();
11316
      lv_pvid                  NUMBER                 := 0;
11317
      rownumber                NUMBER;
11318
      rowcontent               VARCHAR2(4000);
11319
      metricname               VARCHAR2(1000);
11320
      metricvalue              VARCHAR2(4000);
11321
      return_insert_error      NUMBER                 := -1;
11322
      return_insert_success    NUMBER                 := 0;
11323
 
11324
      /* Metrics */
11325
      lv_branches                 NUMBER;
11326
      lv_branchlist               VARCHAR2(4000);
11327
      lv_codefiles                NUMBER;
11328
      lv_ignoredfiles             NUMBER;
11329
      lv_directories              NUMBER;
11330
      lv_directorydepth           NUMBER;
11331
      lv_totalfiles               NUMBER;
11332
      lv_makefiles                NUMBER;
11333
      lv_blanklines               NUMBER;
11334
      lv_codelines                NUMBER;
11335
      lv_commentlines             NUMBER;
11336
 
1373 dpurdie 11337
   BEGIN
3959 dpurdie 11338
      /*--------------- Business Rules Here -------------------*/
11339
      IF (rtagid IS NULL)
11340
      THEN
11341
         RETURN return_insert_error;
11342
      END IF;
1373 dpurdie 11343
 
3959 dpurdie 11344
      IF (pkgname IS NULL)
11345
      THEN
11346
         RETURN return_insert_error;
11347
      END IF;
11348
 
11349
      IF (metricstring IS NULL)
11350
      THEN
11351
         RETURN return_insert_error;
11352
      END IF;
11353
 
11354
      BEGIN
11355
         SELECT pv.pv_id
11356
           INTO lv_pvid
11357
           FROM package_versions pv, packages pkg, release_content rc
11358
          WHERE pv.pkg_id = pkg.pkg_id
11359
            AND rc.rtag_id = rtagid
11360
            AND pv.pv_id = rc.pv_id
11361
            AND pkg.pkg_name = pkgname
11362
            AND NVL (pv.v_ext, '|LINK_A_NULL|') = NVL (vext, '|LINK_A_NULL|');
11363
      EXCEPTION
11364
           WHEN NO_DATA_FOUND
11365
           THEN
11366
                lv_pvid := 0;
11367
      END;
11368
 
11369
      citemcollection := in_list_varchar2 (metricstring, ';');
11370
 
11371
      FOR rownumber IN 1 .. citemcollection.COUNT
11372
      LOOP
11373
         rowcontent := citemcollection(rownumber);
11374
         metricvalue := SUBSTR(rowcontent, (INSTR(rowcontent, '=') + 1));
11375
         metricname := REGEXP_REPLACE(rowcontent, '=.*$', '');
11376
 
11377
         IF    metricname = 'ccbranch.count' THEN lv_branches := metricvalue;
11378
         ELSIF metricname = 'ccbranch.list' THEN lv_branchlist := metricvalue;
11379
         ELSIF metricname = 'code.files' THEN lv_codefiles := metricvalue;
11380
         ELSIF metricname = 'code.ignored' THEN lv_ignoredfiles := metricvalue;
11381
         ELSIF metricname = 'count.dir' THEN lv_directories := metricvalue;
11382
         ELSIF metricname = 'count.dirdepth' THEN lv_directorydepth := metricvalue;
11383
         ELSIF metricname = 'count.file' THEN lv_totalfiles := metricvalue;
11384
         ELSIF metricname = 'count.makefile' THEN lv_makefiles := metricvalue;
11385
         ELSIF metricname = 'lines.blank' THEN lv_blanklines := metricvalue;
11386
         ELSIF metricname = 'lines.code' THEN lv_codelines := metricvalue;
11387
         ELSIF metricname = 'lines.comment' THEN lv_commentlines := metricvalue;
11388
         END IF;
11389
      END LOOP;
11390
 
11391
      IF (lv_pvid > 0)
11392
      THEN
11393
         -- Delete any existing entries for this package version to makes sure our data is untainted
11394
         DELETE FROM package_metrics pm
11395
         WHERE pm.pv_id = lv_pvid;
11396
 
11397
         -- Insert the new data into the metrics table
11398
         INSERT INTO package_metrics
11399
                     (pv_id, branches, branch_list, code_files, ignored_files, directories, directory_depth,
11400
                      total_files, makefiles, blank_lines, code_lines, comment_lines, created_stamp
11401
                     )
11402
              VALUES (lv_pvid, lv_branches, lv_branchlist, lv_codefiles, lv_ignoredfiles, lv_directories, lv_directorydepth,
11403
                      lv_totalfiles, lv_makefiles, lv_blanklines, lv_codelines, lv_commentlines, ora_sysdatetime
11404
                     );
11405
 
11406
         -- Now update the Release_Metrics Table
11407
         update_release_metrics(rtagid);
11408
 
11409
         RETURN return_insert_success;
11410
      ELSE
11411
         RETURN return_insert_error;
11412
      END IF;
1373 dpurdie 11413
   END;
11414
 
11415
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11416
   PROCEDURE update_release_metrics (rtagid IN NUMBER)
1373 dpurdie 11417
   IS
3959 dpurdie 11418
      lv_totalpackages       NUMBER;
11419
      lv_autobuilt           NUMBER;
11420
      lv_linesofcode         NUMBER;
11421
      lv_unittested          NUMBER;
11422
      lv_autotested          NUMBER;
11423
      lv_numOfbranches       NUMBER;
11424
      lv_lastbuildtime       DATE;
1373 dpurdie 11425
   BEGIN
3959 dpurdie 11426
      IF (rtagid > 0)
11427
      THEN
11428
         -- Get the total number of packages in this release and the number of
11429
         -- those that are autobuilt
11430
         SELECT COUNT (DISTINCT rc.pv_id),
11431
                COUNT (DISTINCT autobuilt_qry.pv_id)
11432
           INTO lv_totalpackages, lv_autobuilt
11433
           FROM release_content rc,
11434
                package_versions pv,
11435
                (
11436
                 SELECT rc.pv_id
11437
                   FROM release_content rc,
11438
                        package_versions pv
11439
                  WHERE pv.is_autobuildable = 'Y'
11440
                    AND pv.pv_id = rc.pv_id
11441
                    AND rc.rtag_id = rtagid
11442
                ) autobuilt_qry
11443
          WHERE pv.pv_id = rc.pv_id
11444
            AND rc.rtag_id = rtagid
11445
            AND autobuilt_qry.pv_id (+) = rc.pv_id;
1373 dpurdie 11446
 
3959 dpurdie 11447
         -- Get the build time of the last package built in this release and the
11448
         -- total number of lines of code
11449
         SELECT MAX(pm.created_stamp),
11450
                SUM(pm.code_lines)
11451
           INTO lv_lastbuildtime, lv_linesofcode
11452
           FROM package_metrics pm, release_content rc
11453
          WHERE pm.pv_id = rc.pv_id
11454
            AND rc.rtag_id = rtagid;
11455
 
11456
         -- Get the number of packages with unit tests in this release and the
11457
         -- number of those that are autotested
11458
         SELECT COUNT(DISTINCT ut.pv_id) INTO lv_unittested
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 != 1;
11464
 
11465
        SELECT COUNT(DISTINCT ut.pv_id) INTO lv_autotested
11466
          FROM unit_tests ut,
11467
               release_content rc
11468
         WHERE ut.pv_id = rc.pv_id
11469
           AND rc.rtag_id = rtagid
11470
           AND ut.test_types_fk = 7;
11471
 
11472
 
11473
         -- Count the number of unique branches in the packages in this release.
11474
--         SELECT COUNT(DISTINCT branch) INTO lv_numOfbranches
11475
--           FROM (
11476
--                SELECT pv_id,
11477
--                       regexp_substr(str, '[^,]+', 1, level) branch,
11478
--                       level lv,
11479
--                       lag(level, 1, 0) over (partition by pv_id order by level) lg
11480
--                  FROM (
11481
--                       SELECT pm.pv_id,
11482
--                              ','||pm.branch_list str
11483
--                         FROM package_metrics pm,
11484
--                              release_content rc
11485
--                        WHERE pm.pv_id = rc.pv_id
11486
--                          AND rc.rtag_id = rtagid
11487
--                       )
11488
--                CONNECT BY regexp_substr(str, '[^,]+', 1, LEVEL) IS NOT NULL
11489
--                )
11490
--          WHERE lv != lg;
11491
 
11492
         UPDATE release_metrics rm
11493
            SET rm.total_packages = lv_totalpackages,
11494
                rm.autobuilt = lv_autobuilt,
11495
                rm.lines_of_code = lv_linesofcode,
11496
                rm.unit_tested = lv_unittested,
11497
                rm.autotested = lv_autotested,
11498
--                rm.branches = lv_numOfbranches,
11499
                rm.last_build_time = lv_lastbuildtime
11500
          WHERE rtag_id = rtagid;
11501
 
11502
         IF (SQL%ROWCOUNT = 0)
11503
         THEN
11504
            INSERT INTO release_metrics
11505
                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
11506
                         autotested, last_build_time
11507
                        )
11508
                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
11509
                         lv_autotested, lv_lastbuildtime
11510
                        );
11511
         END IF;
11512
--         IF (SQL%ROWCOUNT = 0)
11513
--         THEN
11514
--            INSERT INTO release_metrics
11515
--                        (rtag_id, total_packages, autobuilt, lines_of_code, unit_tested,
11516
--                         autotested, branches, last_build_time
11517
--                        )
11518
--                 VALUES (rtagid, lv_totalpackages, lv_autobuilt, lv_linesofcode, lv_unittested,
11519
--                         lv_autotested, lv_numOfbranches, lv_lastbuildtime
11520
--                        );
11521
--         END IF;
11522
--      ELSE
11523
--         raise_application_error (-20000, 'RtagId must be supplied.');
11524
      END IF;
1373 dpurdie 11525
   END;
11526
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11527
   FUNCTION return_vcs_tag(pvid IN NUMBER) RETURN VARCHAR2
1373 dpurdie 11528
   IS
3959 dpurdie 11529
      vcstypeid    NUMBER;
11530
      vcstag       VARCHAR2(32);
11531
      label        VARCHAR2(60);
11532
      srcpath      VARCHAR2(2000);
11533
      vcstypeid_cc NUMBER;
11534
      vcstypeid_uc NUMBER;
1373 dpurdie 11535
   BEGIN
3959 dpurdie 11536
      -- Get the VCS_TYPE_ID for the ClearCase version control system. We do this so that we make no assumptions about
11537
      -- what the primary key value is for the ClearCase VCS entry.
11538
      BEGIN
11539
         SELECT vt.vcs_type_id
11540
         INTO vcstypeid_cc
11541
         FROM VCS_TYPE vt
11542
         WHERE vt.tag = 'CC';
11543
         EXCEPTION
11544
            WHEN NO_DATA_FOUND THEN
11545
               raise_application_error (-20000, 'Database is missing compulsory CC version control system tag!');
11546
      END;
1373 dpurdie 11547
 
3959 dpurdie 11548
      -- Get the VCS_TYPE_ID for the Uncontrolled version control system. We do this so that we make no assumptions about
11549
      -- what the primary key value is for the Uncontrolled VCS entry.
11550
      BEGIN
11551
         SELECT vt.vcs_type_id
11552
         INTO vcstypeid_uc
11553
         FROM VCS_TYPE vt
11554
         WHERE vt.tag = 'UC';
11555
         EXCEPTION
11556
            WHEN NO_DATA_FOUND THEN
11557
               raise_application_error (-20000, 'Database is missing compulsory UC version control system tag!');
11558
      END;
11559
 
11560
      -- Get the PKG_LABEL, SRC_PATH, VCS_TYPE_ID for the package version
11561
      -- As additional VCS types are introduced, we may have to extend what this SELECT statement returns
11562
      BEGIN
11563
         SELECT pv.pkg_label, pv.src_path,
11564
           (CASE WHEN pv.pkg_label = 'N/A' AND pv.vcs_type_id IS NULL THEN vcstypeid_uc
11565
                 WHEN pv.vcs_type_id IS NULL THEN vcstypeid_cc
11566
                 ELSE pv.vcs_type_id END) AS vcs_type_id
11567
         INTO label, srcpath, vcstypeid
11568
         FROM PACKAGE_VERSIONS pv
11569
         WHERE pv.pv_id = pvid;
11570
         EXCEPTION
11571
            WHEN NO_DATA_FOUND THEN
11572
               raise_application_error (-20000, 'Package Version Not Found!');
11573
      END;
11574
 
11575
      -- Get the VCS TAG for the VCS_TYPE_ID.
11576
      BEGIN
11577
         SELECT vt.tag
11578
         INTO vcstag
11579
         FROM VCS_TYPE vt
11580
         WHERE vt.vcs_type_id = vcstypeid;
11581
         EXCEPTION
11582
            WHEN NO_DATA_FOUND THEN
11583
               raise_application_error (-20000, 'Could not get VCS Tag for the package version!');
11584
      END;
11585
 
11586
      -- Return value depending upon which VCS Tag is being used.
11587
      -- As additional VCS types are introduced, we have to add additional WHEN clauses
11588
      CASE vcstag
11589
         WHEN 'CC' THEN
11590
            RETURN vcstag || '::' || srcpath || '::' || label;
11591
         WHEN 'SVN' THEN
11592
            RETURN vcstag || '::' || srcpath || '::' || label;
11593
         ELSE
11594
            RETURN vcstag || '::';
11595
      END CASE;
11596
 
1373 dpurdie 11597
   END;
3959 dpurdie 11598
/*-------------------------------------------------------------------------------------------------------*/
1373 dpurdie 11599
 
3959 dpurdie 11600
/*-------------------------------------------------------------------------------------------------------
11601
Name:        update_vcs_details
11602
Description: Updates the Version Control System (vcs) details specified in the vcstag
11603
             parameter for the specified package version.
11604
             The specified package vcstag is parsed and split into 3 fields:
11605
                vcs type, src path, label
11606
             These fields are then stored for the specified pv_id in the package_versions, table.
11607
             An action is recorded in the action log and provides information for tracking and
11608
             for restoring the previous vcs settings if a recovery is required.
11609
Paramters:
11610
             ipv_id:     Package version identifier
11611
             vcstag:     Full version control tag.
11612
                         Examples:
11613
                             "SVN::AUPERASVN01/DPG_SWBase/tools/trunk::daf_tools_25.1.7027.cr@1234"
11614
                            "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
11615
             user_id:    Identifier of the user that is performing this function.
11616
*/
11617
PROCEDURE update_vcs_details(ipv_id IN NUMBER, vcstag IN VARCHAR2, user_id IN NUMBER)
1373 dpurdie 11618
   IS
3959 dpurdie 11619
      ivcs_type_id   NUMBER;
11620
      svcs_type      VARCHAR2(128);
11621
      ssrc_path      VARCHAR2(512);
11622
      spkg_label     VARCHAR2(512);
11623
      spattern       VARCHAR2(64);
11624
      saction_desc   VARCHAR2(2048);
11625
      old_vcs_type   VARCHAR2(128);
11626
      old_src_path   VARCHAR2(512);
11627
      old_pkg_label  VARCHAR2(512);
11628
      old_pkg_vcstag VARCHAR2(1024);
11629
      i              NUMBER;
11630
      vcount         NUMBER;
1373 dpurdie 11631
   BEGIN
3959 dpurdie 11632
     -- Split vcs tag into fields: vcs type, src path, label
11633
     -- Fields are separated by '::'
11634
     -- e.g "CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr"
11635
     -- The below regular expression pattern has groups to achieve this.
1373 dpurdie 11636
 
3959 dpurdie 11637
     spattern:= '^([^:]*)::([^:]*)(::(.*))?$';
11638
 
11639
     --As Oracle 10g does not allow REGEXP_SUBSTR to return a group,
11640
     --REGEXP_REPLACE is used instead (Note: Oracle 11g has this enhancement).
11641
     SELECT REGEXP_REPLACE(vcstag,spattern, '\1') INTO svcs_type  FROM DUAL;
11642
     SELECT REGEXP_REPLACE(vcstag,spattern, '\2') INTO ssrc_path  FROM DUAL;
11643
     SELECT REGEXP_REPLACE(vcstag,spattern, '\4') INTO spkg_label FROM DUAL;
11644
 
11645
     -- Validate vcs type
11646
     BEGIN
11647
       SELECT vc.vcs_type_id INTO ivcs_type_id FROM vcs_type vc WHERE UPPER(svcs_type) = UPPER(vc.tag);
11648
     EXCEPTION
11649
       WHEN NO_DATA_FOUND THEN
11650
         raise_application_error (-20000, 'Invalid vcs type: ' || '"' || svcs_type || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11651
       --RAISE;
11652
     END;
11653
 
11654
     -- If Clearcase
11655
     IF (ivcs_type_id = 2) THEN
11656
       -- Validate source path
11657
       IF NOT REGEXP_LIKE(ssrc_path,'^(\\|\/)[a-z]+[0-9a-z_\.\-\\\/ -]*$','i') THEN
11658
         raise_application_error (-20000, 'Invalid CC src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11659
       END IF;
11660
 
11661
       -- Validate label
11662
       -- For clearcase the label must be specified. For subversion it is not required.
11663
       IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+$','i') THEN
11664
         raise_application_error (-20000, 'Invalid CC label:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
11665
       END IF;
11666
 
11667
     -- if Subversion
11668
     ELSIF (ivcs_type_id = 23) THEN
11669
       -- general validity
11670
       -- Not as picky as the RM Data entry
11671
       IF NOT REGEXP_LIKE(ssrc_path,'^([0-9a-z_\.\-]+)(\/([0-9a-z_\.\-]+))+$','i') THEN
11672
         raise_application_error (-20000, 'Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11673
       END IF;
11674
 
11675
       -- Validate Tag
11676
       -- May be a Peg or a Label
11677
       IF NOT REGEXP_LIKE(spkg_label,'^@?[0-9]+$','i') THEN
11678
           IF NOT REGEXP_LIKE(spkg_label,'^[0-9a-z_\.\-]+($|@[0-9]+)','i') THEN
11679
             raise_application_error (-20000, 'Invalid SVN tag:' || '"' || spkg_label || '"' || ' for package version:' || ipv_id || ', vcstag:' || '"' || vcstag || '"');
11680
           END IF;
11681
       END IF;
11682
 
11683
        -- Check for suitable ending
11684
        IF NOT REGEXP_LIKE(ssrc_path,'(\/tags$)|(\/branches\/)|(\/trunk$)','i') THEN
11685
            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 || '"');
11686
        END IF;
11687
 
11688
       -- Check for combined use of tags, branches, trunk or repeats of each
11689
       -- Count occurrences of /tags or /branches/ or /trunk
11690
       vcount:=0;
11691
       i:=1;
11692
       WHILE i > 0 LOOP
11693
         i:=REGEXP_INSTR(ssrc_path,'(\/tags(\/|$))|(\/branches(\/|$))|(\/trunk(\/|$))',i,1,1,'i');
11694
         IF i > 0 THEN
11695
           -- if found then increment count
11696
           vcount:=vcount+1;
11697
           i:=i-1;  -- move index back to "/"
11698
         END IF;
11699
       END LOOP;
11700
 
11701
       IF vcount = 0  THEN
11702
         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 || '"');
11703
       END IF;
11704
 
11705
       IF vcount > 1  THEN
11706
         raise_application_error (-20000, 'Combined use of /trunk, /tags, or /branches/. Invalid SVN src path: ' || '"' || ssrc_path || '"' || ' for package version: ' || ipv_id || ', vcstag: ' || '"' || vcstag || '"');
11707
       END IF;
11708
 
11709
 
11710
     END IF;
11711
 
11712
     BEGIN
11713
       -- Get current vcs tag for specified package version
11714
       SELECT pv.src_path, pv.pkg_label, vc.tag as vcs_type
11715
       INTO old_src_path, old_pkg_label, old_vcs_type
11716
       FROM package_versions pv, vcs_type vc
11717
       WHERE pv.pv_id = ipv_id
11718
       AND pv.vcs_type_id = vc.vcs_type_id (+);
11719
 
11720
     EXCEPTION
11721
       WHEN NO_DATA_FOUND THEN
11722
         raise_application_error (-20000, 'Package version not found: ' || ipv_id);
11723
     END;
11724
 
11725
     old_pkg_vcstag:= old_vcs_type || '::' || old_src_path;
11726
     IF (old_pkg_label IS NOT NULL) THEN
11727
       old_pkg_vcstag:=old_pkg_vcstag || '::' || old_pkg_label;
11728
     END IF;
11729
 
11730
     -- Create action description
11731
     -- This description will contain the old and new tags.
11732
     -- Its purpose is to provide information for tracking and for restoring previous vcs settings if a recovery is required.
11733
     -- An example of the action description is below:
11734
     --   OldTag:CC::/DPG_SWBase/tools::daf_tools_25.1.7016.cr NewTag:SVN::DPG_SWBase/tools/tags/daf_tools_25.1.7027.cr
11735
     saction_desc:='OldTag:' || old_pkg_vcstag || ' ' || 'NewTag:' || vcstag;
11736
 
11737
     -- Store new vcs details
11738
     UPDATE package_versions SET
11739
       src_path = ssrc_path,
11740
       pkg_label = spkg_label,
11741
       vcs_type_id = ivcs_type_id
11742
     WHERE
11743
       pv_id = ipv_id;
11744
 
11745
     -- Store action in action log so that we can back track and also restore vcs settings if required.
11746
     log_action (ipv_id,'VcsConversion',user_id,saction_desc);
11747
 
11748
   END update_vcs_details;
11749
 
11750
/*-------------------------------------------------------------------------------------------------------
11751
Name:        isSVN
11752
Description: Determine if any of the packages versions are controlled under SVN
11753
			 Intended to be used to prevent users from releasing a package
11754
			 that has been migrated to SVN
11755
 
11756
Paramters:	pkgid:     Package ID
11757
 
11758
Returns:	Number of versions under SVN version control
11759
*/
11760
 
11761
FUNCTION isSVN( pkgid IN NUMBER )
11762
    RETURN NUMBER
11763
    IS
11764
    svncount   NUMBER  := 0;
11765
   BEGIN
11766
        SELECT COUNT(*) INTO svncount FROM PACKAGE_VERSIONS pv WHERE pv.PKG_ID = pkgid AND pv.VCS_TYPE_ID = 23;
11767
        RETURN (svncount);
1373 dpurdie 11768
   END;
3959 dpurdie 11769
 
11770
/*-------------------------------------------------------------------------------------------------------
11771
Name:        isSVNbyName
11772
Description: Determine if any of the packages versions are controlled under SVN
11773
			 Intended to be used to prevent users from releasing a package
11774
			 that has been migrated to SVN
11775
 
11776
Paramters:	pkgname:	Package Name
11777
 
11778
Returns:	Number of versions under SVN version control
11779
*/
11780
 
11781
FUNCTION isSVNbyName( pkgname IN VARCHAR2 ) 
11782
    RETURN NUMBER
11783
IS
11784
   svncount   NUMBER  := 0;
11785
   BEGIN
11786
        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;
11787
        RETURN (svncount);
11788
   END;
11789
 
11790
   END;
4040 dpurdie 11791
 
1374 dpurdie 11792
/
1373 dpurdie 11793
 
4040 dpurdie 11794
/
11795
--------------------------------------------------------
11796
--  DDL for Package Body PK_WORK_IN_PROGRESS
11797
--------------------------------------------------------
11798
 
3959 dpurdie 11799
  CREATE OR REPLACE PACKAGE BODY "PK_WORK_IN_PROGRESS" IS
1373 dpurdie 11800
 
11801
/*
11802
------------------------------
11803
||  Last Modified:  S.Vukovic
3959 dpurdie 11804
||  Modified Date:  2/May/2005
1373 dpurdie 11805
||  Body Version:   1.0
11806
------------------------------
11807
*/
11808
 
11809
 
11810
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11811
PROCEDURE ADD_PACKAGE ( newPvId IN NUMBER, ViewId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 11812
 
3959 dpurdie 11813
	oldPvId NUMBER;
11814
	ReleaseLocation VARCHAR2(4000);
11815
	sLocation VARCHAR2(4000) := NULL;
1373 dpurdie 11816
 
3959 dpurdie 11817
 
1373 dpurdie 11818
BEGIN
11819
	/*--------------- Business Rules Here -------------------*/
3959 dpurdie 11820
	/*-------------------------------------------------------*/
1373 dpurdie 11821
 
3959 dpurdie 11822
	BEGIN
11823
		-- Check if Exists in "Work in progress" anywhere in the world, except "Closed mode" releases
11824
		SELECT proj.PROJ_NAME ||' > '|| rt.RTAG_NAME  INTO sLocation
11825
		  FROM WORK_IN_PROGRESS wip,
11826
		  	   RELEASE_TAGS rt,
11827
			   PROJECTS proj
11828
		 WHERE wip.PV_ID = newPvId
11829
		   AND wip.RTAG_ID = rt.RTAG_ID
11830
		   AND rt.OFFICIAL != 'Y'
11831
		   AND rt.PROJ_ID = proj.PROJ_ID;
1373 dpurdie 11832
 
3959 dpurdie 11833
		EXCEPTION
11834
	    	WHEN NO_DATA_FOUND THEN
11835
	       		sLocation := NULL;
11836
 
11837
	END;	   	   
1373 dpurdie 11838
 
11839
 
11840
 
3959 dpurdie 11841
	IF (sLocation IS NULL)  THEN
1373 dpurdie 11842
 
3959 dpurdie 11843
		-- Add to "Work in progress"
11844
		INSERT INTO WORK_IN_PROGRESS ( RTAG_ID, PV_ID, VIEW_ID )
11845
		VALUES( RtagId, newPvId, ViewId );
11846
 
11847
 
11848
	    /* LOG ACTION */
11849
		SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
11850
		  FROM PROJECTS proj,
11851
		  	   RELEASE_TAGS rt
11852
		 WHERE rt.PROJ_ID = proj.PROJ_ID
11853
		   AND rt.RTAG_ID = RtagId;
11854
 
11855
		Log_Action ( newPvId, 'work_in_progress', UserId, 'Location: '|| ReleaseLocation );
11856
 
11857
	ELSE
11858
 
11859
		RAISE_APPLICATION_ERROR (-20000, 'This version is already in Work-In-Progress Area at '|| sLocation ||'.' );
11860
 
1373 dpurdie 11861
	END IF;
11862
 
3959 dpurdie 11863
END;
11864
/*-------------------------------------------------------------------------------------------------------*/
11865
PROCEDURE REMOVE_PACKAGE ( PvId IN NUMBER, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 11866
 
3959 dpurdie 11867
	ReleaseLocation VARCHAR2(4000);
1373 dpurdie 11868
 
3959 dpurdie 11869
BEGIN
11870
 
11871
	/*--------------- Business Rules Here -------------------*/
1373 dpurdie 11872
	/*-------------------------------------------------------*/
11873
 
11874
 
3959 dpurdie 11875
	-- Get release location for logging pusposes
11876
	SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
11877
	  FROM PROJECTS proj,
11878
	  	   RELEASE_TAGS rt
11879
	 WHERE rt.PROJ_ID = proj.PROJ_ID
11880
	   AND rt.RTAG_ID = RtagId;
1373 dpurdie 11881
 
11882
 
3959 dpurdie 11883
	-- Delete from Work In Progress
11884
	DELETE
11885
	  FROM WORK_IN_PROGRESS wip
11886
	 WHERE wip.RTAG_ID = RtagId
11887
	   AND wip.PV_ID = PvId;
1373 dpurdie 11888
 
3959 dpurdie 11889
	Log_Action ( PvId, 'delete_from_wip', UserId, 'Location: '|| ReleaseLocation );
1373 dpurdie 11890
 
3959 dpurdie 11891
 
11892
 
11893
 
1373 dpurdie 11894
END;
11895
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11896
PROCEDURE REMOVE_PACKAGE_BULK ( PvIdList IN VARCHAR2, RtagId IN NUMBER, UserId IN NUMBER ) IS
1373 dpurdie 11897
 
3959 dpurdie 11898
	nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
11899
	ReleaseLocation VARCHAR2(4000);
11900
	PvId NUMBER;
1373 dpurdie 11901
 
11902
BEGIN
3959 dpurdie 11903
 
1373 dpurdie 11904
	/*--------------- Business Rules Here -------------------*/
3959 dpurdie 11905
	IF (PvIdList IS NULL)
11906
	THEN
11907
		RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
11908
	END IF;
1373 dpurdie 11909
	/*-------------------------------------------------------*/
11910
 
11911
 
3959 dpurdie 11912
	nIdCollector := IN_LIST_NUMBER ( PvIdList );
1373 dpurdie 11913
 
11914
 
3959 dpurdie 11915
	-- Get release location for logging pusposes
11916
	SELECT proj.PROJ_NAME  ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
11917
	  FROM PROJECTS proj,
11918
	  	   RELEASE_TAGS rt
11919
	 WHERE rt.PROJ_ID = proj.PROJ_ID
11920
	   AND rt.RTAG_ID = RtagId;
1373 dpurdie 11921
 
3959 dpurdie 11922
 
11923
	FOR i IN 1..nIdCollector.COUNT
11924
	LOOP
11925
		PvId := nIdCollector(i);
11926
 
11927
		-- Delete from Work In Progress
11928
		DELETE
11929
		  FROM WORK_IN_PROGRESS wip
11930
		 WHERE wip.RTAG_ID = RtagId
11931
		   AND wip.PV_ID = PvId;
11932
 
11933
		Log_Action ( PvId, 'remove_from_work_in_progress', UserId, 'Location: '|| ReleaseLocation );
11934
 
11935
	END LOOP;
11936
 
11937
 
1373 dpurdie 11938
END;
11939
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11940
FUNCTION GET_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER ) RETURN NUMBER IS
11941
 
11942
	ReturnValue NUMBER;
11943
 
1373 dpurdie 11944
BEGIN
3959 dpurdie 11945
	SELECT wip.VIEW_ID INTO ReturnValue
11946
	  FROM WORK_IN_PROGRESS wip
11947
	 WHERE wip.RTAG_ID = RtagId
11948
	   AND wip.PV_ID = PvId;
1373 dpurdie 11949
 
3959 dpurdie 11950
	RETURN ReturnValue;
1373 dpurdie 11951
END;
11952
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 11953
PROCEDURE GET_VIEW_CONTENT ( RtagId IN NUMBER, ViewId IN NUMBER, RecordSet OUT typeCur ) IS
11954
 
11955
	IsBaseView CHAR(1);
11956
 
1373 dpurdie 11957
BEGIN
11958
 
3959 dpurdie 11959
	-- Check if the view is BASE VIEW
11960
	SELECT vi.BASE_VIEW INTO IsBaseView
11961
	  FROM VIEWS vi
11962
	 WHERE vi.VIEW_ID = ViewId;
11963
 
11964
	IF (IsBaseView = 'Y') THEN 
11965
		-- Get Base view content
11966
		OPEN RecordSet FOR
11967
		SELECT 0 AS PKG_STATE,
11968
			   NULL AS DEPRECATED_STATE,
11969
			   pv.pv_id, 
11970
			   pkg.pkg_name, 
11971
			   pv.pkg_version, 
11972
			   pv.dlocked, 
11973
			   pv.pv_description,
11974
			   pv.BUILD_TYPE
11975
		  FROM WORK_IN_PROGRESS rel,
11976
		       packages pkg,
11977
		       package_versions pv
11978
		 WHERE pv.pkg_id = pkg.pkg_id
11979
		   AND rel.pv_id = pv.pv_id
11980
		   AND rel.VIEW_ID = ViewId
11981
		   AND rel.RTAG_ID = RtagId
11982
		 ORDER BY UPPER(pkg.PKG_NAME);
11983
 
1373 dpurdie 11984
 
3959 dpurdie 11985
	ELSE	 
1373 dpurdie 11986
 
3959 dpurdie 11987
	 	-- Get non base view content
11988
		OPEN RecordSet FOR
11989
		SELECT 0 AS PKG_STATE,
11990
			   NULL AS DEPRECATED_STATE,
11991
			   pv.pv_id, 
11992
			   pkg.pkg_name, 
11993
			   pv.pkg_version, 
11994
			   pv.dlocked, 
11995
			   pv.pv_description,
11996
			   pv.BUILD_TYPE
11997
		  FROM WORK_IN_PROGRESS rel,
11998
		       packages pkg,
11999
		       package_versions pv,
12000
			   VIEW_DEF vd
12001
		 WHERE pv.pkg_id = pkg.pkg_id
12002
		   AND rel.pv_id = pv.pv_id
12003
		   AND vd.VIEW_ID = ViewId
12004
		   AND vd.PKG_ID = pv.PKG_ID
12005
		   AND rel.RTAG_ID = RtagId
12006
		 ORDER BY UPPER(pkg.PKG_NAME);
1373 dpurdie 12007
 
3959 dpurdie 12008
 
12009
	END IF;	 	
12010
 
12011
 
1373 dpurdie 12012
END;
12013
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12014
PROCEDURE CHANGE_PACKAGE_VIEW ( PvId IN NUMBER, RtagId IN NUMBER, NewViewId IN NUMBER ) IS
12015
 
1373 dpurdie 12016
BEGIN
12017
 
3959 dpurdie 12018
	UPDATE WORK_IN_PROGRESS wip SET
12019
	wip.VIEW_ID = NewViewId
12020
	WHERE wip.PV_ID = PvId
12021
	  AND wip.RTAG_ID = RtagId;
12022
 
1373 dpurdie 12023
END;
12024
/*-------------------------------------------------------------------------------------------------------*/
3959 dpurdie 12025
END PK_WORK_IN_PROGRESS;
4040 dpurdie 12026
 
3959 dpurdie 12027
/
1373 dpurdie 12028
 
4040 dpurdie 12029
/
12030
--------------------------------------------------------
12031
--  DDL for Package Body RM_ISSUES
12032
--------------------------------------------------------
12033
 
3959 dpurdie 12034
  CREATE OR REPLACE PACKAGE BODY "RM_ISSUES" AS
1373 dpurdie 12035
 
3959 dpurdie 12036
-- Private Implementation -----------------------------------------------------
1373 dpurdie 12037
 
12038
 
3959 dpurdie 12039
	FUNCTION VerIsGrtrThanOrEqlToStart( XXstart IN NUMBER, XX IN NUMBER, YYstart IN NUMBER, YY IN NUMBER, ZZstart IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
12040
	AS
1373 dpurdie 12041
 
3959 dpurdie 12042
	BEGIN
12043
		-- start boundary case
12044
		IF ( XXstart < XX ) THEN
12045
			RETURN 1;
1373 dpurdie 12046
 
3959 dpurdie 12047
		ELSIF ( XXstart = XX ) THEN
1373 dpurdie 12048
 
3959 dpurdie 12049
			-- need to consider YY
12050
			IF ( YYstart < YY ) THEN
12051
				RETURN 1;
1373 dpurdie 12052
 
3959 dpurdie 12053
			ELSIF ( YYstart = YY ) THEN
1373 dpurdie 12054
 
3959 dpurdie 12055
					-- need to consider ZZ
12056
					IF ( ZZstart <= ZZ ) THEN
12057
						RETURN 1;
12058
 
12059
					ELSE
12060
						RETURN 0;
12061
					END IF;
12062
 
12063
			ELSE
12064
				RETURN 0;
12065
			END IF;
12066
		ELSE
12067
			RETURN 0;
12068
		END IF;
12069
	EXCEPTION
12070
		WHEN OTHERS THEN
12071
			RETURN -1;
12072
	END;
12073
 
12074
 
12075
	FUNCTION VerIsLessThanOrEqlToEnd( XXend IN NUMBER, XX IN NUMBER, YYend IN NUMBER, YY IN NUMBER, ZZend IN NUMBER, ZZ IN NUMBER ) RETURN NUMBER
12076
	AS
12077
 
12078
	BEGIN
12079
		-- end boundary case
12080
		IF ( XX < XXend ) THEN
12081
			RETURN 1;
12082
 
12083
		ELSIF ( XX = XXend ) THEN
12084
 
12085
			-- need to consider YY
12086
			IF ( YY < YYend ) THEN
12087
				RETURN 1;
12088
 
12089
			ELSIF ( YY = YYend ) THEN
12090
 
12091
					-- need to consider ZZ
12092
					IF ( ZZ <= ZZend ) THEN
12093
						RETURN 1;
12094
 
12095
					ELSE
12096
						RETURN 0;
12097
					END IF;
12098
			ELSE
12099
 
12100
				RETURN 0;
12101
			END IF;
12102
		ELSE
12103
			RETURN 0;
12104
		END IF;
12105
	EXCEPTION
12106
		WHEN OTHERS THEN
12107
			RETURN -1;
12108
	END;
12109
 
12110
	/*
12111
	-	version format:		XX.YY.ZZ.abc
12112
	*/
12113
	FUNCTION VersionIsBetween( version IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR ) RETURN NUMBER
12114
	AS
12115
		XXstart		NUMBER	:=	0;
12116
		XXend		NUMBER	:=	0;
12117
		XX			NUMBER	:=	0;
12118
		YYstart		NUMBER	:=	0;
12119
		YYend		NUMBER	:=	0;
12120
		YY			NUMBER	:=	0;
12121
		ZZstart		NUMBER	:=	0;
12122
		ZZend		NUMBER	:=	0;
12123
		ZZ			NUMBER	:=	0;
12124
		first_dot	NUMBER	:=	0;
12125
		second_dot	NUMBER	:=	0;
12126
		third_dot	NUMBER	:=	0;
12127
 
12128
		ProjExtstart	VARCHAR2(10);
12129
		ProjExtend		VARCHAR2(10);
12130
		ProjExt			VARCHAR2(10);
12131
 
12132
	BEGIN
12133
		-- strip the version number
12134
		first_dot :=  INSTR(version_start, '.', 1, 1);
12135
		second_dot :=  INSTR(version_start, '.', 1, 2);
12136
		third_dot :=  INSTR(version_start, '.', 1, 3);
12137
 
12138
		XXstart := TO_NUMBER( SUBSTR( version_start, 1, first_dot - 1 ) );
12139
		YYstart := TO_NUMBER( SUBSTR( version_start, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12140
		ZZstart := TO_NUMBER( SUBSTR( version_start, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12141
		ProjExtstart := SUBSTR( version_start, third_dot + 1, LENGTH(version_start) - third_dot );
12142
 
12143
		first_dot :=  INSTR(version_end, '.', 1, 1);
12144
		second_dot :=  INSTR(version_end, '.', 1, 2);
12145
		third_dot :=  INSTR(version_end, '.', 1, 3);
12146
 
12147
		XXend := TO_NUMBER( SUBSTR( version_end, 1, first_dot - 1 ) );
12148
		YYend := TO_NUMBER( SUBSTR( version_end, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12149
		ZZend := TO_NUMBER( SUBSTR( version_end, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12150
		ProjExtend := SUBSTR( version_end, third_dot + 1, LENGTH(version_end) - third_dot );
12151
 
12152
		first_dot :=  INSTR(version, '.', 1, 1);
12153
		second_dot :=  INSTR(version, '.', 1, 2);
12154
		third_dot :=  INSTR(version, '.', 1, 3);
12155
 
12156
		XX := TO_NUMBER( SUBSTR( version, 1, first_dot - 1 ) );
12157
		YY := TO_NUMBER( SUBSTR( version, first_dot + 1, second_dot - ( first_dot + 1 ) ) );
12158
		ZZ := TO_NUMBER( SUBSTR( version, second_dot + 1, third_dot - ( second_dot + 1 ) ) );
12159
		ProjExt := SUBSTR( version, third_dot + 1, LENGTH(version) - third_dot );
12160
 
12161
		-- only include versions if all project extensions are the same
12162
		IF ( ProjExtstart = ProjExt AND ProjExt = ProjExtend ) THEN
12163
 
12164
			IF ( VerIsGrtrThanOrEqlToStart( XXstart, XX, YYstart, YY, ZZstart, ZZ ) = 1 AND VerIsLessThanOrEqlToEnd( XXend, XX, YYend, YY, ZZend, ZZ ) = 1 ) THEN
12165
				RETURN 1;
12166
			ELSE
12167
				RETURN 0;
12168
			END IF;
12169
		ELSE
12170
			RETURN 0;
12171
		END IF;
12172
 
12173
	EXCEPTION
12174
		WHEN OTHERS THEN
12175
			RETURN -1;
12176
	END;
12177
 
12178
	FUNCTION GetPkgId( pkgName IN VARCHAR2 ) RETURN NUMBER
12179
	AS
12180
	    pkg_id NUMBER;
12181
	BEGIN
12182
		SELECT
12183
			p.PKG_ID
12184
		INTO
12185
			pkg_id
12186
		FROM
12187
			PACKAGES p
12188
		WHERE
12189
			p.PKG_NAME = pkgName;
12190
 
12191
		RETURN pkg_id;
12192
	EXCEPTION
12193
	    WHEN OTHERS THEN
12194
			dbms_output.put_line('GetPkgId exception: ' || SQLERRM );
12195
			RETURN -1;
12196
	END;
12197
 
12198
 
12199
-- Public Implementation ------------------------------------------------------
12200
 
12201
	/*
12202
	-- Proc: AllIssues - Gets all issues for a package from dependent packages one level deep
12203
	--
12204
	-- INPUT PARAMETERS:
12205
	--
12206
	--		pkg_name  	-  	The name of the top level package to get issues for
12207
	--		version_start	-	The start version for the comparison
12208
	--		version_end	-	The end version for the comparison
12209
	*/
12210
	PROCEDURE AllIssues( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
12211
	AS
12212
		pkgId	NUMBER;
12213
	BEGIN
12214
		-- get pkg_id of the input package:
12215
		pkgId := GetPkgId( pkg_name );
12216
 
12217
		OPEN vCursor FOR
12218
		SELECT
12219
			  pv.PKG_ID,
12220
			  pv.PKG_VERSION,
12221
			  pv.PV_ID,
12222
			  i_pkg.ISS_ID,
12223
			  ( SELECT pkg_name FROM PACKAGES WHERE pkg_id = pd.DPKG_ID ) AS DPV_NAME,
12224
			  pd.DPKG_ID,
12225
			  ( SELECT pkg_version FROM PACKAGE_VERSIONS WHERE pv_id = pd.DPV_ID ) AS DPV_VER,
12226
			  pd.DPV_ID,
12227
			  i_dpkg.ISS_ID AS ISSUE_ID
12228
		FROM
12229
			 PACKAGE_VERSIONS pv
12230
							  LEFT OUTER JOIN CQ_ISSUES i_pkg ON pv.PV_ID = i_pkg.PV_ID
12231
							  LEFT OUTER JOIN PACKAGE_DEPENDENCIES pd ON pv.PV_ID = pd.PV_ID
12232
							  LEFT OUTER JOIN CQ_ISSUES i_dpkg ON pd.DPV_ID = i_dpkg.PV_ID
12233
		WHERE
12234
   			 pv.PKG_ID = pkgId
12235
		AND
12236
			VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1
12237
		AND
12238
			 ( i_dpkg.ISS_ID IS NOT NULL OR i_pkg.ISS_ID IS NOT NULL )
12239
		ORDER BY
12240
			 pv.PKG_ID,
12241
			 pv.PV_ID,
12242
			 pd.DPKG_ID,
12243
			 pd.DPV_ID;
12244
	EXCEPTION
12245
		WHEN OTHERS THEN
12246
			dbms_output.put_line('AllIssues exception: ' || SQLERRM );
12247
	END;
12248
 
12249
 
12250
	-- NOTE: make RM_PACKAGE_ISSUES a temporary table when tested ok
12251
 
12252
	/*
12253
	-- Proc: LoadIssuesTable
12254
	--
12255
	-- Populates Package_Issues table with details of issues from all dependent packages.
12256
	-- This will be for all package versions of the input pkg_name between the
12257
	-- version_start and version_end.
12258
	--
12259
	-- INPUT PARAMETERS:
12260
	--
12261
	--		pkg_name  	-  	The name of the top level package to get issues for
12262
	--		version_start	-	The start version for the comparison
12263
	--		version_end	-	The end version for the comparison
12264
	*/
12265
	PROCEDURE LoadIssuesTable( vCursor OUT T_Cur, pkg_name IN VARCHAR2, version_start IN VARCHAR2, version_end IN VARCHAR2 )
12266
	AS
12267
		pkgId	NUMBER;
12268
 
12269
		CURSOR pack_vers_cur IS
12270
			SELECT
12271
				pv.PV_ID,
12272
				pv.PKG_VERSION,
12273
				pv.PKG_ID,
12274
				p.PKG_NAME
12275
			FROM
12276
				PACKAGE_VERSIONS pv
12277
					JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
12278
			WHERE
12279
   				 pv.PKG_ID = pkgId
12280
			AND
12281
				VersionIsBetween( pv.PKG_VERSION, version_start, version_end ) = 1;
12282
 
12283
	BEGIN
12284
		DELETE FROM RELEASE_MANAGER.RM_PKG_ISSUES; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12285
 
12286
		-- get the pkg_id we are finding issues for
12287
		pkgId := GetPkgId( pkg_name );
12288
 
12289
		-- find all the top level packages we are dealing with and recursively process their issues and their dependent package issues.
12290
		FOR pack_ver_rec IN  pack_vers_cur
12291
		LOOP
12292
			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 );
12293
			COMMIT;
12294
		END LOOP;
12295
 
12296
		-- The output cursor - shows the individual versions of the top level package then were reported on
12297
		OPEN vCursor FOR
12298
		SELECT DISTINCT ISS_ID, PKG_VERSION FROM RM_PKG_ISSUES WHERE ISS_ID IS NOT NULL; /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12299
/*removed
12300
		SELECT
12301
			PKG_VERSION
12302
		FROM
12303
			RELEASE_MANAGER.RM_PACKAGE_ISSUES;
12304
*/
12305
 
12306
 
12307
	EXCEPTION
12308
		WHEN OTHERS THEN
12309
			dbms_output.put_line('LoadIssuesTable exception: ' || SQLERRM );
12310
	END;
12311
 
12312
 
12313
	/*
12314
	-- Proc: InsertIssuesForDepends
12315
	--
12316
	-- Used by LoadIssuesTable to recursively find issues for all dependent packages
12317
	--
12318
	-- INPUT PARAMETERS:
12319
	--
12320
	--		pvID  		-  	The package version id of the package to get issues for
12321
	--		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)
12322
	--		top_pkgName -  	The package name of the top level package
12323
	--		top_pvID  	-  	The package version id of the top level package
12324
	--		top_pkgVer  -  	The package version description of the top level package
12325
	*/
12326
	PROCEDURE InsertIssuesForDepends( pvID IN NUMBER, top_pkgID IN NUMBER, top_pkgName IN VARCHAR2, top_pvID IN NUMBER, top_pkgVer IN VARCHAR2 )
12327
	AS
12328
		pkgId		NUMBER;
12329
		issCnt		NUMBER := 0;
12330
		pkgCheck	NUMBER := 0;
12331
		depCheck	NUMBER := 0;
12332
 
12333
		dpkgName	VARCHAR(50);
12334
		dpkgVersion	VARCHAR(50);
12335
 
12336
		CURSOR dep_packs_cur IS
12337
			SELECT
12338
				DPV_ID
12339
			FROM
12340
				PACKAGE_DEPENDENCIES
12341
			WHERE
12342
				PV_ID = pvID;
12343
 
12344
	BEGIN
12345
 
12346
		-- check to see if the package has been processed previously
12347
		SELECT
12348
			COUNT(*)
12349
		INTO
12350
			pkgCheck
12351
		FROM
12352
			RM_PKG_ISSUES /*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12353
		WHERE
12354
			DPV_ID = pvID;
12355
 
12356
		dbms_output.put_line('pkgCheck: ' || pkgCheck );
12357
 
12358
		-- Package not already processed (no cyclic dependency) - process it
12359
		IF ( pkgCheck = 0 ) THEN
12360
 
12361
			-- check to see if this package version has any issues assigned to it
12362
			SELECT
12363
				COUNT(*)
12364
			INTO
12365
				issCnt
12366
			FROM
12367
				CQ_ISSUES i
12368
			WHERE
12369
				i.PV_ID = pvID;
12370
 
12371
			dbms_output.put_line('issCnt: ' || issCnt );
12372
 
12373
			-- Always enter a marker row into the table even if there are no issues for the package.
12374
			-- This allows us to pick up any cyclic dependencies.
12375
			IF ( issCnt > 0 ) THEN
12376
				-- get issues and insert into RM_PACKAGE_ISSUES
12377
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12378
 
12379
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
12380
					SELECT DISTINCT
12381
						top_pkgID		AS PKG_ID,
12382
						top_pkgName		AS PKG_NAME,
12383
						top_pvID		AS PV_ID,
12384
						top_pkgVer		AS PKG_VERSION,
12385
						pv.PV_ID		AS DPV_ID,
12386
						p.PKG_NAME		AS DPKG_NAME,
12387
						pv.PKG_VERSION	AS DPKG_VERSION,
12388
						ci.ISS_DB,
12389
						ci.ISS_ID
12390
					FROM
12391
						PACKAGE_VERSIONS pv
12392
							JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
12393
							JOIN CQ_ISSUES ci ON pv.PV_ID = ci.PV_ID
12394
					WHERE
12395
						pv.PV_ID = pvID;
12396
 
12397
			ELSE
12398
				-- get the dpkg details - there will always be a row returned here
12399
				SELECT
12400
					p.PKG_NAME
12401
				INTO
12402
					dpkgName
12403
				FROM
12404
					PACKAGE_VERSIONS pv
12405
						JOIN PACKAGES p ON pv.PKG_ID = p.PKG_ID
12406
				WHERE
12407
	   				 pv.PV_ID = pvID;
12408
 
12409
				SELECT
12410
					pv.PKG_VERSION
12411
				INTO
12412
					dpkgVersion
12413
				FROM
12414
					PACKAGE_VERSIONS pv
12415
				WHERE
12416
	   				 pv.PV_ID = pvID;
12417
 
12418
				-- enter a marker row
12419
				/*RM_PACKAGE_ISSUES replaced by RM_PKG_ISSUES*/
12420
				INSERT INTO RM_PKG_ISSUES ( PKG_ID, PKG_NAME, PV_ID, PKG_VERSION, DPV_ID, DPKG_NAME, DPKG_VERSION, ISS_DB, ISS_ID )
12421
				VALUES (
12422
					top_pkgID,
12423
					top_pkgName,
12424
					top_pvID,
12425
					top_pkgVer,
12426
					pvID,
12427
					dpkgName,
12428
					dpkgVersion,
12429
					NULL,
12430
					NULL );
12431
 
12432
			END IF;
12433
 
12434
			-- If this package version has dependencies then recurse
12435
			SELECT
12436
				COUNT(*)
12437
			INTO
12438
				depCheck
12439
			FROM
12440
				PACKAGE_DEPENDENCIES
12441
			WHERE
12442
				PV_ID = pvID;
12443
 
12444
			IF ( depCheck > 0 ) THEN
12445
				-- get dependencies and call this function recursively for each one
12446
				FOR dep_rec IN  dep_packs_cur
12447
				LOOP
12448
					InsertIssuesForDepends( dep_rec.DPV_ID, top_pkgID, top_pkgName, top_pvID, top_pkgVer );
12449
				END LOOP;
12450
 
12451
			END IF;
12452
 
12453
		END IF;
12454
 
12455
	/*EXCEPTION
12456
		WHEN OTHERS THEN
12457
			no exception handling required
12458
	*/
12459
	END;
12460
 
12461
END Rm_Issues;
4040 dpurdie 12462
 
1374 dpurdie 12463
/
1373 dpurdie 12464
 
4040 dpurdie 12465
/
12466
--------------------------------------------------------
12467
--  DDL for Procedure ADD_AUTOBUILD_FAILURE_INFO
12468
--------------------------------------------------------
12469
set define off;
12470
 
1373 dpurdie 12471
  CREATE OR REPLACE PROCEDURE "ADD_AUTOBUILD_FAILURE_INFO" (
12472
   nprojid     IN   NUMBER,
12473
   nviewid     IN   NUMBER,
12474
   suserlist   IN   VARCHAR2
12475
)
12476
IS
12477
   groupid   NUMBER;
12478
/******************************************************************************
12479
   NAME:       ADD_AUTOBUILD_FAILURE
12480
   PURPOSE:
12481
 
12482
   REVISIONS:
12483
   Ver        Date        Author           Description
12484
   ---------  ----------  ---------------  ------------------------------------
12485
   1.0        11/04/2006   Rupesh Solanki Created this procedure.
12486
 
12487
   NOTES:
12488
 
12489
   Automatically available Auto Replace Keywords:
12490
      Object Name:     ADD_AUTOBUILD_FAILURE
12491
      Sysdate:         11/04/2006
12492
      Date and Time:   11/04/2006, 9:28:28 AM, and 11/04/2006 9:28:28 AM
12493
      Username:         (set in TOAD Options, Procedure Editor)
12494
      Table Name:       (set in the "New PL/SQL Object" dialog)
12495
 
12496
******************************************************************************/
12497
BEGIN
12498
   BEGIN
12499
      SELECT group_email_id
12500
        INTO groupid
12501
        FROM autobuild_failure
12502
       WHERE proj_id = nprojid AND view_id = nviewid;
12503
   EXCEPTION
12504
      WHEN NO_DATA_FOUND
12505
      THEN
12506
         --  Create Next Sequence Id ---
12507
         SELECT seq_group_email_id.NEXTVAL
12508
           INTO groupid
12509
           FROM DUAL;
12510
 
12511
         INSERT INTO autobuild_failure
12512
                     (group_email_id, proj_id, view_id
12513
                     )
12514
              VALUES (groupid, nprojid, nviewid
12515
                     );
12516
   END;
12517
 
12518
   add_view_members (groupid, suserlist);
12519
END add_autobuild_failure_info;
4040 dpurdie 12520
 
1374 dpurdie 12521
/
1373 dpurdie 12522
 
4040 dpurdie 12523
/
12524
--------------------------------------------------------
12525
--  DDL for Procedure ADD_COMPONENT
12526
--------------------------------------------------------
12527
set define off;
12528
 
3959 dpurdie 12529
  CREATE OR REPLACE PROCEDURE "ADD_COMPONENT" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE,
12530
	   	  		  						  	sFileName IN RELEASE_COMPONENTS.FILE_NAME%TYPE,
12531
											sFilePath IN RELEASE_COMPONENTS.FILE_PATH%TYPE DEFAULT NULL,
12532
											nByteSize IN RELEASE_COMPONENTS.BYTE_SIZE%TYPE,
12533
											sCRCcksum IN RELEASE_COMPONENTS.CRC_CKSUM%TYPE DEFAULT NULL,
12534
											sCRCmodcrc IN RELEASE_COMPONENTS.CRC_MODCRC%TYPE DEFAULT NULL
12535
                                           ) IS
12536
/* ---------------------------------------------------------------------------
12537
    Version: 3.0.0
12538
   --------------------------------------------------------------------------- */
1373 dpurdie 12539
 
12540
 
12541
BEGIN
12542
 
3959 dpurdie 12543
	 --- Insert into RELEASE_COMPONENTS
12544
	 INSERT INTO RELEASE_COMPONENTS ( PV_ID, FILE_NAME, FILE_PATH, BYTE_SIZE, CRC_CKSUM, CRC_MODCRC )
12545
	 VALUES ( nPvId, sFileName, sFilePath, nByteSize, sCRCcksum, sCRCmodcrc  );
1373 dpurdie 12546
 
12547
 
3959 dpurdie 12548
 
12549
 
12550
END Add_Component;
4040 dpurdie 12551
 
1374 dpurdie 12552
/
1373 dpurdie 12553
 
4040 dpurdie 12554
/
12555
--------------------------------------------------------
12556
--  DDL for Procedure ADD_PACKAGE_INTEREST
12557
--------------------------------------------------------
12558
set define off;
12559
 
3959 dpurdie 12560
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
12561
	   	  		  								  nPkgIdList IN VARCHAR2,
12562
												  nUserId IN NUMBER
12563
	   	  		  								  ) IS
1373 dpurdie 12564
 
3959 dpurdie 12565
/******************************************************************************
12566
   NAME:       ADD_PACKAGE_INTEREST
12567
   PURPOSE:    
1373 dpurdie 12568
 
3959 dpurdie 12569
   REVISIONS:
12570
   Ver        Date        Author           Description
12571
   ---------  ----------  ---------------  ------------------------------------
12572
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
12573
 
12574
   NOTES:
12575
 
12576
   Automatically available Auto Replace Keywords:
12577
      Object Name:     ADD_PACKAGE_INTEREST
12578
      Sysdate:         12/05/2006
12579
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
12580
      Username:         (set in TOAD Options, Procedure Editor)
12581
      Table Name:       (set in the "New PL/SQL Object" dialog)
12582
 
12583
******************************************************************************/
12584
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
12585
   nPkgId NUMBER;
1373 dpurdie 12586
BEGIN
12587
 
3959 dpurdie 12588
	 npkgidcollector := in_list_number2 (nPkgIdList);
12589
 
12590
	FOR i IN 1..npkgidcollector.COUNT
12591
	LOOP
12592
		nPkgId := npkgidcollector(i);
1373 dpurdie 12593
 
3959 dpurdie 12594
	 --- Insert into PACKAGE_INTEREST TABLE
12595
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
12596
	 VALUES(nProjId, nPkgId, nUserId);
12597
	END LOOP;	 
12598
 
1373 dpurdie 12599
 
3959 dpurdie 12600
END ADD_PACKAGE_INTEREST;
4040 dpurdie 12601
 
3959 dpurdie 12602
/
1373 dpurdie 12603
 
4040 dpurdie 12604
/
12605
--------------------------------------------------------
12606
--  DDL for Procedure ADD_PACKAGE_INTEREST_TEST
12607
--------------------------------------------------------
12608
set define off;
12609
 
3959 dpurdie 12610
  CREATE OR REPLACE PROCEDURE "ADD_PACKAGE_INTEREST_TEST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
12611
	   	  		  								  nPkgIdList IN VARCHAR2,
12612
												  nUserId IN NUMBER
12613
	   	  		  								  ) IS
1373 dpurdie 12614
 
3959 dpurdie 12615
/******************************************************************************
12616
   NAME:       ADD_PACKAGE_INTEREST
12617
   PURPOSE:    
12618
 
12619
   REVISIONS:
12620
   Ver        Date        Author           Description
12621
   ---------  ----------  ---------------  ------------------------------------
12622
   1.0        12/05/2006  Rupesh Solanki     1. Created this procedure.
12623
 
12624
   NOTES:
12625
 
12626
   Automatically available Auto Replace Keywords:
12627
      Object Name:     ADD_PACKAGE_INTEREST
12628
      Sysdate:         12/05/2006
12629
      Date and Time:   12/05/2006, 9:11:12 AM, and 12/05/2006 9:11:12 AM
12630
      Username:         (set in TOAD Options, Procedure Editor)
12631
      Table Name:       (set in the "New PL/SQL Object" dialog)
12632
 
12633
******************************************************************************/
12634
   npkgidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
12635
   nPkgId NUMBER;
12636
BEGIN
12637
 
12638
	 npkgidcollector := in_list_number2 (nPkgIdList);
12639
 
12640
	FOR i IN 1..npkgidcollector.COUNT
12641
	LOOP
12642
		nPkgId := npkgidcollector(i);
12643
 
12644
	 --- Insert into PACKAGE_INTEREST TABLE
12645
	 INSERT INTO PACKAGE_INTEREST (PROJ_ID, PKG_ID, USER_ID)
12646
	 VALUES(nProjId, nPkgId, nUserId);
12647
	END LOOP;	 
12648
 
12649
 
12650
END ADD_PACKAGE_INTEREST_TEST;
4040 dpurdie 12651
 
1374 dpurdie 12652
/
1373 dpurdie 12653
 
4040 dpurdie 12654
/
12655
--------------------------------------------------------
12656
--  DDL for Procedure ADD_RUNTIME_DEPENDENCY
12657
--------------------------------------------------------
12658
set define off;
12659
 
3959 dpurdie 12660
  CREATE OR REPLACE PROCEDURE "ADD_RUNTIME_DEPENDENCY" ( NNpv_id IN NUMBER,
12661
                                                     SSrtd_name IN PACKAGES.pkg_name%TYPE,
12662
                                                     SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
12663
                                                     NNuser_id IN NUMBER
12664
                                                    ) IS
1373 dpurdie 12665
/* ---------------------------------------------------------------------------
3959 dpurdie 12666
    Version: 3.1
1373 dpurdie 12667
   --------------------------------------------------------------------------- */
12668
 
3959 dpurdie 12669
    retRTD_ID NUMBER;
12670
 
12671
	CURSOR rtd_cur IS
12672
        SELECT rtd_id FROM runtime_dependencies WHERE pv_id = NNpv_id AND rtd_id = retRTD_ID;
12673
    rtd_rec rtd_cur%ROWTYPE;
12674
 
1373 dpurdie 12675
BEGIN
3959 dpurdie 12676
    --- Seed database with package_name and version if required ---
12677
    Seed_Package_Names_Versions ( SSrtd_name, SSrtd_version, NNuser_id, retRTD_ID );
1373 dpurdie 12678
 
3959 dpurdie 12679
	OPEN rtd_cur;
12680
    FETCH rtd_cur INTO rtd_rec;
1373 dpurdie 12681
 
3959 dpurdie 12682
    IF rtd_cur%NOTFOUND
12683
    THEN
12684
		/* Make sure it does not exists already as runtime dependency */
1373 dpurdie 12685
 
3959 dpurdie 12686
		--- Add new Runtime Dependency ---
12687
	    INSERT INTO runtime_dependencies ( pv_id, rtd_id, mod_date, mod_user )
12688
	    VALUES (  NNpv_id, retRTD_ID, ORA_SYSDATE , NNuser_id );
1373 dpurdie 12689
 
3959 dpurdie 12690
    	/* LOG ACTION */
12691
        Log_Action ( NNpv_id, 'runtime_add', NNuser_id,
12692
    			     'Runtime package: '|| SSrtd_name ||' '|| SSrtd_version );
12693
 
12694
	END IF;
12695
 
12696
 
12697
END Add_Runtime_Dependency;
4040 dpurdie 12698
 
1374 dpurdie 12699
/
1373 dpurdie 12700
 
4040 dpurdie 12701
/
12702
--------------------------------------------------------
12703
--  DDL for Procedure ADD_VIEW_MEMBERS
12704
--------------------------------------------------------
12705
set define off;
12706
 
3959 dpurdie 12707
  CREATE OR REPLACE PROCEDURE "ADD_VIEW_MEMBERS" (nGroupId IN NUMBER, sUserList IN VARCHAR2) IS
12708
 
12709
/******************************************************************************
12710
   NAME:       ADD_VIEW_MEMBERS
12711
   PURPOSE:    
12712
 
12713
   REVISIONS:
12714
   Ver        Date        Author           Description
12715
   ---------  ----------  ---------------  ------------------------------------
12716
   1.0        11/04/2006          1. Created this procedure.
12717
 
12718
   NOTES:
12719
 
12720
   Automatically available Auto Replace Keywords:
12721
      Object Name:     ADD_VIEW_MEMBERS
12722
      Sysdate:         11/04/2006
12723
      Date and Time:   11/04/2006, 9:52:58 AM, and 11/04/2006 9:52:58 AM
12724
      Username:         (set in TOAD Options, Procedure Editor)
12725
      Table Name:       (set in the "New PL/SQL Object" dialog)
12726
 
12727
******************************************************************************/
12728
CURSOR user_cur IS
12729
	SELECT u.USER_ID
12730
	  FROM USERS u
12731
	 WHERE u.USER_ID IN (
12732
	 	   			   	SELECT * 
12733
						  FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
12734
						);
12735
user_rec user_cur%ROWTYPE;
12736
 
12737
 
12738
BEGIN
12739
 
12740
	 OPEN user_cur;
12741
	 FETCH user_cur INTO user_rec;
12742
 
12743
	 WHILE user_cur%FOUND
12744
	 LOOP
12745
	 	 INSERT INTO MEMBERS_GROUP (GROUP_EMAIL_ID, USER_ID)
12746
	 	 VALUES ( nGroupId, user_rec.USER_ID);
12747
 
12748
	 	 FETCH user_cur INTO user_rec;	 
12749
	 END LOOP;	 
12750
 
12751
 
12752
 
12753
END ADD_VIEW_MEMBERS;
4040 dpurdie 12754
 
1374 dpurdie 12755
/
1373 dpurdie 12756
 
4040 dpurdie 12757
/
12758
--------------------------------------------------------
12759
--  DDL for Procedure BASIC_CLONE
12760
--------------------------------------------------------
12761
set define off;
12762
 
1373 dpurdie 12763
  CREATE OR REPLACE PROCEDURE "BASIC_CLONE" ( nFROMpv_id IN NUMBER,
12764
                        nTOpv_id IN NUMBER,
12765
                        nRtag_id IN NUMBER,
12766
                        nUser_id IN NUMBER,
12767
                        nTOpkg_id IN NUMBER DEFAULT NULL,
12768
                        enumISSUES_STATE_IMPORTED IN NUMBER DEFAULT NULL ) IS
12769
 
12770
   FromVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
12771
   major NUMBER;
12772
   minor NUMBER;
12773
   patch NUMBER;
12774
   buildn NUMBER;
12775
   from_vcs_type_id NUMBER;
12776
BEGIN
12777
------------------------------ Version Control System ------------------------------------------
12778
   SELECT vcs_type_id
12779
      INTO from_vcs_type_id
12780
      FROM package_versions WHERE pv_id = nFROMpv_id;
12781
 
12782
   UPDATE package_versions
12783
      SET vcs_type_id = from_vcs_type_id
12784
      WHERE pv_id = nTOpv_id;
12785
------------------------------------- Limits ---------------------------------------------------
12786
   select major_limit, minor_limit, patch_limit, build_number_limit
12787
   into major, minor, patch, buildn
12788
   from package_versions where pv_id=nFROMpv_id;
12789
    UPDATE package_versions SET
12790
           major_limit = major,
12791
           minor_limit = minor,
12792
           patch_limit = patch,
12793
           build_number_limit = buildn
12794
     WHERE PV_ID = nTOpv_id;
12795
------------------------------------- Clone Dependencies ---------------------------------------------------
12796
   IF NOT nRtag_id IS NULL
12797
   THEN
12798
      -- Auto Update Dependencies --
12799
      INSERT INTO PACKAGE_DEPENDENCIES
12800
           SELECT nTOpv_id AS pv_id,
12801
                  DECODE(nUser_id,
12802
                         frc.modifier_id,
12803
                         frc.pv_id,
12804
                         DECODE(frc.dlocked,
12805
                                'Y',
12806
                                frc.pv_id,
12807
                                dep.dpv_id)
12808
                         ) AS dpv_id,
12809
                  nTOpkg_id AS pkg_id,
12810
                  dep.dpkg_id,
12811
                  dep.build_type,
12812
                  dep.display_order
12813
             FROM PACKAGE_DEPENDENCIES dep,
12814
                  PACKAGE_VERSIONS pv,
12815
                  (
12816
                  /* Full Release Contents used for reference*/
12817
                  SELECT rpv.pv_id, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext, rpv.modifier_id, rpv.dlocked
12818
                  FROM RELEASE_CONTENT rel, PACKAGE_VERSIONS rpv
12819
                  WHERE rel.pv_id = rpv.pv_id AND rtag_id = nRtag_id
12820
                  ) frc
12821
            WHERE dep.pv_id = nFROMpv_id
12822
              AND dep.dpv_id = pv.pv_id
12823
              AND pv.pkg_id = frc.pkg_id(+)
12824
              AND NVL(pv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+);
12825
   ELSE
12826
      -- Clone Dependencies --
12827
      INSERT INTO PACKAGE_DEPENDENCIES
12828
           SELECT nTOpv_id         AS pv_id,
12829
                  dep.dpv_id,
12830
                  nTOpkg_id        AS pkg_id,
12831
                  dep.dpkg_id,
12832
                  dep.build_type,
12833
                  dep.display_order
12834
             FROM PACKAGE_DEPENDENCIES dep
12835
            WHERE dep.pv_id = nFROMpv_id;
12836
 
12837
   END IF;
12838
 
12839
----------------------------------------- Clone Issues -------------------------------------------------------
12840
   IF enumISSUES_STATE_IMPORTED IS NULL
12841
   THEN
12842
        /* All Issues */
12843
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
12844
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
12845
              FROM CQ_ISSUES
12846
             WHERE pv_id = nFROMpv_id;
12847
   ELSE
12848
       /* Outstanding Issues Only */
12849
       INSERT INTO CQ_ISSUES ( pv_id, iss_db, iss_id, iss_state, mod_date, notes )
12850
            SELECT nTOpv_id AS pv_id, iss_db, iss_id, iss_state, mod_date, notes
12851
              FROM CQ_ISSUES
12852
             WHERE pv_id = nFROMpv_id
12853
               AND iss_state = enumISSUES_STATE_IMPORTED;
12854
   END IF;
12855
 
12856
------------------------------------ Clone Runtime Dependencies -----------------------------------------------
12857
   INSERT INTO RUNTIME_DEPENDENCIES (pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user)
12858
       SELECT nTOpv_id AS pv_id, rtd_id, rtd_url, rtd_comments, mod_date, mod_user
12859
       FROM RUNTIME_DEPENDENCIES WHERE pv_id = nFROMpv_id;
12860
 
12861
--------------------------------------- Clone Additional Notes ------------------------------------------------
12862
   INSERT INTO ADDITIONAL_NOTES ( NOTE_ID, PV_ID, NOTE_TITLE, NOTE_BODY, MOD_DATE, MOD_USER )
12863
        SELECT an.NOTE_ID,
12864
               nTOpv_id AS PV_ID,
12865
               an.NOTE_TITLE,
12866
               an.NOTE_BODY,
12867
               an.MOD_DATE,
12868
               an.MOD_USER
12869
          FROM ADDITIONAL_NOTES an
12870
         WHERE an.PV_ID = nFROMpv_id;
12871
 
12872
-------------------------------------------- Clone Unit Tests -------------------------------------------------
12873
   -- Clone only Automatic unit tests --
12874
   INSERT INTO UNIT_TESTS (
12875
                           TEST_ID,
12876
                           PV_ID,
12877
                           TEST_TYPES_FK,
12878
                           TEST_SUMMARY,
12879
                           COMPLETION_DATE,
12880
                           COMPLETED_BY,
12881
                           RESULTS_URL,
12882
                           RESULTS_ATTACHMENT_NAME,
12883
                           NUMOF_TEST
12884
                          )
12885
        SELECT ut.TEST_ID,
12886
               nTOpv_id AS PV_ID,
12887
               ut.TEST_TYPES_FK,
12888
               ut.TEST_SUMMARY,
12889
               Ora_Sysdate AS COMPLETION_DATE,
12890
               nUser_id AS COMPLETED_BY,
12891
               ut.RESULTS_URL,
12892
               ut.RESULTS_ATTACHMENT_NAME,
12893
               ut.NUMOF_TEST
12894
          FROM UNIT_TESTS ut
12895
         WHERE ut.PV_ID = nFROMpv_id
12896
           AND ut.TEST_TYPES_FK IN ( 5, 7 );
12897
 
12898
    -- Clone only Interactive Unit Tests --
12899
    INSERT INTO UNIT_TESTS (
12900
                            TEST_ID,
12901
                            PV_ID,
12902
                            TEST_TYPES_FK,
12903
                            TEST_SUMMARY
12904
                           )
12905
       SELECT ut.TEST_ID,
12906
              nTOpv_id AS PV_ID,
12907
              ut.TEST_TYPES_FK,
12908
              ut.TEST_SUMMARY
12909
         FROM UNIT_TESTS ut
12910
        WHERE ut.PV_ID = nFROMpv_id
12911
          AND ut.TEST_TYPES_FK IN (6);
12912
 
12913
-------------------------------------------- Clone Package Documents ------------------------------------------
12914
   INSERT INTO PACKAGE_DOCUMENTS ( PV_ID, TEST_ID, DOC_NUM, DOC_ID, IS_LATEST )
12915
        SELECT nTOpv_id AS PV_ID,
12916
               pd.test_id,
12917
               pd.doc_num,
12918
               pd.doc_id,
12919
               pd.IS_LATEST
12920
          FROM PACKAGE_DOCUMENTS pd
12921
         WHERE pd.PV_ID = nFROMpv_id;
12922
 
12923
-------------------------------------------- Clone Build Environments -----------------------------------------
12924
    INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID, BUILD_TYPE )
12925
    SELECT nTOpv_id AS PV_ID,
12926
           pkgbe.BE_ID,
12927
           pkgbe.BUILD_TYPE
12928
      FROM PACKAGE_BUILD_ENV pkgbe
12929
     WHERE pkgbe.PV_ID = nFROMpv_id;
12930
---------------------------------------------Clone Package Build Info------------------------------------------
12931
    INSERT INTO PACKAGE_BUILD_INFO (PV_ID, BM_ID, BSA_ID)
12932
    SELECT nTOpv_id AS PV_ID,
12933
           pkgbinfo.BM_ID,
12934
           pkgbinfo.BSA_ID
12935
      FROM PACKAGE_BUILD_INFO pkgbinfo
12936
     WHERE pkgbinfo.PV_ID = nFROMpv_id;
12937
---------------------------------------------Clone Package Version Processes-----------------------------------
12938
    INSERT INTO PACKAGE_PROCESSES ( PV_ID, PROC_ID )
12939
    SELECT nTOpv_id AS PV_ID,
12940
           pp.PROC_ID
12941
      FROM PACKAGE_PROCESSES pp
12942
     WHERE pp.PV_ID = nFROMpv_id;
12943
---------------------------------------------Clone Licencing Associations-----------------------------------
12944
    PK_LICENCING.CLONE_LICENCING(nFROMpv_id, nTOpv_id, nUser_id);
12945
---------------------------------------------------------------------------------------------------------------
12946
 
12947
    /* LOG ACTION */
12948
    SELECT pv.PKG_VERSION INTO FromVersion
12949
      FROM PACKAGE_VERSIONS pv
12950
     WHERE pv.PV_ID = nFROMpv_id;
12951
 
12952
    Log_Action ( nTOpv_id, 'clone_from', nUser_id,
12953
                 'Details cloned from: '|| FromVersion );
12954
 
12955
---------------------------------------------------------------------------------------------------------------
12956
 
12957
END Basic_Clone;
4040 dpurdie 12958
 
1374 dpurdie 12959
/
1373 dpurdie 12960
 
4040 dpurdie 12961
/
12962
--------------------------------------------------------
12963
--  DDL for Procedure BUILD_TREE
12964
--------------------------------------------------------
12965
set define off;
12966
 
3959 dpurdie 12967
  CREATE OR REPLACE PROCEDURE "BUILD_TREE" ( nRtag_id IN NUMBER,
12968
	   	  		  					     retSessionNum OUT NUMBER ) IS
12969
 
1373 dpurdie 12970
/* ---------------------------------------------------------------------------
3959 dpurdie 12971
    Version: 3.0.0
1373 dpurdie 12972
   --------------------------------------------------------------------------- */
3959 dpurdie 12973
    rowCnt 			NUMBER := 0;						-- Iterations counter
12974
    iteration 		NUMBER := 1;                  -- Maximum number of iterations allowed.
12975
    maxIterations 	NUMBER := 50;      	  	-- This will prevent infinite loops if cyrcular dependencies are found
12976
	UP_THE_TREE 	CONSTANT NUMBER DEFAULT 1;
12977
	DOWN_THE_TREE 	CONSTANT NUMBER DEFAULT -1;
12978
    sessionNum 		NUMBER;
12979
	levelNum		NUMBER;
12980
 
12981
BEGIN
12982
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
12983
 
12984
	/*
12985
	||	   Start UP THE TREE
12986
	*/
12987
 
12988
 
12989
	/* Packages with no dependencies */    
12990
    INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
12991
		SELECT sessionNum AS SESSION_NUM,
12992
			   iteration AS LEVEL_NUM,
12993
			   UP_THE_TREE AS DIRECTION,
12994
			   rc.pv_id, pv.pkg_id, pv.v_ext
12995
		  FROM release_content rc,
12996
		  	   package_versions pv
12997
		 WHERE rc.rtag_id = nRtag_id
12998
		   AND rc.pv_id = pv.pv_id
12999
		 MINUS
13000
		SELECT sessionNum AS SESSION_NUM, 
13001
			   iteration AS LEVEL_NUM,
13002
			   UP_THE_TREE AS DIRECTION,
13003
			   dep.pv_id, pv.pkg_id, pv.v_ext
13004
		  FROM package_dependencies dep,
13005
		  	   package_versions pv
13006
		 WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtag_id )
13007
		   AND dep.pv_id = pv.pv_id;
13008
 
13009
 
13010
	/* Browse UP the build tree */	   
13011
	iteration := iteration + 1;
13012
    LOOP
13013
 
13014
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
13015
			SELECT DISTINCT 
13016
			       sessionNum AS SESSION_NUM,
13017
			       iteration AS LEVEL_NUM,
13018
				   UP_THE_TREE AS DIRECTION, 
13019
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
13020
			  FROM (  
13021
			        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
13022
			          FROM package_dependencies dep,
13023
			               release_content rc,
13024
						   package_versions pv,
13025
						   package_versions dpv
13026
			         WHERE dep.pv_id = rc.pv_id
13027
			           AND rc.rtag_id = nRtag_id
13028
					   AND dep.pv_id = pv.pv_id
13029
					   AND dep.dpv_id = dpv.pv_id
13030
					) rdep,
13031
					temp_tree_browse ttb
13032
			 WHERE rdep.dpkg_id  = ttb.pkg_id
13033
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext,'|LINK_A_NULL|')
13034
			   AND ttb.SESSION_NUM = sessionNum
13035
			   AND ttb.LEVEL_NUM = iteration - 1	
13036
			MINUS
13037
			/* Packages with all depencencies NOT matched */  
13038
			SELECT DISTINCT 
13039
			       sessionNum AS SESSION_NUM,
13040
			       iteration AS LEVEL_NUM, 
13041
				   UP_THE_TREE AS DIRECTION,
13042
				   rdep.pv_id, rdep.pkg_id, rdep.v_ext
13043
			  FROM (  
13044
			        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
13045
			          FROM package_dependencies dep,
13046
			               release_content rc,
13047
						   package_versions pv,
13048
						   package_versions dpv
13049
			         WHERE dep.pv_id = rc.pv_id
13050
			           AND rc.rtag_id = nRtag_id
13051
					   AND dep.pv_id = pv.pv_id
13052
					   AND dep.dpv_id = dpv.pv_id
13053
					) rdep,
13054
					(
13055
					 SELECT tb.*
13056
					   FROM temp_tree_browse tb
13057
					  WHERE tb.SESSION_NUM = sessionNum
13058
					) ttb
13059
			 WHERE rdep.dpkg_id  = ttb.pkg_id (+)
13060
			   AND NVL(rdep.dv_ext ,'|LINK_A_NULL|') = NVL(ttb.v_ext (+),'|LINK_A_NULL|')
13061
			   AND ttb.SESSION_NUM IS NULL;
13062
 
13063
		rowCnt := SQL%ROWCOUNT;
13064
		IF rowCnt > 0 THEN
13065
           iteration := iteration + 1;
13066
		END IF;
13067
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
13068
    END LOOP;
13069
 
13070
	/*---------------------------------------------------------------------------------------------------------------------*/
13071
 
13072
	/*     Check for unresolved dependencies
13073
	||  
13074
	*/
13075
	/* UNRESOLVED */
13076
	 SELECT COUNT(*) INTO rowCnt
13077
	   FROM (
13078
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13079
			  FROM release_content rc,
13080
			  	   package_versions pv
13081
			 WHERE rc.rtag_id = nRtag_id
13082
			   AND rc.pv_id = pv.pv_id	   
13083
			MINUS
13084
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13085
			  FROM temp_tree_browse ttb
13086
			 WHERE ttb.session_num = sessionNum
13087
			);
13088
 
13089
 
13090
 
13091
	 IF rowCnt > 0 
13092
	 THEN
13093
	 	 /*     Circular dependencies detected.
13094
		 ||     Try to resolve build order from the top now.
13095
		 ||		Start DOWN THE TREE
13096
		 */
13097
 
13098
		iteration := 0; 
13099
		 /* Top Level packages */	
13100
		INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )	   
13101
			SELECT sessionNum AS SESSION_NUM,
13102
			       iteration AS LEVEL_NUM,
13103
				   DOWN_THE_TREE AS DIRECTION,
13104
				   pv.pv_id, pv.pkg_id, pv.v_ext
13105
			  FROM (		   
13106
					/* Packages no one depends on ( Top level packages )*/
13107
					( 
13108
					/* All parents*/ 
13109
					SELECT pv.pkg_id, pv.v_ext
13110
			          FROM package_dependencies dep,
13111
			               release_content rc,
13112
						   package_versions pv
13113
			         WHERE dep.pv_id = rc.pv_id
13114
			           AND rc.rtag_id = nRtag_id
13115
					   AND dep.pv_id = pv.pv_id
13116
					 MINUS
13117
					 /* All children */
13118
					SELECT dpv.pkg_id, dpv.v_ext
13119
			          FROM package_dependencies dep,
13120
			               release_content rc,
13121
						   package_versions dpv
13122
			         WHERE dep.pv_id = rc.pv_id
13123
			           AND rc.rtag_id = nRtag_id
13124
					   AND dep.dpv_id = dpv.pv_id
13125
					 ) 
13126
					 MINUS
13127
					/* Packages with resolved dependencies from UP THE TREE */ 
13128
					SELECT ttb.pkg_id, ttb.v_ext
13129
					  FROM temp_tree_browse ttb
13130
					 WHERE ttb.session_num = sessionNum
13131
				  ) tpkg,
13132
				  package_versions pv,
13133
				  release_content rc
13134
			WHERE rc.rtag_id = nRtag_id
13135
			  AND rc.pv_id = pv.pv_id
13136
			  AND tpkg.pkg_id = pv.pkg_id
13137
			  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
13138
 
13139
 
13140
		 /* Keep taking packages which no one depende on */			  
13141
		 iteration := iteration - 1;  
13142
		 LOOP	  
13143
			   INSERT INTO TEMP_TREE_BROWSE (SESSION_NUM, LEVEL_NUM, DIRECTION, PV_ID, PKG_ID, V_EXT )
13144
					SELECT sessionNum AS SESSION_NUM,
13145
					       iteration AS LEVEL_NUM,
13146
					       DOWN_THE_TREE AS DIRECTION,
13147
					       pv.pv_id, pv.pkg_id, pv.v_ext
13148
					  FROM (		   
13149
					 	/* All Unresolved */
13150
					 	(
13151
					 	SELECT pv.pkg_id, pv.v_ext
13152
					 	  FROM release_content rc,
13153
					 	  	   package_versions pv
13154
					 	 WHERE rc.rtag_id = nRtag_id
13155
					 	   AND rc.pv_id = pv.pv_id	   
13156
					 	MINUS
13157
					 	SELECT ttb.pkg_id, ttb.v_ext
13158
					 	  FROM temp_tree_browse ttb
13159
					 	 WHERE ttb.session_num = sessionNum
13160
					 	)
13161
					 	 MINUS
13162
					 	(  
13163
					 	 /* Children of Unresolved */  
13164
					 	SELECT dpv.pkg_id, dpv.V_EXT
13165
					 	  FROM (
13166
					 			SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13167
					 			  FROM release_content rc,
13168
					 			  	   package_versions pv
13169
					 			 WHERE rc.rtag_id = nRtag_id
13170
					 			   AND rc.pv_id = pv.pv_id	   
13171
					 			MINUS
13172
					 			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13173
					 			  FROM temp_tree_browse ttb
13174
					 			 WHERE ttb.session_num = sessionNum
13175
					 		   ) unr,
13176
					 		   package_dependencies dep,
13177
					 		   package_versions dpv
13178
					 	 WHERE unr.pv_id = dep.pv_id
13179
					 	   AND dep.dpv_id = dpv.pv_id
13180
					 	 )  
13181
					   ) tpkg,
13182
					   package_versions pv,
13183
					   release_content rc
13184
					WHERE rc.rtag_id = nRtag_id
13185
					  AND rc.pv_id = pv.pv_id
13186
					  AND tpkg.pkg_id = pv.pkg_id
13187
					  AND NVL(tpkg.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|');
13188
 
13189
            rowCnt := SQL%ROWCOUNT;
13190
        	IF rowCnt > 0 THEN
13191
	           iteration := iteration - 1;
13192
			END IF;
13193
            EXIT WHEN (rowCnt < 1);
13194
     	END LOOP;
13195
 
13196
	 END IF;
13197
 
13198
 
13199
	/*---------------------------------------------------------------------------------------------------------------------*/
13200
 
13201
	/* 
13202
	|| 	 Save results from temp table
13203
	*/	
13204
	/* Clean up build_order table */
13205
	DELETE FROM BUILD_ORDER WHERE rtag_id = nRtag_id;
13206
 
13207
	/* Save UP THE TREE */
13208
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
13209
		SELECT nRtag_id AS rtag_id,
13210
			   ttb.level_num AS step_num, 
13211
			   ttb.PV_ID
13212
		  FROM temp_tree_browse ttb
13213
		 WHERE ttb.session_num = sessionNum
13214
		   AND ttb.direction = UP_THE_TREE;	
13215
 
13216
	/*Get last step_num */
13217
	SELECT MAX(ttb.level_num) + 1 INTO levelNum
13218
	FROM temp_tree_browse ttb WHERE ttb.session_num = sessionNum AND ttb.DIRECTION = UP_THE_TREE;
13219
 
13220
	/* UNRESOLVED */
13221
	 SELECT COUNT(*) INTO rowCnt
13222
	   FROM (
13223
			 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13224
			  FROM release_content rc,
13225
			  	   package_versions pv
13226
			 WHERE rc.rtag_id = nRtag_id
13227
			   AND rc.pv_id = pv.pv_id	   
13228
			MINUS
13229
			SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13230
			  FROM temp_tree_browse ttb
13231
			 WHERE ttb.session_num = sessionNum
13232
			);
13233
 
13234
 
13235
	IF rowCnt > 0
13236
	THEN
13237
		/* Save unresolved packages */
13238
 		INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID, UNRESOLVED )
13239
		    SELECT  nRtag_id AS rtag_id,
13240
				    levelNum AS step_num, 
13241
				    upv.PV_ID,
13242
					'Y' AS UNRESOLVED
13243
			   FROM (
13244
					 SELECT pv.pv_id, pv.pkg_id, pv.v_ext
13245
					  FROM release_content rc,
13246
					  	   package_versions pv
13247
					 WHERE rc.rtag_id = nRtag_id
13248
					   AND rc.pv_id = pv.pv_id	   
13249
					MINUS
13250
					SELECT ttb.pv_id, ttb.pkg_id, ttb.v_ext
13251
					  FROM temp_tree_browse ttb
13252
					 WHERE ttb.session_num = sessionNum
13253
					) upv;
13254
	END IF;	
13255
 
13256
	/* Save DOWN THE TREE */
13257
	levelNum := 1000;
13258
	INSERT INTO BUILD_ORDER ( RTAG_ID, STEP_NUM, PV_ID )
13259
		SELECT nRtag_id AS rtag_id,
13260
			   levelNum + ttb.level_num  AS step_num, 
13261
			   ttb.PV_ID
13262
		  FROM temp_tree_browse ttb
13263
		 WHERE ttb.session_num = sessionNum
13264
		   AND ttb.direction = DOWN_THE_TREE;
13265
 
13266
 
13267
	/*---------------------------------------------------------------------------------------------------------------------*/
13268
 
13269
	/* Clean up temp table */
13270
	DELETE FROM TEMP_TREE_BROWSE WHERE session_num = sessionNum;
13271
 
13272
	retSessionNum := sessionNum;
13273
END Build_Tree;
4040 dpurdie 13274
 
3959 dpurdie 13275
/
1373 dpurdie 13276
 
4040 dpurdie 13277
/
13278
--------------------------------------------------------
13279
--  DDL for Procedure CHANGE_PACKAGE_STATE
13280
--------------------------------------------------------
13281
set define off;
13282
 
3959 dpurdie 13283
  CREATE OR REPLACE PROCEDURE "CHANGE_PACKAGE_STATE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
13284
											 nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
13285
/* ---------------------------------------------------------------------------
13286
    Version: 4.0
13287
   --------------------------------------------------------------------------- */
1373 dpurdie 13288
 
13289
BEGIN
13290
 
3959 dpurdie 13291
    -- Unlock Package
13292
    UPDATE RELEASE_CONTENT rc SET
13293
    	rc.PKG_STATE = 0
13294
    WHERE rc.PV_ID = nPvId
13295
	AND rc.RTAG_ID = nRtagId;
1373 dpurdie 13296
 
3959 dpurdie 13297
    /* LOG ACTION */
13298
   /*	Log_Action ( nPvId, 'unlock_package', nUserId );*/
1373 dpurdie 13299
 
3959 dpurdie 13300
END Change_Package_State;
4040 dpurdie 13301
 
1374 dpurdie 13302
/
1373 dpurdie 13303
 
4040 dpurdie 13304
/
13305
--------------------------------------------------------
13306
--  DDL for Procedure CHANGE_RELEASE_MODE
13307
--------------------------------------------------------
13308
set define off;
13309
 
3959 dpurdie 13310
  CREATE OR REPLACE PROCEDURE "CHANGE_RELEASE_MODE" ( nModeCode IN NUMBER, nRtagId IN NUMBER, UserId IN NUMBER ) IS
13311
/* ---------------------------------------------------------------------------
13312
    Version: 3.0.0
13313
   --------------------------------------------------------------------------- */
1373 dpurdie 13314
 
3959 dpurdie 13315
	cMode CHAR(1) := NULL;  
13316
	nProjId NUMBER; 
1373 dpurdie 13317
 
13318
BEGIN
3959 dpurdie 13319
 
1373 dpurdie 13320
 
3959 dpurdie 13321
	/*
13322
	Author: Rupesh Solanki
13323
	Modified: 24th October 2006
13324
	Reason: Added the archive mode state into Release Manager 
13325
	||	1 - Open Mode
13326
	||	2 - Restrictive Mode
13327
	||	3 - Closed Mode
13328
	||	4 - CCB Mode
13329
	||	5 - Archive Mode
13330
	*/	
13331
	-- Get project Id
13332
	SELECT rt.PROJ_ID INTO nProjId
13333
	  FROM RELEASE_TAGS rt
13334
	 WHERE rt.RTAG_ID = nRtagId; 
13335
 
13336
	IF nModeCode = 1 THEN
13337
		-- Open Mode
13338
		cMode := 'N';
13339
 
13340
		/* LOG ACTION */
13341
   		Log_Project_Action ( nProjId, 'set_to_open_mode', UserId, 'Release is set to Open Mode', nRtagId );
13342
 
13343
	ELSIF nModeCode = 2 THEN
13344
		-- Restrictive Mode
13345
		cMode := 'R';
13346
 
13347
		/* LOG ACTION */
13348
   		Log_Project_Action ( nProjId, 'set_to_restrictive_mode', UserId, 'Release is set to Restrictive Mode', nRtagId );
13349
 
13350
	ELSIF nModeCode = 3 THEN
13351
		-- Closed Mode
13352
		cMode := 'Y';
13353
 
13354
		/* LOG ACTION */
13355
   		Log_Project_Action ( nProjId, 'set_to_closed_mode', UserId, 'Release is set to Closed Mode', nRtagId  );
1373 dpurdie 13356
 
3959 dpurdie 13357
	ELSIF nModeCode = 4 THEN
13358
		-- CCB Mode
13359
		cMode := 'C';
13360
 
13361
		/* LOG ACTION */
13362
   		Log_Project_Action ( nProjId, 'set_to_ccb_mode', UserId, 'Release is set to CCB Mode', nRtagId  );
13363
 
13364
	ELSIF nModeCode = 5 THEN
13365
		-- Archive Mode
13366
		cMode := 'A';
13367
 
13368
		/* LOG ACTION */
13369
   		Log_Project_Action ( nProjId, 'set_to_archive_mode', UserId, 'Release is set to Archive Mode', nRtagId  );	
13370
 
13371
 
13372
	END IF;
13373
 
13374
 
13375
 
13376
	-- Now update table
13377
	IF NOT cMode IS NULL THEN
13378
		UPDATE RELEASE_TAGS rt SET
4211 dpurdie 13379
		rt.OFFICIAL = cMode,
13380
    rt.OFFICIAL_STAMP = ORA_SYSDATETIME,
13381
    rt.OFFICIAL_ID = UserId
3959 dpurdie 13382
		WHERE rt.RTAG_ID = nRtagId;
13383
 
13384
	END IF;
1373 dpurdie 13385
 
13386
 
3959 dpurdie 13387
END CHANGE_RELEASE_MODE;
4040 dpurdie 13388
 
1374 dpurdie 13389
/
1373 dpurdie 13390
 
4040 dpurdie 13391
/
13392
--------------------------------------------------------
13393
--  DDL for Procedure CHECK_NEW_PATCHES
13394
--------------------------------------------------------
13395
set define off;
13396
 
3959 dpurdie 13397
  CREATE OR REPLACE PROCEDURE "CHECK_NEW_PATCHES" (
13398
   nrtagid   IN   release_content.rtag_id%TYPE
1373 dpurdie 13399
)
13400
IS
13401
/* ---------------------------------------------------------------------------
3959 dpurdie 13402
    Version: 3.0
1373 dpurdie 13403
   --------------------------------------------------------------------------- */
13404
BEGIN
3959 dpurdie 13405
   /*--------------- Business Rules Here -------------------*/
13406
   /*IF nRtagId NOT IN (SELECT RTAG_ID FROM RELEASE_TAGS ) THEN
13407
      RAISE_APPLICATION_ERROR (-20000, 'Please contact the person in charge of Release Manager now.' );
13408
   END IF
13409
 
13410
   /*-------------------------------------------------------*/
13411
   UPDATE release_content rc
13412
      SET rc.pkg_state = 5                          -- enumPKG_STATE_NEW_PATCH
13413
    WHERE rc.pv_id IN (
13414
             SELECT prod.pv_id
13415
               FROM (SELECT   pp.pv_id AS orig_parent_id,
13416
                              COUNT (*) AS num_of_patches
13417
                         FROM release_content rc, package_patches pp
13418
                        WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
13419
                     GROUP BY pp.pv_id) orig,
13420
                    (SELECT   prodpp.pv_id, pp.pv_id AS parent_id,
13421
                              COUNT (*) AS num_of_patches
13422
                         FROM release_content rc,
13423
                              package_patches pp,
13424
                              package_dependencies dep,
13425
                              package_versions pv,
13426
                              package_patches prodpp
13427
                        WHERE rc.pv_id = pp.pv_id
13428
                          AND rc.rtag_id = nrtagid
13429
                          AND pp.patch_id = dep.dpv_id
13430
                          AND dep.pv_id = pv.pv_id
13431
                          AND pv.is_patch = 'Y'
13432
                          AND pv.dlocked = 'Y'
13433
                          AND prodpp.patch_id = dep.pv_id
13434
                     GROUP BY prodpp.pv_id, pp.pv_id) prod,
13435
                    release_content rc
13436
              WHERE orig.orig_parent_id = prod.pv_id
13437
                AND orig.num_of_patches != prod.num_of_patches
13438
                AND rc.rtag_id = nrtagid
13439
                AND rc.pv_id = prod.pv_id
13440
                AND rc.pkg_state = 0
13441
             UNION
13442
             SELECT   prodpp.pv_id
13443
                 FROM release_content rc,
13444
                      package_patches pp,
13445
                      package_dependencies dep,
1373 dpurdie 13446
                      package_versions pv,
3959 dpurdie 13447
                      package_patches prodpp
13448
                WHERE rc.pv_id = pp.pv_id
13449
                  AND rc.rtag_id = nrtagid
13450
                  AND pp.patch_id = dep.dpv_id
1373 dpurdie 13451
                  AND dep.pv_id = pv.pv_id
3959 dpurdie 13452
                  AND pv.is_patch = 'Y'
13453
                  AND pv.dlocked = 'Y'
13454
                  AND prodpp.patch_id = dep.pv_id
13455
             GROUP BY prodpp.pv_id, pp.pv_id
13456
             MINUS
13457
             SELECT   pp.pv_id
13458
                 FROM release_content rc, package_patches pp
13459
                WHERE rc.pv_id = pp.pv_id AND rc.rtag_id = nrtagid
13460
             GROUP BY pp.pv_id);
13461
END check_new_patches;
4040 dpurdie 13462
 
1374 dpurdie 13463
/
1373 dpurdie 13464
 
4040 dpurdie 13465
/
13466
--------------------------------------------------------
13467
--  DDL for Procedure CLEAN_ADVISORY_RIPPLE
13468
--------------------------------------------------------
13469
set define off;
13470
 
3959 dpurdie 13471
  CREATE OR REPLACE PROCEDURE "CLEAN_ADVISORY_RIPPLE" (nrtagid IN NUMBER)
13472
IS
13473
/******************************************************************************
13474
   NAME:       clean_advisory_ripple
1373 dpurdie 13475
 
3959 dpurdie 13476
   PURPOSE:    To delete entries from the advisory_ripple table based upon
13477
               an RTAG_ID only
1373 dpurdie 13478
 
3959 dpurdie 13479
               This is a tidy-up operation performed against the advisory_ripple
13480
               table, ensuring that the table does not have rtag_id/pv_id
13481
               combinations that cannot be found in the release's wip/pending/release
13482
               tabs.
13483
 
13484
******************************************************************************/
1373 dpurdie 13485
BEGIN
3959 dpurdie 13486
   -- Delete any invalid rtag_id/pv_id combination from the advisory_ripple table.
13487
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
13488
   -- work_in_progress, planned, or release_content table.
13489
   -- NOTE: Planned operations that represent pending additive/subtractive merge
13490
   -- operations are ignored because they have not been approved yet and so
13491
   -- cannot be said to be "in the release".
13492
   DELETE FROM advisory_ripple
13493
         WHERE rtag_id = nrtagid
13494
           AND pv_id not in
13495
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
13496
                 UNION
13497
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
13498
                 UNION
13499
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
13500
               );
13501
END clean_advisory_ripple;
4040 dpurdie 13502
 
3959 dpurdie 13503
/
1373 dpurdie 13504
 
4040 dpurdie 13505
/
13506
--------------------------------------------------------
13507
--  DDL for Procedure CLEAN_DO_NOT_RIPPLE
13508
--------------------------------------------------------
13509
set define off;
13510
 
3959 dpurdie 13511
  CREATE OR REPLACE PROCEDURE "CLEAN_DO_NOT_RIPPLE" (nrtagid IN NUMBER)
13512
IS
13513
/******************************************************************************
13514
   NAME:       clean_do_not_ripple
1373 dpurdie 13515
 
3959 dpurdie 13516
   PURPOSE:    To delete entries from the do_not_ripple table based upon
13517
               an RTAG_ID only
13518
 
13519
               This is a tidy-up operation performed against the do_not_ripple
13520
               table, ensuring that the table does not have rtag_id/pv_id
13521
               combinations that cannot be found in the release's wip/pending/release
13522
               tabs.
13523
 
13524
******************************************************************************/
13525
BEGIN
13526
   -- Delete any invalid rtag_id/pv_id combination from the do_not_ripple table.
13527
   -- An invalid rtag_id/pv_id combination is one that cannot be found in the
13528
   -- work_in_progress, planned, or release_content table.
13529
   -- NOTE: Planned operations that represent pending additive/subtractive merge
13530
   -- operations are ignored because they have not been approved yet and so
13531
   -- cannot be said to be "in the release".
13532
   DELETE FROM do_not_ripple
13533
         WHERE rtag_id = nrtagid
13534
           AND pv_id not in
13535
               ((SELECT pv_id FROM release_content WHERE rtag_id = nrtagid)
13536
                 UNION
13537
                (SELECT pv_id FROM work_in_progress WHERE rtag_id = nrtagid)
13538
                 UNION
13539
                (SELECT pv_id FROM planned WHERE rtag_id = nrtagid AND (operation is null OR operation = 'R'))
13540
               );
13541
END clean_do_not_ripple;
4040 dpurdie 13542
 
1374 dpurdie 13543
/
1373 dpurdie 13544
 
4040 dpurdie 13545
/
13546
--------------------------------------------------------
13547
--  DDL for Procedure CLEAR_ADVISORY_RIPPLE
13548
--------------------------------------------------------
13549
set define off;
13550
 
3959 dpurdie 13551
  CREATE OR REPLACE PROCEDURE "CLEAR_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
13552
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
13553
											 nUserId IN NUMBER ) IS
1373 dpurdie 13554
/* ---------------------------------------------------------------------------
3959 dpurdie 13555
    Version: 4.0
1373 dpurdie 13556
   --------------------------------------------------------------------------- */
13557
 
13558
BEGIN
13559
 
3959 dpurdie 13560
    -- Clear Advisory Ripple Package
13561
    DELETE FROM ADVISORY_RIPPLE
13562
	WHERE PV_ID = nPvId
13563
	AND RTAG_ID = nRtagId;
1373 dpurdie 13564
 
3959 dpurdie 13565
    /* LOG ACTION */
13566
   	Log_Action ( nPvId, 'clear_advisory_ripple', nUserId );
13567
 
13568
	/*Rebuild_Environment(nRtagId);*/
1373 dpurdie 13569
 
3959 dpurdie 13570
END Clear_Advisory_Ripple;
4040 dpurdie 13571
 
1374 dpurdie 13572
/
1373 dpurdie 13573
 
4040 dpurdie 13574
/
13575
--------------------------------------------------------
13576
--  DDL for Procedure CLONED_PACKAGE_PROCESSES
13577
--------------------------------------------------------
13578
set define off;
13579
 
3959 dpurdie 13580
  CREATE OR REPLACE PROCEDURE "CLONED_PACKAGE_PROCESSES" 
13581
IS
1373 dpurdie 13582
 
3959 dpurdie 13583
proc_id NUMBER;
1373 dpurdie 13584
/******************************************************************************
3959 dpurdie 13585
   NAME:       DELETE_DO_NOT_RIPPLE
13586
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
13587
               IS RELEASED
1373 dpurdie 13588
 
13589
   REVISIONS:
13590
   Ver        Date        Author           Description
13591
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 13592
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 13593
 
13594
   NOTES:
13595
 
13596
   Automatically available Auto Replace Keywords:
3959 dpurdie 13597
      Object Name:     DELETE_DO_NOT_RIPPLE
13598
      Sysdate:         21/04/2006
13599
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
1373 dpurdie 13600
      Username:         (set in TOAD Options, Procedure Editor)
13601
      Table Name:       (set in the "New PL/SQL Object" dialog)
13602
 
13603
******************************************************************************/
3959 dpurdie 13604
   CURSOR ripple_cur
13605
   IS
13606
      select distinct proc_id, prod_id from deployment_manager.processes_config;
13607
 
13608
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 13609
BEGIN
3959 dpurdie 13610
   OPEN ripple_cur;
1373 dpurdie 13611
 
3959 dpurdie 13612
   FETCH ripple_cur
13613
    INTO ripple_rec;
1373 dpurdie 13614
 
3959 dpurdie 13615
   WHILE ripple_cur%FOUND
13616
   LOOP
13617
 
1373 dpurdie 13618
 
3959 dpurdie 13619
 
13620
insert into package_processes (PROC_ID, PV_ID) 
13621
values( ripple_rec.proc_id, ripple_rec.prod_id);
13622
 
13623
      FETCH ripple_cur
13624
       INTO ripple_rec;
13625
   END LOOP;
13626
END CLONED_PACKAGE_PROCESSES;
4040 dpurdie 13627
 
1374 dpurdie 13628
/
1373 dpurdie 13629
 
4040 dpurdie 13630
/
13631
--------------------------------------------------------
13632
--  DDL for Procedure CLONED_PROCESSES
13633
--------------------------------------------------------
13634
set define off;
13635
 
3959 dpurdie 13636
  CREATE OR REPLACE PROCEDURE "CLONED_PROCESSES" 
13637
IS
13638
 
13639
proc_id NUMBER;
13640
/******************************************************************************
13641
   NAME:       DELETE_DO_NOT_RIPPLE
13642
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
13643
               IS RELEASED
13644
 
13645
   REVISIONS:
13646
   Ver        Date        Author           Description
13647
   ---------  ----------  ---------------  ------------------------------------
13648
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
13649
 
13650
   NOTES:
13651
 
13652
   Automatically available Auto Replace Keywords:
13653
      Object Name:     DELETE_DO_NOT_RIPPLE
13654
      Sysdate:         21/04/2006
13655
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
13656
      Username:         (set in TOAD Options, Procedure Editor)
13657
      Table Name:       (set in the "New PL/SQL Object" dialog)
13658
 
13659
******************************************************************************/
13660
   CURSOR ripple_cur
13661
   IS
13662
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
13663
 
13664
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 13665
BEGIN
3959 dpurdie 13666
   OPEN ripple_cur;
1373 dpurdie 13667
 
3959 dpurdie 13668
   FETCH ripple_cur
13669
    INTO ripple_rec;
1373 dpurdie 13670
 
3959 dpurdie 13671
   WHILE ripple_cur%FOUND
13672
   LOOP
13673
 
13674
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
13675
 
13676
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
13677
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
1373 dpurdie 13678
 
3959 dpurdie 13679
      FETCH ripple_cur
13680
       INTO ripple_rec;
13681
   END LOOP;
13682
END CLONED_PROCESSES;
4040 dpurdie 13683
 
1374 dpurdie 13684
/
1373 dpurdie 13685
 
4040 dpurdie 13686
/
13687
--------------------------------------------------------
13688
--  DDL for Procedure DELETE_AUTOBUILD_FAILURE_INFO
13689
--------------------------------------------------------
13690
set define off;
13691
 
3959 dpurdie 13692
  CREATE OR REPLACE PROCEDURE "DELETE_AUTOBUILD_FAILURE_INFO" 
13693
IS
1373 dpurdie 13694
/******************************************************************************
3959 dpurdie 13695
   NAME:       DELETE_AUTOBUILD_FAILURE_INFO
13696
   PURPOSE:
1373 dpurdie 13697
 
13698
   REVISIONS:
3959 dpurdie 13699
   Ver        Date        Author           Description
1373 dpurdie 13700
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 13701
   1.0        2/06/2006    Rupesh Solanki      1. Created this procedure.
1373 dpurdie 13702
 
13703
   NOTES:
13704
 
13705
   Automatically available Auto Replace Keywords:
3959 dpurdie 13706
      Object Name:     DELETE_AUTOBUILD_FAILURE_INFO
13707
      Sysdate:         2/06/2006
13708
      Date and Time:   2/06/2006, 8:44:25 AM, and 2/06/2006 8:44:25 AM
1373 dpurdie 13709
      Username:         (set in TOAD Options, Procedure Editor)
13710
      Table Name:       (set in the "New PL/SQL Object" dialog)
13711
 
13712
******************************************************************************/
13713
BEGIN
3959 dpurdie 13714
   DELETE FROM autobuild_failure
13715
         WHERE group_email_id NOT IN (SELECT group_email_id
13716
                                        FROM members_group);
13717
END delete_autobuild_failure_info;
4040 dpurdie 13718
 
1374 dpurdie 13719
/
1373 dpurdie 13720
 
4040 dpurdie 13721
/
13722
--------------------------------------------------------
13723
--  DDL for Procedure DEPLOY_TO_RELEASE
13724
--------------------------------------------------------
13725
set define off;
13726
 
1373 dpurdie 13727
  CREATE OR REPLACE PROCEDURE "DEPLOY_TO_RELEASE" IS
13728
 
13729
/******************************************************************************
13730
 
13731
 
13732
******************************************************************************/
13733
 
13734
	CURSOR curInfo IS
13735
    SELECT DISTINCT
13736
        qry.DPV_ID
13737
     FROM (
13738
             SELECT dep.*,
13739
                    LEVEL AS LEVEL_NUM
13740
               FROM PACKAGE_DEPENDENCIES dep
13741
             START WITH dep.PV_ID IN ( 
13742
 
4211 dpurdie 13743
                        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,11514
13744
5,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 13745
 
13746
                        ) 
13747
 			CONNECT BY PRIOR dep.DPV_ID = dep.PV_ID
13748
 		) qry,
13749
 		PACKAGES pkg,
13750
		PACKAGE_VERSIONS pv
13751
 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
13752
         and (pv.is_patch is null or pv.is_patch = 'N');
13753
    recInfo curInfo%ROWTYPE;
13754
 
13755
 
13756
BEGIN
13757
 
13758
	OPEN curInfo;
13759
    FETCH curInfo INTO recInfo;
13760
 
13761
	WHILE curInfo%FOUND
13762
	LOOP
13763
 
13764
	insert into release_content(RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE)
13765
    VALUES(8027, recInfo.dpv_id, 7, ora_sysdatetime, 0, 0);
13766
 
13767
    FETCH curInfo INTO recInfo;
13768
 
13769
	END LOOP;
13770
 
13771
	CLOSE curInfo;
13772
 
13773
 
13774
 
13775
 
13776
END DEPLOY_TO_RELEASE; 
4040 dpurdie 13777
 
1374 dpurdie 13778
/
1373 dpurdie 13779
 
4040 dpurdie 13780
/
13781
--------------------------------------------------------
13782
--  DDL for Procedure DEPRECATE_PACKAGE
13783
--------------------------------------------------------
13784
set define off;
13785
 
3959 dpurdie 13786
  CREATE OR REPLACE PROCEDURE "DEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
13787
	   	  		  							   nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
13788
	   	  		  							   nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
13789
											   sComments IN DEPRECATED_PACKAGES.COMMENTS%TYPE,
13790
											   nUserId IN NUMBER) IS
13791
ext VARCHAR2(50);
1373 dpurdie 13792
 
13793
 
13794
 
3959 dpurdie 13795
 
1373 dpurdie 13796
BEGIN
13797
 
3959 dpurdie 13798
	--Extract the package version extension
13799
	SELECT V_EXT into ext
13800
	FROM PACKAGE_VERSIONS
13801
	WHERE PV_ID = nPvId; 
13802
 
13803
    -- Deprecate Package
13804
    INSERT INTO DEPRECATED_PACKAGES (RTAG_ID, PKG_ID, COMMENTS, V_EXT)
13805
	VALUES (nRtagId, nPkgId, sComments, ext);
13806
 
13807
	IF ext IS NOT NULL THEN
13808
	   UPDATE RELEASE_CONTENT 
13809
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
13810
	   WHERE RTAG_ID = nRtagId
13811
	   AND PV_ID IN (SELECT PV.PV_ID 
13812
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
13813
				  	WHERE PKG.PKG_ID = PV.PKG_ID
13814
				  	AND PV.V_EXT = ext
13815
				  	AND PKG.PKG_ID = nPkgId
13816
				 	);						
13817
	ELSE
13818
	   UPDATE RELEASE_CONTENT 
13819
	   SET PKG_ID = nPkgId, DEPRECATED_STATE = 6
13820
	   WHERE RTAG_ID = nRtagId
13821
	   AND PV_ID IN (SELECT PV.PV_ID 
13822
		   	  	  	FROM PACKAGE_VERSIONS PV, PACKAGES PKG
13823
				  	WHERE PKG.PKG_ID = PV.PKG_ID
13824
				  	AND PV.V_EXT IS NULL
13825
				  	AND PKG.PKG_ID = nPkgId
13826
				 	);
13827
	END IF;
13828
 
13829
	UPDATE RELEASE_CONTENT
13830
	SET PKG_ID = nPkgId, DEPRECATED_STATE = 7
13831
	WHERE RTAG_ID = nRtagId
13832
	AND PV_ID IN (		   SELECT DISTINCT
13833
 	 		  	 		   qry.PV_ID
13834
						        FROM (
13835
								 	  SELECT dep.*,
13836
									  LEVEL AS LEVEL_NUM
13837
									  FROM PACKAGE_DEPENDENCIES dep 
13838
 								START WITH dep.DPV_ID IN ( nPvId ) 
13839
								CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
13840
 								) qry,
13841
								PACKAGES pkg,
13842
								PACKAGE_VERSIONS pv,
13843
								RELEASE_CONTENT rc
13844
						 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
13845
							 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
13846
							 AND rc.DEPRECATED_STATE IS NULL
13847
				 );			 
1373 dpurdie 13848
 
13849
    /* LOG ACTION */
3959 dpurdie 13850
   	/*Log_Action ( nPkgId, 'deprecated_package', nUserId );*/
13851
 
1373 dpurdie 13852
 
3959 dpurdie 13853
END Deprecate_Package;
4040 dpurdie 13854
 
1374 dpurdie 13855
/
1373 dpurdie 13856
 
4040 dpurdie 13857
/
13858
--------------------------------------------------------
13859
--  DDL for Procedure DT_DROPUSEROBJECTBYID
13860
--------------------------------------------------------
13861
set define off;
13862
 
1373 dpurdie 13863
  CREATE OR REPLACE PROCEDURE "DT_DROPUSEROBJECTBYID" ( PARAM_ID IN NUMBER ) AS BEGIN DELETE FROM MICROSOFTDTPROPERTIES WHERE OBJECTID = PARAM_ID; END DT_DROPUSEROBJECTBYID;
4040 dpurdie 13864
 
1374 dpurdie 13865
/
1373 dpurdie 13866
 
4040 dpurdie 13867
/
13868
--------------------------------------------------------
13869
--  DDL for Procedure DT_SETPROPERTYBYID
13870
--------------------------------------------------------
13871
set define off;
13872
 
3959 dpurdie 13873
  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 13874
 
3959 dpurdie 13875
/
13876
 
4040 dpurdie 13877
/
13878
--------------------------------------------------------
13879
--  DDL for Procedure IGNORE_DEPENDENCY_WARNINGS
13880
--------------------------------------------------------
13881
set define off;
13882
 
3959 dpurdie 13883
  CREATE OR REPLACE PROCEDURE "IGNORE_DEPENDENCY_WARNINGS" ( nRtagId IN IGNORE_WARNINGS.RTAG_ID%TYPE,
13884
                                                         nPvId IN IGNORE_WARNINGS.PV_ID%TYPE,
13885
                                                         sIgnoreIdList IN VARCHAR2,
13886
                                                         bDoPatchIgnore IN BOOLEAN DEFAULT FALSE,
13887
                                                         nUserId IN NUMBER DEFAULT NULL ) IS
13888
/* ---------------------------------------------------------------------------
13889
    Updates the ignore warnings table - this is really two functions in one.
13890
 
13891
    1) One function updates the table based on a list of dependent PV_IDs and a parent PV_ID
13892
       and is called from the RM website's SetIgnoreWarnings() function after a user changes
13893
       the ignore warnings checkboxes and submits the form.
13894
       This can (at time of writing this) only be done within releases that are not build
13895
       daemon enabled. The ignore warnings feature is a feature we would like to see the end
13896
       of in an ideal world.
13897
       The SetIgnoreWarnings() website function now calls Touch_Release so there is no need to
13898
       do so in this stored procedure, thereby making this stored procedure much more precise in
13899
       that it only updates the ignore_warnings table (action log table too although that is just
13900
       a log and doesn't affect any subsequent business rules behaviour) and it cares nothing
13901
       about website presentation layer states, etc.
13902
 
13903
    2) The other function updates the table for out of sync dependencies that have in fact
13904
       been satisfied by patches made to some other product in the release.
13905
       This seems to be a seldom used feature in current projects.
13906
       It is probably the most often taken path through this function given that it occurs when
13907
       this function is called from Rebuild_Environment, and that is called in many circumstances
13908
       from the RM website whenever the seems to be a possibility that the state of a package
13909
       in a release might have changed and therefore affects the state of other packages in
13910
       that same release.
13911
 
13912
    Parameter Usage:
13913
                        when called from    | when called from
13914
                        Rebuild_Environment | SetIgnoreWarnings()
13915
                        stored procedure.   | in the Website
13916
      --------------------------------------+----------------------------
13917
      nRtagId           RTAG_ID             | RTAG_ID
13918
      nPvId             NULL                | PV_ID
13919
      sIgnoreIdList     NULL                | list of dependent PV_ID's
13920
      bDoPatchIgnore    TRUE                | FALSE
13921
      nUserId           NULL                | current user ID
13922
   --------------------------------------------------------------------------- */
13923
 
13924
oIgnoreIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
13925
ReleaseLocation VARCHAR2(4000);
13926
ActionTypeId NUMBER;
13927
 
1373 dpurdie 13928
BEGIN
13929
 
3959 dpurdie 13930
   IF (NOT bDoPatchIgnore) THEN
13931
      /* Manual Ignore Warnings - this execution path is the one taken when called from SetIgnoreWarnings() in the Website
13932
      */
13933
      oIgnoreIdCollector := IN_LIST_NUMBER ( sIgnoreIdList );
1373 dpurdie 13934
 
13935
 
3959 dpurdie 13936
      /* Log Action */
13937
      -- Get Release Location
13938
      SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
13939
        FROM PROJECTS proj,
13940
             RELEASE_TAGS rt
13941
       WHERE rt.PROJ_ID = proj.PROJ_ID
13942
         AND rt.RTAG_ID = nRtagId;
1373 dpurdie 13943
 
3959 dpurdie 13944
      -- Get Action Type Id for IGNORE_ON
13945
      SELECT act.ACTTYPE_ID INTO ActionTypeId
13946
        FROM ACTION_TYPE act
13947
       WHERE act.NAME = 'ignore_on';
13948
 
13949
      -- Get Ignored (Current MINUS Old)
13950
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
13951
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
13952
        FROM (
13953
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
13954
                FROM PACKAGE_VERSIONS pv
13955
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
13956
              MINUS
13957
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
13958
                FROM IGNORE_WARNINGS igw
13959
               WHERE igw.RTAG_ID = nRtagId
13960
                 AND igw.PV_ID = nPvId
13961
             ) qry,
13962
             PACKAGE_VERSIONS pv,
13963
             PACKAGES pkg,
13964
             RELEASE_CONTENT rc,
13965
             PACKAGE_VERSIONS rpv
13966
       WHERE pv.PKG_ID = pkg.PKG_ID
13967
         AND rc.RTAG_ID = nRtagId
13968
         AND rc.PV_ID = rpv.PV_ID
13969
         AND rpv.PKG_ID = pv.PKG_ID
13970
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
13971
         AND qry.DPV_ID = pv.PV_ID;
13972
 
13973
 
13974
      -- Get Action Type Id for IGNORE_OFF
13975
      SELECT act.ACTTYPE_ID INTO ActionTypeId
13976
        FROM ACTION_TYPE act
13977
       WHERE act.NAME = 'ignore_off';
13978
 
13979
      -- Get UnIgnored (Old MINUS Current)
13980
      INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
13981
      SELECT nUserId, ORA_SYSDATETIME, nPvId, pkg.PKG_NAME ||' '|| rpv.PKG_VERSION ||' at '|| ReleaseLocation, ActionTypeId
13982
        FROM (
13983
              SELECT igw.RTAG_ID, igw.PV_ID, igw.DPV_ID
13984
                FROM IGNORE_WARNINGS igw
13985
               WHERE igw.RTAG_ID = nRtagId
13986
                 AND igw.PV_ID = nPvId
13987
              MINUS
13988
              SELECT TO_NUMBER(nRtagId) AS RTAG_ID, TO_NUMBER(nPvId), pv.PV_ID AS DPV_ID
13989
                FROM PACKAGE_VERSIONS pv
13990
               WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
13991
             ) qry,
13992
             PACKAGE_VERSIONS pv,
13993
             PACKAGES pkg,
13994
             RELEASE_CONTENT rc,
13995
             PACKAGE_VERSIONS rpv
13996
       WHERE pv.PKG_ID = pkg.PKG_ID
13997
         AND rc.RTAG_ID = nRtagId
13998
         AND rc.PV_ID = rpv.PV_ID
13999
         AND rpv.PKG_ID = pv.PKG_ID
14000
         AND NVL( rpv.V_EXT, 'LINK_A_NULL' ) = NVL( pv.V_EXT, 'LINK_A_NULL' )
14001
         AND qry.DPV_ID = pv.PV_ID;
14002
 
14003
 
14004
      -- Delete Current Ignore Warnings
14005
      DELETE
14006
        FROM IGNORE_WARNINGS igw
14007
       WHERE igw.RTAG_ID = nRtagId
14008
         AND igw.PV_ID = nPvId
14009
         AND igw.IS_PATCH_IGNORE IS NULL;
14010
 
14011
 
14012
      IF (oIgnoreIdCollector.COUNT > 0) THEN
14013
         -- Insert Ignore Warnings
14014
         INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID )
14015
         SELECT nRtagId,
14016
                nPvId,
14017
                pv.PV_ID AS DPV_ID
14018
           FROM PACKAGE_VERSIONS pv
14019
          WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oIgnoreIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
14020
      END IF;
14021
 
14022
   ELSE
14023
      /* Patch Ignore Warnings - this execution path is the one taken when called from the Rebuild_Environment stored procedure */
14024
 
14025
      -- Delete Current Patch Ignore Warnings
14026
      DELETE
14027
        FROM IGNORE_WARNINGS igw
14028
       WHERE igw.RTAG_ID = nRtagId
14029
         AND igw.IS_PATCH_IGNORE = 'Y';
14030
 
14031
 
14032
      -- Delete Manual Ignores that need to be Patch Ignores
14033
      DELETE
14034
        FROM IGNORE_WARNINGS igw
14035
       WHERE ( RTAG_ID, PV_ID, DPV_ID ) IN
14036
             (
14037
              SELECT DISTINCT
14038
                     nRtagId,
14039
                     err.PV_ID,
14040
                     err.ERR_DPV AS DPV_ID
14041
               FROM  (
14042
                      /* Full Release Contents used for reference*/
14043
                      SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
14044
                        FROM release_content rel, package_versions rpv
14045
                       WHERE rel.pv_id = rpv.pv_id
14046
                         AND rtag_id = nRtagId
14047
                     ) frc,
14048
                     (
14049
                      /* DPV_IDs not fount in release*/
14050
                      SELECT dep.pv_id, dep.dpv_id AS err_dpv
14051
                        FROM package_dependencies dep
14052
                       WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14053
                         AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14054
                     ) err,
14055
                     (
14056
                      SELECT DISTINCT pp.PV_ID, dep.DPV_ID
14057
                        FROM PACKAGE_PATCHES pp,
14058
                             PACKAGE_DEPENDENCIES dep,
14059
                             RELEASE_CONTENT rc
14060
                       WHERE rc.RTAG_ID = nRtagId
14061
                         AND rc.PV_ID = pp.PV_ID
14062
                         AND dep.PV_ID = pp.PATCH_ID
14063
                     ) pp,
14064
                     package_versions errpkg,
14065
                     package_versions errpv
14066
               WHERE err.err_dpv = errpv.pv_id
14067
                 AND errpv.pkg_id = frc.pkg_id(+)
14068
                 AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14069
                 AND err.pv_id = errpkg.pv_id
14070
                 AND err.PV_ID = pp.PV_ID
14071
                 AND frc.PV_ID = pp.DPV_ID
14072
             );
14073
 
14074
      /*
14075
      ---------------------------------------------------
14076
      --  Make sure that select statement above and below are same
14077
      ---------------------------------------------------
14078
      */
14079
 
14080
      -- Insert Patch Ignores
14081
      INSERT INTO IGNORE_WARNINGS igw ( RTAG_ID, PV_ID, DPV_ID, IS_PATCH_IGNORE )
14082
      SELECT DISTINCT
14083
             nRtagId,
14084
             err.PV_ID,
14085
             err.ERR_DPV AS DPV_ID,
14086
             'Y'
14087
        FROM (
14088
              /* Full Release Contents used for reference*/
14089
              SELECT rpv.PV_ID, rpv.pkg_id, NVL(rpv.v_ext, '|LINK_A_NULL|') AS v_ext
14090
                FROM release_content rel, package_versions rpv
14091
               WHERE rel.pv_id = rpv.pv_id
14092
                 AND rtag_id = nRtagId
14093
             ) frc,
14094
             (
14095
               /* DPV_IDs not fount in release*/
14096
               SELECT dep.pv_id, dep.dpv_id AS err_dpv
14097
                 FROM package_dependencies dep
14098
                WHERE dep.pv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14099
                  AND NOT dep.dpv_id IN ( SELECT pv_id FROM release_content WHERE rtag_id = nRtagId )
14100
             ) err,
14101
             (
14102
              SELECT DISTINCT pp.PV_ID, dep.DPV_ID
14103
                FROM PACKAGE_PATCHES pp,
14104
                     PACKAGE_DEPENDENCIES dep,
14105
                     RELEASE_CONTENT rc
14106
               WHERE rc.RTAG_ID = nRtagId
14107
                 AND rc.PV_ID = pp.PV_ID
14108
                 AND dep.PV_ID = pp.PATCH_ID
14109
             ) pp,
14110
             package_versions errpkg,
14111
             package_versions errpv
14112
       WHERE err.err_dpv = errpv.pv_id
14113
         AND errpv.pkg_id = frc.pkg_id(+)
14114
         AND NVL(errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14115
         AND err.pv_id = errpkg.pv_id
14116
         AND err.PV_ID = pp.PV_ID
14117
         AND frc.PV_ID = pp.DPV_ID;
14118
 
14119
    END IF;
14120
 
14121
END Ignore_Dependency_Warnings;
4040 dpurdie 14122
 
1374 dpurdie 14123
/
1373 dpurdie 14124
 
4040 dpurdie 14125
/
14126
--------------------------------------------------------
14127
--  DDL for Procedure INSERT_INTO_PACKAGE_BUILD_INFO
14128
--------------------------------------------------------
14129
set define off;
14130
 
3959 dpurdie 14131
  CREATE OR REPLACE PROCEDURE "INSERT_INTO_PACKAGE_BUILD_INFO" IS
1373 dpurdie 14132
 
14133
/******************************************************************************
3959 dpurdie 14134
   NAME:       INSERT_INTO_PACKAGE_BUILD_INFO
1373 dpurdie 14135
   PURPOSE:    
14136
 
14137
   REVISIONS:
14138
   Ver        Date        Author           Description
14139
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 14140
   1.0        6/12/2006          1. Created this procedure.
1373 dpurdie 14141
 
14142
   NOTES:
14143
 
14144
   Automatically available Auto Replace Keywords:
3959 dpurdie 14145
      Object Name:     INSERT_INTO_PACKAGE_BUILD_INFO
14146
      Sysdate:         6/12/2006
14147
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
1373 dpurdie 14148
      Username:         (set in TOAD Options, Procedure Editor)
14149
      Table Name:       (set in the "New PL/SQL Object" dialog)
14150
 
14151
******************************************************************************/
14152
 
14153
	CURSOR curInfo IS
3959 dpurdie 14154
    SELECT PV_ID
14155
	FROM PACKAGE_BUILD_ENV
14156
	WHERE BE_ID IN (11, 12);
1373 dpurdie 14157
    recInfo curInfo%ROWTYPE;
14158
 
14159
 
14160
BEGIN
14161
 
14162
	OPEN curInfo;
14163
    FETCH curInfo INTO recInfo;
14164
 
14165
	WHILE curInfo%FOUND
14166
	LOOP
14167
 
3959 dpurdie 14168
		INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID, BSA_ID )
14169
		VALUES( recInfo.PV_ID, 2, 5);
14170
 
14171
		UPDATE PACKAGE_VERSIONS SET BS_ID = 2 WHERE PV_ID = recInfo.PV_ID;
14172
 
1373 dpurdie 14173
		FETCH curInfo INTO recInfo;
3959 dpurdie 14174
 
1373 dpurdie 14175
	END LOOP;
14176
 
14177
	CLOSE curInfo;
14178
 
14179
 
14180
 
14181
 
3959 dpurdie 14182
END INSERT_INTO_PACKAGE_BUILD_INFO;
4040 dpurdie 14183
 
1374 dpurdie 14184
/
1373 dpurdie 14185
 
4040 dpurdie 14186
/
14187
--------------------------------------------------------
14188
--  DDL for Procedure INSERT_MULTIPLE_STICKY_NOTES
14189
--------------------------------------------------------
14190
set define off;
14191
 
3959 dpurdie 14192
  CREATE OR REPLACE PROCEDURE "INSERT_MULTIPLE_STICKY_NOTES" IS
1373 dpurdie 14193
 
3959 dpurdie 14194
/******************************************************************************
14195
   NAME:       INSERT_MULTIPLE_STICKY_NOTES
14196
   PURPOSE:    
1373 dpurdie 14197
 
3959 dpurdie 14198
   REVISIONS:
14199
   Ver        Date        Author           Description
14200
   ---------  ----------  ---------------  ------------------------------------
14201
   1.0        6/12/2006          1. Created this procedure.
1373 dpurdie 14202
 
3959 dpurdie 14203
   NOTES:
1373 dpurdie 14204
 
3959 dpurdie 14205
   Automatically available Auto Replace Keywords:
14206
      Object Name:     INSERT_MULTIPLE_STICKY_NOTES
14207
      Sysdate:         6/12/2006
14208
      Date and Time:   6/12/2006, 1:53:40 PM, and 6/12/2006 1:53:40 PM
14209
      Username:         (set in TOAD Options, Procedure Editor)
14210
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 14211
 
3959 dpurdie 14212
******************************************************************************/
1373 dpurdie 14213
 
3959 dpurdie 14214
	CURSOR curInfo IS
14215
    SELECT PV_ID
14216
	FROM PACKAGE_BUILD_ENV
14217
	WHERE BE_ID IN (11, 12);
14218
    recInfo curInfo%ROWTYPE;
14219
 
14220
 
1373 dpurdie 14221
BEGIN
14222
 
3959 dpurdie 14223
	OPEN curInfo;
14224
    FETCH curInfo INTO recInfo;
14225
 
14226
	WHILE curInfo%FOUND
14227
	LOOP
1373 dpurdie 14228
 
3959 dpurdie 14229
		INSERT INTO NOTE_MANAGER ( NID, LAST_USER, LAST_DATE, DESCRIPTION )
14230
		VALUES( recInfo.PV_ID, 'awehalle', ORA_SYSDATETIME, '' );
14231
 
14232
		FETCH curInfo INTO recInfo;
14233
 
14234
	END LOOP;
1373 dpurdie 14235
 
3959 dpurdie 14236
	CLOSE curInfo;
1373 dpurdie 14237
 
14238
 
14239
 
14240
 
3959 dpurdie 14241
END INSERT_MULTIPLE_STICKY_NOTES;
4040 dpurdie 14242
 
1374 dpurdie 14243
/
1373 dpurdie 14244
 
4040 dpurdie 14245
/
14246
--------------------------------------------------------
14247
--  DDL for Procedure LEVEL_N_CONFLICTS
14248
--------------------------------------------------------
14249
set define off;
14250
 
3959 dpurdie 14251
  CREATE OR REPLACE PROCEDURE "LEVEL_N_CONFLICTS" (
14252
   nnrtag_id       IN       NUMBER,
14253
   nnsession_num   IN       NUMBER,
14254
   nnrowcnt        OUT      NUMBER,
14255
   nniteration     IN       NUMBER
14256
)
14257
IS
1373 dpurdie 14258
/* ---------------------------------------------------------------------------
3959 dpurdie 14259
    Version: 3.0.1
1373 dpurdie 14260
   --------------------------------------------------------------------------- */
3959 dpurdie 14261
   previteration   NUMBER := nniteration - 1;
1373 dpurdie 14262
BEGIN
3959 dpurdie 14263
   /* ---------  LEVEL 1 CONFILCTS -----------
14264
   || Following states are used:
14265
   || 0 -> NOT FOUND
14266
   || 1 -> MAJOR
14267
   || 2 -> MINOR MINOR
14268
   */
14269
   INSERT INTO temp_env_states
14270
      SELECT DISTINCT nnsession_num AS session_num, nniteration AS level_num,
14271
                      pv.pv_id, pv.pkg_id, pv.v_ext,
14272
                      DECODE (tes.tes_state, 2, 2, 1) AS MESSAGE
14273
                 FROM package_dependencies dep,
14274
                      package_versions dpv,
14275
                      package_versions pv,
14276
                      release_content rel,
14277
                      temp_env_states tes
14278
                WHERE rel.pv_id = dep.pv_id
14279
                  AND rel.rtag_id = nnrtag_id
14280
                  AND dep.pv_id = pv.pv_id
14281
                  AND dep.dpv_id = dpv.pv_id
14282
                  AND dpv.pkg_id = tes.pkg_id
14283
                  AND NVL (dpv.v_ext, '|LINK_A_NULL|') =
14284
                                              NVL (tes.v_ext, '|LINK_A_NULL|')
14285
                  AND tes.session_num = nnsession_num
14286
                  AND tes.level_num = previteration
14287
                  AND (dep.pv_id, dep.dpv_id) IN 
14288
                                                   /* Remove packages listed in IGNORE_WARNINGS table and
14289
                                                 || packages already stored in Temp Table.
14290
                                                 */
14291
                      (
14292
                         SELECT pd.pv_id, pd.dpv_id
14293
                           FROM package_dependencies pd, release_content rc
14294
                          WHERE pd.pv_id = rc.pv_id AND rc.rtag_id = nnrtag_id
14295
                         --AND pd.pv_id NOT IN ( SELECT pv_id FROM temp_env_states WHERE session_num = NNsession_num AND level_num > 5 )
14296
                         MINUS
14297
                         SELECT igw.pv_id, igw.dpv_id
14298
                           FROM ignore_warnings igw
14299
                          WHERE igw.rtag_id = nnrtag_id);
1373 dpurdie 14300
 
3959 dpurdie 14301
   nnrowcnt := SQL%ROWCOUNT;
14302
END level_n_conflicts;
4040 dpurdie 14303
 
1374 dpurdie 14304
/
1373 dpurdie 14305
 
4040 dpurdie 14306
/
14307
--------------------------------------------------------
14308
--  DDL for Procedure LEVEL_ONE_CONFLICTS
14309
--------------------------------------------------------
14310
set define off;
14311
 
1373 dpurdie 14312
  CREATE OR REPLACE PROCEDURE "LEVEL_ONE_CONFLICTS" (
14313
   nnrtag_id       IN   NUMBER,
14314
   nnsession_num   IN   NUMBER
14315
)
14316
IS
14317
BEGIN
14318
   /* ---------  LEVEL 1 CONFILCTS -----------
14319
   || Following states are used:
14320
   || 0 -> NOT FOUND
14321
   || 1 -> MAJOR
14322
   || 2 -> MINOR MINOR
14323
   */
14324
   INSERT INTO temp_env_states
14325
      SELECT DISTINCT nnsession_num AS session_num, 1 AS level_num,
14326
                      err.pv_id, errpkg.pkg_id, errpkg.v_ext,
14327
                      DECODE (frc.v_nmm,
14328
                              NULL, 0,
14329
                              errpv.v_nmm, DECODE (frc.v_mm,
14330
                                                   errpv.v_mm, NULL,
14331
                                                   2
14332
                                                  ),
14333
                              1
14334
                             ) AS MESSAGE
14335
                 FROM (
14336
                       /* Full Release Contents used for reference*/
14337
                        SELECT rel.rtag_id, rpv.pv_id, rpv.pkg_id,
14338
                                NVL (rpv.v_ext, '|LINK_A_NULL|') AS v_ext,
14339
                                rpv.pkg_version, rpv.v_nmm, rpv.v_mm,
14340
                                (SELECT COUNT(*)
14341
                                   FROM ADVISORY_RIPPLE avr
14342
                                  WHERE avr.rtag_id = rel.rtag_id
14343
                                    AND avr.pv_id = rel.pv_id
14344
                                ) AS IsAvr
14345
                          FROM release_content rel,
14346
                                package_versions rpv
14347
                          WHERE rel.pv_id = rpv.pv_id
14348
                             AND rtag_id = nnrtag_id
14349
                      ) frc,
14350
 
14351
                      (
14352
                       /* DPV_IDs not found in release (excluding those from pegged versions whose dependencies will not
14353
                          necessarily be satisfied in the release) */
14354
                       SELECT dep.pv_id, dep.dpv_id AS err_dpv
14355
                         FROM package_dependencies dep,
14356
                              package_versions dep_dpv
14357
                        WHERE dep.dpv_id = dep_dpv.pv_id
14358
                          AND dep.pv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
14359
                          AND NOT dep.pv_id IN (SELECT pegv.pv_id FROM PEGGED_VERSIONS pegv WHERE pegv.rtag_id = nnrtag_id)
14360
                          AND NOT dep.dpv_id IN (SELECT pv_id FROM release_content WHERE rtag_id = nnrtag_id)
14361
                       MINUS
14362
                       /* MINUS Dependencies to be ignored */
14363
                       SELECT igw.pv_id, igw.dpv_id AS err_dpv
14364
                         FROM ignore_warnings igw,
14365
                              package_versions igw_dpv
14366
                        WHERE igw.dpv_id = igw_dpv.pv_id
14367
                          AND igw.rtag_id = nnrtag_id
14368
                      ) err,
14369
                      package_versions errpkg,
14370
                      package_versions errpv
14371
                WHERE err.err_dpv = errpv.pv_id
14372
                  AND errpv.pkg_id = frc.pkg_id(+)
14373
                  AND NVL (errpv.v_ext, '|LINK_A_NULL|') = frc.v_ext(+)
14374
                  AND err.pv_id = errpkg.pv_id
14375
                  AND frc.IsAvr = 0;
14376
END level_one_conflicts;
4040 dpurdie 14377
 
1374 dpurdie 14378
/
1373 dpurdie 14379
 
4040 dpurdie 14380
/
14381
--------------------------------------------------------
14382
--  DDL for Procedure LOCK_PACKAGE
14383
--------------------------------------------------------
14384
set define off;
14385
 
1373 dpurdie 14386
  CREATE OR REPLACE PROCEDURE "LOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14387
											 nUserId IN NUMBER ) IS
14388
/* ---------------------------------------------------------------------------
14389
    Version: 4.0
14390
   --------------------------------------------------------------------------- */
14391
 
14392
BEGIN
14393
 
14394
    -- Lock Package
14395
    UPDATE PACKAGE_VERSIONS pv SET
14396
    	pv.DLOCKED = 'Y'
14397
    WHERE pv.PV_ID = nPvId;
14398
 
14399
    /* LOG ACTION */
14400
   	Log_Action ( nPvId, 'lock_package', nUserId );
14401
 
14402
END Lock_Package;
4040 dpurdie 14403
 
1374 dpurdie 14404
/
1373 dpurdie 14405
 
4040 dpurdie 14406
/
14407
--------------------------------------------------------
14408
--  DDL for Procedure LOG_ACTION
14409
--------------------------------------------------------
14410
set define off;
14411
 
3959 dpurdie 14412
  CREATE OR REPLACE PROCEDURE "LOG_ACTION" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
14413
										 enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
14414
                                         nUserId IN ACTION_LOG.USER_ID%TYPE,
14415
										 sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
1373 dpurdie 14416
/* ---------------------------------------------------------------------------
14417
    Version: 3.0
14418
   --------------------------------------------------------------------------- */
14419
 
3959 dpurdie 14420
    ActionTypeId NUMBER;
1373 dpurdie 14421
 
14422
BEGIN
14423
 
3959 dpurdie 14424
    -- Get Action Type FK
14425
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14426
      FROM ACTION_TYPE act
14427
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14428
 
14429
 
3959 dpurdie 14430
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
14431
    VALUES ( nUserId, ORA_SYSDATETIME, nPvId, sAdditionalComments, ActionTypeId );
1373 dpurdie 14432
 
14433
 
3959 dpurdie 14434
END Log_Action;
4040 dpurdie 14435
 
1374 dpurdie 14436
/
1373 dpurdie 14437
 
4040 dpurdie 14438
/
14439
--------------------------------------------------------
14440
--  DDL for Procedure LOG_ACTION_BULK
14441
--------------------------------------------------------
14442
set define off;
14443
 
3959 dpurdie 14444
  CREATE OR REPLACE PROCEDURE "LOG_ACTION_BULK" ( nPvIdList IN VARCHAR2,
14445
										 	  enumActionTypeName IN ACTION_TYPE.NAME%TYPE,
14446
                                         	  nUserId IN ACTION_LOG.USER_ID%TYPE,
14447
										 	  sAdditionalComments IN ACTION_LOG.DESCRIPTION%TYPE DEFAULT NULL  ) IS
1373 dpurdie 14448
/* ---------------------------------------------------------------------------
3959 dpurdie 14449
    Version: 3.0
1373 dpurdie 14450
   --------------------------------------------------------------------------- */
14451
 
3959 dpurdie 14452
    ActionTypeId NUMBER;
14453
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
1373 dpurdie 14454
 
14455
BEGIN
14456
 
3959 dpurdie 14457
    oPvIdCollector := IN_LIST_NUMBER ( nPvIdList );
1373 dpurdie 14458
 
3959 dpurdie 14459
    -- Get Action Type FK
14460
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14461
      FROM ACTION_TYPE act
14462
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14463
 
3959 dpurdie 14464
    -- Log Action
14465
    INSERT INTO ACTION_LOG ( USER_ID, ACTION_DATETIME, PV_ID, DESCRIPTION, ACTTYPE_ID )
14466
    SELECT nUserId,
14467
    	   ORA_SYSDATETIME,
14468
           pv.PV_ID,
14469
           sAdditionalComments,
14470
           ActionTypeId
14471
      FROM PACKAGE_VERSIONS pv
14472
     WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
1373 dpurdie 14473
 
14474
 
3959 dpurdie 14475
END Log_Action_Bulk;
4040 dpurdie 14476
 
1374 dpurdie 14477
/
1373 dpurdie 14478
 
4040 dpurdie 14479
/
14480
--------------------------------------------------------
14481
--  DDL for Procedure LOG_DAEMON_ACTION
14482
--------------------------------------------------------
14483
set define off;
14484
 
3959 dpurdie 14485
  CREATE OR REPLACE PROCEDURE "LOG_DAEMON_ACTION" ( nRconId IN NUMBER,
14486
												 enumActionTypeName IN VARCHAR2,
14487
		                                         nUserId IN NUMBER,
14488
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL  ) IS
14489
/* ---------------------------------------------------------------------------
14490
    Version: 3.0
14491
   --------------------------------------------------------------------------- */
1373 dpurdie 14492
 
3959 dpurdie 14493
    ActionTypeId NUMBER;
1373 dpurdie 14494
 
14495
BEGIN
14496
 
3959 dpurdie 14497
    -- Get Action Type FK
14498
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14499
      FROM ACTION_TYPE act
14500
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14501
 
14502
 
3959 dpurdie 14503
    INSERT INTO DAEMON_ACTION_LOG
14504
    VALUES ( nUserId, ORA_SYSDATETIME, nRconId, sAdditionalComments, ActionTypeId );
1373 dpurdie 14505
 
14506
 
3959 dpurdie 14507
END Log_Daemon_Action;
4040 dpurdie 14508
 
1374 dpurdie 14509
/
1373 dpurdie 14510
 
4040 dpurdie 14511
/
14512
--------------------------------------------------------
14513
--  DDL for Procedure LOG_PROJECT_ACTION
14514
--------------------------------------------------------
14515
set define off;
14516
 
3959 dpurdie 14517
  CREATE OR REPLACE PROCEDURE "LOG_PROJECT_ACTION" ( nProjId IN NUMBER,
14518
												 enumActionTypeName IN VARCHAR2,
14519
		                                         nUserId IN NUMBER,
14520
												 sAdditionalComments IN VARCHAR2 DEFAULT NULL,
14521
												 nRtagId IN NUMBER  ) IS
1373 dpurdie 14522
/* ---------------------------------------------------------------------------
3959 dpurdie 14523
    Version: 3.0
1373 dpurdie 14524
   --------------------------------------------------------------------------- */
14525
 
3959 dpurdie 14526
    ActionTypeId NUMBER;
1373 dpurdie 14527
 
14528
BEGIN
14529
 
3959 dpurdie 14530
    -- Get Action Type FK
14531
    SELECT act.ACTTYPE_ID INTO ActionTypeId
14532
      FROM ACTION_TYPE act
14533
     WHERE act.NAME = enumActionTypeName;
1373 dpurdie 14534
 
14535
 
3959 dpurdie 14536
    INSERT INTO PROJECT_ACTION_LOG ( USER_ID, ACTION_DATETIME, PROJ_ID, DESCRIPTION, ACTTYPE_ID, RTAG_ID)
14537
    VALUES ( nUserId, ORA_SYSDATETIME, nProjId, sAdditionalComments, ActionTypeId, nRtagId);
1373 dpurdie 14538
 
14539
 
3959 dpurdie 14540
END Log_Project_Action;
4040 dpurdie 14541
 
1374 dpurdie 14542
/
1373 dpurdie 14543
 
4040 dpurdie 14544
/
14545
--------------------------------------------------------
14546
--  DDL for Procedure NEW_ADDITIONAL_NOTE
14547
--------------------------------------------------------
14548
set define off;
14549
 
3959 dpurdie 14550
  CREATE OR REPLACE PROCEDURE "NEW_ADDITIONAL_NOTE" ( pnPv_id IN NUMBER,
14551
                                                  psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
14552
                                                  psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
14553
                                                  pnUser_id IN NUMBER,
14554
                                                  outErrCode OUT NUMBER
14555
                                                 ) IS
1373 dpurdie 14556
/* ---------------------------------------------------------------------------
3959 dpurdie 14557
    Version: 3.0.0
1373 dpurdie 14558
   --------------------------------------------------------------------------- */
14559
 
14560
    newID NUMBER;
14561
 
14562
	CURSOR an_duplicate_cur IS
3959 dpurdie 14563
        SELECT note_id
1373 dpurdie 14564
          FROM ADDITIONAL_NOTES
14565
         WHERE pv_id = pnPv_id
14566
           AND note_title = psNote_title;
14567
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
14568
 
14569
BEGIN
14570
	outErrCode := -1;		-- Set default return error code to ERROR state
14571
 
14572
	OPEN an_duplicate_cur;
14573
    FETCH an_duplicate_cur INTO an_duplicate_rec;
14574
 
3959 dpurdie 14575
    IF an_duplicate_cur%NOTFOUND
1373 dpurdie 14576
    THEN
3959 dpurdie 14577
		/* No duplicate titles */
14578
		-- Get new ID --
14579
    	SELECT SEQ_ADDITIONAL_NOTES.NEXTVAL INTO newID FROM DUAL;
14580
 
14581
		--- Add Additional Note ---
14582
	    INSERT INTO ADDITIONAL_NOTES ( note_id, pv_id, note_title, note_body, mod_date, mod_user  )
14583
	    VALUES (  newID, pnPv_id, psNote_title, psNote_body, Ora_Sysdate, pnUser_id );
1373 dpurdie 14584
		outErrCode := 0;		-- Set return to SUCCESS
14585
	END IF;
14586
 
14587
	CLOSE an_duplicate_cur;
3959 dpurdie 14588
END New_Additional_Note;
4040 dpurdie 14589
 
1374 dpurdie 14590
/
1373 dpurdie 14591
 
4040 dpurdie 14592
/
14593
--------------------------------------------------------
14594
--  DDL for Procedure NEW_PACKAGE_NAME
14595
--------------------------------------------------------
14596
set define off;
14597
 
3959 dpurdie 14598
  CREATE OR REPLACE PROCEDURE "NEW_PACKAGE_NAME" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
14599
                                               retPKG_ID OUT NUMBER ) IS
1373 dpurdie 14600
/* ---------------------------------------------------------------------------
3959 dpurdie 14601
    Version: 3.0.0
1373 dpurdie 14602
   --------------------------------------------------------------------------- */
14603
 
3959 dpurdie 14604
    CURSOR packages_cur IS
14605
        SELECT pkg.pkg_id
14606
          FROM packages pkg
14607
         WHERE pkg.pkg_name = SSpkg_name;
14608
    packages_rec packages_cur%ROWTYPE;
1373 dpurdie 14609
 
14610
 
14611
BEGIN
14612
 
3959 dpurdie 14613
    /* ---------------------------------------------------- */
14614
    /* Find if package name exists                          */
14615
    /* ---------------------------------------------------- */
1373 dpurdie 14616
 
3959 dpurdie 14617
    OPEN packages_cur;
14618
    FETCH packages_cur INTO packages_rec;
1373 dpurdie 14619
 
3959 dpurdie 14620
    IF packages_cur%NOTFOUND
14621
    THEN
14622
        -- Create new pkg_name --
14623
        SELECT SEQ_PKG_ID.nextval INTO retPKG_ID FROM DUAL;
1373 dpurdie 14624
 
3959 dpurdie 14625
        INSERT INTO packages ( pkg_id, pkg_name )
14626
        VALUES ( retPKG_ID, SSpkg_name );
1373 dpurdie 14627
 
3959 dpurdie 14628
    ELSE
14629
        retPKG_ID := packages_rec.pkg_id;
1373 dpurdie 14630
 
3959 dpurdie 14631
    END IF;
1373 dpurdie 14632
 
14633
 
3959 dpurdie 14634
    CLOSE packages_cur;
1373 dpurdie 14635
 
3959 dpurdie 14636
END New_Package_Name;
4040 dpurdie 14637
 
1374 dpurdie 14638
/
1373 dpurdie 14639
 
4040 dpurdie 14640
/
14641
--------------------------------------------------------
14642
--  DDL for Procedure NEW_PATCH
14643
--------------------------------------------------------
14644
set define off;
14645
 
1373 dpurdie 14646
  CREATE OR REPLACE PROCEDURE "NEW_PATCH" ( SSpatch_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
14647
 	   	  		  					  	NNparent_id IN NUMBER,
14648
                                        sPatchIdList IN VARCHAR2,
14649
										NNuser_id IN NUMBER ) IS
14650
/* ---------------------------------------------------------------------------
14651
    Version: 3.5
14652
   --------------------------------------------------------------------------- */
14653
 
14654
    patchPv_id    NUMBER;
14655
	parPkg_id	  NUMBER;
14656
    LastInstallOrder NUMBER;
14657
    isPatchDlocked PACKAGE_VERSIONS.DLOCKED%TYPE;
14658
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
14659
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
14660
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
14661
	oPatchDepCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
14662
 
14663
	CURSOR parent_cur IS
14664
        SELECT pv.*, pkg.pkg_name
14665
          FROM package_versions pv,
14666
		       packages pkg
14667
         WHERE pv.pv_id = NNparent_id
14668
		   AND pv.pkg_id = pkg.pkg_id;
14669
    parent_rec parent_cur%ROWTYPE;
14670
 
14671
    CURSOR patch_cur IS
14672
        SELECT pv.*, pg.pkg_name
14673
          FROM package_versions pv,
14674
		       packages pg
14675
         WHERE pv.pkg_id = parPkg_id
14676
		   AND pv.pkg_version = SSpatch_version
14677
		   AND pv.pkg_id = pg.pkg_id;
14678
    patch_rec patch_cur%ROWTYPE;
14679
 
14680
	CURSOR releases_cur IS
14681
        SELECT rc.pv_id
14682
		  FROM release_content rc
14683
		 WHERE rc.pv_id = patch_rec.pv_id;
14684
    releases_rec releases_cur%ROWTYPE;
14685
 
14686
 
14687
BEGIN
14688
 
14689
	-- Get Last Install Order
14690
    SELECT Count(*) INTO LastInstallOrder
14691
	  FROM PACKAGE_PATCHES pp
14692
	 WHERE pp.PV_ID = NNparent_id;
14693
 
14694
 
14695
    -- Get parent details
14696
	OPEN parent_cur;
14697
    FETCH parent_cur INTO parent_rec;
14698
	parPkg_id := parent_rec.pkg_id;
14699
 
14700
 
14701
	-- Find if patch exists in database
14702
    OPEN patch_cur;
14703
    FETCH patch_cur INTO patch_rec;
14704
 
14705
 
14706
    -- Parent must be official
14707
    IF parent_rec.dlocked = 'Y' THEN
14708
 
14709
	    IF patch_cur%NOTFOUND
14710
	    THEN
14711
        	isPatchDlocked := 'N';
14712
 
14713
	        -- Create new patch version --
14714
	        SELECT SEQ_PV_ID.nextval INTO patchPv_id FROM DUAL;
14715
 
14716
 
14717
	        Split_version ( SSpatch_version, SSV_MM, SSV_NMM, SSV_EXT );
14718
 
14719
	        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 )
14720
				   VALUES (
14721
						   patchPv_id,
14722
	                       parPkg_id,
14723
	                       SSpatch_version,
14724
	                       isPatchDlocked,
14725
	                       ORA_SYSDATE,
14726
	                       NNuser_id,
14727
	                       ORA_SYSDATETIME,
14728
	                       NNuser_id,
14729
	                       SSV_MM,
14730
	                       SSV_NMM,
14731
	                       SSV_EXT,
14732
	                       parent_rec.src_path,
14733
	                       'This is a patch to ' || parent_rec.pkg_name || ' ' || parent_rec.pkg_version,
14734
	                       NNuser_id,
14735
						   'Y',
14736
                           patchPv_id,
14737
						   parent_rec.bs_id,
14738
						   parent_rec.is_autobuildable,
14739
						   parent_rec.ripple_field
14740
 
14741
						   );
14742
 
14743
			INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
14744
		    	   ( SELECT NNparent_id AS pv_id,
14745
				            pv.pv_id AS patch_id,
14746
	                        LastInstallOrder + 1 AS INSTALL_ORDER
14747
				       FROM package_versions pv
14748
					  WHERE pv.pv_id = patchPv_id
14749
					    AND pv.is_patch = 'Y' );
14750
 
14751
	        /* LOG ACTION */
14752
            Log_Action ( patchPv_id, 'new_version', NNuser_id,
14753
        			     'Patch version created: '|| SSpatch_version );
14754
 
14755
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
14756
        			     'New patch created and attached: '|| SSpatch_version );
14757
 
14758
 
14759
	    ELSE
14760
 
14761
		    patchPv_id := patch_rec.pv_id;
14762
	    	isPatchDlocked := patch_rec.dlocked;
14763
 
14764
			-- Find if pv_id exists in release content (i.e. it cannot be a patch)
14765
		    OPEN releases_cur;
14766
		    FETCH releases_cur INTO releases_rec;
14767
 
14768
			IF releases_cur%NOTFOUND
14769
	   		THEN
14770
				-- This pv_id is trully a patch, hence add Y to column IS_PATCH
14771
				UPDATE package_versions SET
14772
					   is_patch = 'Y'
14773
					   WHERE pv_id = patchPv_id;
14774
 
14775
				INSERT INTO package_patches ( pv_id, patch_id, INSTALL_ORDER )
14776
			    	   ( SELECT NNparent_id AS pv_id,
14777
					            pv.pv_id AS patch_id,
14778
	                            LastInstallOrder + 1 AS INSTALL_ORDER
14779
					       FROM package_versions pv
14780
						  WHERE pv.pv_id = patchPv_id
14781
						    AND pv.is_patch = 'Y' );
14782
 
14783
			END IF;
14784
 
14785
			CLOSE releases_cur;
14786
 
14787
            /* LOG ACTION */
14788
        	Log_Action ( NNparent_id, 'patch_add', NNuser_id,
14789
        			     'Patch version was found and attached: '|| SSpatch_version );
14790
 
14791
	    END IF;
14792
 
14793
 
14794
 
14795
 
14796
    END IF;
14797
 
14798
 
14799
 
14800
    /* Create Patch Dependencies */
14801
    oPatchDepCollector := IN_LIST_NUMBER ( sPatchIdList );
14802
 
14803
 
14804
    -- Make sure patch is unofficial before altering its dependencies
14805
    IF (oPatchDepCollector.COUNT > 0) AND (isPatchDlocked = 'N') THEN
14806
    	-- Delete Existing Dependencies
14807
        DELETE
14808
          FROM PACKAGE_DEPENDENCIES dep
14809
         WHERE dep.PV_ID = patchPv_id;
14810
 
14811
 
14812
        -- Insert new dependencies
14813
        INSERT INTO PACKAGE_DEPENDENCIES ( PV_ID, DPV_ID, PKG_ID, DPKG_ID, BUILD_TYPE )
14814
        SELECT patchPv_id AS PV_ID,
14815
        	   pv.PV_ID AS DPV_ID,
14816
               parPkg_id AS PKG_ID,
14817
               pv.PKG_ID AS DPKG_ID,
14818
               'L' AS BUILD_TYPE
14819
          FROM PACKAGE_VERSIONS pv
14820
         WHERE pv.PV_ID IN ( SELECT * FROM TABLE ( CAST ( oPatchDepCollector AS RELMGR_NUMBER_TAB_t ) ) );
14821
 
14822
 
14823
    END IF;
14824
 
14825
 
14826
    CLOSE parent_cur;
14827
    CLOSE patch_cur;
14828
END New_Patch;
4040 dpurdie 14829
 
1374 dpurdie 14830
/
1373 dpurdie 14831
 
4040 dpurdie 14832
/
14833
--------------------------------------------------------
14834
--  DDL for Procedure NEW_UNIT_TEST
14835
--------------------------------------------------------
14836
set define off;
14837
 
3959 dpurdie 14838
  CREATE OR REPLACE PROCEDURE "NEW_UNIT_TEST" ( nPv_id IN NUMBER,
14839
                                            nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,
14840
                                            sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
14841
                                            sNumOfTest IN UNIT_TESTS.NUMOF_TEST%TYPE,
14842
                                            sDpkg_path IN VARCHAR2,
14843
                                            sResults IN VARCHAR2,
14844
                                            sCompletion_date IN VARCHAR2,
14845
                                            nCompleted_by IN NUMBER,
14846
											enumTEST_TYPE_AUTOMATIC IN NUMBER,
14847
											enumTEST_TYPE_NOT_DONE IN NUMBER,
14848
											outFileName OUT VARCHAR2
14849
                                           ) IS
14850
/* ---------------------------------------------------------------------------
14851
    Version: 3.2.0
14852
   --------------------------------------------------------------------------- */
1373 dpurdie 14853
 
3959 dpurdie 14854
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 14855
 
3959 dpurdie 14856
    newID NUMBER;
14857
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
14858
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
1373 dpurdie 14859
 
3959 dpurdie 14860
BEGIN
1373 dpurdie 14861
 
3959 dpurdie 14862
	-- Get new ID --
14863
   	SELECT SEQ_UNIT_TESTS.NEXTVAL INTO newID FROM DUAL;
1373 dpurdie 14864
 
3959 dpurdie 14865
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
14866
       	ResultsURL := sResults;
14867
       ELSE
14868
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
14869
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
14870
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
14871
           END IF;
14872
       END IF;
1373 dpurdie 14873
 
3959 dpurdie 14874
	-- Remove NOT_DONE entry if exists
14875
	DELETE FROM UNIT_TESTS
14876
	 WHERE pv_id = nPv_id
14877
	   AND test_types_fk = enumTEST_TYPE_NOT_DONE;
1373 dpurdie 14878
 
3959 dpurdie 14879
	--- Add Additional Note ---
14880
    INSERT INTO UNIT_TESTS ( TEST_ID,
14881
								PV_ID,
14882
								TEST_TYPES_FK,
14883
								TEST_SUMMARY,
14884
								COMPLETION_DATE,
14885
								COMPLETED_BY,
14886
								RESULTS_URL,
14887
								RESULTS_ATTACHMENT_NAME,
14888
								NUMOF_TEST )
14889
    VALUES (
14890
       	newID,
14891
           nPv_id,
14892
           nTestTypeId,
14893
           sTest_summary,
14894
           TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
14895
           nCompleted_by,
14896
           ResultsURL,
14897
           ResultsAttachment,
14898
		   sNumOfTest );
1373 dpurdie 14899
 
3959 dpurdie 14900
END New_Unit_Test;
4040 dpurdie 14901
 
1374 dpurdie 14902
/
1373 dpurdie 14903
 
1374 dpurdie 14904
/
4040 dpurdie 14905
--------------------------------------------------------
14906
--  DDL for Procedure OLE
14907
--------------------------------------------------------
14908
set define off;
1373 dpurdie 14909
 
3959 dpurdie 14910
  CREATE OR REPLACE PROCEDURE "OLE" 
14911
IS retval VARCHAR2(40);   
14912
BEGIN   retval := RELEASE_MANAGER.Pk_Rmapi.RETURN_WIP ( 'daf_br_applets', 2362 ) 
14913
DBMS_OUTPUT.PUT_LINE(retval);
4040 dpurdie 14914
 
3959 dpurdie 14915
/
1373 dpurdie 14916
 
4040 dpurdie 14917
/
14918
--------------------------------------------------------
14919
--  DDL for Procedure PAOLO_BUILD_TREE
14920
--------------------------------------------------------
14921
set define off;
14922
 
3959 dpurdie 14923
  CREATE OR REPLACE PROCEDURE "PAOLO_BUILD_TREE" ( nRtag_id IN NUMBER ) IS
1373 dpurdie 14924
 
3959 dpurdie 14925
    sessionNumber NUMBER := 0;
14926
    iteration NUMBER := 1; 
14927
    rowCnt NUMBER := 0;
14928
    maxIterations 	NUMBER := 50;
14929
 
1373 dpurdie 14930
BEGIN
3959 dpurdie 14931
 
14932
 
14933
    INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
14934
    SELECT sessionNumber, iteration, rc.PV_ID
14935
      FROM RELEASE_CONTENT rc
14936
     WHERE rc.RTAG_ID = nRtag_id;
14937
 
14938
    iteration := iteration + 1;
14939
    LOOP
14940
 
14941
        INSERT INTO TEMP_TREE_BROWSE ( SESSION_NUM, LEVEL_NUM, PV_ID )
14942
		SELECT sessionNumber,     
14943
               iteration,
14944
               dep.DPV_ID
14945
          FROM TEMP_TREE_BROWSE ttb,
14946
               PACKAGE_DEPENDENCIES dep
14947
         WHERE dep.PV_ID = ttb.PV_ID 
14948
           AND ttb.LEVEL_NUM = iteration - 1 
14949
 
14950
         MINUS  
14951
 
14952
        SELECT sessionNumber, iteration, ttb.PV_ID
14953
          FROM TEMP_TREE_BROWSE ttb;   
14954
 
14955
 
14956
 
14957
 
14958
		rowCnt := SQL%ROWCOUNT;
14959
		IF rowCnt > 0 THEN
14960
           iteration := iteration + 1;
14961
		END IF;
14962
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
14963
    END LOOP; 
14964
 
14965
END PAOLO_Build_Tree;
4040 dpurdie 14966
 
1374 dpurdie 14967
/
1373 dpurdie 14968
 
4040 dpurdie 14969
/
14970
--------------------------------------------------------
14971
--  DDL for Procedure REBUILD_ENVIRONMENT
14972
--------------------------------------------------------
14973
set define off;
14974
 
1373 dpurdie 14975
  CREATE OR REPLACE PROCEDURE "REBUILD_ENVIRONMENT" ( NNrtag_id IN NUMBER ) IS
14976
 
14977
/* ---------------------------------------------------------------------------
14978
    Version: 3.3
14979
   --------------------------------------------------------------------------- */
14980
    rowCnt NUMBER := 0;
14981
    iteration NUMBER := 2;          -- Iterations counter
14982
    maxIterations NUMBER := 50;    -- Maximum number of iterations allowed.
14983
                                    -- This will prevent infinite loops if cyrcular dependencies are found
14984
    sessionNum NUMBER;
14985
BEGIN
14986
    SELECT SEQ_session_num.nextval INTO sessionNum FROM DUAL;
14987
 
14988
 
14989
    -- Redo Patch Ignore warnings
14990
    Ignore_Dependency_Warnings ( NNrtag_id, NULL, NULL, TRUE );
14991
 
14992
 
14993
    Level_One_Conflicts ( NNrtag_id, sessionNum );
14994
 
14995
    LOOP
14996
        Level_N_Conflicts ( NNrtag_id, sessionNum, rowCnt, iteration );
14997
        iteration := iteration + 1;
14998
        EXIT WHEN (rowCnt < 1) OR (iteration > maxIterations);
14999
    END LOOP;
15000
 
15001
    Update_Package_States ( NNrtag_id, sessionNum );
15002
 
15003
    DELETE FROM temp_env_states WHERE temp_env_states.session_num = sessionNum;
15004
 
15005
    -- Flag Packages with New Patches Available
15006
    Check_New_Patches ( NNrtag_id );
15007
 
15008
	Clean_Do_Not_Ripple( NNrtag_id );
15009
 
15010
 
15011
	/* Circular Dependency Flag */
15012
    /*
15013
	IF iteration > maxIterations
15014
	THEN
15015
		UPDATE release_tags SET
15016
		   	   circular_dependency = 'Y'
15017
		 WHERE rtag_id = NNrtag_id;
15018
	ELSE
15019
		UPDATE release_tags SET
15020
		   	   circular_dependency = NULL
15021
		 WHERE rtag_id = NNrtag_id;
15022
	END IF;
15023
    */
15024
END Rebuild_Environment;
4040 dpurdie 15025
 
1374 dpurdie 15026
/
1373 dpurdie 15027
 
4040 dpurdie 15028
/
15029
--------------------------------------------------------
15030
--  DDL for Procedure RELEASE_MANAGER_MAILOUT
15031
--------------------------------------------------------
15032
set define off;
15033
 
3959 dpurdie 15034
  CREATE OR REPLACE PROCEDURE "RELEASE_MANAGER_MAILOUT" (
15035
  sender      IN VARCHAR2,
15036
  recipient   IN VARCHAR2,
15037
  ccrecipient IN VARCHAR2,
15038
  subject     IN VARCHAR2,
15039
  message     IN VARCHAR2
15040
  ) IS
15041
 
15042
  crlf VARCHAR2(2):= UTL_TCP.CRLF;
15043
  connection utl_smtp.connection;
15044
  mailhost VARCHAR2(30) := 'aupera03.aupera.erggroup.com';
15045
  header VARCHAR2(1000);
15046
 
15047
BEGIN
15048
 
15049
  --
15050
  -- Start the connection.
15051
  --
15052
  connection := utl_smtp.open_connection(mailhost,25);
15053
 
15054
  header:= 'Date: '||TO_CHAR(SYSDATE,'dd Mon yy hh24:mi:ss')||crlf||
15055
     'From: '||sender||''||crlf||
15056
  'Subject: '||subject||crlf||
15057
       'To: '||recipient||crlf||
15058
       'CC: '||ccrecipient;
15059
 
15060
  --
15061
  -- Handshake with the SMTP server
15062
  --
15063
  utl_smtp.helo(connection, mailhost);
15064
  utl_smtp.mail(connection, sender);
15065
  utl_smtp.rcpt(connection, recipient);
15066
  utl_smtp.rcpt(connection, ccrecipient);
15067
  utl_smtp.open_data(connection);
15068
  --
15069
  -- Write the header
15070
  --
15071
  utl_smtp.write_data(connection, header);
15072
  --
15073
  -- The crlf is required to distinguish that what comes next is not simply part of the header..
15074
  --
15075
  utl_smtp.write_data(connection, crlf ||message);
15076
  utl_smtp.close_data(connection);
15077
  utl_smtp.quit(connection);
15078
 
15079
EXCEPTION
15080
  WHEN UTL_SMTP.INVALID_OPERATION THEN
15081
    dbms_output.put_line(' Invalid Operation in SMTP transaction.');
15082
  WHEN UTL_SMTP.TRANSIENT_ERROR THEN
15083
    dbms_output.put_line(' Temporary problems with sending email - try again later.');
15084
  WHEN UTL_SMTP.PERMANENT_ERROR THEN
15085
    dbms_output.put_line(' Errors in code for SMTP transaction.');
15086
 
15087
END RELEASE_MANAGER_MAILOUT;
4040 dpurdie 15088
 
3959 dpurdie 15089
/
15090
 
4040 dpurdie 15091
/
15092
--------------------------------------------------------
15093
--  DDL for Procedure REMOVE_COMPONENTS
15094
--------------------------------------------------------
15095
set define off;
15096
 
3959 dpurdie 15097
  CREATE OR REPLACE PROCEDURE "REMOVE_COMPONENTS" ( nPvId IN RELEASE_COMPONENTS.PV_ID%TYPE ) IS
15098
/* ---------------------------------------------------------------------------
15099
    Version: 3.0.0
15100
   --------------------------------------------------------------------------- */
15101
 
15102
 
15103
BEGIN
15104
 
15105
	 --- Delete From RELEASE_COMPONENTS
15106
	 DELETE FROM RELEASE_COMPONENTS
15107
	 WHERE PV_ID = nPvId;
15108
 
15109
END Remove_Components;
4040 dpurdie 15110
 
3959 dpurdie 15111
/
15112
 
4040 dpurdie 15113
/
15114
--------------------------------------------------------
15115
--  DDL for Procedure REMOVE_DOCUMENT
15116
--------------------------------------------------------
15117
set define off;
15118
 
3959 dpurdie 15119
  CREATE OR REPLACE PROCEDURE "REMOVE_DOCUMENT" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15120
											  nDocId IN PACKAGE_DOCUMENTS.DOC_ID%TYPE,
15121
                                              nUserId IN NUMBER ) IS
15122
/* ---------------------------------------------------------------------------
15123
    Version: 3.0
15124
   --------------------------------------------------------------------------- */
15125
 
15126
   DocNumber PACKAGE_DOCUMENTS.DOC_NUM%TYPE;
15127
 
15128
BEGIN
15129
 
15130
	-- Get Doc Num
15131
    SELECT pd.DOC_NUM INTO DocNumber
15132
      FROM PACKAGE_DOCUMENTS pd
15133
     WHERE pd.PV_ID = nPvId
15134
       AND pd.DOC_ID = nDocId;
15135
 
15136
 
15137
	-- Delete Document
15138
    DELETE
15139
      FROM PACKAGE_DOCUMENTS pd
15140
     WHERE pd.PV_ID = nPvId
15141
       AND pd.DOC_ID = nDocId;
15142
 
15143
 
15144
    /* LOG ACTION */
15145
   	Log_Action ( nPvId, 'document_remove', nUserId,
15146
   			     'Document number: '|| DocNumber );
15147
 
15148
 
15149
END Remove_Document;
4040 dpurdie 15150
 
3959 dpurdie 15151
/
15152
 
4040 dpurdie 15153
/
15154
--------------------------------------------------------
15155
--  DDL for Procedure REMOVE_PACKAGE_INTEREST
15156
--------------------------------------------------------
15157
set define off;
15158
 
3959 dpurdie 15159
  CREATE OR REPLACE PROCEDURE "REMOVE_PACKAGE_INTEREST" (nProjId IN PROJECTS.PROJ_ID%TYPE,
15160
	   	  		  								  	nPkgId IN PACKAGES.PKG_ID%TYPE,
15161
												  	nUserId IN NUMBER
15162
	   	  		  									) IS
15163
 
1373 dpurdie 15164
/******************************************************************************
3959 dpurdie 15165
   NAME:       REMOVE_PACKAGE_INTEREST
15166
   PURPOSE:    To remove interest in a given package per project
1373 dpurdie 15167
 
15168
   REVISIONS:
15169
   Ver        Date        Author           Description
15170
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 15171
   1.0        12/05/2006  Rupesh Solanki      1. Created this procedure.
1373 dpurdie 15172
 
15173
   NOTES:
15174
 
15175
   Automatically available Auto Replace Keywords:
3959 dpurdie 15176
      Object Name:     REMOVE_PACKAGE_INTEREST
15177
      Sysdate:         12/05/2006
15178
      Date and Time:   12/05/2006, 11:28:50 AM, and 12/05/2006 11:28:50 AM
1373 dpurdie 15179
      Username:         (set in TOAD Options, Procedure Editor)
15180
      Table Name:       (set in the "New PL/SQL Object" dialog)
15181
 
15182
******************************************************************************/
15183
BEGIN
15184
 
3959 dpurdie 15185
	 --Delete from PACKAGE_INTEREST
15186
	 DELETE FROM PACKAGE_INTEREST
15187
	 WHERE PROJ_ID = nProjId
15188
	 AND PKG_ID = nPkgId
15189
	 AND USER_ID = nUserId;
15190
 
15191
END REMOVE_PACKAGE_INTEREST;
4040 dpurdie 15192
 
1374 dpurdie 15193
/
1373 dpurdie 15194
 
4040 dpurdie 15195
/
15196
--------------------------------------------------------
15197
--  DDL for Procedure REMOVE_PATCH
15198
--------------------------------------------------------
15199
set define off;
15200
 
3959 dpurdie 15201
  CREATE OR REPLACE PROCEDURE "REMOVE_PATCH" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
15202
										   nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
15203
                                           nUserId IN NUMBER ) IS
1373 dpurdie 15204
/* ---------------------------------------------------------------------------
3959 dpurdie 15205
    Version: 4.0
1373 dpurdie 15206
   --------------------------------------------------------------------------- */
15207
 
3959 dpurdie 15208
PatchVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
1373 dpurdie 15209
 
3959 dpurdie 15210
CURSOR curPatch IS
15211
	SELECT pp.PV_ID,
15212
		   pp.PATCH_ID,
15213
	       ROWNUM AS NEW_INSTALL_ORDER
15214
	  FROM PACKAGE_PATCHES pp
15215
	 WHERE pp.PV_ID = nPvId
15216
	ORDER BY pp.INSTALL_ORDER;
15217
recPatch curPatch%ROWTYPE;
15218
 
1373 dpurdie 15219
BEGIN
15220
 
3959 dpurdie 15221
	 -- Delete Patch
15222
     DELETE
15223
       FROM PACKAGE_PATCHES pp
15224
      WHERE pp.PV_ID = nPvId
15225
        AND pp.PATCH_ID = nPatchId;
1373 dpurdie 15226
 
15227
 
3959 dpurdie 15228
	-- Redo Install Order
15229
    OPEN curPatch;
15230
	FETCH curPatch INTO recPatch;
15231
 
15232
	WHILE curPatch%FOUND
15233
	LOOP
15234
 
15235
		UPDATE PACKAGE_PATCHES pp SET
15236
			pp.INSTALL_ORDER = recPatch.NEW_INSTALL_ORDER
15237
		WHERE pp.PV_ID = nPvId
15238
		  AND pp.PATCH_ID = recPatch.PATCH_ID;
15239
 
15240
		FETCH curPatch INTO recPatch;
15241
	END LOOP;
15242
 
15243
	CLOSE curPatch;
15244
 
15245
 
15246
 
15247
 
15248
    /* LOG ACTION */
15249
    SELECT pv.PKG_VERSION INTO PatchVersion
1373 dpurdie 15250
      FROM PACKAGE_VERSIONS pv
3959 dpurdie 15251
     WHERE pv.PV_ID = nPatchId;
1373 dpurdie 15252
 
3959 dpurdie 15253
   	Log_Action ( nPvId, 'patch_remove', nUserId,
15254
   			     'Version: '|| PatchVersion );
1373 dpurdie 15255
 
3959 dpurdie 15256
END Remove_Patch;
4040 dpurdie 15257
 
1374 dpurdie 15258
/
1373 dpurdie 15259
 
4040 dpurdie 15260
/
15261
--------------------------------------------------------
15262
--  DDL for Procedure REMOVE_PROJECT_VIEW_OWNER
15263
--------------------------------------------------------
15264
set define off;
15265
 
3959 dpurdie 15266
  CREATE OR REPLACE PROCEDURE "REMOVE_PROJECT_VIEW_OWNER" (nProjId IN NUMBER,
15267
	   	  		  						 			  nViewId IN NUMBER,
15268
										 			  sUserIdList IN VARCHAR2,
15269
										 			  nUserId IN NUMBER ) IS
1373 dpurdie 15270
 
3959 dpurdie 15271
GroupId NUMBER;													  
15272
 
15273
 
15274
 
1373 dpurdie 15275
/******************************************************************************
3959 dpurdie 15276
   NAME:       UPDATE_VIEW
15277
   PURPOSE:    
1373 dpurdie 15278
 
15279
   REVISIONS:
3959 dpurdie 15280
   Ver        Date        Author           		Description
1373 dpurdie 15281
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 15282
   1.0        10/04/2006     Rupesh Solanki     1. Created this procedure.
1373 dpurdie 15283
 
15284
   NOTES:
15285
 
15286
   Automatically available Auto Replace Keywords:
3959 dpurdie 15287
      Object Name:     UPDATE_VIEW
15288
      Sysdate:         10/04/2006
15289
      Date and Time:   10/04/2006, 1:55:19 PM, and 10/04/2006 1:55:19 PM
1373 dpurdie 15290
      Username:         (set in TOAD Options, Procedure Editor)
15291
      Table Name:       (set in the "New PL/SQL Object" dialog)
15292
 
15293
******************************************************************************/
15294
 
15295
BEGIN
3959 dpurdie 15296
	 SELECT GROUP_EMAIL_ID into GroupId
15297
	 FROM AUTOBUILD_FAILURE
15298
	 WHERE PROJ_ID = nProjId
15299
	 AND VIEW_ID = nViewId;
15300
 
15301
	 DELETE FROM MEMBERS_GROUP
15302
	 WHERE GROUP_EMAIL_ID = GroupId
15303
	 AND USER_ID IN (
15304
	 SELECT * FROM THE ( SELECT CAST( IN_LIST_NUMBER( sUserIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual ) 
15305
	 );
15306
 
1373 dpurdie 15307
 
3959 dpurdie 15308
 
15309
END REMOVE_PROJECT_VIEW_OWNER;
4040 dpurdie 15310
 
3959 dpurdie 15311
/
1373 dpurdie 15312
 
4040 dpurdie 15313
/
15314
--------------------------------------------------------
15315
--  DDL for Procedure REMOVE_RELEASE_CONTENT
15316
--------------------------------------------------------
15317
set define off;
15318
 
3959 dpurdie 15319
  CREATE OR REPLACE PROCEDURE "REMOVE_RELEASE_CONTENT" ( sPvIdList IN VARCHAR2,
15320
													 sNotPvIdList IN VARCHAR2,
15321
                                                     nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
15322
/* ---------------------------------------------------------------------------
15323
    Version: 3.0
15324
   --------------------------------------------------------------------------- */
1373 dpurdie 15325
 
3959 dpurdie 15326
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
15327
oNotPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
1373 dpurdie 15328
 
3959 dpurdie 15329
BEGIN
15330
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
15331
    oNotPvIdCollector := IN_LIST_NUMBER ( sNotPvIdList );
15332
 
15333
    -- Delete From Release Content
15334
    DELETE
15335
      FROM RELEASE_CONTENT
15336
	 WHERE rtag_id = nRTagId
15337
	   AND pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
15338
	   AND NOT pv_id IN ( SELECT * FROM TABLE ( CAST ( oNotPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
15339
 
15340
 
15341
 
15342
END Remove_Release_Content;
4040 dpurdie 15343
 
1374 dpurdie 15344
/
3959 dpurdie 15345
 
4040 dpurdie 15346
/
15347
--------------------------------------------------------
15348
--  DDL for Procedure REMOVE_RUNTIME
15349
--------------------------------------------------------
15350
set define off;
15351
 
3959 dpurdie 15352
  CREATE OR REPLACE PROCEDURE "REMOVE_RUNTIME" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
15353
											 nRuntimeId IN RUNTIME_DEPENDENCIES.RTD_ID%TYPE,
15354
                                             nUserId IN NUMBER ) IS
15355
/* ---------------------------------------------------------------------------
15356
    Version: 3.0
15357
   --------------------------------------------------------------------------- */
15358
 
15359
   RuntimeDependency VARCHAR2(4000);
15360
 
15361
BEGIN
15362
 
15363
	-- Get Runtime dependency
15364
    SELECT pkg.PKG_NAME ||' '|| pv.PKG_VERSION  INTO RuntimeDependency
15365
	  FROM RUNTIME_DEPENDENCIES rtd,
15366
	  	   PACKAGES pkg,
15367
	       PACKAGE_VERSIONS pv
15368
	 WHERE rtd.PV_ID = nPvId
15369
	   AND pv.PKG_ID = pkg.PKG_ID
15370
	   AND rtd.RTD_ID = pv.PV_ID
15371
	   AND rtd.RTD_ID = nRuntimeId;
15372
 
15373
 
15374
	-- Delete Document
15375
    DELETE
15376
      FROM RUNTIME_DEPENDENCIES rtd
15377
     WHERE rtd.PV_ID = nPvId
15378
       AND rtd.RTD_ID = nRuntimeId;
15379
 
15380
 
15381
    /* LOG ACTION */
15382
   	Log_Action ( nPvId, 'runtime_remove', nUserId,
15383
   			     'Runtime package: '|| RuntimeDependency );
15384
 
15385
 
15386
END Remove_Runtime;
4040 dpurdie 15387
 
3959 dpurdie 15388
/
15389
 
4040 dpurdie 15390
/
15391
--------------------------------------------------------
15392
--  DDL for Procedure RENAME_PACKAGE_VERSION
15393
--------------------------------------------------------
15394
set define off;
15395
 
3959 dpurdie 15396
  CREATE OR REPLACE PROCEDURE "RENAME_PACKAGE_VERSION" ( NNpv_id IN NUMBER,
4211 dpurdie 15397
                                  SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15398
                                  cBuildType IN CHAR,
15399
                                  cChangeType IN CHAR,
15400
                                  NNuser_id IN NUMBER,
15401
                                  errMessage OUT VARCHAR2 ) IS
3959 dpurdie 15402
/* ---------------------------------------------------------------------------
15403
    Version: 3.2
15404
   --------------------------------------------------------------------------- */
15405
 
15406
    sPackageVersion VARCHAR2(4000);
4211 dpurdie 15407
    sLabel VARCHAR2(4000) := NULL;
15408
    sChangeType VARCHAR2(100) := NULL;
15409
    uChangeType CHAR := cChangeType;
3959 dpurdie 15410
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;
15411
 
15412
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
15413
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
15414
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
15415
 
15416
    CURSOR package_versions_cur IS
15417
        SELECT pv_id
4211 dpurdie 15418
          FROM package_versions
15419
         WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
15420
           AND pkg_version = SSpkg_version;
3959 dpurdie 15421
    package_versions_rec package_versions_cur%ROWTYPE;
15422
 
15423
 
15424
BEGIN
15425
 
15426
    /* ---------------------------------------------------- */
15427
    /* Find if package_version exists                       */
15428
    /* ---------------------------------------------------- */
15429
 
4211 dpurdie 15430
    errMessage := NULL;
3959 dpurdie 15431
 
4211 dpurdie 15432
    -- Get previous version
15433
    SELECT pv.PKG_VERSION INTO OldPkgVersion
3959 dpurdie 15434
      FROM PACKAGE_VERSIONS pv
15435
     WHERE pv.PV_ID = NNpv_id;
15436
 
4211 dpurdie 15437
    sPackageVersion := SSpkg_version;
3959 dpurdie 15438
 
4211 dpurdie 15439
    IF OldPkgVersion != sPackageVersion THEN
3959 dpurdie 15440
 
4211 dpurdie 15441
        OPEN package_versions_cur;
15442
        FETCH package_versions_cur INTO package_versions_rec;
3959 dpurdie 15443
 
4211 dpurdie 15444
        IF package_versions_cur%NOTFOUND
15445
        THEN
3959 dpurdie 15446
 
4211 dpurdie 15447
            -- Split current version in parts
15448
            Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
3959 dpurdie 15449
 
15450
 
4211 dpurdie 15451
                -- Automated built config
15452
                IF ( cBuildType = 'M' ) THEN
15453
                    uChangeType := 'F';
15454
                END IF;  
15455
 
15456
                -- Automated version numbering
15457
                -- Make sure that version is still unique
15458
                IF (uChangeType != 'F') THEN
15459
                    sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;
15460
                END IF;
3959 dpurdie 15461
 
4211 dpurdie 15462
                -- Packge version not found, hence rename it.
15463
                UPDATE package_versions
15464
                   SET pkg_version = sPackageVersion,
15465
                       v_mm = SSV_MM,
15466
                       v_nmm = SSV_NMM,
15467
                       v_ext = SSV_EXT,
15468
                       modified_stamp = ORA_SYSDATETIME,
15469
                       modifier_id = NNuser_id,
15470
                       build_type = cBuildType,
15471
                       change_type = uChangeType,
15472
                       pkg_label = NULL
15473
                 WHERE pv_id = NNpv_id;
15474
 
15475
                sLabel := GET_AUTOMATED_LABEL( NNpv_id );
15476
                UPDATE PACKAGE_VERSIONS pv SET
15477
                    pv.PKG_LABEL = sLabel
15478
                WHERE pv_id = NNpv_id;
3959 dpurdie 15479
 
15480
 
4211 dpurdie 15481
              /* LOG ACTION */
15482
              IF (cChangeType = 'F') THEN
15483
                  Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| sPackageVersion );
15484
              ELSE 
15485
 
15486
                  IF cChangeType = 'M' THEN
15487
                    sChangeType := 'Major Change';
15488
                  ELSIF cChangeType = 'N' THEN 
15489
                    sChangeType := 'Minor Change';
15490
                  ELSIF cChangeType = 'P' THEN 
15491
                    sChangeType := 'Patch Change';
15492
                  ELSE
15493
                    sChangeType := 'Unknown Change';
15494
                  END IF;
3959 dpurdie 15495
 
4211 dpurdie 15496
                  Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| sPackageVersion || ',' || sChangeType );
15497
              END IF;
3959 dpurdie 15498
 
4211 dpurdie 15499
        ELSE
15500
            -- Package version exists. Cannot proceed.
15501
            errMessage := 'enum_MSG_VERSION_EXISTS';
3959 dpurdie 15502
 
4211 dpurdie 15503
        END IF;
3959 dpurdie 15504
 
4211 dpurdie 15505
        CLOSE package_versions_cur;
3959 dpurdie 15506
 
4211 dpurdie 15507
    END IF;
3959 dpurdie 15508
 
15509
END Rename_Package_Version;
4040 dpurdie 15510
 
3959 dpurdie 15511
/
15512
 
4040 dpurdie 15513
/
15514
--------------------------------------------------------
15515
--  DDL for Procedure RESET_IGNORE_WARNINGS
15516
--------------------------------------------------------
15517
set define off;
15518
 
3959 dpurdie 15519
  CREATE OR REPLACE PROCEDURE "RESET_IGNORE_WARNINGS" ( sPvIdList IN VARCHAR2,
15520
                                                    nRTagId IN RELEASE_CONTENT.RTAG_ID%TYPE ) IS
15521
/* ---------------------------------------------------------------------------
15522
    Version: 5.0
15523
   --------------------------------------------------------------------------- */
15524
 
15525
oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
15526
 
15527
BEGIN
15528
	oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
15529
 
15530
    -- Remove Ignore Warnings
15531
     DELETE
15532
       FROM ignore_warnings
15533
	  WHERE (rtag_id, pv_id, dpv_id) IN
15534
	     (
15535
	      SELECT igw.rtag_id, igw.pv_id, igw.dpv_id
15536
	        FROM ignore_warnings igw,
15537
	             package_versions dpv,
15538
	             package_versions pv
15539
	       WHERE igw.dpv_id = dpv.pv_id
15540
	         AND igw.rtag_id = nRTagId
15541
	         AND dpv.pkg_id = pv.pkg_id
15542
	         AND NVL(dpv.v_ext,'|LINK_A_NULL|') = NVL(pv.v_ext,'|LINK_A_NULL|')
15543
	         AND pv.pv_id IN ( SELECT * FROM TABLE ( CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t ) ) )
15544
         );
15545
 
15546
END Reset_Ignore_Warnings;
4040 dpurdie 15547
 
3959 dpurdie 15548
/
15549
 
4040 dpurdie 15550
/
15551
--------------------------------------------------------
15552
--  DDL for Procedure RIPPLE_PACKAGE
15553
--------------------------------------------------------
15554
set define off;
15555
 
3959 dpurdie 15556
  CREATE OR REPLACE PROCEDURE "RIPPLE_PACKAGE" (
15557
        sPvIdList IN VARCHAR2,
15558
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
15559
        nUserId IN NUMBER
15560
    ) IS
15561
/* ---------------------------------------------------------------------------
15562
    Version: 4.1
15563
   --------------------------------------------------------------------------- */
15564
 
15565
BEGIN
15566
 
15567
    IF (sPvIdList IS NULL) THEN
15568
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
15569
    END IF;
15570
 
15571
    -- Ripple Package
15572
    DELETE FROM DO_NOT_RIPPLE
15573
    WHERE RTAG_ID = nRtagId
15574
    AND PV_ID IN (
15575
        SELECT *
15576
        FROM THE (
15577
            SELECT CAST( IN_LIST_NUMBER( sPvIdList )
15578
            AS RELMGR_NUMBER_TAB_t )
15579
            FROM DUAL
15580
        )
15581
    );
15582
 
15583
    /* LOG ACTION */
15584
    Log_Action_Bulk ( sPvIdList, 'ripple_package', nUserId );
15585
 
15586
END Ripple_Package;
4040 dpurdie 15587
 
3959 dpurdie 15588
/
15589
 
4040 dpurdie 15590
/
15591
--------------------------------------------------------
15592
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS
15593
--------------------------------------------------------
15594
set define off;
15595
 
15596
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
3959 dpurdie 15597
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15598
                                                          NNuser_id IN NUMBER,
15599
                                                          retPV_ID OUT NUMBER,
15600
                                                          nCloneFromPvId IN NUMBER DEFAULT NULL,
15601
                                                          nBuildType IN CHAR DEFAULT 'M',
15602
                                                          nChangeType IN CHAR DEFAULT 'F') IS
15603
/* ---------------------------------------------------------------------------
15604
    Version: 4.0
15605
   --------------------------------------------------------------------------- */
15606
 
15607
    parPkg_id   NUMBER;
15608
    parPv_id    NUMBER;
15609
    cloneFrom_pv_id NUMBER;
15610
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
15611
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
15612
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
15613
    spackageversion VARCHAR2 (4000);
4211 dpurdie 15614
    slabel VARCHAR2 (4000) := NULL;
3959 dpurdie 15615
 
15616
    CURSOR packages_cur IS
15617
        SELECT pkg_id FROM PACKAGES
15618
        WHERE pkg_name = SSpkg_name;
15619
    packages_rec packages_cur%ROWTYPE;
15620
 
15621
    CURSOR package_versions_cur IS
15622
        SELECT pv_id FROM PACKAGE_VERSIONS
15623
        WHERE pkg_id = parPkg_id
15624
        AND pkg_version = SSpkg_version;
15625
    package_versions_rec package_versions_cur%ROWTYPE;
15626
 
15627
    CURSOR clone_package_versions_cur IS
15628
        SELECT MAX(pv_id) AS pv_id
15629
          FROM PACKAGE_VERSIONS
15630
         WHERE pkg_id = parPkg_id
15631
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
15632
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
15633
 
15634
BEGIN
15635
    /* -------------------------------------------- */
15636
    /* Find if pkg_name exists and seed if required */
15637
    /* -------------------------------------------- */
15638
    OPEN packages_cur;
15639
    FETCH packages_cur INTO packages_rec;
15640
 
15641
    IF packages_cur%NOTFOUND
15642
    THEN
15643
        /* INSERT into packages table */
15644
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
15645
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
15646
 
15647
    ELSE
15648
        parPkg_id := packages_rec.pkg_id;
15649
 
15650
    END IF;
15651
 
15652
    CLOSE packages_cur;
15653
 
15654
 
15655
    /* ---------------------------------------------------- */
15656
    /* Find if package_version exists and seed if required  */
15657
    /* ---------------------------------------------------- */
15658
    OPEN package_versions_cur;
15659
    FETCH package_versions_cur INTO package_versions_rec;
15660
 
15661
    IF package_versions_cur%NOTFOUND
15662
    THEN
15663
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
15664
 
15665
        /* Generate automated version Number */
15666
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
15667
        spackageversion := SSpkg_version;
15668
 
4211 dpurdie 15669
        IF ( nChangeType <> 'F' )
3959 dpurdie 15670
        THEN
15671
            spackageversion := '(' || parPv_id || ')' || SSV_EXT;
15672
        END If;
15673
 
15674
        /* LOG ACTION */
15675
        Log_Action ( parPv_id, 'new_version', NNuser_id,
15676
                     'New package version: '|| spackageversion );
15677
 
15678
 
15679
        /* Find similar pkg_name + ext to clone from */
15680
        OPEN clone_package_versions_cur;
15681
        FETCH clone_package_versions_cur INTO clone_package_versions_rec;
15682
 
15683
 
15684
        IF NOT clone_package_versions_rec.pv_id IS NULL
15685
        THEN
15686
            /* CLONE details from similar version  OR  from nCloneFromPvId */
15687
            IF ( NOT nCloneFromPvId IS NULL) THEN
15688
                cloneFrom_pv_id := nCloneFromPvId;
15689
            ELSE
15690
                cloneFrom_pv_id := clone_package_versions_rec.pv_id;
15691
            END IF;
15692
 
15693
            -- Clone Package Version Details --
15694
            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,
15695
                                           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  )
15696
                SELECT parPv_id         AS pv_id,
15697
                       parPkg_id        AS pkg_id,
15698
                       spackageversion  AS pkg_version,
15699
                       'N'              AS dlocked,
15700
                       Ora_Sysdate      AS created_stamp,
15701
                       NNuser_id        AS creator_id,
15702
                       Ora_Sysdatetime  AS modified_stamp,
15703
                       NNuser_id        AS modifier_id,
15704
                       SSV_MM           AS V_MM,
15705
                       SSV_NMM          AS V_NMM,
15706
                       SSV_EXT          AS V_EXT,
15707
                       pv.src_path,
15708
                       pv.pv_description,
15709
                       pv.PV_OVERVIEW,
15710
                       cloneFrom_pv_id  AS LAST_PV_ID,
15711
                       pv.owner_id,
15712
                       nBuildType       AS BUILD_TYPE,
15713
                       pv.IS_BUILD_ENV_REQUIRED,
15714
                       pv.BS_ID,
15715
                       pv.is_autobuildable,
15716
                       pv.IS_DEPLOYABLE, 
15717
                       pv.ripple_field,
15718
                       nChangeType       AS change_type
15719
                  FROM PACKAGE_VERSIONS pv
15720
                 WHERE pv.pv_id = cloneFrom_pv_id;
15721
 
15722
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
15723
 
15724
        ELSE
15725
            /* BRAND NEW version + ext */
15726
            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 )
15727
            VALUES (
15728
                    parPv_id,
15729
                    parPkg_id,
15730
                    spackageversion,
15731
                    'N',
15732
                    Ora_Sysdate,
15733
                    NNuser_id,
15734
                    Ora_Sysdatetime,
15735
                    NNuser_id,
15736
                    SSV_MM,
15737
                    SSV_NMM,
15738
                    SSV_EXT,
15739
                    NNuser_id,
15740
                    parPv_id,
15741
                    nBuildType,
15742
                    'b',
15743
                    nChangeType
15744
                   );
15745
 
15746
        END IF;
15747
 
4211 dpurdie 15748
        /* Insert initial package label */
15749
        slabel := get_automated_label (parPv_id);
15750
        UPDATE package_versions pv
15751
        SET pv.pkg_label = slabel
15752
        WHERE pv.pv_id = parPv_id;
15753
 
3959 dpurdie 15754
        CLOSE clone_package_versions_cur;
15755
        retPV_ID := parPv_id;
15756
 
15757
    ELSE
15758
        retPV_ID := package_versions_rec.pv_id;
15759
 
15760
    END IF;
15761
 
15762
    CLOSE package_versions_cur;
15763
 
15764
END Seed_Package_Names_Versions;
4040 dpurdie 15765
 
3959 dpurdie 15766
/
15767
 
4040 dpurdie 15768
/
15769
--------------------------------------------------------
15770
--  DDL for Procedure SEED_PACKAGE_NAMES_VERSIONS2
15771
--------------------------------------------------------
15772
set define off;
1373 dpurdie 15773
 
15774
  CREATE OR REPLACE PROCEDURE "SEED_PACKAGE_NAMES_VERSIONS2" ( SSpkg_name IN PACKAGES.pkg_name%TYPE,
15775
                                                          SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
15776
                                                          NNuser_id IN NUMBER,
15777
                                                          retPV_ID OUT NUMBER,
15778
														  nCloneFromPvId IN NUMBER DEFAULT NULL ) IS
15779
/* ---------------------------------------------------------------------------
15780
    Version: 4.0
15781
   --------------------------------------------------------------------------- */
15782
 
15783
    parPkg_id   NUMBER;
15784
    parPv_id    NUMBER;
15785
    cloneFrom_pv_id NUMBER;
15786
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
15787
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
15788
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
15789
 
15790
    CURSOR packages_cur IS
15791
        SELECT pkg_id FROM PACKAGES
15792
        WHERE pkg_name = SSpkg_name;
15793
    packages_rec packages_cur%ROWTYPE;
15794
 
15795
    CURSOR package_versions_cur IS
15796
        SELECT pv_id FROM PACKAGE_VERSIONS
15797
        WHERE pkg_id = parPkg_id
15798
        AND pkg_version = SSpkg_version;
15799
    package_versions_rec package_versions_cur%ROWTYPE;
15800
 
15801
    CURSOR clone_package_versions_cur IS
15802
        SELECT MAX(pv_id) AS pv_id
15803
          FROM PACKAGE_VERSIONS
15804
         WHERE pkg_id = parPkg_id
15805
           AND NVL(v_ext,'LINK_A_NULL') = NVL(SSV_EXT,'LINK_A_NULL');
15806
    clone_package_versions_rec clone_package_versions_cur%ROWTYPE;
15807
 
15808
BEGIN
15809
    /* -------------------------------------------- */
15810
    /* Find if pkg_name exists and seed if required */
15811
    /* -------------------------------------------- */
15812
    OPEN packages_cur;
15813
    FETCH packages_cur INTO packages_rec;
15814
 
15815
    IF packages_cur%NOTFOUND
15816
    THEN
15817
        /* INSERT into packages table */
15818
        SELECT SEQ_PKG_ID.NEXTVAL INTO parPkg_id FROM DUAL;
15819
        INSERT INTO PACKAGES ( pkg_id, pkg_name ) VALUES ( parPkg_id, SSpkg_name );
15820
 
15821
    ELSE
15822
        parPkg_id := packages_rec.pkg_id;
15823
 
15824
    END IF;
15825
 
15826
    CLOSE packages_cur;
15827
 
15828
 
15829
 
15830
    /* ---------------------------------------------------- */
15831
    /* Find if package_version exists and seed if required  */
15832
    /* ---------------------------------------------------- */
15833
    OPEN package_versions_cur;
15834
    FETCH package_versions_cur INTO package_versions_rec;
15835
 
15836
    IF package_versions_cur%NOTFOUND
15837
    THEN
15838
        SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
15839
 
15840
        /* LOG ACTION */
15841
        Log_Action ( parPv_id, 'new_version', NNuser_id,
15842
        			 'New package version: '|| SSpkg_version );
15843
 
15844
        Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );
15845
 
15846
 
15847
 
15848
 
15849
 
15850
            /* CLONE details from similar version  OR  from nCloneFromPvId */
15851
			IF ( NOT nCloneFromPvId IS NULL) THEN
15852
            	cloneFrom_pv_id := nCloneFromPvId;
15853
			ELSE
15854
				cloneFrom_pv_id := clone_package_versions_rec.pv_id;
15855
			END IF;
15856
 
15857
            -- Clone Package Version Details --
15858
            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,
15859
                                           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 )
15860
                SELECT parPv_id         AS pv_id,
15861
                       parPkg_id        AS pkg_id,
15862
                       SSpkg_version    AS pkg_version,
15863
                       'N'              AS dlocked,
15864
                       Ora_Sysdate      AS created_stamp,
15865
                       NNuser_id        AS creator_id,
15866
                       Ora_Sysdatetime  AS modified_stamp,
15867
                       NNuser_id        AS modifier_id,
15868
                       SSV_MM           AS V_MM,
15869
                       SSV_NMM          AS V_NMM,
15870
                       SSV_EXT          AS V_EXT,
15871
                       pv.src_path,
15872
                       pv.pv_description,
15873
                       pv.PV_OVERVIEW,
15874
                       cloneFrom_pv_id 	AS LAST_PV_ID,
15875
                       pv.owner_id,
15876
					   pv.BUILD_TYPE,
15877
					   pv.IS_BUILD_ENV_REQUIRED,
15878
					   pv.bs_id,
15879
					   pv.is_autobuildable,
15880
					   pv.IS_DEPLOYABLE,
15881
					   pv.ripple_field
15882
                  FROM PACKAGE_VERSIONS pv
15883
                 WHERE pv.pv_id = cloneFrom_pv_id;
15884
 
15885
            Basic_Clone ( cloneFrom_pv_id, parPv_id, NULL, NNuser_id, parPkg_id, 0 );
15886
 
15887
        retPV_ID := parPv_id;
15888
 
15889
    ELSE
15890
        retPV_ID := package_versions_rec.pv_id;
15891
 
15892
    END IF;
15893
 
15894
    CLOSE package_versions_cur;
15895
 
15896
 
15897
 
15898
 
15899
END Seed_Package_Names_Versions2;
4040 dpurdie 15900
 
1374 dpurdie 15901
/
1373 dpurdie 15902
 
4040 dpurdie 15903
/
15904
--------------------------------------------------------
15905
--  DDL for Procedure SET_ADVISORY_RIPPLE
15906
--------------------------------------------------------
15907
set define off;
15908
 
3959 dpurdie 15909
  CREATE OR REPLACE PROCEDURE "SET_ADVISORY_RIPPLE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
1373 dpurdie 15910
	   	  		  							   nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
15911
											 nUserId IN NUMBER ) IS
15912
/* ---------------------------------------------------------------------------
15913
    Version: 4.0
15914
   --------------------------------------------------------------------------- */
15915
 
15916
BEGIN
15917
 
3959 dpurdie 15918
    -- Set Advisory Ripple Package
15919
    INSERT INTO ADVISORY_RIPPLE (RTAG_ID, PV_ID)
15920
	VALUES (nRtagId, nPvId);
1373 dpurdie 15921
 
15922
    /* LOG ACTION */
3959 dpurdie 15923
   	Log_Action ( nPvId, 'set_advisory_ripple', nUserId );
1373 dpurdie 15924
 
15925
	/*Rebuild_Environment(nRtagId);*/
15926
 
3959 dpurdie 15927
END Set_Advisory_Ripple;
4040 dpurdie 15928
 
1374 dpurdie 15929
/
1373 dpurdie 15930
 
4040 dpurdie 15931
/
15932
--------------------------------------------------------
15933
--  DDL for Procedure SET_PACKAGE_BUILD_ENV
15934
--------------------------------------------------------
15935
set define off;
15936
 
3959 dpurdie 15937
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
15938
	   	  		  								  	sBuildEnvIdList IN VARCHAR2 ) IS
1373 dpurdie 15939
/* ---------------------------------------------------------------------------
3959 dpurdie 15940
    Last Modified: Rupesh Solanki
15941
	Version: 3.0.1
1373 dpurdie 15942
   --------------------------------------------------------------------------- */
15943
 
15944
 
15945
BEGIN
15946
 
3959 dpurdie 15947
   -- Delete Current Build Env settings
15948
   DELETE FROM PACKAGE_BUILD_ENV
15949
   WHERE pv_id = nPvId;
15950
 
15951
   -- Delet Current Package Build Info Settings
15952
   DELETE FROM PACKAGE_BUILD_INFO
15953
   WHERE pv_id = nPvId;
1373 dpurdie 15954
 
3959 dpurdie 15955
   -- Reset flag to N
15956
   UPDATE PACKAGE_VERSIONS SET
15957
	   IS_BUILD_ENV_REQUIRED = 'N'
15958
   WHERE PV_ID = nPvId;
1373 dpurdie 15959
 
15960
 
3959 dpurdie 15961
   -- Set new Build Env
15962
   IF NOT sBuildEnvIdList IS NULL THEN
15963
   	  -- Insert into PACKAGE_BUILD_ENV
15964
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
15965
	  SELECT nPvId AS PV_ID,
15966
	  		 be.BE_ID
15967
	    FROM BUILD_ENVIRONMENTS be
15968
	   WHERE be.BE_ID IN (
15969
	   		 		  	   SELECT *
15970
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
15971
	   		 		  	 );
15972
 
15973
   	  -- Insert into PACKAGE_BUILD_INFO
15974
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
15975
	  SELECT nPvId AS PV_ID,
15976
	  		 be.BM_ID
15977
	    FROM BUILD_MACHINES be
15978
	   WHERE be.BM_ID IN (
15979
	   		 		  	   SELECT *
15980
					   	     FROM THE ( SELECT CAST( IN_LIST_NUMBER( sBuildEnvIdList ) AS RELMGR_NUMBER_TAB_t ) FROM dual )
15981
	   		 		  	 );						 
1373 dpurdie 15982
 
3959 dpurdie 15983
	   -- Set flag to Y
15984
	   UPDATE PACKAGE_VERSIONS SET
15985
		   IS_BUILD_ENV_REQUIRED = 'Y'
15986
	   WHERE PV_ID = nPvId;
1373 dpurdie 15987
 
3959 dpurdie 15988
   END IF;
1373 dpurdie 15989
 
15990
 
3959 dpurdie 15991
END Set_Package_Build_Env;
4040 dpurdie 15992
 
1374 dpurdie 15993
/
1373 dpurdie 15994
 
4040 dpurdie 15995
/
15996
--------------------------------------------------------
15997
--  DDL for Procedure SET_PACKAGE_BUILD_ENV_TEMP
15998
--------------------------------------------------------
15999
set define off;
16000
 
1373 dpurdie 16001
  CREATE OR REPLACE PROCEDURE "SET_PACKAGE_BUILD_ENV_TEMP" ( nPvId IN PACKAGE_BUILD_ENV.PV_ID%TYPE,
16002
	   	  		  								  	   	 sBuildEnvIdList IN VARCHAR2,
16003
														 nBuildStandard IN PACKAGE_VERSIONS.BS_ID%TYPE 
16004
														 ) IS
16005
/* ---------------------------------------------------------------------------
16006
    Last Modified: Rupesh Solanki
16007
	Version: 3.0.1
16008
   --------------------------------------------------------------------------- */
16009
 
16010
   nBsCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();   
16011
   BsId NUMBER;
16012
   HackBsId NUMBER;
16013
 
16014
 
16015
BEGIN
16016
 
16017
   nBsCollector := IN_LIST_NUMBER ( sBuildEnvIdList );
16018
 
16019
   -- Delete Current Build Env settings
16020
   DELETE FROM PACKAGE_BUILD_ENV
16021
   WHERE pv_id = nPvId;
16022
 
16023
   -- Delet Current Package Build Info Settings
16024
   DELETE FROM PACKAGE_BUILD_INFO
16025
   WHERE pv_id = nPvId;
16026
 
16027
   -- Reset flag to N
16028
   UPDATE PACKAGE_VERSIONS SET
16029
	   IS_BUILD_ENV_REQUIRED = 'N'
16030
   WHERE PV_ID = nPvId;
16031
 
16032
 
16033
   -- Set new Build Env
16034
   IF NOT sBuildEnvIdList IS NULL THEN
16035
	FOR i IN 1..nBsCollector.COUNT
16036
	LOOP   
16037
 
16038
	BsId := nBsCollector(i);
16039
 
16040
	IF nBuildStandard = 2 THEN
16041
	   IF BsId = 1 THEN
16042
	   	  HackBsId := 11;
16043
	   ELSE
16044
	   	  HackBsId := 12;
16045
	   END IF;
16046
 
16047
   	  -- Insert into PACKAGE_BUILD_ENV
16048
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
16049
	  SELECT nPvId AS PV_ID,
16050
	  		 be.BE_ID
16051
	    FROM BUILD_ENVIRONMENTS be
16052
	   WHERE be.BE_ID IN ( HackBsId );
16053
 
16054
   	  -- Insert into PACKAGE_BUILD_INFO
16055
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
16056
	  SELECT nPvId AS PV_ID,
16057
	  		 be.BM_ID
16058
	    FROM BUILD_MACHINES be
16059
	   WHERE be.BM_ID IN ( BsId );						 
16060
 
16061
	   -- Set flag to Y
16062
	   UPDATE PACKAGE_VERSIONS SET
16063
		   IS_BUILD_ENV_REQUIRED = 'Y'
16064
	   WHERE PV_ID = nPvId;	
16065
 
16066
 
16067
	ELSE
16068
 
16069
   	  -- Insert into PACKAGE_BUILD_ENV
16070
      INSERT INTO PACKAGE_BUILD_ENV ( PV_ID, BE_ID )
16071
	  SELECT nPvId AS PV_ID,
16072
	  		 be.BE_ID
16073
	    FROM BUILD_ENVIRONMENTS be
16074
	   WHERE be.BE_ID IN ( BsId );
16075
 
16076
   	  -- Insert into PACKAGE_BUILD_INFO
16077
      INSERT INTO PACKAGE_BUILD_INFO ( PV_ID, BM_ID )
16078
	  SELECT nPvId AS PV_ID,
16079
	  		 be.BM_ID
16080
	    FROM BUILD_MACHINES be
16081
	   WHERE be.BM_ID IN ( BsId );						 
16082
 
16083
	   -- Set flag to Y
16084
	   UPDATE PACKAGE_VERSIONS SET
16085
		   IS_BUILD_ENV_REQUIRED = 'Y'
16086
	   WHERE PV_ID = nPvId;
16087
 
16088
	END IF;  
16089
 
16090
 
16091
	END LOOP;	   
16092
 
16093
   END IF;
16094
 
16095
 
16096
END Set_Package_Build_Env_Temp;
4040 dpurdie 16097
 
1374 dpurdie 16098
/
1373 dpurdie 16099
 
4040 dpurdie 16100
/
16101
--------------------------------------------------------
16102
--  DDL for Procedure SET_TO_AUTOBUILDABLE
16103
--------------------------------------------------------
16104
set define off;
16105
 
3959 dpurdie 16106
  CREATE OR REPLACE PROCEDURE "SET_TO_AUTOBUILDABLE" (
16107
   nrtagid     IN   NUMBER,
16108
   spvidlist   IN   VARCHAR2
16109
)
16110
IS
16111
/******************************************************************************
16112
   NAME:       SET_TO_AUTOBUILDABLE
16113
   PURPOSE:
1373 dpurdie 16114
 
3959 dpurdie 16115
   REVISIONS:
16116
   Ver        Date        Author           Description
16117
   ---------  ----------  ---------------  ------------------------------------
16118
   1.0        15/12/2006   Rupesh Solanki       1. Created this procedure.
1373 dpurdie 16119
 
3959 dpurdie 16120
   NOTES:
1373 dpurdie 16121
 
3959 dpurdie 16122
   Automatically available Auto Replace Keywords:
16123
      Object Name:     SET_TO_AUTOBUILDABLE
16124
      Sysdate:         15/12/2006
16125
      Date and Time:   15/12/2006, 11:42:29 AM, and 15/12/2006 11:42:29 AM
16126
      Username:         (set in TOAD Options, Procedure Editor)
16127
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16128
 
3959 dpurdie 16129
******************************************************************************/
16130
   npvidcollector   relmgr_number_tab_t := relmgr_number_tab_t ();
16131
   PvId NUMBER;
1373 dpurdie 16132
BEGIN
16133
 
3959 dpurdie 16134
   npvidcollector := in_list_number2 (spvidlist);
16135
 
16136
   UPDATE package_versions
16137
      SET is_autobuildable = 'N'
16138
    WHERE pv_id IN (SELECT pv_id
16139
                      FROM release_content
16140
                     WHERE rtag_id = nrtagid);
1373 dpurdie 16141
 
3959 dpurdie 16142
 
16143
 
16144
   	FOR i IN 1..npvidcollector.COUNT
16145
	LOOP
16146
		PvId := npvidcollector(i);
1373 dpurdie 16147
 
3959 dpurdie 16148
		UPDATE package_versions
16149
		set is_autobuildable = 'Y'
16150
		where pv_id = PvId;
1373 dpurdie 16151
 
3959 dpurdie 16152
	END LOOP;
16153
 
16154
 
16155
END set_to_autobuildable;
4040 dpurdie 16156
 
3959 dpurdie 16157
/
1373 dpurdie 16158
 
4040 dpurdie 16159
/
16160
--------------------------------------------------------
16161
--  DDL for Procedure SHIFT_INSTALL_ORDER
16162
--------------------------------------------------------
16163
set define off;
16164
 
3959 dpurdie 16165
  CREATE OR REPLACE PROCEDURE "SHIFT_INSTALL_ORDER" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
16166
												  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
16167
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
16168
/* ---------------------------------------------------------------------------
16169
    Version: 3.0
16170
   --------------------------------------------------------------------------- */
1373 dpurdie 16171
 
3959 dpurdie 16172
currInstallOrder NUMBER;
16173
FromInstallOrder NUMBER;
1373 dpurdie 16174
 
3959 dpurdie 16175
BEGIN
1373 dpurdie 16176
 
3959 dpurdie 16177
	 -- Get Current Install Order
16178
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
16179
       FROM PACKAGE_PATCHES pp
16180
      WHERE pp.PV_ID = nPvId
16181
        AND pp.PATCH_ID = nPatchId;
1373 dpurdie 16182
 
16183
 
3959 dpurdie 16184
	 IF currInstallOrder > nToInstallOrder
16185
	 THEN
1373 dpurdie 16186
 
3959 dpurdie 16187
		FromInstallOrder := nToInstallOrder;
1373 dpurdie 16188
 
3959 dpurdie 16189
	    -- Shift others Up
16190
		UPDATE PACKAGE_PATCHES pp SET
16191
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
16192
		 WHERE pp.PV_ID = nPvId
16193
           AND pp.PATCH_ID != nPatchId
16194
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;
1373 dpurdie 16195
 
16196
 
3959 dpurdie 16197
	 ELSIF currInstallOrder < nToInstallOrder
16198
	 THEN
1373 dpurdie 16199
 
3959 dpurdie 16200
		FromInstallOrder := currInstallOrder + 1;
1373 dpurdie 16201
 
3959 dpurdie 16202
		-- Shift others Down
16203
        UPDATE PACKAGE_PATCHES pp SET
16204
			   pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
16205
		 WHERE pp.PV_ID = nPvId
16206
           AND pp.PATCH_ID != nPatchId
16207
		   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;
1373 dpurdie 16208
 
3959 dpurdie 16209
	 END IF;
1373 dpurdie 16210
 
16211
 
3959 dpurdie 16212
	 -- Move Patch to new install order
16213
     UPDATE PACKAGE_PATCHES pp SET
16214
		    pp.INSTALL_ORDER = nToInstallOrder
16215
	  WHERE pp.PV_ID = nPvId
16216
	    AND pp.PATCH_ID = nPatchId;
1373 dpurdie 16217
 
16218
 
3959 dpurdie 16219
END Shift_Install_Order;
4040 dpurdie 16220
 
1374 dpurdie 16221
/
1373 dpurdie 16222
 
4040 dpurdie 16223
/
16224
--------------------------------------------------------
16225
--  DDL for Procedure SPLIT_VERSION
16226
--------------------------------------------------------
16227
set define off;
16228
 
3959 dpurdie 16229
  CREATE OR REPLACE PROCEDURE "SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
16230
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
16231
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
16232
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
1373 dpurdie 16233
/* ---------------------------------------------------------------------------
3959 dpurdie 16234
    Version: 3.0.0
1373 dpurdie 16235
   --------------------------------------------------------------------------- */
16236
 
3959 dpurdie 16237
    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
16238
        INDEX BY BINARY_INTEGER;
1373 dpurdie 16239
 
3959 dpurdie 16240
    version_components VERSION_COMPONENTS_TYPE;
16241
    lastDot NUMBER := 0;
16242
    currDot NUMBER := 0;
1373 dpurdie 16243
 
16244
BEGIN
3959 dpurdie 16245
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right
1373 dpurdie 16246
 
3959 dpurdie 16247
    IF ( currDot > 0 )
1373 dpurdie 16248
    THEN
3959 dpurdie 16249
        -- YES dot separator found --
16250
        SSV_EXT := GET_V_EXT( SSpkg_version );
1373 dpurdie 16251
 
3959 dpurdie 16252
        IF NOT SSV_EXT IS NULL
1373 dpurdie 16253
        THEN
3959 dpurdie 16254
            lastDot := currDot;
16255
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right
1373 dpurdie 16256
 
3959 dpurdie 16257
            IF ( currDot > 0 )
16258
            THEN
16259
                -- XXXX.M.E
16260
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
16261
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
16262
            ELSE
16263
                -- XXXX.E
16264
                SSV_MM := NULL;
16265
                SSV_NMM := SSpkg_version;
16266
            END IF;
1373 dpurdie 16267
 
16268
        ELSE
3959 dpurdie 16269
            -- XXXX.M
16270
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
16271
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
1373 dpurdie 16272
 
16273
        END IF;
16274
 
16275
    ELSE
3959 dpurdie 16276
        -- NO dot separator found --
16277
        -- XXXXXX
16278
        SSV_MM  := NULL;
16279
        SSV_NMM := SSpkg_version;
16280
        SSV_EXT := NULL;
1373 dpurdie 16281
 
16282
    END IF;
16283
 
3959 dpurdie 16284
END Split_Version;
4040 dpurdie 16285
 
1374 dpurdie 16286
/
1373 dpurdie 16287
 
4040 dpurdie 16288
/
16289
--------------------------------------------------------
16290
--  DDL for Procedure SWITCH_REPRODUCIBLE_PACKAGE
16291
--------------------------------------------------------
16292
set define off;
16293
 
3959 dpurdie 16294
  CREATE OR REPLACE PROCEDURE "SWITCH_REPRODUCIBLE_PACKAGE" (nPvId IN NUMBER, nUserId IN NUMBER)IS
16295
Auto CHAR;
16296
/******************************************************************************
16297
   NAME:       SWITCH_REPRODUCIBLE_PACKAGE
16298
   PURPOSE:    
1373 dpurdie 16299
 
3959 dpurdie 16300
   REVISIONS:
16301
   Ver        Date        Author           Description
16302
   ---------  ----------  ---------------  ------------------------------------
16303
   1.0        14/12/2006   Rupesh Solanki       1. Created this procedure.
1373 dpurdie 16304
 
3959 dpurdie 16305
   NOTES:
1373 dpurdie 16306
 
3959 dpurdie 16307
   Automatically available Auto Replace Keywords:
16308
      Object Name:     SWITCH_REPRODUCIBLE_PACKAGE
16309
      Sysdate:         14/12/2006
16310
      Date and Time:   14/12/2006, 11:35:15 AM, and 14/12/2006 11:35:15 AM
16311
      Username:         (set in TOAD Options, Procedure Editor)
16312
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16313
 
3959 dpurdie 16314
******************************************************************************/
1373 dpurdie 16315
BEGIN
16316
 
3959 dpurdie 16317
	 SELECT IS_AUTOBUILDABLE into Auto
16318
	 FROM PACKAGE_VERSIONS 
16319
	 WHERE PV_ID = nPvId;
1373 dpurdie 16320
 
3959 dpurdie 16321
	 IF Auto = 'N' Then
16322
 
16323
	 	UPDATE PACKAGE_VERSIONS
16324
	 	SET IS_AUTOBUILDABLE = 'Y'
16325
	 	WHERE PV_ID = nPvId;
16326
 
16327
 
16328
	 	/* LOG ACTION */
16329
   		Log_Action ( nPvId, 'reproducible_package', nUserId );	 
16330
 
16331
	 Else
16332
 
16333
		 UPDATE PACKAGE_VERSIONS
16334
		 SET IS_AUTOBUILDABLE = 'N'
16335
		 WHERE PV_ID = nPvId;
16336
 
16337
 
16338
	 	 /* LOG ACTION */
16339
   	 	 Log_Action ( nPvId, 'unreproducible_package', nUserId );	 
16340
 
16341
	 End If;
16342
 
16343
 
1373 dpurdie 16344
 
3959 dpurdie 16345
 
1373 dpurdie 16346
 
16347
 
16348
 
16349
 
3959 dpurdie 16350
END SWITCH_REPRODUCIBLE_PACKAGE;
4040 dpurdie 16351
 
1374 dpurdie 16352
/
1373 dpurdie 16353
 
4040 dpurdie 16354
/
16355
--------------------------------------------------------
16356
--  DDL for Procedure SYNC_PROJECTS_NEW_VERSION
16357
--------------------------------------------------------
16358
set define off;
16359
 
3959 dpurdie 16360
  CREATE OR REPLACE PROCEDURE "SYNC_PROJECTS_NEW_VERSION" ( nPv_id 				IN NUMBER,
16361
														  sSyncRtagsInList		IN VARCHAR2,
16362
				                                          nUser_id 				IN NUMBER ) IS
1373 dpurdie 16363
/* ---------------------------------------------------------------------------
16364
    Version: 3.0.0
16365
   --------------------------------------------------------------------------- */
16366
 
3959 dpurdie 16367
	CURSOR sync_rtags_cur IS
16368
        SELECT rc.RTAG_ID, rc.BASE_VIEW_ID, pv.pv_id
16369
		  FROM release_content rc,
16370
		  	   package_versions pv,
16371
		       package_versions opv
16372
		 WHERE rc.pv_id = pv.pv_id
16373
		   AND opv.pkg_id = pv.pkg_id
16374
		   AND NVL(opv.v_ext, '|LINK_A_NULL|') = NVL(pv.v_ext, '|LINK_A_NULL|')
16375
		   AND opv.pv_id = nPv_id
16376
		   AND rtag_id IN ( SELECT *
16377
		   	   		   	      FROM THE (
16378
					   	   		   	    SELECT CAST( IN_LIST_NUMBER( sSyncRtagsInList ) AS RELMGR_NUMBER_TAB_t )
16379
					       		   	    FROM dual
16380
									   )
16381
						  );
16382
    sync_rtags_rec sync_rtags_cur%ROWTYPE;
1373 dpurdie 16383
 
16384
BEGIN
16385
 
3959 dpurdie 16386
	OPEN sync_rtags_cur;
16387
	FETCH sync_rtags_cur INTO sync_rtags_rec;
1373 dpurdie 16388
 
3959 dpurdie 16389
	WHILE sync_rtags_cur%FOUND
16390
	LOOP
16391
		DELETE FROM RELEASE_CONTENT
16392
		 WHERE rtag_id = sync_rtags_rec.rtag_id
16393
	       AND pv_id = sync_rtags_rec.pv_id;
1373 dpurdie 16394
 
3959 dpurdie 16395
		INSERT INTO RELEASE_CONTENT ( RTAG_ID, PV_ID, BASE_VIEW_ID, INSERT_STAMP, INSERTOR_ID, PKG_STATE )
16396
	   		   VALUES ( sync_rtags_rec.rtag_id,
16397
		       		  	nPv_id,
16398
						sync_rtags_rec.BASE_VIEW_ID,
16399
	           			Ora_Sysdate,
16400
	           			nUser_id,
16401
 
16402
	      	   		   );
1373 dpurdie 16403
 
3959 dpurdie 16404
-- 		UPDATE RELEASE_CONTENT
16405
-- 	       SET pv_id = nPv_id,
16406
-- 	           insert_stamp = Ora_Sysdate,
16407
-- 	           insertor_id = nUser_id
16408
-- 	     WHERE rtag_id = sync_rtags_rec.rtag_id
16409
-- 	       AND pv_id = sync_rtags_rec.pv_id;
1373 dpurdie 16410
 
3959 dpurdie 16411
		FETCH sync_rtags_cur INTO sync_rtags_rec;
16412
	END LOOP;
1373 dpurdie 16413
 
3959 dpurdie 16414
	CLOSE sync_rtags_cur;
16415
 
16416
END Sync_Projects_New_Version;
4040 dpurdie 16417
 
1374 dpurdie 16418
/
1373 dpurdie 16419
 
4040 dpurdie 16420
/
16421
--------------------------------------------------------
16422
--  DDL for Procedure TEST
16423
--------------------------------------------------------
16424
set define off;
16425
 
3959 dpurdie 16426
  CREATE OR REPLACE PROCEDURE "TEST" 
16427
IS
1373 dpurdie 16428
 
3959 dpurdie 16429
proc_id NUMBER;
16430
/******************************************************************************
16431
   NAME:       DELETE_DO_NOT_RIPPLE
16432
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
16433
               IS RELEASED
1373 dpurdie 16434
 
3959 dpurdie 16435
   REVISIONS:
16436
   Ver        Date        Author           Description
16437
   ---------  ----------  ---------------  ------------------------------------
16438
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 16439
 
3959 dpurdie 16440
   NOTES:
16441
 
16442
   Automatically available Auto Replace Keywords:
16443
      Object Name:     DELETE_DO_NOT_RIPPLE
16444
      Sysdate:         21/04/2006
16445
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
16446
      Username:         (set in TOAD Options, Procedure Editor)
16447
      Table Name:       (set in the "New PL/SQL Object" dialog)
16448
 
16449
******************************************************************************/
16450
   CURSOR ripple_cur
16451
   IS
16452
      select distinct pkg_health_tag, cmd_interface, pkg_owner, is_interface from deployment_manager.processes_config;
16453
 
16454
   ripple_rec   ripple_cur%ROWTYPE;
1373 dpurdie 16455
BEGIN
3959 dpurdie 16456
   OPEN ripple_cur;
1373 dpurdie 16457
 
3959 dpurdie 16458
   FETCH ripple_cur
16459
    INTO ripple_rec;
1373 dpurdie 16460
 
3959 dpurdie 16461
   WHILE ripple_cur%FOUND
16462
   LOOP
16463
 
16464
   select deployment_manager.seq_proc_id.nextval into proc_id from dual;
16465
 
16466
insert into processes (PROC_ID, PROC_NAME, RUN_AS, PKG_OWNER, IS_INTERFACE) 
16467
values(proc_id, ripple_rec.pkg_health_tag, ripple_rec.cmd_interface, ripple_rec.pkg_owner, ripple_rec.is_interface);
1373 dpurdie 16468
 
3959 dpurdie 16469
      FETCH ripple_cur
16470
       INTO ripple_rec;
16471
   END LOOP;
16472
END test;
4040 dpurdie 16473
 
1374 dpurdie 16474
/
1373 dpurdie 16475
 
4040 dpurdie 16476
/
16477
--------------------------------------------------------
16478
--  DDL for Procedure TEST_MARCO
16479
--------------------------------------------------------
16480
set define off;
16481
 
3959 dpurdie 16482
  CREATE OR REPLACE PROCEDURE "TEST_MARCO" IS
1373 dpurdie 16483
/******************************************************************************
3959 dpurdie 16484
   NAME:       TEST_MARCO
1373 dpurdie 16485
   PURPOSE:    
16486
 
16487
   REVISIONS:
16488
   Ver        Date        Author           Description
16489
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 16490
   1.0        2/03/2007          1. Created this procedure.
1373 dpurdie 16491
 
16492
   NOTES:
16493
 
16494
   Automatically available Auto Replace Keywords:
3959 dpurdie 16495
      Object Name:     TEST_MARCO
16496
      Sysdate:         2/03/2007
16497
      Date and Time:   2/03/2007, 3:11:11 PM, and 2/03/2007 3:11:11 PM
1373 dpurdie 16498
      Username:         (set in TOAD Options, Procedure Editor)
16499
      Table Name:       (set in the "New PL/SQL Object" dialog)
16500
 
16501
******************************************************************************/
16502
 
3959 dpurdie 16503
parPv_id    NUMBER;
16504
parPkg_id   NUMBER;
16505
    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
16506
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
16507
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;
1373 dpurdie 16508
BEGIN
16509
 
3959 dpurdie 16510
SELECT SEQ_PV_ID.NEXTVAL INTO parPv_id FROM DUAL;
1373 dpurdie 16511
 
3959 dpurdie 16512
        /* LOG ACTION */
16513
        Log_Action ( parPv_id, 'new_version', 3764,
16514
        			 'New package version: '|| parPv_id || '.' );
16515
 
16516
        Split_Version ( parPv_id || '.', SSV_MM, SSV_NMM, SSV_EXT );
1373 dpurdie 16517
 
3959 dpurdie 16518
     -- Clone Package Version Details --
16519
            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,
16520
                                           src_path, pv_description, PV_OVERVIEW, LAST_PV_ID, owner_id, BUILD_TYPE, IS_BUILD_ENV_REQUIRED, bs_id, is_autobuildable, is_deployable )
16521
                SELECT parPv_id         AS pv_id,
16522
                       pv.pkg_id        AS pkg_id,
16523
                       parPv_id || '.'    AS pkg_version,
16524
                       'N'              AS dlocked,
16525
                       Ora_Sysdate      AS created_stamp,
16526
                       3764        AS creator_id,
16527
                       Ora_Sysdatetime  AS modified_stamp,
16528
                       3764        AS modifier_id,
16529
                       SSV_MM          AS V_MM,
16530
                       SSV_NMM         AS V_NMM,
16531
                       SSV_EXT          AS V_EXT,
16532
                       pv.src_path,
16533
                       pv.pv_description,
16534
                       pv.PV_OVERVIEW,
16535
                       112982 	AS LAST_PV_ID,
16536
                       pv.owner_id,
16537
					   pv.BUILD_TYPE,
16538
					   pv.IS_BUILD_ENV_REQUIRED,
16539
					   pv.bs_id,
16540
					   pv.is_autobuildable,
16541
					   pv.IS_DEPLOYABLE
16542
                  FROM PACKAGE_VERSIONS pv
16543
                 WHERE pv.pv_id = 112982;		
1373 dpurdie 16544
 
3959 dpurdie 16545
Basic_Clone ( 112982, parPv_id, NULL, 3764, 22325, 0 );
1373 dpurdie 16546
 
16547
 
3959 dpurdie 16548
END TEST_MARCO;
4040 dpurdie 16549
 
3959 dpurdie 16550
/
1373 dpurdie 16551
 
4040 dpurdie 16552
/
16553
--------------------------------------------------------
16554
--  DDL for Procedure TOUCH_RELEASE
16555
--------------------------------------------------------
16556
set define off;
16557
 
3959 dpurdie 16558
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE" ( nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE ) IS
16559
/* ---------------------------------------------------------------------------
16560
    The purpose of this procedure is to flag in the database that the specified
16561
    release has changed to an extent that the procedure Rebuild_Environment
16562
    should be called at the next opportunity in order that the package state
16563
    icons are all re-evaluated.
16564
    The package state icons are controlled using the pkg_state column in the
16565
    release_content table, and Rebuild_Environment updates that column.
16566
    It will be through user action in the website that Rebuild_Environment will
16567
    be called, for example:
16568
      a) when setting/clearing ignore warnings checkboxes
16569
      b) when someone opens a page upon a rtag/pvid and rebuild_en flag is set
16570
      c) when someone opens the build order report form
16571
      d) when someone modifies dependencies of a package
16572
      + other scenarios (?)
16573
   --------------------------------------------------------------------------- */
16574
BEGIN
16575
   -- Touch Release for Rebuild
16576
   UPDATE RELEASE_TAGS rt SET
16577
          rt.REBUILD_ENV = 'Y',
16578
          rt.REBUILD_STAMP = 0
16579
    WHERE rt.RTAG_ID = nRtagId;
1373 dpurdie 16580
 
3959 dpurdie 16581
END Touch_Release;
4040 dpurdie 16582
 
1374 dpurdie 16583
/
1373 dpurdie 16584
 
4040 dpurdie 16585
/
16586
--------------------------------------------------------
16587
--  DDL for Procedure TOUCH_RELEASE_BULK
16588
--------------------------------------------------------
16589
set define off;
16590
 
1373 dpurdie 16591
  CREATE OR REPLACE PROCEDURE "TOUCH_RELEASE_BULK" ( nRtagIdList IN VARCHAR2 ) IS
16592
/* ---------------------------------------------------------------------------
16593
    Version: 3.0
16594
   --------------------------------------------------------------------------- */
16595
 
16596
oRTagIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16597
 
16598
BEGIN
16599
	 oRTagIdCollector := IN_LIST_NUMBER ( nRtagIdList );
16600
 
16601
	 -- Touch Release for Rebuild
16602
     UPDATE RELEASE_TAGS rt SET
16603
     	rt.REBUILD_ENV = 'Y',
16604
        rt.REBUILD_STAMP = 0
16605
      WHERE rt.RTAG_ID IN ( SELECT * FROM TABLE ( CAST ( oRTagIdCollector AS RELMGR_NUMBER_TAB_t ) ) );
16606
 
16607
 
16608
END Touch_Release_Bulk;
4040 dpurdie 16609
 
1374 dpurdie 16610
/
1373 dpurdie 16611
 
4040 dpurdie 16612
/
16613
--------------------------------------------------------
16614
--  DDL for Procedure TO_INSERT_VTREE_ID
16615
--------------------------------------------------------
16616
set define off;
16617
 
3959 dpurdie 16618
  CREATE OR REPLACE PROCEDURE "TO_INSERT_VTREE_ID" IS
1373 dpurdie 16619
 
3959 dpurdie 16620
/******************************************************************************
16621
   NAME:       TO_INSERT_VTREE_ID
16622
   PURPOSE:    
1373 dpurdie 16623
 
3959 dpurdie 16624
   REVISIONS:
16625
   Ver        Date        Author           Description
16626
   ---------  ----------  ---------------  ------------------------------------
16627
   1.0        2/02/2007          1. Created this procedure.
1373 dpurdie 16628
 
3959 dpurdie 16629
   NOTES:
1373 dpurdie 16630
 
3959 dpurdie 16631
   Automatically available Auto Replace Keywords:
16632
      Object Name:     TO_INSERT_VTREE_ID
16633
      Sysdate:         2/02/2007
16634
      Date and Time:   2/02/2007, 8:42:56 AM, and 2/02/2007 8:42:56 AM
16635
      Username:         (set in TOAD Options, Procedure Editor)
16636
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 16637
 
3959 dpurdie 16638
******************************************************************************/
16639
VTreeId NUMBER;																			  																	   
1373 dpurdie 16640
 
16641
 
3959 dpurdie 16642
	CURSOR curInfo IS
16643
    SELECT RTAG_ID
16644
	FROM RELEASE_TAGS
16645
	WHERE VTREE_ID IS NULL;
16646
    recInfo curInfo%ROWTYPE;
16647
 
16648
 
1373 dpurdie 16649
BEGIN
16650
 
3959 dpurdie 16651
	OPEN curInfo;
16652
    FETCH curInfo INTO recInfo;
16653
 
16654
	WHILE curInfo%FOUND
16655
	LOOP
16656
		SELECT SEQ_VTREE_ID.nextval INTO VTreeId FROM DUAL;
1373 dpurdie 16657
 
3959 dpurdie 16658
		UPDATE RELEASE_TAGS
16659
		SET VTREE_ID = VTreeId
16660
		WHERE RTAG_ID = recInfo.RTAG_ID;
1373 dpurdie 16661
 
3959 dpurdie 16662
		FETCH curInfo INTO recInfo;
16663
	END LOOP;
1373 dpurdie 16664
 
3959 dpurdie 16665
	CLOSE curInfo;
1373 dpurdie 16666
 
3959 dpurdie 16667
END TO_INSERT_VTREE_ID;
4040 dpurdie 16668
 
1374 dpurdie 16669
/
1373 dpurdie 16670
 
4040 dpurdie 16671
/
16672
--------------------------------------------------------
16673
--  DDL for Procedure UNDEPRECATE_PACKAGE
16674
--------------------------------------------------------
16675
set define off;
16676
 
1373 dpurdie 16677
  CREATE OR REPLACE PROCEDURE "UNDEPRECATE_PACKAGE" (nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
16678
	   	  		  								 nRtagId IN DEPRECATED_PACKAGES.RTAG_ID%TYPE,
16679
	   	  		  							   	 nPkgId IN DEPRECATED_PACKAGES.PKG_ID%TYPE,
16680
											   	 nUserId IN NUMBER) IS
16681
 
16682
ext VARCHAR2(50);
16683
PvIdList VARCHAR2(32767);
16684
nIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16685
PvId NUMBER;
16686
sComments VARCHAR2(32767);
16687
 
16688
BEGIN
16689
 
16690
 
16691
 
16692
	--Extract the package extension
16693
	SELECT V_EXT into ext 
16694
	FROM PACKAGE_VERSIONS 
16695
	WHERE PV_ID = nPvId;
16696
 
16697
	--SELECT COMMENTS into sComments 
16698
	--FROM DEPRECATED_PACKAGES
16699
	--WHERE RTAG_ID = nRtagId
16700
	--AND V_EXT = ext
16701
	--AND PKG_ID = nPkgId;
16702
 
16703
	--SELECT PV_ID into PvIdList FROM
16704
	--RELEASE_CONTENT WHERE RTAG_ID = nRtagId
16705
	--AND PKG_STATE = 6
16706
	--AND PV_ID NOT IN nPvId;
16707
 
16708
 
16709
	IF ext IS NOT NULL THEN
16710
       -- Undeprecate Package
16711
       DELETE FROM DEPRECATED_PACKAGES 
16712
	   WHERE RTAG_ID = nRtagId 
16713
	   AND PKG_ID = nPkgId
16714
	   AND V_EXT = ext;	
16715
 
16716
		UPDATE RELEASE_CONTENT 
16717
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
16718
		WHERE RTAG_ID = nRtagId
16719
		AND PV_ID IN (SELECT PV.PV_ID 
16720
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
16721
					  WHERE PKG.PKG_ID = PV.PKG_ID
16722
					  AND PKG.PKG_ID = nPkgId
16723
					  AND PV.V_EXT = ext
16724
					  UNION
16725
					  SELECT DISTINCT
16726
	 	 		  	 		   qry.PV_ID
16727
							        FROM (
16728
									 	  SELECT dep.*,
16729
										  LEVEL AS LEVEL_NUM
16730
										  FROM PACKAGE_DEPENDENCIES dep
16731
	 								START WITH dep.DPV_ID IN ( nPvId )
16732
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
16733
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
16734
	 								) qry,
16735
									PACKAGES pkg,
16736
									PACKAGE_VERSIONS pv,
16737
									RELEASE_CONTENT rc
16738
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
16739
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
16740
 
16741
					 );	 
16742
 
16743
	ELSE
16744
       -- Undeprecate Package
16745
       DELETE FROM DEPRECATED_PACKAGES 
16746
	   WHERE RTAG_ID = nRtagId 
16747
	   AND PKG_ID = nPkgId
16748
	   AND V_EXT IS NULL;	
16749
 
16750
		UPDATE RELEASE_CONTENT 
16751
		SET PKG_ID = NULL, DEPRECATED_STATE = NULL
16752
		WHERE RTAG_ID = nRtagId
16753
		AND PV_ID IN (SELECT PV.PV_ID 
16754
				  	  FROM PACKAGE_VERSIONS PV, PACKAGES PKG
16755
					  WHERE PKG.PKG_ID = PV.PKG_ID
16756
					  AND PKG.PKG_ID = nPkgId
16757
					  AND PV.V_EXT IS NULL
16758
					  UNION
16759
					  SELECT DISTINCT
16760
	 	 		  	 		   qry.PV_ID
16761
							        FROM (
16762
									 	  SELECT dep.*,
16763
										  LEVEL AS LEVEL_NUM
16764
										  FROM PACKAGE_DEPENDENCIES dep
16765
	 								START WITH dep.DPV_ID IN ( nPvId )
16766
									--AND dep.DPV_ID NOT IN ( SELECT PV_ID FROM RELEASE_CONTENT WHERE RTAG_ID = nRtagId AND PKG_STATE = 6 )
16767
									CONNECT BY PRIOR dep.PV_ID = dep.DPV_ID
16768
	 								) qry,
16769
									PACKAGES pkg,
16770
									PACKAGE_VERSIONS pv,
16771
									RELEASE_CONTENT rc
16772
							 	 WHERE qry.PV_ID = pv.PV_ID AND pv.PKG_ID = pkg.PKG_ID
16773
								 AND rc.RTAG_ID = nRtagId AND rc.PV_ID = qry.PV_ID
16774
 
16775
					 );	 	   
16776
 
16777
	END IF;
16778
 
16779
	--IF PvIdList IS NOT NULL THEN
16780
 
16781
	 --  nIdCollector := IN_LIST_NUMBER ( PvIdList );
16782
 
16783
	 --  FOR i IN 1..nIdCollector.COUNT
16784
	 --  LOOP
16785
	--	   PvId := nIdCollector(i);
16786
 
16787
 
16788
 
16789
	--		Deprecate_Package (nPvId, nRtagId, nPkgId, sComments, nUserId );
16790
	--		END LOOP;
16791
	--END IF;
16792
 
16793
	Rebuild_environment(nRtagId);			 
16794
 
16795
 
16796
 
16797
END Undeprecate_Package;
4040 dpurdie 16798
 
1374 dpurdie 16799
/
1373 dpurdie 16800
 
4040 dpurdie 16801
/
16802
--------------------------------------------------------
16803
--  DDL for Procedure UNLOCK_PACKAGE
16804
--------------------------------------------------------
16805
set define off;
16806
 
3959 dpurdie 16807
  CREATE OR REPLACE PROCEDURE "UNLOCK_PACKAGE" ( nPvId IN PACKAGE_VERSIONS.PV_ID%TYPE,
16808
											 nUserId IN NUMBER ) IS
16809
/* ---------------------------------------------------------------------------
16810
    Author: Rupesh Solanki
16811
 
16812
	Version: 4.0
16813
   --------------------------------------------------------------------------- */
16814
   STATE CHAR;
16815
 
16816
BEGIN
16817
 
16818
	SELECT DLOCKED INTO STATE
16819
	FROM PACKAGE_VERSIONS
16820
	WHERE PV_ID = nPvId; 
1373 dpurdie 16821
 
3959 dpurdie 16822
	IF STATE = 'A' THEN --It was made official for autobuilds
16823
		-- Unlock Package
16824
		UPDATE PACKAGE_VERSIONS pv SET
16825
		pv.DLOCKED = 'P'
16826
		WHERE pv.PV_ID = nPvId;	
16827
	ELSE
16828
		-- Unlock Package
16829
		UPDATE PACKAGE_VERSIONS pv SET
16830
		pv.DLOCKED = 'N'
16831
		WHERE pv.PV_ID = nPvId;	
16832
 
16833
	END IF;	   
16834
 
16835
    /* LOG ACTION */
16836
   	Log_Action ( nPvId, 'unlock_package', nUserId );
16837
 
16838
END Unlock_Package;
4040 dpurdie 16839
 
3959 dpurdie 16840
/
16841
 
4040 dpurdie 16842
/
16843
--------------------------------------------------------
16844
--  DDL for Procedure UNRIPPLE_PACKAGE
16845
--------------------------------------------------------
16846
set define off;
16847
 
3959 dpurdie 16848
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE" (
16849
        sPvIdList IN VARCHAR2,
16850
        nRtagId IN RELEASE_TAGS.RTAG_ID%TYPE,
16851
        nUserId IN NUMBER
16852
    ) IS
16853
/* ---------------------------------------------------------------------------
16854
    Version: 4.1
16855
   --------------------------------------------------------------------------- */
16856
 
16857
    oPvIdCollector RELMGR_NUMBER_TAB_t := RELMGR_NUMBER_TAB_t();
16858
 
16859
BEGIN
16860
 
16861
    IF (sPvIdList IS NULL) THEN
16862
        RAISE_APPLICATION_ERROR (-20000, 'Please select at least one package.' );
16863
    END IF;
16864
 
16865
    oPvIdCollector := IN_LIST_NUMBER ( sPvIdList );
16866
 
16867
    -- UnRipple Package
16868
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID )
16869
    SELECT nRtagId, pv.PV_ID
16870
    FROM PACKAGE_VERSIONS pv
16871
    WHERE pv.PV_ID IN (
16872
        SELECT *
16873
        FROM TABLE (
16874
            CAST ( oPvIdCollector AS RELMGR_NUMBER_TAB_t )
16875
        )
16876
    );
16877
 
16878
    /* LOG ACTION */
16879
    Log_Action_Bulk ( sPvIdList, 'unripple_package', nUserId );
16880
 
16881
END UnRipple_Package;
4040 dpurdie 16882
 
3959 dpurdie 16883
/
16884
 
4040 dpurdie 16885
/
16886
--------------------------------------------------------
16887
--  DDL for Procedure UNRIPPLE_PACKAGE_INDIRECT
16888
--------------------------------------------------------
16889
set define off;
16890
 
3959 dpurdie 16891
  CREATE OR REPLACE PROCEDURE "UNRIPPLE_PACKAGE_INDIRECT" (
16892
        nPvId IN NUMBER,
16893
        nRtagId IN NUMBER,
16894
        nUserId IN NUMBER,
16895
        nrootCausePvId IN NUMBER,
16896
        srootCause IN VARCHAR2,
16897
        srootFile IN VARCHAR2
16898
    ) IS
16899
    ReleaseLocation VARCHAR2(4000);
16900
BEGIN
16901
 
16902
    -- UnRipple Package
16903
    delete from do_not_ripple where rtag_id=nRtagId and pv_id=nPvId;
16904
    INSERT INTO DO_NOT_RIPPLE ( RTAG_ID, PV_ID, ROOT_PV_ID, ROOT_CAUSE, ROOT_FILE ) values (nRtagId, nPvId, nrootCausePvId, srootCause, srootFile);
16905
 
16906
    /* LOG ACTION */
16907
   SELECT proj.PROJ_NAME ||' / '|| rt.RTAG_NAME INTO ReleaseLocation
16908
              FROM PROJECTS proj,
16909
                   RELEASE_TAGS rt
16910
             WHERE rt.RTAG_ID = nRtagId
16911
               AND rt.PROJ_ID = proj.PROJ_ID;
16912
 
16913
    /* LOG ACTION */
16914
    Log_Action ( nPvId, 'unripple_package', nUserId, 'Location: '|| ReleaseLocation );
16915
 
16916
END UnRipple_Package_Indirect;
4040 dpurdie 16917
 
3959 dpurdie 16918
/
16919
 
4040 dpurdie 16920
/
16921
--------------------------------------------------------
16922
--  DDL for Procedure UPDATE_ADDITIONAL_NOTE
16923
--------------------------------------------------------
16924
set define off;
16925
 
3959 dpurdie 16926
  CREATE OR REPLACE PROCEDURE "UPDATE_ADDITIONAL_NOTE" ( pnNote_id IN NUMBER,
16927
													 pnPv_id IN NUMBER,
16928
                                                     psNote_title IN ADDITIONAL_NOTES.NOTE_TITLE%TYPE,
16929
                                                     psNote_body IN ADDITIONAL_NOTES.NOTE_BODY%TYPE,
16930
                                                     pnUser_id IN NUMBER,
16931
                                                     outErrCode OUT NUMBER
16932
                                                    ) IS
16933
/* ---------------------------------------------------------------------------
16934
    Version: 3.0.1
16935
   --------------------------------------------------------------------------- */
16936
 
16937
    newID NUMBER;
16938
 
16939
    /* Disallow duplicate Note Titles */
16940
	CURSOR an_duplicate_cur IS
16941
        SELECT COUNT(*) AS cnt_note
16942
          FROM ADDITIONAL_NOTES
16943
         WHERE pv_id = pnPv_id
16944
           AND note_id != pnNote_id
16945
           AND note_title = psNote_title;
16946
    an_duplicate_rec an_duplicate_cur%ROWTYPE;
16947
 
16948
BEGIN
16949
	outErrCode := -1;		-- Set default return error code to ERROR state
16950
 
16951
	OPEN an_duplicate_cur;
16952
    FETCH an_duplicate_cur INTO an_duplicate_rec;
16953
 
16954
    IF an_duplicate_rec.cnt_note < 1
16955
    THEN
16956
		--- Update Additional Note ---
16957
	    UPDATE ADDITIONAL_NOTES SET
16958
		       note_title = psNote_title,
16959
		       note_body = psNote_body,
16960
		       mod_date = Ora_Sysdate,
16961
		       mod_user = pnUser_id
16962
         WHERE note_id = pnNote_id
16963
           AND pv_id = pnPv_id;
16964
		outErrCode := 0;		-- Set return to SUCCESS
16965
	END IF;
16966
 
16967
	CLOSE an_duplicate_cur;
16968
END Update_Additional_Note;
4040 dpurdie 16969
 
3959 dpurdie 16970
/
16971
 
4040 dpurdie 16972
/
16973
--------------------------------------------------------
16974
--  DDL for Procedure UPDATE_DEPRECATION_STATE
16975
--------------------------------------------------------
16976
set define off;
16977
 
3959 dpurdie 16978
  CREATE OR REPLACE PROCEDURE "UPDATE_DEPRECATION_STATE" (nnrtag_id IN NUMBER) AS
16979
 
16980
recno NUMBER;
16981
 
16982
CURSOR deprecate_cur IS
16983
 
16984
SELECT rc.pv_id
16985
FROM release_content rc
16986
WHERE rtag_id = nnrtag_id
16987
 AND deprecated_state IN(7);
16988
 
16989
deprecate_rec deprecate_cur % rowtype;
16990
 
16991
BEGIN
16992
 
16993
  OPEN deprecate_cur;
16994
 
16995
  FETCH deprecate_cur
16996
  INTO deprecate_rec;
16997
 
16998
  WHILE deprecate_cur % FOUND
16999
  LOOP
17000
 
17001
    SELECT COUNT(*)
17002
    INTO recno
17003
    FROM package_dependencies pd,
17004
      release_content rc
17005
    WHERE pd.pv_id = deprecate_rec.pv_id
17006
     AND rc.pv_id = pd.dpv_id
17007
     AND rc.rtag_id = nnrtag_id
17008
     AND rc.deprecated_state IN(6,   7);
17009
 
17010
    IF recno = 0 THEN
17011
 
17012
      UPDATE release_content
17013
      SET pkg_id = NULL, deprecated_state = NULL
17014
      WHERE pv_id = deprecate_rec.pv_id
17015
       AND rtag_id = nnrtag_id;
17016
 
17017
    END IF;
17018
 
17019
    FETCH deprecate_cur
17020
    INTO deprecate_rec;
17021
  END LOOP;
17022
 
17023
END;
4040 dpurdie 17024
 
3959 dpurdie 17025
/
17026
 
4040 dpurdie 17027
/
17028
--------------------------------------------------------
17029
--  DDL for Procedure UPDATE_MISC_VIEW
17030
--------------------------------------------------------
17031
set define off;
17032
 
3959 dpurdie 17033
  CREATE OR REPLACE PROCEDURE "UPDATE_MISC_VIEW" IS
1373 dpurdie 17034
/******************************************************************************
3959 dpurdie 17035
   NAME:       UPDATE_MISC_VIEW
17036
   PURPOSE:    
1373 dpurdie 17037
 
17038
   REVISIONS:
17039
   Ver        Date        Author           Description
17040
   ---------  ----------  ---------------  ------------------------------------
3959 dpurdie 17041
   1.0        16/03/2007          1. Created this procedure.
1373 dpurdie 17042
 
17043
   NOTES:
17044
 
17045
   Automatically available Auto Replace Keywords:
3959 dpurdie 17046
      Object Name:     UPDATE_MISC_VIEW
17047
      Sysdate:         16/03/2007
17048
      Date and Time:   16/03/2007, 8:56:29 AM, and 16/03/2007 8:56:29 AM
1373 dpurdie 17049
      Username:         (set in TOAD Options, Procedure Editor)
17050
      Table Name:       (set in the "New PL/SQL Object" dialog)
17051
 
17052
******************************************************************************/
3959 dpurdie 17053
   CURSOR view_cur /*Create a record set to store the ripple data*/
17054
   IS
17055
   	 SELECT pkg.pkg_id, rc.base_view_id 
17056
	 FROM package_versions pv, packages pkg, release_content rc
17057
	 where rc.rtag_id = 2362
17058
	 and rc.pv_id = pv.pv_id
17059
	 and pv.pkg_id = pkg.pkg_id;
17060
   view_rec   view_cur%ROWTYPE;
17061
 
17062
 
17063
 
1373 dpurdie 17064
BEGIN
3959 dpurdie 17065
   OPEN view_cur;
1373 dpurdie 17066
 
3959 dpurdie 17067
   FETCH view_cur
17068
    INTO view_rec;
1373 dpurdie 17069
 
3959 dpurdie 17070
   WHILE view_cur%FOUND
17071
   LOOP
1373 dpurdie 17072
 
3959 dpurdie 17073
 
17074
	   update release_content
17075
	   set base_view_id = view_rec.base_view_id
17076
	   where rtag_id = 8027
17077
	   and pv_id IN 
17078
	   (
17079
	   	select pv.pv_id from release_content rc, package_versions pv
17080
		where rc.rtag_id = 8027
17081
		and pv.pv_id = rc.pv_id
17082
		and pv.pkg_id = view_rec.pkg_id 
17083
 
17084
	   );
17085
 
17086
 
1373 dpurdie 17087
 
3959 dpurdie 17088
 
17089
 
17090
 
17091
 
17092
 
1373 dpurdie 17093
 
3959 dpurdie 17094
   FETCH view_cur
17095
   		 INTO view_rec;
17096
   END LOOP;	 
1373 dpurdie 17097
 
17098
 
17099
 
17100
 
3959 dpurdie 17101
 
17102
END UPDATE_MISC_VIEW; 
4040 dpurdie 17103
 
1374 dpurdie 17104
/
1373 dpurdie 17105
 
4040 dpurdie 17106
/
17107
--------------------------------------------------------
17108
--  DDL for Procedure UPDATE_PACKAGE_DEPENDENCY
17109
--------------------------------------------------------
17110
set define off;
17111
 
3959 dpurdie 17112
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_DEPENDENCY" ( NNpv_id IN NUMBER,
17113
                                                        SSdep_name IN PACKAGES.pkg_name%TYPE,
17114
                                                        SSdep_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
17115
                                                        CCbuild_type IN PACKAGE_DEPENDENCIES.build_type%TYPE,
17116
                                                        NNuser_id IN NUMBER,
17117
                                                        NNdelete_old_dependency IN NUMBER
17118
                                                       ) IS
1373 dpurdie 17119
/* ---------------------------------------------------------------------------
3959 dpurdie 17120
    Version: 3.3
1373 dpurdie 17121
   --------------------------------------------------------------------------- */
17122
 
3959 dpurdie 17123
    retPV_ID NUMBER;
17124
    SSV_EXT PACKAGE_VERSIONS.v_ext%TYPE;
17125
	DepIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
17126
    PvIsPatch	PACKAGE_VERSIONS.is_patch%TYPE;
17127
    NNpkg_id NUMBER;
17128
    NNdpkg_id NUMBER;
1373 dpurdie 17129
 
17130
BEGIN
3959 dpurdie 17131
    --- Seed database with package_name and version if required ---
17132
    Seed_Package_Names_Versions ( SSdep_name, SSdep_version, NNuser_id, retPV_ID );
1373 dpurdie 17133
 
3959 dpurdie 17134
    -- get v_ext,pkg_id of current dependency
17135
    SELECT v_ext, pkg_id, is_patch INTO SSV_EXT, NNdpkg_id, DepIsPatch
17136
      FROM PACKAGE_VERSIONS
17137
     WHERE pv_id = retPV_ID;
1373 dpurdie 17138
 
3959 dpurdie 17139
    -- get pkg_id of parent package
17140
    SELECT pkg_id, is_patch INTO NNpkg_id, PvIsPatch
17141
      FROM PACKAGE_VERSIONS
17142
     WHERE pv_id = NNpv_id;
1373 dpurdie 17143
 
17144
 
3959 dpurdie 17145
	IF ( (PvIsPatch IS NULL) AND (DepIsPatch IS NULL) ) OR
17146
    	( (PvIsPatch IS NOT NULL) )THEN
1373 dpurdie 17147
 
3959 dpurdie 17148
	    IF NNdelete_old_dependency = 1 THEN
17149
	        /* Used for CUSTOM dependency add/edit */
1373 dpurdie 17150
 
3959 dpurdie 17151
	        --- Remove old dependency ---
17152
            IF (PvIsPatch IS NULL) THEN
17153
            	-- Do it for Packages
17154
		        DELETE FROM PACKAGE_DEPENDENCIES
17155
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
17156
		            (
17157
		            SELECT dep.*
17158
		              FROM PACKAGE_DEPENDENCIES dep,
17159
		                   PACKAGE_VERSIONS dpv,
17160
		                   PACKAGE_VERSIONS pv
17161
		             WHERE dep.dpv_id = dpv.pv_id
17162
		               AND dep.pv_id = NNpv_id
17163
		               AND pv.pv_id = retPV_ID
17164
		               AND dpv.pkg_id = pv.pkg_id
17165
		               AND NVL(dpv.v_ext, '|LINK_A_NULL|') = NVL(SSV_EXT, '|LINK_A_NULL|')
17166
		            );
17167
            ELSE
17168
            	-- Do it for Patches
17169
                DELETE FROM PACKAGE_DEPENDENCIES
17170
		         WHERE ( pv_id, dpv_id, pkg_id, dpkg_id, build_type, display_order ) IN
17171
		            (
17172
		            SELECT dep.*
17173
		              FROM PACKAGE_DEPENDENCIES dep
17174
		             WHERE dep.dpv_id = retPV_ID
17175
		               AND dep.pv_id = NNpv_id
17176
		            );
17177
			END IF;
1373 dpurdie 17178
 
3959 dpurdie 17179
	    END IF;
1373 dpurdie 17180
 
3959 dpurdie 17181
	    /* NOTE: for JATS, ANTS dependency update, it is expected that all dependencies are removed. */
17182
 
17183
	    --- Add new dependency ---
17184
	    INSERT INTO PACKAGE_DEPENDENCIES ( pv_id, dpv_id, pkg_id, dpkg_id, build_type )
17185
	    VALUES ( NNpv_id, retPV_ID, NNpkg_id, NNdpkg_id, CCbuild_type );
17186
 
17187
	END IF;
17188
 
17189
END Update_Package_Dependency;
4040 dpurdie 17190
 
1374 dpurdie 17191
/
1373 dpurdie 17192
 
4040 dpurdie 17193
/
17194
--------------------------------------------------------
17195
--  DDL for Procedure UPDATE_PACKAGE_STATES
17196
--------------------------------------------------------
17197
set define off;
17198
 
3959 dpurdie 17199
  CREATE OR REPLACE PROCEDURE "UPDATE_PACKAGE_STATES" ( NNrtag_id IN NUMBER,
17200
                                                    NNsession_num IN NUMBER ) IS
17201
/* =============  STATE RULES =================== */
17202
/*
17203
   MNR   MRR   MN   MR    |   pkg_state
17204
   ------------------------------------
17205
 
17206
 
17207
 
17208
 
17209
   ------------------------------------
17210
 
17211
 
17212
 
17213
 
17214
   ------------------------------------
17215
    1     0     0     0   |      MINOR_READY
17216
    1     0     0     1   |      MAJOR
17217
    1     0     1     0   |      MINOR
17218
    1     0     1     1   |      MAJOR
17219
   ------------------------------------
17220
    1     1     0     0   |      MAJOR_READY
17221
    1     1     0     1   |      MAJOR
17222
    1     1     1     0   |      MAJOR
17223
    1     1     1     1   |      MAJOR
17224
   ------------------------------------
17225
*/
17226
BEGIN
17227
    /*----------------------------------------------
17228
    ||              MINOR READY
17229
    */----------------------------------------------
1373 dpurdie 17230
 
3959 dpurdie 17231
    UPDATE release_content
17232
       SET pkg_state = 4
17233
     WHERE rtag_id = NNrtag_id
17234
       AND pv_id IN
17235
           (
17236
           SELECT DISTINCT pv_id
17237
           FROM temp_env_states
17238
           WHERE session_num = NNsession_num
17239
             AND level_num = 1
17240
             AND tes_state = 2
17241
           );
1373 dpurdie 17242
 
3959 dpurdie 17243
    /*----------------------------------------------
17244
    ||              MAJOR READY
17245
    */----------------------------------------------
17246
    UPDATE release_content
17247
       SET pkg_state = 3
17248
     WHERE rtag_id = NNrtag_id
17249
       AND pv_id IN
17250
           (
17251
           SELECT DISTINCT pv_id
17252
           FROM temp_env_states
17253
           WHERE session_num = NNsession_num
17254
             AND level_num = 1
17255
             AND tes_state IN (0,1)
17256
           );
1373 dpurdie 17257
 
3959 dpurdie 17258
    /*----------------------------------------------
17259
    ||                MINOR
17260
    */----------------------------------------------
17261
    UPDATE release_content
17262
       SET pkg_state = 2
17263
     WHERE rtag_id = NNrtag_id
17264
       AND pv_id IN
17265
           (
17266
           SELECT DISTINCT pv_id
17267
            FROM temp_env_states
17268
            WHERE session_num = NNsession_num
17269
              AND level_num >= 2
17270
              AND tes_state = 2
17271
            MINUS
17272
           SELECT pv_id
17273
             FROM release_content
17274
            WHERE rtag_id = NNrtag_id
17275
              AND pkg_state = 3
17276
           );
1373 dpurdie 17277
 
3959 dpurdie 17278
    /*----------------------------------------------
17279
    ||                MAJOR
17280
    */----------------------------------------------
17281
    UPDATE release_content
17282
       SET pkg_state = 1
17283
     WHERE rtag_id = NNrtag_id
17284
       AND pv_id IN
17285
           (
17286
           SELECT DISTINCT pv_id
17287
           FROM temp_env_states
17288
           WHERE session_num = NNsession_num
17289
             AND level_num >= 2
17290
             AND tes_state IN (0,1)
17291
           /* MAJOR EXCEPTION - When package has Major Ready and Minor */
17292
           UNION
17293
           SELECT DISTINCT tes.pv_id
17294
           FROM temp_env_states tes,
17295
                release_content rc
17296
           WHERE tes.session_num = NNsession_num
17297
             AND tes.level_num >= 2
17298
             AND tes.tes_state = 2
17299
             AND rtag_id = NNrtag_id
17300
             AND rc.pv_id = tes.pv_id
17301
             AND rc.pkg_state = 3
17302
           );
1373 dpurdie 17303
 
3959 dpurdie 17304
    /*----------------------------------------------
17305
    ||                 OK
17306
    */----------------------------------------------
17307
    UPDATE release_content
17308
       SET pkg_state = 0
17309
     WHERE rtag_id = NNrtag_id
17310
       AND pv_id IN
17311
           (
17312
           SELECT rc.pv_id
17313
             FROM release_content rc
17314
            WHERE rc.rtag_id = NNrtag_id
17315
              AND NOT rc.pv_id IN
17316
                    (
17317
                     SELECT DISTINCT pv_id
17318
                     FROM temp_env_states WHERE session_num = NNsession_num
17319
                    )
17320
           );
1373 dpurdie 17321
 
3959 dpurdie 17322
      Update_Deprecation_State (NNrtag_id);
1373 dpurdie 17323
 
3959 dpurdie 17324
    /*----------------------------------------------
17325
    ||              PEGGED VERSIONS DEPENDENT
17326
    */----------------------------------------------
17327
    UPDATE release_content
17328
       SET pkg_state = 10
17329
     WHERE rtag_id = NNrtag_id
17330
       AND pv_id IN
17331
           (
17332
           SELECT DISTINCT pv_id
17333
           FROM pegged_versions pegv
17334
           WHERE pegv.rtag_id = NNrtag_id
17335
           );
1373 dpurdie 17336
 
3959 dpurdie 17337
    /*----------------------------------------------
17338
    ||              ADVISORY RIPPLE
17339
    */----------------------------------------------
17340
    UPDATE release_content
17341
       SET pkg_state = 8
17342
     WHERE rtag_id = NNrtag_id
17343
       AND pv_id IN
17344
           (
17345
           SELECT DISTINCT pv_id
17346
           FROM advisory_ripple ar
17347
           WHERE ar.rtag_id = NNrtag_id
17348
           )
17349
       AND pv_id IN
17350
           (
17351
           SELECT DISTINCT pv_id
17352
           FROM release_content rc
17353
           WHERE rc.rtag_id = NNrtag_id
17354
           );
1373 dpurdie 17355
 
3959 dpurdie 17356
END Update_Package_States;
4040 dpurdie 17357
 
3959 dpurdie 17358
/
1373 dpurdie 17359
 
4040 dpurdie 17360
/
17361
--------------------------------------------------------
17362
--  DDL for Procedure UPDATE_PROCESSES
17363
--------------------------------------------------------
17364
set define off;
17365
 
3959 dpurdie 17366
  CREATE OR REPLACE PROCEDURE "UPDATE_PROCESSES" 
17367
IS
1373 dpurdie 17368
 
3959 dpurdie 17369
proc_id NUMBER;
17370
/******************************************************************************
17371
   NAME:       DELETE_DO_NOT_RIPPLE
17372
   PURPOSE:    TO DELETE ENTRIES FROM THE DO_NOT_RIPPLE TABLE WHEN A PACKAGE
17373
               IS RELEASED
1373 dpurdie 17374
 
3959 dpurdie 17375
   REVISIONS:
17376
   Ver        Date        Author           Description
17377
   ---------  ----------  ---------------  ------------------------------------
17378
   1.0        21/04/2006  Rupesh Solanki     1. Created this procedure.
1373 dpurdie 17379
 
3959 dpurdie 17380
   NOTES:
1373 dpurdie 17381
 
3959 dpurdie 17382
   Automatically available Auto Replace Keywords:
17383
      Object Name:     DELETE_DO_NOT_RIPPLE
17384
      Sysdate:         21/04/2006
17385
      Date and Time:   21/04/2006, 3:21:55 PM, and 21/04/2006 3:21:55 PM
17386
      Username:         (set in TOAD Options, Procedure Editor)
17387
      Table Name:       (set in the "New PL/SQL Object" dialog)
1373 dpurdie 17388
 
3959 dpurdie 17389
******************************************************************************/
17390
   CURSOR ripple_cur
17391
   IS
17392
      select proc_id,  proc_name, run_as, pkg_owner, is_interface from processes;
1373 dpurdie 17393
 
3959 dpurdie 17394
   ripple_rec   ripple_cur%ROWTYPE;
17395
BEGIN
17396
   OPEN ripple_cur;
17397
 
17398
   FETCH ripple_cur
17399
    INTO ripple_rec;
17400
 
17401
   WHILE ripple_cur%FOUND
17402
   LOOP
17403
 
17404
 
17405
update deployment_manager.processes_config 
17406
set proc_id = ripple_rec.proc_id
17407
where pkg_health_tag = ripple_rec.proc_name
17408
and cmd_interface IS NULL
17409
and pkg_owner IS NULL
17410
and is_interface IS NULL; 
17411
 
17412
 
17413
      FETCH ripple_cur
17414
       INTO ripple_rec;
17415
   END LOOP;
17416
END UPDATE_PROCESSES;
4040 dpurdie 17417
 
1374 dpurdie 17418
/
1373 dpurdie 17419
 
4040 dpurdie 17420
/
17421
--------------------------------------------------------
17422
--  DDL for Procedure UPDATE_RUNTIME_DEPENDENCY
17423
--------------------------------------------------------
17424
set define off;
17425
 
3959 dpurdie 17426
  CREATE OR REPLACE PROCEDURE "UPDATE_RUNTIME_DEPENDENCY" ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
17427
				   	  		  						    NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
17428
				   	  		  						    SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
17429
													    SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
17430
													    SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
17431
													    NNuser_id IN NUMBER ) IS
1373 dpurdie 17432
/* ---------------------------------------------------------------------------
3959 dpurdie 17433
    Version: 3.0.1
1373 dpurdie 17434
   --------------------------------------------------------------------------- */
17435
 
3959 dpurdie 17436
    retRTD_ID	NUMBER;
17437
	CURSOR rtd_cur IS
17438
	    SELECT pv.pkg_version, pkg.pkg_name
17439
		  FROM runtime_dependencies rtd,
17440
		       package_versions pv,
17441
			   packages pkg
17442
		 WHERE rtd.rtd_id = pv.pv_id
17443
		   AND pv.pkg_id = pkg.pkg_id
17444
		   AND rtd.pv_id = NNpv_id
17445
		   AND rtd.rtd_id = NNrtd_id;
17446
	   rtd_rec rtd_cur%ROWTYPE;
1373 dpurdie 17447
 
3959 dpurdie 17448
	CURSOR old_rtd_cur IS
17449
	    SELECT pv.pv_id
17450
		  FROM package_versions pv
17451
		 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
17452
		 	   			 	    FROM package_versions rtdpv
17453
							   WHERE rtdpv.pv_id = NNrtd_id )
17454
		   AND pv.pkg_version = SSrtd_version;
17455
	old_rtd_rec old_rtd_cur%ROWTYPE;
1373 dpurdie 17456
 
3959 dpurdie 17457
 
1373 dpurdie 17458
BEGIN
17459
 
3959 dpurdie 17460
    -- Get current runtime dependency details
17461
	OPEN rtd_cur;
17462
    FETCH rtd_cur INTO rtd_rec;
1373 dpurdie 17463
 
17464
 
17465
 
17466
 
3959 dpurdie 17467
	IF rtd_rec.pkg_version != SSrtd_version THEN
17468
           -- Version has changed, hence create new runtime dependency --
17469
	    /* NOTE: You must create new version as updating just a version will affect
17470
		        all packages using this runtime dependency and user does not expect that.
17471
		        It is safer to create new version */
17472
		OPEN old_rtd_cur;
17473
		FETCH old_rtd_cur INTO old_rtd_rec;
1373 dpurdie 17474
 
17475
 
3959 dpurdie 17476
		IF old_rtd_cur%NOTFOUND
17477
		THEN
17478
			-- Version not found, hence Create New version --
17479
    		Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );
1373 dpurdie 17480
 
3959 dpurdie 17481
			-- Update runtime dependency table --
17482
			UPDATE runtime_dependencies SET
17483
				   rtd_id = retRTD_ID,
17484
				   rtd_url = SSrtd_url,
17485
				   rtd_comments = SSrtd_comments
17486
			 WHERE pv_id = NNpv_id
17487
			   AND rtd_id = NNrtd_id;
1373 dpurdie 17488
 
3959 dpurdie 17489
		ELSE
17490
			-- Update runtime dependency table --
17491
			UPDATE runtime_dependencies SET
17492
				   rtd_id = old_rtd_rec.pv_id,
17493
				   rtd_url = SSrtd_url,
17494
				   rtd_comments = SSrtd_comments
17495
			 WHERE pv_id = NNpv_id
17496
			   AND rtd_id = NNrtd_id;
17497
 
17498
		END IF;
17499
 
17500
 
17501
		CLOSE old_rtd_cur;
17502
 
17503
	ELSE
17504
		--  Version has not changed, hence update everithing except	version --
17505
		UPDATE runtime_dependencies SET
17506
			   rtd_url = SSrtd_url,
17507
			   rtd_comments = SSrtd_comments
17508
		 WHERE pv_id = NNpv_id
17509
		   AND rtd_id = NNrtd_id;
17510
 
17511
 
17512
 
17513
	END IF;
17514
 
17515
 
17516
	CLOSE rtd_cur;
17517
 
17518
END Update_Runtime_Dependency;
4040 dpurdie 17519
 
1374 dpurdie 17520
/
1373 dpurdie 17521
 
4040 dpurdie 17522
/
17523
--------------------------------------------------------
17524
--  DDL for Procedure UPDATE_UNIT_TEST
17525
--------------------------------------------------------
17526
set define off;
17527
 
3959 dpurdie 17528
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST" ( nTest_id IN NUMBER,
17529
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
17530
											   nPv_id IN NUMBER,
17531
											   nUserId IN NUMBER,
17532
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
17533
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
17534
	                                           sCompletion_date IN VARCHAR2,
17535
											   sDpkg_path IN VARCHAR2,
17536
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
17537
											   sResults IN VARCHAR2,
17538
											   outFileName OUT VARCHAR2
17539
                                              ) IS
1373 dpurdie 17540
/* ---------------------------------------------------------------------------
3959 dpurdie 17541
    Version: 3.1.0
1373 dpurdie 17542
   --------------------------------------------------------------------------- */
3959 dpurdie 17543
 
17544
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 17545
 
3959 dpurdie 17546
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
17547
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
1373 dpurdie 17548
 
3959 dpurdie 17549
 
1373 dpurdie 17550
BEGIN
17551
 
3959 dpurdie 17552
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
17553
       	ResultsURL := sResults;
17554
       ELSE
17555
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
17556
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
17557
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
17558
           END IF;
17559
       END IF;
1373 dpurdie 17560
 
3959 dpurdie 17561
	--- Update Unit Test ---
17562
    UPDATE UNIT_TESTS SET
17563
           TEST_SUMMARY = sTest_summary,
17564
		   NUMOF_TEST = sNumof_test,
17565
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
17566
		   COMPLETED_BY = nUserId,
17567
		   RESULTS_URL = ResultsURL,
17568
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
17569
     WHERE TEST_ID = nTest_id
17570
       AND PV_ID = nPv_id;
1373 dpurdie 17571
 
3959 dpurdie 17572
END Update_Unit_Test;
4040 dpurdie 17573
 
3959 dpurdie 17574
/
1373 dpurdie 17575
 
4040 dpurdie 17576
/
17577
--------------------------------------------------------
17578
--  DDL for Procedure UPDATE_UNIT_TEST_ACCEPTANCE
17579
--------------------------------------------------------
17580
set define off;
17581
 
3959 dpurdie 17582
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_ACCEPTANCE" ( pnTest_id IN NUMBER,
17583
														  pnPv_id IN NUMBER,
17584
					                                      sAccepted IN UNIT_TESTS.TEST_ACCEPTED%TYPE,
17585
														  sAcceptanceDate IN VARCHAR2,
17586
														  sAcceptedBy IN NUMBER,
17587
					                                      sReviewComments IN UNIT_TESTS.REVIEW_COMMENTS%TYPE,
17588
														  cUpdateAcceptedStateOnly IN CHAR
17589
					                                     ) IS
17590
/* ---------------------------------------------------------------------------
17591
    Version: 3.0.0
17592
   --------------------------------------------------------------------------- */
1373 dpurdie 17593
 
17594
 
17595
 
3959 dpurdie 17596
BEGIN
17597
	IF cUpdateAcceptedStateOnly = 'Y'
17598
	THEN
17599
		--- Update Accepted State Only ---
17600
		IF ( sAccepted IS NULL )
17601
		THEN
17602
			-- Clear alleptance
17603
			UPDATE UNIT_TESTS SET
17604
		           TEST_ACCEPTED = NULL,
17605
		           ACCEPTANCE_DATE = NULL,
17606
				   ACCEPTED_BY = NULL,
17607
				   REVIEW_COMMENTS = NULL
17608
		     WHERE TEST_ID = pnTest_id
17609
		       AND PV_ID = pnPv_id;
17610
 
17611
	    ELSE
17612
			UPDATE UNIT_TESTS SET
17613
		           TEST_ACCEPTED = sAccepted,
17614
		           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
17615
				   ACCEPTED_BY = sAcceptedBy
17616
		     WHERE TEST_ID = pnTest_id
17617
		       AND PV_ID = pnPv_id;
17618
 
17619
		END IF;
17620
 
17621
 
17622
	ELSE
17623
		--- Update Unit Test Acceptance ---
17624
	    UPDATE UNIT_TESTS SET
17625
	           TEST_ACCEPTED = sAccepted,
17626
			   REVIEW_COMMENTS = sReviewComments,
17627
	           ACCEPTANCE_DATE = TO_DATE( sAcceptanceDate,'DD/MM/YYYY' ),
17628
			   ACCEPTED_BY = sAcceptedBy
17629
	     WHERE TEST_ID = pnTest_id
17630
	       AND PV_ID = pnPv_id;
17631
 
17632
	END IF;
17633
 
17634
END Update_Unit_Test_Acceptance;
4040 dpurdie 17635
 
1374 dpurdie 17636
/
1373 dpurdie 17637
 
4040 dpurdie 17638
/
17639
--------------------------------------------------------
17640
--  DDL for Procedure UPDATE_UNIT_TEST_TEST
17641
--------------------------------------------------------
17642
set define off;
17643
 
3959 dpurdie 17644
  CREATE OR REPLACE PROCEDURE "UPDATE_UNIT_TEST_TEST" ( nTest_id IN NUMBER,
17645
	   	  		  							   nTestTypeId IN UNIT_TESTS.TEST_TYPES_FK%TYPE,  	
17646
											   nPv_id IN NUMBER,
17647
											   nUserId IN NUMBER,
17648
	                                           sTest_summary IN UNIT_TESTS.TEST_SUMMARY%TYPE,
17649
											   sNumof_test IN UNIT_TESTS.NUMOF_TEST%TYPE,
17650
	                                           sCompletion_date IN VARCHAR2,
17651
											   sDpkg_path IN VARCHAR2,
17652
											   enumTEST_TYPE_AUTOMATIC IN NUMBER,
17653
											   sResults IN VARCHAR2,
17654
											   outFileName OUT VARCHAR2
17655
                                              ) IS
1373 dpurdie 17656
/* ---------------------------------------------------------------------------
3959 dpurdie 17657
    Version: 3.1.0
1373 dpurdie 17658
   --------------------------------------------------------------------------- */
3959 dpurdie 17659
 
17660
   	FILENAME_PREFIX CONSTANT VARCHAR2(50) := 'RM_UNIT_TEST';
1373 dpurdie 17661
 
3959 dpurdie 17662
    ResultsURL UNIT_TESTS.RESULTS_URL%TYPE DEFAULT NULL;
17663
    ResultsAttachment UNIT_TESTS.RESULTS_ATTACHMENT_NAME%TYPE DEFAULT NULL;
17664
 
17665
 
1373 dpurdie 17666
BEGIN
17667
 
3959 dpurdie 17668
       IF nTestTypeId = enumTEST_TYPE_AUTOMATIC THEN
17669
       	ResultsURL := sResults;
17670
       ELSE
17671
       	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
17672
        	outFileName := FILENAME_PREFIX || nTest_id ||'_'|| sResults;
17673
    		ResultsAttachment := sDpkg_path || '/' || outFileName;
17674
           END IF;
17675
       END IF;
1373 dpurdie 17676
 
3959 dpurdie 17677
       /*	IF (sResults <> '') OR ( NOT sResults IS NULL ) THEN
17678
        	outFileName := FILENAME_PREFIX || newID ||'_'|| sResults;
17679
    		sResults_url:= 'doc' || '/' || 
17680
			;
17681
        END IF;*/
17682
	--- Update Unit Test ---
17683
    UPDATE UNIT_TESTS SET
17684
           TEST_SUMMARY = sTest_summary,
17685
		   NUMOF_TEST = sNumof_test,
17686
           COMPLETION_DATE = TO_DATE( sCompletion_date,'DD/MM/YYYY' ),
17687
		   COMPLETED_BY = nUserId,
17688
		   RESULTS_URL = ResultsURL,
17689
		   RESULTS_ATTACHMENT_NAME = ResultsAttachment
17690
     WHERE TEST_ID = nTest_id
17691
       AND PV_ID = nPv_id;
1373 dpurdie 17692
 
3959 dpurdie 17693
END Update_Unit_Test_Test;
4040 dpurdie 17694
 
17695
/
17696
 
17697
/
17698
--------------------------------------------------------
17699
--  DDL for Synonymn APPLICATIONS
17700
--------------------------------------------------------
17701
 
17702
  CREATE OR REPLACE SYNONYM "APPLICATIONS" FOR "APPLICATIONS";
17703
/
17704
--------------------------------------------------------
17705
--  DDL for Synonymn APPLICATION_PAGES
17706
--------------------------------------------------------
17707
 
17708
  CREATE OR REPLACE SYNONYM "APPLICATION_PAGES" FOR "APPLICATION_PAGES";
17709
/
17710
--------------------------------------------------------
17711
--  DDL for Synonymn CONTROL_OBJECTS
17712
--------------------------------------------------------
17713
 
17714
  CREATE OR REPLACE SYNONYM "CONTROL_OBJECTS" FOR "CONTROL_OBJECTS";
17715
/
17716
--------------------------------------------------------
17717
--  DDL for Synonymn DATA_PERMISSIONS
17718
--------------------------------------------------------
17719
 
17720
  CREATE OR REPLACE SYNONYM "DATA_PERMISSIONS" FOR "DATA_PERMISSIONS";
17721
/
17722
--------------------------------------------------------
17723
--  DDL for Synonymn DATA_TABLES
17724
--------------------------------------------------------
17725
 
17726
  CREATE OR REPLACE SYNONYM "DATA_TABLES" FOR "DATA_TABLES";
17727
/
17728
--------------------------------------------------------
17729
--  DDL for Synonymn PAGE_CONTROL_OBJECTS
17730
--------------------------------------------------------
17731
 
17732
  CREATE OR REPLACE SYNONYM "PAGE_CONTROL_OBJECTS" FOR "PAGE_CONTROL_OBJECTS";
17733
/
17734
--------------------------------------------------------
17735
--  DDL for Synonymn PERMISSION_TYPES
17736
--------------------------------------------------------
17737
 
17738
  CREATE OR REPLACE SYNONYM "PERMISSION_TYPES" FOR "PERMISSION_TYPES";
17739
/
17740
--------------------------------------------------------
17741
--  DDL for Synonymn PK_AMUTILS
17742
--------------------------------------------------------
17743
 
17744
  CREATE OR REPLACE SYNONYM "PK_AMUTILS" FOR "PK_AMUTILS";
17745
/
17746
--------------------------------------------------------
17747
--  DDL for Synonymn PK_SECURITY
17748
--------------------------------------------------------
17749
 
17750
  CREATE OR REPLACE SYNONYM "PK_SECURITY" FOR "PK_SECURITY";
17751
/
17752
--------------------------------------------------------
17753
--  DDL for Synonymn ROLES
17754
--------------------------------------------------------
17755
 
17756
  CREATE OR REPLACE SYNONYM "ROLES" FOR "ROLES";
17757
/
17758
--------------------------------------------------------
17759
--  DDL for Synonymn ROLE_PRIVILEGES
17760
--------------------------------------------------------
17761
 
17762
  CREATE OR REPLACE SYNONYM "ROLE_PRIVILEGES" FOR "ROLE_PRIVILEGES";
17763
/
17764
--------------------------------------------------------
17765
--  DDL for Synonymn USERS
17766
--------------------------------------------------------
17767
 
17768
  CREATE OR REPLACE SYNONYM "USERS" FOR "USERS";
17769
/
17770
--------------------------------------------------------
17771
--  DDL for Synonymn USER_APPLICATIONS
17772
--------------------------------------------------------
17773
 
17774
  CREATE OR REPLACE SYNONYM "USER_APPLICATIONS" FOR "USER_APPLICATIONS";
17775
/
17776
--------------------------------------------------------
17777
--  DDL for Synonymn USER_ROLES
17778
--------------------------------------------------------
17779
 
17780
  CREATE OR REPLACE SYNONYM "USER_ROLES" FOR "USER_ROLES";
17781
/